diff --git a/src/storage/storage_backend_scsi.c b/src/storage/storage_backend_scsi.c index 6f86ffce59..08e13313ac 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, 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; diff --git a/tools/virsh.pod b/tools/virsh.pod index 77f9383012..9e670dadfb 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -2650,6 +2650,15 @@ Refresh the list of volumes contained in I. Start the storage I, which is previously defined but inactive. +B: 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). +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 I Undefine the configuration for an inactive I.