[libvirt] [PATCH] iscsi_direct: Reset pool capacity and allocation just before refresh

Jirka reported a bug that with every 'virsh pool-refresh' an iscsi-direct pool would grow and grow. The problem is that virISCSIDirectRefreshVol() only adds to def->capacity and def->allocation but nothing clears it out to begin with. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/storage/storage_backend_iscsi_direct.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/storage/storage_backend_iscsi_direct.c b/src/storage/storage_backend_iscsi_direct.c index 4ac4ad471c..20997d5c5d 100644 --- a/src/storage/storage_backend_iscsi_direct.c +++ b/src/storage/storage_backend_iscsi_direct.c @@ -341,6 +341,7 @@ virISCSIDirectReportLuns(virStoragePoolObjPtr pool, struct iscsi_context *iscsi, char *portal) { + virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool); struct scsi_task *task = NULL; struct scsi_reportluns_list *list = NULL; int full_size; @@ -373,6 +374,8 @@ virISCSIDirectReportLuns(virStoragePoolObjPtr pool, goto cleanup; } + def->capacity = 0; + def->allocation = 0; for (i = 0; i < list->num; i++) { if (virISCSIDirectRefreshVol(pool, iscsi, list->luns[i], portal) < 0) goto cleanup; -- 2.19.2

On Thu, Feb 28, 2019 at 12:03:47PM +0100, Michal Privoznik wrote:
Jirka reported a bug that with every 'virsh pool-refresh' an iscsi-direct pool would grow and grow. The problem is that virISCSIDirectRefreshVol() only adds to def->capacity and def->allocation but nothing clears it out to begin with.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/storage/storage_backend_iscsi_direct.c | 3 +++ 1 file changed, 3 insertions(+)
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
participants (2)
-
Michal Privoznik
-
Pavel Hrdina