All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: Hu Tao <hutao@cn.fujitsu.com>, qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Fam Zheng <famz@redhat.com>,
	"Richard W.M. Jones" <rjones@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Yasunori Goto <y-goto@jp.fujitsu.com>
Subject: Re: [Qemu-devel] [PATCH v13 4/6] qapi: introduce PreallocMode and a new PreallocMode full.
Date: Tue, 02 Sep 2014 23:32:50 +0200	[thread overview]
Message-ID: <54063782.8010902@redhat.com> (raw)
In-Reply-To: <a2c13d50d041d36022ded9835b6e6e00dc41ac8f.1409299732.git.hutao@cn.fujitsu.com>

On 29.08.2014 10:33, Hu Tao wrote:
> This patch prepares for the subsequent patches.
>
> Signed-off-by: Hu Tao <hutao@cn.fujitsu.com>
> ---
>   block/qcow2.c              | 23 +++++++++++++++--------
>   qapi/block-core.json       | 16 ++++++++++++++++
>   tests/qemu-iotests/049.out |  2 +-
>   3 files changed, 32 insertions(+), 9 deletions(-)
>
> diff --git a/block/qcow2.c b/block/qcow2.c
> index cf27c3f..95fb240 100644
> --- a/block/qcow2.c
> +++ b/block/qcow2.c
> @@ -30,6 +30,7 @@
>   #include "qemu/error-report.h"
>   #include "qapi/qmp/qerror.h"
>   #include "qapi/qmp/qbool.h"
> +#include "qapi/util.h"
>   #include "trace.h"
>   #include "qemu/option_int.h"
>   
> @@ -1738,7 +1739,7 @@ static int preallocate(BlockDriverState *bs)
>   
>   static int qcow2_create2(const char *filename, int64_t total_size,
>                            const char *backing_file, const char *backing_format,
> -                         int flags, size_t cluster_size, int prealloc,
> +                         int flags, size_t cluster_size, PreallocMode prealloc,
>                            QemuOpts *opts, int version,
>                            Error **errp)
>   {
> @@ -1915,7 +1916,7 @@ static int qcow2_create(const char *filename, QemuOpts *opts, Error **errp)
>       uint64_t size = 0;
>       int flags = 0;
>       size_t cluster_size = DEFAULT_CLUSTER_SIZE;
> -    int prealloc = 0;
> +    PreallocMode prealloc = PREALLOC_MODE_OFF;
>       int version = 3;
>       Error *local_err = NULL;
>       int ret;
> @@ -1931,12 +1932,11 @@ static int qcow2_create(const char *filename, QemuOpts *opts, Error **errp)
>       cluster_size = qemu_opt_get_size_del(opts, BLOCK_OPT_CLUSTER_SIZE,
>                                            DEFAULT_CLUSTER_SIZE);
>       buf = qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC);
> -    if (!buf || !strcmp(buf, "off")) {
> -        prealloc = 0;
> -    } else if (!strcmp(buf, "metadata")) {
> -        prealloc = 1;
> -    } else {
> -        error_setg(errp, "Invalid preallocation mode: '%s'", buf);
> +    prealloc = qapi_enum_parse(PreallocMode_lookup, buf,
> +                               PREALLOC_MODE_MAX, PREALLOC_MODE_OFF,
> +                               &local_err);
> +    if (local_err) {
> +        error_propagate(errp, local_err);
>           ret = -EINVAL;
>           goto finish;
>       }
> @@ -1958,6 +1958,13 @@ static int qcow2_create(const char *filename, QemuOpts *opts, Error **errp)
>           flags |= BLOCK_FLAG_LAZY_REFCOUNTS;
>       }
>   
> +    if (prealloc && prealloc != PREALLOC_MODE_METADATA) {
> +        ret = -1;

Since the return value is expected to be -errno, I'd propose "ret = 
-EINVAL;" here. With that fixed (or a good explanation why we want -1 here):

Reviewed-by: Max Reitz <mreitz@redhat.com>

> +        error_setg(errp, "Unsupported preallocate mode: %s",
> +                   PreallocMode_lookup[prealloc]);
> +        goto finish;
> +    }
> +
>       if (backing_file && prealloc) {
>           error_setg(errp, "Backing file and preallocation cannot be used at "
>                      "the same time");
> diff --git a/qapi/block-core.json b/qapi/block-core.json
> index fb74c56..543b00b 100644
> --- a/qapi/block-core.json
> +++ b/qapi/block-core.json
> @@ -1679,3 +1679,19 @@
>               'len'   : 'int',
>               'offset': 'int',
>               'speed' : 'int' } }
> +
> +# @PreallocMode
> +#
> +# Preallocation mode of QEMU image file
> +#
> +# @off: no preallocation
> +# @metadata: preallocate only for metadata
> +# @full: preallocate all data by calling posix_fallocate() if it is
> +#        available, otherwise by writing zeros to device to ensure disk
> +#        space is really available. @full preallocation also sets up
> +#        metadata correctly.
> +#
> +# Since 2.2
> +##
> +{ 'enum': 'PreallocMode',
> +  'data': [ 'off', 'metadata', 'full' ] }
> diff --git a/tests/qemu-iotests/049.out b/tests/qemu-iotests/049.out
> index 71ca44d..09ca0ae 100644
> --- a/tests/qemu-iotests/049.out
> +++ b/tests/qemu-iotests/049.out
> @@ -179,7 +179,7 @@ qemu-img create -f qcow2 -o preallocation=metadata TEST_DIR/t.qcow2 64M
>   Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off
>   
>   qemu-img create -f qcow2 -o preallocation=1234 TEST_DIR/t.qcow2 64M
> -qemu-img: TEST_DIR/t.qcow2: Invalid preallocation mode: '1234'
> +qemu-img: TEST_DIR/t.qcow2: invalid parameter value: 1234
>   Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 encryption=off cluster_size=65536 preallocation='1234' lazy_refcounts=off
>   
>   == Check encryption option ==

  reply	other threads:[~2014-09-02 21:33 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-29  8:33 [Qemu-devel] [PATCH v13 0/6] qcow2, raw: add preallocation=full Hu Tao
2014-08-29  8:33 ` [Qemu-devel] [PATCH v13 1/6] block: round up file size to nearest sector Hu Tao
2014-08-29 12:50   ` Eric Blake
2014-09-04  9:33     ` Kevin Wolf
2014-09-02 21:21   ` Max Reitz
2014-09-04  9:43   ` Kevin Wolf
2014-08-29  8:33 ` [Qemu-devel] [PATCH v13 2/6] block: don't convert file size to sector size Hu Tao
2014-09-02 21:24   ` Max Reitz
2014-09-04  9:57   ` Kevin Wolf
2014-09-05  9:07     ` Hu Tao
2014-08-29  8:33 ` [Qemu-devel] [PATCH v13 3/6] rename parse_enum_option to qapi_enum_parse and make it public Hu Tao
2014-09-02 21:27   ` Max Reitz
2014-09-03  1:30     ` Hu Tao
2014-09-04 10:03   ` Kevin Wolf
2014-08-29  8:33 ` [Qemu-devel] [PATCH v13 4/6] qapi: introduce PreallocMode and a new PreallocMode full Hu Tao
2014-09-02 21:32   ` Max Reitz [this message]
2014-09-03  1:31     ` Hu Tao
2014-09-02 21:51   ` Eric Blake
2014-09-03  1:35     ` Hu Tao
2014-09-04 12:17   ` Kevin Wolf
2014-08-29  8:33 ` [Qemu-devel] [PATCH v13 5/6] raw-posix: Add full preallocation option Hu Tao
2014-08-29  8:48   ` Richard W.M. Jones
2014-09-03  1:26     ` Hu Tao
2014-09-04  8:32     ` Hu Tao
2014-09-02 21:45   ` Max Reitz
2014-09-03  1:55     ` Hu Tao
2014-09-04 12:35   ` Kevin Wolf
2014-09-04 12:45     ` Richard W.M. Jones
2014-09-04 12:52       ` Kevin Wolf
2014-09-04 13:07         ` Richard W.M. Jones
2014-09-04 13:13           ` Daniel P. Berrange
2014-09-04 13:17           ` Kevin Wolf
2014-09-04 13:43             ` Richard W.M. Jones
2014-09-04 15:23               ` Kevin Wolf
2014-09-04 15:33                 ` Richard W.M. Jones
2014-08-29  8:33 ` [Qemu-devel] [PATCH v13 6/6] qcow2: " Hu Tao
2014-09-02 21:55   ` Max Reitz
2014-09-04 13:09   ` Kevin Wolf
2014-09-09  3:23     ` Hu Tao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54063782.8010902@redhat.com \
    --to=mreitz@redhat.com \
    --cc=famz@redhat.com \
    --cc=hutao@cn.fujitsu.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rjones@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=y-goto@jp.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.