[libvirt] [PATCH] storage: Report error when using metadata prealloc with non-qcow2 volumes

We already report error from backend (virStorageBackendCreateRaw, virStorageBackendCreateBlockFrom), but we should also report the same error (applies to raw formated volumes and block type volumes as well) when creating a volume from a XML, not only from an existing volume. --- src/storage/storage_driver.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index ac4a74a..b519011 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -1803,6 +1803,22 @@ storageVolCreateXML(virStoragePoolPtr obj, goto cleanup; } + if (flags & VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA) { + if (voldef->target.format == VIR_STORAGE_FILE_RAW) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + "%s", _("metadata preallocation is not supported for " + "raw volumes")); + goto cleanup; + } + + if (voldef->type == VIR_STORAGE_VOL_BLOCK) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + "%s", _("metadata preallocation is not supported for " + "block volumes")); + goto cleanup; + } + } + if (virStorageVolCreateXMLEnsureACL(obj->conn, pool->def, voldef) < 0) goto cleanup; -- 1.9.3

On 05/26/2015 02:58 PM, Erik Skultety wrote:
We already report error from backend (virStorageBackendCreateRaw, virStorageBackendCreateBlockFrom), but we should also report the same error (applies to raw formated volumes and block type volumes as well) when creating a volume from a XML, not only from an existing volume. --- src/storage/storage_driver.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index ac4a74a..b519011 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -1803,6 +1803,22 @@ storageVolCreateXML(virStoragePoolPtr obj, goto cleanup; }
+ if (flags & VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA) { + if (voldef->target.format == VIR_STORAGE_FILE_RAW) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + "%s", _("metadata preallocation is not supported for " + "raw volumes")); + goto cleanup; + }
The problem does not reside in the error itself (because other backends do check for this in virStorageBackendCreateRaw|virStorageBackendBlockFrom), rather in the way we delete volumes in RBD backend. So NACK for this, I'll post a v2.
+ if (voldef->type == VIR_STORAGE_VOL_BLOCK) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + "%s", _("metadata preallocation is not supported for " + "block volumes")); + goto cleanup; + } + } + if (virStorageVolCreateXMLEnsureACL(obj->conn, pool->def, voldef) < 0) goto cleanup;
Erik
participants (1)
-
Erik Skultety