]> xenbits.xensource.com Git - libvirt.git/commitdiff
storage: Add document for possible problem on volume detection
authorOsier Yang <jyang@redhat.com>
Wed, 22 Jan 2014 14:39:42 +0000 (22:39 +0800)
committerOsier Yang <jyang@redhat.com>
Thu, 23 Jan 2014 05:47:55 +0000 (13:47 +0800)
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
tools/virsh.pod

index 6f86ffce597cbbf4dfd917f9237853cfd4c26e8d..08e13313ac5a30f0df97664b2246c3d58b208e60 100644 (file)
@@ -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,
             continue;
         }
 
+        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);
+
     closedir(devicedir);
 
     return retval;
index 77f93830121550f07a80d66c99284c6d8ab9b94a..9e670dadfb5ff2ced67c67c16e1b9da0bfa7e8a1 100644 (file)
@@ -2650,6 +2650,15 @@ Refresh the list of volumes contained in I<pool>.
 
 Start the storage I<pool>, which is previously defined but inactive.
 
+B<Note>: A storage pool that relies on remote resources such as an
+"iscsi" or a (v)HBA backed "scsi" pool may need to be refreshed multiple
+times in order to have all the volumes detected (see B<pool-refresh>).
+This is because the corresponding volume devices may not be present in
+the host's filesystem during the initial pool startup or the current
+refresh attempt. The number of refresh retries is dependant upon the
+network connection and the time the host takes to export the
+corresponding devices.
+
 =item B<pool-undefine> I<pool-or-uuid>
 
 Undefine the configuration for an inactive I<pool>.