I am trying to write to restore a vmdk file using vddk library. When I open more than one disk handle for write I get following error.
Reading from disk from multiple threads is working fine though. I have IO thread for opening and closing disk handles and worker threads for reading and writing.
WARN: [NFC ERROR] NfcFssrvrProcessErrorMsg: received NFC error 13 from server: NfcFssrvrOpen: Failed to open '[datastore1] ubuntu 16.04 test/restored_disk_2000_1.vmdk'
WARN: [NFC ERROR] NfcFssrvrClientOpen: received unexpected message 4 from server
INFO: DISKLIB-DSCPTR: : "ha-nfc://[datastore1] ubuntu 16.04 test/restored_disk_2000_1.vmdk@xxx.xx.xxx.xx:902" : Failed to open NBD extent.
INFO: DISKLIB-LINK : "ha-nfc://[datastore1] ubuntu 16.04 test/restored_disk_2000_1.vmdk@xxx.xx.xxx.xx:902" : failed to open (NBD_ERR_GENERIC).
INFO: DISKLIB-CHAIN : "ha-nfc://[datastore1] ubuntu 16.04 test/restored_disk_2000_1.vmdk@xxx.xx.xxx.xx:902" : failed to open (NBD_ERR_GENERIC).
INFO: DISKLIB-LIB : Failed to open 'ha-nfc://[datastore1] ubuntu 16.04 test/restored_disk_2000_1.vmdk@xxx.xx.xxx.xx:902' with flags 0x18 NBD_ERR_GENERIC (290).
INFO: VixDiskLib: Detected DiskLib error 290 (NBD_ERR_GENERIC).
INFO: VixDiskLib: Failed to open disk ha-nfc://[datastore1] ubuntu 16.04 test/restored_disk_2000_1.vmdk@xxx.xx.xxx.xx:902!52 c3 ba 2e 45 67 ab fb-32 2c a9 de be 3d 61 57. Error 1 (Unknown error) (DiskLib error 290: NBD_ERR_GENERIC) at 4739.
INFO: VixDiskLib: VixDiskLib_OpenEx: Cannot open disk [datastore1] ubuntu 16.04 test/restored_disk_2000_1.vmdk. Error 1 (Unknown error) (DiskLib error 290: NBD_ERR_GENERIC) at 4966.
INFO: VixDiskLib: VixDiskLib_Open: Cannot open disk [datastore1] ubuntu 16.04 test/restored_disk_2000_1.vmdk. Error 1 (Unknown error) at 5004.
failed: 1: Unknown error
Following is the code:
diskHandlePtrs = (VixDiskLibHandle **)malloc(numOfThreads * sizeof(VixDiskLibHandle *));
for (int i=0; i<numOfThreads; i++) {
diskHandlePtrs[i] = (VixDiskLibHandle *)malloc(sizeof(VixDiskLibHandle));
vixError = VixDiskLib_Open(connection, path,
VIXDISKLIB_FLAG_OPEN_UNBUFFERED, diskHandlePtrs[i]);
CHECK_AND_THROW(vixError);
}
Clik here to view.
