[libvirt] [PATCH 3/3] storage: drop the plumbing needed for kvm-img/qcow-create
John Ferlan
jferlan at redhat.com
Wed Apr 20 12:07:30 UTC 2016
On 04/15/2016 05:21 PM, Cole Robinson wrote:
> Remove all the plumbing needed for the different qcow-create/kvm-img
> non-raw file creation.
>
> We can drop the error messages because CreateQemuImg will thrown an
> error for us but with slightly less fidelity (unable to find qemu-img),
> which I think is acceptable given the unlikeliness of that error in
> practice.
> ---
> src/storage/storage_backend.c | 50 ++--------------------------------------
> src/storage/storage_backend.h | 9 +++++---
> src/storage/storage_backend_fs.c | 11 +--------
> 3 files changed, 9 insertions(+), 61 deletions(-)
>
> diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
> index e4b9b39..a71b838 100644
> --- a/src/storage/storage_backend.c
> +++ b/src/storage/storage_backend.c
> @@ -151,10 +151,6 @@ static virStorageFileBackendPtr fileBackends[] = {
> };
>
>
> -enum {
> - TOOL_QEMU_IMG,
> -};
> -
> #define READ_BLOCK_SIZE_DEFAULT (1024 * 1024)
> #define WRITE_BLOCK_SIZE_DEFAULT (4 * 1024)
>
> @@ -1219,7 +1215,7 @@ virStorageBackendCreateQemuImgCmdFromVol(virConnectPtr conn,
> return cmd;
> }
>
> -static int
> +int
> virStorageBackendCreateQemuImg(virConnectPtr conn,
> virStoragePoolObjPtr pool,
> virStorageVolDefPtr vol,
> @@ -1258,43 +1254,9 @@ virStorageBackendCreateQemuImg(virConnectPtr conn,
Suggestion-only...
In this function, there's the following:
create_tool = virFindFileInPath("qemu-img");
if (!create_tool) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("unable to find qemu-img"));
return -1;
}
Which is a perfectly reasonable error message; however, perhaps the one
from virStorageBackendGetBuildVolFromFunction that gets removed could be
more descriptive, that is:
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("creation of non-raw file images is "
"not supported without qemu-img."));
John
> }
>
> virStorageBackendBuildVolFrom
> -virStorageBackendFSImageToolTypeToFunc(int tool_type)
> -{
> - switch (tool_type) {
> - case TOOL_QEMU_IMG:
> - return virStorageBackendCreateQemuImg;
> - default:
> - virReportError(VIR_ERR_INTERNAL_ERROR,
> - _("Unknown file create tool type '%d'."),
> - tool_type);
> - }
> -
> - return NULL;
> -}
> -
> -int
> -virStorageBackendFindFSImageTool(char **tool)
> -{
> - int tool_type = -1;
> - char *tmp = NULL;
> -
> - if ((tmp = virFindFileInPath("qemu-img")) != NULL)
> - tool_type = TOOL_QEMU_IMG;
> -
> - if (tool)
> - *tool = tmp;
> - else
> - VIR_FREE(tmp);
> -
> - return tool_type;
> -}
> -
> -virStorageBackendBuildVolFrom
> virStorageBackendGetBuildVolFromFunction(virStorageVolDefPtr vol,
> virStorageVolDefPtr inputvol)
> {
> - int tool_type;
> -
> if (!inputvol)
> return NULL;
>
> @@ -1305,15 +1267,7 @@ virStorageBackendGetBuildVolFromFunction(virStorageVolDefPtr vol,
> vol->target.format != VIR_STORAGE_FILE_RAW) ||
> (inputvol->type == VIR_STORAGE_VOL_FILE &&
> inputvol->target.format != VIR_STORAGE_FILE_RAW)) {
> -
> - if ((tool_type = virStorageBackendFindFSImageTool(NULL)) < 0) {
> - virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> - _("creation of non-raw file images is "
> - "not supported without qemu-img."));
> - return NULL;
> - }
> -
> - return virStorageBackendFSImageToolTypeToFunc(tool_type);
> + return virStorageBackendCreateQemuImg;
> }
>
> if (vol->type == VIR_STORAGE_VOL_PLOOP)
> diff --git a/src/storage/storage_backend.h b/src/storage/storage_backend.h
> index a1e39c5..5bc622c 100644
> --- a/src/storage/storage_backend.h
> +++ b/src/storage/storage_backend.h
> @@ -109,6 +109,12 @@ int virStorageBackendCreateRaw(virConnectPtr conn,
> virStorageVolDefPtr inputvol,
> unsigned int flags);
>
> +int virStorageBackendCreateQemuImg(virConnectPtr conn,
> + virStoragePoolObjPtr pool,
> + virStorageVolDefPtr vol,
> + virStorageVolDefPtr inputvol,
> + unsigned int flags);
> +
> int virStorageBackendCreatePloop(virConnectPtr conn,
> virStoragePoolObjPtr pool,
> virStorageVolDefPtr vol,
> @@ -126,9 +132,6 @@ bool virStorageBackendIsPloopDir(char *path);
> virStorageBackendBuildVolFrom
> virStorageBackendGetBuildVolFromFunction(virStorageVolDefPtr vol,
> virStorageVolDefPtr inputvol);
> -int virStorageBackendFindFSImageTool(char **tool);
> -virStorageBackendBuildVolFrom
> -virStorageBackendFSImageToolTypeToFunc(int tool_type);
>
> int virStorageBackendFindGlusterPoolSources(const char *host,
> int pooltype,
> diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
> index 47d0f54..02a129e 100644
> --- a/src/storage/storage_backend_fs.c
> +++ b/src/storage/storage_backend_fs.c
> @@ -1170,7 +1170,6 @@ _virStorageBackendFileSystemVolBuild(virConnectPtr conn,
> unsigned int flags)
> {
> virStorageBackendBuildVolFrom create_func;
> - int tool_type;
>
> if (inputvol) {
> if (vol->target.encryption != NULL) {
> @@ -1190,16 +1189,8 @@ _virStorageBackendFileSystemVolBuild(virConnectPtr conn,
> create_func = createFileDir;
> } else if (vol->target.format == VIR_STORAGE_FILE_PLOOP) {
> create_func = virStorageBackendCreatePloop;
> - } else if ((tool_type = virStorageBackendFindFSImageTool(NULL)) != -1) {
> - create_func = virStorageBackendFSImageToolTypeToFunc(tool_type);
> -
> - if (!create_func)
> - return -1;
> } else {
> - virReportError(VIR_ERR_INTERNAL_ERROR,
> - "%s", _("creation of non-raw images "
> - "is not supported without qemu-img"));
> - return -1;
> + create_func = virStorageBackendCreateQemuImg;
> }
>
> if (create_func(conn, pool, vol, inputvol, flags) < 0)
>
More information about the libvir-list
mailing list