From 77e7f69c3b88ae0a7364fa88334a483a247d7200 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Wed, 5 Jun 2013 09:38:41 +0200 Subject: [PATCH] storage: Provide better error message if metadata pre-alloc is unsupported Instead of a unknown flag error report that metadata pre-allocation is not supported with the requested volume creation method. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=969982 --- src/storage/storage_backend.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c index ace9caefc8..5a613811dc 100644 --- a/src/storage/storage_backend.c +++ b/src/storage/storage_backend.c @@ -254,7 +254,14 @@ virStorageBackendCreateBlockFrom(virConnectPtr conn ATTRIBUTE_UNUSED, gid_t gid; uid_t uid; - virCheckFlags(0, -1); + virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA, -1); + + if (flags & VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("metadata preallocation is not supported for block " + "volumes")); + goto cleanup; + } if ((fd = open(vol->target.path, O_RDWR)) < 0) { virReportSystemError(errno, @@ -385,7 +392,14 @@ virStorageBackendCreateRaw(virConnectPtr conn ATTRIBUTE_UNUSED, int fd = -1; int operation_flags; - virCheckFlags(0, -1); + virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA, -1); + + if (flags & VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("metadata preallocation is not supported for raw " + "volumes")); + goto cleanup; + } if (vol->target.encryption != NULL) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", @@ -897,7 +911,14 @@ virStorageBackendCreateQcowCreate(virConnectPtr conn ATTRIBUTE_UNUSED, char *size; virCommandPtr cmd; - virCheckFlags(0, -1); + virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA, -1); + + if (flags & VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("metadata preallocation is not supported with " + "qcow-create")); + return -1; + } if (inputvol) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", -- 2.47.2