From 471e1c4e2ac195d9a9b2f2e3f359f46ebdb62210 Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Thu, 22 Jan 2015 11:23:10 -0500 Subject: [PATCH] storage: When delete extended partition, need to refresh pool When removing a volume that is the extended partition, all the logical volume partitions that exist within the extended partition will also be removed, so we need to refresh the pool to have the updated list --- src/storage/storage_backend_disk.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/storage/storage_backend_disk.c b/src/storage/storage_backend_disk.c index 233e293dd5..300aab3b73 100644 --- a/src/storage/storage_backend_disk.c +++ b/src/storage/storage_backend_disk.c @@ -654,7 +654,7 @@ virStorageBackendDiskPartBoundaries(virStoragePoolObjPtr pool, static int -virStorageBackendDiskDeleteVol(virConnectPtr conn ATTRIBUTE_UNUSED, +virStorageBackendDiskDeleteVol(virConnectPtr conn, virStoragePoolObjPtr pool, virStorageVolDefPtr vol, unsigned int flags) @@ -721,6 +721,15 @@ virStorageBackendDiskDeleteVol(virConnectPtr conn ATTRIBUTE_UNUSED, goto cleanup; } + /* If this was the extended partition, then all the logical partitions + * are then lost. Make it easy on ourselves and just refresh the pool + */ + if (vol->source.partType == VIR_STORAGE_VOL_DISK_TYPE_EXTENDED) { + virStoragePoolObjClearVols(pool); + if (virStorageBackendDiskRefreshPool(conn, pool) < 0) + goto cleanup; + } + rc = 0; cleanup: VIR_FREE(devpath); -- GitLab