From 239781e03ae01d28b7ca79ace77c30295c783ba8 Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Mon, 11 Sep 2017 17:11:25 -0400 Subject: [PATCH] storage: Adjust expected format for Disk startup processing https://bugzilla.redhat.com/show_bug.cgi?id=1464313 If a Disk pool was defined/created using XML that either didn't specify a specific format or specified format type='unknown', then restarting a pool after an initial disk backend build with overwrite would fail after a libvirtd restart for a non-autostarted pool. This is because the persistent pool data is not updated during pool build w/ overwrite processing to have the VIR_STORAGE_POOL_DISK_DOS default format. So in addition to the alteration done during disk build processing, alter the default expectation for disk startup to be DOS if nothing has been defined yet. That will either succeed if the pool had been successfully built previously using the default DOS format or fail with a message indicating the format is something else that does not match the expect format 'dos'. --- src/storage/storage_backend_disk.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/storage/storage_backend_disk.c b/src/storage/storage_backend_disk.c index e8f67bb003..bce3b4e2ab 100644 --- a/src/storage/storage_backend_disk.c +++ b/src/storage/storage_backend_disk.c @@ -446,8 +446,7 @@ static int virStorageBackendDiskStartPool(virConnectPtr conn ATTRIBUTE_UNUSED, virStoragePoolObjPtr pool) { - const char *format = - virStoragePoolFormatDiskTypeToString(pool->def->source.format); + const char *format; const char *path = pool->def->source.devices[0].path; virWaitForDevices(); @@ -458,6 +457,9 @@ virStorageBackendDiskStartPool(virConnectPtr conn ATTRIBUTE_UNUSED, return -1; } + if (pool->def->source.format == VIR_STORAGE_POOL_DISK_UNKNOWN) + pool->def->source.format = VIR_STORAGE_POOL_DISK_DOS; + format = virStoragePoolFormatDiskTypeToString(pool->def->source.format); if (!virStorageBackendDeviceIsEmpty(path, format, false)) return -1;