[libvirt] [PATCH 2/2 v2] storage: Add document for possible problem on volume detection

Osier Yang jyang at redhat.com
Wed Jan 22 14:39:42 UTC 2014

For pool which relies on remote resources, such as a "iscsi" type
pool, since how long it takes to export the corresponding devices
to host's sysfs is really depended, it could depend on the network
connection, it also could depend on the host's udev procedures. So
it's likely that the volumes are not able to be detected during pool
starting process, polling the sysfs doesn't work, since we don't
know how much time is best for the polling, and even worse, the
volumes could still be not detected or partly not detected even after
the polling.  So we end up with a documentation to prompt the fact,
in virsh manual.

And as a small improvement, let's explicitly say no LUNs found in
the debug log in that case.
 src/storage/storage_backend_scsi.c | 5 +++++
 tools/virsh.pod                    | 8 ++++++++
 2 files changed, 13 insertions(+)

diff --git a/src/storage/storage_backend_scsi.c b/src/storage/storage_backend_scsi.c
index 93039c1..fbcb102 100644
--- a/src/storage/storage_backend_scsi.c
+++ b/src/storage/storage_backend_scsi.c
@@ -495,6 +495,7 @@ virStorageBackendSCSIFindLUs(virStoragePoolObjPtr pool,
     DIR *devicedir = NULL;
     struct dirent *lun_dirent = NULL;
     char devicepattern[64];
+    bool found = false;
     VIR_DEBUG("Discovering LUs on host %u", scanhost);
@@ -516,11 +517,15 @@ virStorageBackendSCSIFindLUs(virStoragePoolObjPtr pool,
+        found = true;
         VIR_DEBUG("Found LU '%s'", lun_dirent->d_name);
         processLU(pool, scanhost, bus, target, lun);
+    if (!found)
+        VIR_DEBUG("No LU found for pool %s", pool->def->name);
     return retval;
diff --git a/tools/virsh.pod b/tools/virsh.pod
index 77f9383..073465e 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -2650,6 +2650,14 @@ Refresh the list of volumes contained in I<pool>.
 Start the storage I<pool>, which is previously defined but inactive.
+B<Note>: For pool which relies on remote resources, e.g. a "iscsi" type
+pool, or a "scsi" type pool based on a (v)HBA, since the corresponding
+devices for the volumes may not show up on the host's sysfs yet during
+the pool starting process, it may need to refresh the pool (see
+B<pool-refresh>) to get the volumes correctly detected. How many times
+needed for the refreshing is depended on the network connection and the
+time the host takes to export the corresponding devices to sysfs.
 =item B<pool-undefine> I<pool-or-uuid>
 Undefine the configuration for an inactive I<pool>.

More information about the libvir-list mailing list