From: Nitesh Konkar Date: Tue, 22 Mar 2016 08:34:50 +0000 (-0400) Subject: storage: Initialize pool size parameters for refresh thread X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=3e19b5d53d79f2497be1e3a22a5b3c93cb002043;p=libvirt.git storage: Initialize pool size parameters for refresh thread If the pool creation thread happens to detect the luns in the scsi target, the size parameters will be calculated as part of the refreshPool called from storagePoolCreate(). This means the virStoragePoolFCRefreshThread (commit id '512b874') waiting to run and "refresh" the pool will essentially double the allocation and capacity values. A separate refresh would correct the values. To avoid this, the FCRefreshThread needs to reinitialize the pool size values prior to calling virStorageBackendSCSIFindLUs which eventually calls virStorageBackendSCSINewLun and updates the size values for each volume found. --- diff --git a/src/storage/storage_backend_scsi.c b/src/storage/storage_backend_scsi.c index 670cc4d3f6..7c7d7d0da9 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) {