// File: yangwanyuan[P]HLKVDS/src/Kvdb_Impl.cc
// Function: hlkvds::KVDS::openDB()
Status KVDS::openDB() {
    if (!openAllDevices(paths_)) {
        return Status::IOError("Could not open all device");
    }

    int datastor_type = -1;
    if ( !metaStor_->TryLoadSB(datastor_type)) {
        return  Status::IOError("Could not load SB");
    }
    dataStor_ = DataStor::Create(options_, bdVec_, sbMgr_, idxMgr_, datastor_type);

    if (dataStor_ == NULL) {
        return Status::NotSupported("Could not support this data store");
    }

    idxMgr_->InitDataStor(dataStor_);
    metaStor_->InitDataStor(dataStor_);

    if (!metaStor_->LoadMetaData()) {
        return Status::IOError("Could not read meta data");
    }

    __INFO("\nOpen KVDS Success!!!");
    printDbStates();

    dataStor_->InitSegmentBuffer();
    startThds();
    return Status::OK();
}

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x10(%rsp)
movq %rdi, %rax
movq %rax, 0x18(%rsp)
movq %rdi, 0x70(%rsp)
movq %rsi, 0x68(%rsp)
movq 0x68(%rsp), %rsi
movq %rsi, 0x20(%rsp)
addq $0x8, %rsi
leaq 0x48(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x81a0
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x2b990
movb %al, 0x37(%rsp)
jmp 0x2befd
movb 0x37(%rsp), %al
xorb $-0x1, %al
movb %al, 0xf(%rsp)
leaq 0x48(%rsp), %rdi
callq 0x8928
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x2bf1b
jmp 0x2bf4e
movq 0x10(%rsp), %rdi
leaq 0x270fe(%rip), %rsi     # 0x53025
callq 0x16510
jmp 0x2c0bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x40(%rsp)
movl %eax, 0x3c(%rsp)
leaq 0x48(%rsp), %rdi
callq 0x8928
jmp 0x2c0c5
movq 0x20(%rsp), %rax
movl $0xffffffff, 0x38(%rsp) # imm = 0xFFFFFFFF
movq 0x40(%rax), %rdi
leaq 0x38(%rsp), %rsi
callq 0x341b0
testb $0x1, %al
jne 0x2bf83
movq 0x10(%rsp), %rdi
leaq 0x270c6(%rip), %rsi     # 0x5303f
callq 0x16510
jmp 0x2c0bb
movq 0x20(%rsp), %rax
movq %rax, %rdi
addq $0x50, %rdi
movq %rax, %rsi
addq $0xa0, %rsi
movq 0x28(%rax), %rdx
movq 0x30(%rax), %rcx
movl 0x38(%rsp), %r8d
callq 0x21b30
movq %rax, %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x48(%rax)
cmpq $0x0, 0x48(%rax)
jne 0x2bfd4
movq 0x10(%rsp), %rdi
leaq 0x27087(%rip), %rsi     # 0x53051
callq 0x163b0
jmp 0x2c0bb
movq 0x20(%rsp), %rax
movq 0x30(%rax), %rdi
movq 0x48(%rax), %rsi
callq 0x25610
movq 0x20(%rsp), %rax
movq 0x40(%rax), %rdi
movq 0x48(%rax), %rsi
callq 0x34150
movq 0x20(%rsp), %rax
movq 0x40(%rax), %rdi
callq 0x35110
testb $0x1, %al
jne 0x2c020
movq 0x10(%rsp), %rdi
leaq 0x2705d(%rip), %rsi     # 0x53073
callq 0x16510
jmp 0x2c0bb
jmp 0x2c022
movq 0x44faf(%rip), %rax     # 0x70fd8
movq (%rax), %rax
movq %rax, (%rsp)
callq 0x8480
movq (%rsp), %rdi
movq %rax, %rdx
leaq 0x26379(%rip), %rsi     # 0x523bc
leaq 0x27042(%rip), %rcx     # 0x5308c
leaq 0x26fab(%rip), %r8      # 0x52ffc
movl $0x6c, %r9d
movb $0x0, %al
callq 0x86f0
movq 0x44f73(%rip), %rax     # 0x70fd8
movq (%rax), %rdi
leaq 0x27024(%rip), %rsi     # 0x53093
movb $0x0, %al
callq 0x86f0
movq 0x44f5b(%rip), %rax     # 0x70fd8
movq (%rax), %rdi
leaq 0x26d3e(%rip), %rsi     # 0x52dc5
movb $0x0, %al
callq 0x86f0
movq 0x20(%rsp), %rdi
callq 0x2bbf0
movq 0x20(%rsp), %rax
movq 0x48(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x20(%rsp), %rdi
callq 0x2bc40
movq 0x10(%rsp), %rdi
callq 0x16560
movq 0x18(%rsp), %rax
addq $0x78, %rsp
retq
movq 0x40(%rsp), %rdi
callq 0x8820
nop