[libvirt] [PATCH 2/2 v2] storage: Add document for possible problem on volume detection
Osier Yang
jyang at redhat.com
Thu Jan 23 05:51:59 UTC 2014
On 23/01/14 13:44, Osier Yang wrote:
> On 22/01/14 23:15, John Ferlan wrote:
>>
>> On 01/22/2014 09:39 AM, Osier Yang wrote:
>>> 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.
>> Probably some of the above is overkill since the virsh.pod repeats much
>> of it - although having the intro comment specifically target udev
>> procedures (or "udevadm settle") as the culprit are good. Also see my
>> change to your text below.
>>
>>> 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,
>>> 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 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>.
>>>
>>
>> B<Note>: A storage pool that relies on remote resources such as an
>> "iscsi" or a vHBA 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.
>
> I like it. :-)
>
>>
>>
>> (sic) note that formatstorage.html.in has both vHBA and (v)HBA, while
>
> We have to use (v)HBA here, since it's the same case for HBA.
Btw, I'm not sure whether using "(v)HBA" as the abbreviation for "vHBA
or/and HBA"
is acceptable in formal document or not, if it's not quite good, it will
need a further
patch to clean up them in both virsh.pod and formatdomain.html. Anyway, it's
something trivial. I'm going forward to push this patch.
Osier
More information about the libvir-list
mailing list