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

Erik Skultety eskultet at redhat.com
Thu May 28 12:31:54 UTC 2015



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




More information about the libvir-list mailing list