]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
storage: Ignore block devices that fail format detection
authorJohn Ferlan <jferlan@redhat.com>
Fri, 30 Oct 2015 14:29:46 +0000 (10:29 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Wed, 9 Dec 2015 21:31:15 +0000 (16:31 -0500)
https://bugzilla.redhat.com/show_bug.cgi?id=1276198

Prior to commit id '98322052' failure to saferead the block device would
cause an error to be logged and the device to be skipped while attempting
to discover/create a stable target path for a new LUN (NPIV).

This was because virStorageBackendSCSIFindLUs ignored errors from
processLU and virStorageBackendSCSINewLun.

Ignoring the failure allowed a multipath device with an "active" and
"ghost" to be present on the host with the "ghost" block device being
ignored. This patch will return a -2 to the caller indicating the desire
to ignore the block device since it cannot be used directly rather than
fail the pool startup.

src/storage/storage_backend_scsi.c

index cc2c5d7159f7678c1ae7cb8564d55b0b77f2d105..670cc4d3f6e949c508252b57d836ea675e0dde51 100644 (file)
@@ -224,8 +224,10 @@ virStorageBackendSCSINewLun(virStoragePoolObjPtr pool,
         goto cleanup;
     }
 
-    if (virStorageBackendUpdateVolInfo(vol, true,
-                                       VIR_STORAGE_VOL_OPEN_DEFAULT, 0) < 0)
+    /* Allow a volume read failure to ignore or skip this block file */
+    if ((retval = virStorageBackendUpdateVolInfo(vol, true,
+                                                 VIR_STORAGE_VOL_OPEN_DEFAULT,
+                                                 VIR_STORAGE_VOL_READ_NOERROR)) < 0)
         goto cleanup;
 
     if (!(vol->key = virStorageBackendSCSISerial(vol->target.path)))