From 3e19b5d53d79f2497be1e3a22a5b3c93cb002043 Mon Sep 17 00:00:00 2001 From: Nitesh Konkar Date: Tue, 22 Mar 2016 04:34:50 -0400 Subject: [PATCH] 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. --- 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 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) { -- 2.47.2