[libvirt] [PATCH] SCSI storage: Initialise the pool size parameters to zero while refreshing

If the pool creation thread happens to detect the luns in the scsi target,the size parameters will be populated as part of the refresh called from storagePoolCreate(). The commit <4a85bf3e2f> added additional refresh for SCSI which should also have these values initialised to zero, otherwise the values would appear exactly double. A separate refresh would correct the values, but without an explicit pool-refresh, the allocation/capacity would appear exactly double after pool-create. --- src/storage/storage_backend_scsi.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/storage/storage_backend_scsi.c b/src/storage/storage_backend_scsi.c index 670cc4d..7c7d7d0 100644 --- a/src/storage/storage_backend_scsi.c +++ b/src/storage/storage_backend_scsi.c @@ -614,6 +614,9 @@ virStoragePoolFCRefreshThread(void *opaque) */ VIR_DEBUG("Attempt FC Refresh for pool='%s' name='%s' tries='%d'", pool->def->name, fchost_name, tries); + + pool->def->allocation = pool->def->capacity = pool->def->available = 0; + if (virStoragePoolObjIsActive(pool) && virGetSCSIHostNumber(fchost_name, &host) == 0 && virStorageBackendSCSITriggerRescan(host) == 0) { -- 1.8.3.1

On 03/22/2016 04:34 AM, Nitesh Konkar wrote:
If the pool creation thread happens to detect the luns in the scsi target,the size parameters will be populated as part of the refresh called from storagePoolCreate(). The commit <4a85bf3e2f> added additional refresh for SCSI which should also have these values initialised to zero, otherwise the values would appear exactly double. A separate refresh would correct the values, but without an explicit pool-refresh, the allocation/capacity would appear exactly double after pool-create. --- src/storage/storage_backend_scsi.c | 3 +++ 1 file changed, 3 insertions(+)
Your commit history is a bit off - commit id '4a85bf3e2f' was for the virStorageVolPoolRefreshThread not the virStoragePoolFCRefreshThread. Two very different threads and problems! In any case, not clearing the pool allocation, capacity, and available values in the FCRefreshThread was an oversight, but then again - the refreshPool ran and would clear them. However, it seems "timing" has changed since the original commit (there are storage state driver and FindLUs processing changes) and perhaps there is "enough time" for the luns to appear. I adjusted the commit to use commit id '512b874' and adjusted the commit description a bit and pushed. Thanks for catching this! John
participants (2)
-
John Ferlan
-
Nitesh Konkar