diff mbox

[v10,4/6] qapi: introduce PreallocMode and a new PreallocMode full.

Message ID 326b6e2708ff8cf314fa0fe29aeeb1f7f674122d.1402544518.git.hutao@cn.fujitsu.com
State New
Headers show

Commit Message

Hu Tao June 12, 2014, 3:54 a.m. UTC
This patch prepares for the subsequent patches.

Reviewed-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Hu Tao <hutao@cn.fujitsu.com>
---
 block/qcow2.c    |  8 ++++----
 qapi-schema.json | 14 ++++++++++++++
 2 files changed, 18 insertions(+), 4 deletions(-)

Comments

Max Reitz June 14, 2014, 7:17 p.m. UTC | #1
On 12.06.2014 05:54, Hu Tao wrote:
> This patch prepares for the subsequent patches.
>
> Reviewed-by: Fam Zheng <famz@redhat.com>
> Reviewed-by: Eric Blake <eblake@redhat.com>
> Signed-off-by: Hu Tao <hutao@cn.fujitsu.com>
> ---
>   block/qcow2.c    |  8 ++++----
>   qapi-schema.json | 14 ++++++++++++++
>   2 files changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/block/qcow2.c b/block/qcow2.c
> index 6732e7c..2e0b83c 100644
> --- a/block/qcow2.c
> +++ b/block/qcow2.c
> @@ -1593,7 +1593,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,
>                            QEMUOptionParameter *options, int version,
>                            Error **errp)
>   {
> @@ -1770,7 +1770,7 @@ static int qcow2_create(const char *filename, QEMUOptionParameter *options,
>       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;
> @@ -1791,9 +1791,9 @@ static int qcow2_create(const char *filename, QEMUOptionParameter *options,
>               }
>           } else if (!strcmp(options->name, BLOCK_OPT_PREALLOC)) {
>               if (!options->value.s || !strcmp(options->value.s, "off")) {
> -                prealloc = 0;
> +                prealloc = PREALLOC_MODE_OFF;
>               } else if (!strcmp(options->value.s, "metadata")) {
> -                prealloc = 1;
> +                prealloc = PREALLOC_MODE_METADATA;
>               } else {
>                   error_setg(errp, "Invalid preallocation mode: '%s'",
>                              options->value.s);
> diff --git a/qapi-schema.json b/qapi-schema.json
> index 14b498b..f5ccb31 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json

As of commit 5db15096 (Benoît's "Extract QAPI block commands" series), 
block-related QAPI definitions should go into qapi/block.json or 
qapi/block-core.json. I think the following definition should now go 
into qapi/block-core.json instead of qapi-schema.json.

Apart from that, this patch looks good.

Max

> @@ -3077,3 +3077,17 @@
>                 'btn'     : 'InputBtnEvent',
>                 'rel'     : 'InputMoveEvent',
>                 'abs'     : 'InputMoveEvent' } }
> +
> +##
> +# @PreallocMode
> +#
> +# Preallocation mode of QEMU image file
> +#
> +# @off: no preallocation
> +# @metadata: preallocate only for metadata
> +# @full: preallocate all data, including metadata
> +#
> +# Since 2.1
> +##
> +{ 'enum': 'PreallocMode',
> +  'data': [ 'off', 'metadata', 'full' ] }
Hu Tao June 25, 2014, 5:46 a.m. UTC | #2
On Sat, Jun 14, 2014 at 09:17:02PM +0200, Max Reitz wrote:
> On 12.06.2014 05:54, Hu Tao wrote:
> >This patch prepares for the subsequent patches.
> >
> >Reviewed-by: Fam Zheng <famz@redhat.com>
> >Reviewed-by: Eric Blake <eblake@redhat.com>
> >Signed-off-by: Hu Tao <hutao@cn.fujitsu.com>
> >---
> >  block/qcow2.c    |  8 ++++----
> >  qapi-schema.json | 14 ++++++++++++++
> >  2 files changed, 18 insertions(+), 4 deletions(-)
> >
> >diff --git a/block/qcow2.c b/block/qcow2.c
> >index 6732e7c..2e0b83c 100644
> >--- a/block/qcow2.c
> >+++ b/block/qcow2.c
> >@@ -1593,7 +1593,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,
> >                           QEMUOptionParameter *options, int version,
> >                           Error **errp)
> >  {
> >@@ -1770,7 +1770,7 @@ static int qcow2_create(const char *filename, QEMUOptionParameter *options,
> >      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;
> >@@ -1791,9 +1791,9 @@ static int qcow2_create(const char *filename, QEMUOptionParameter *options,
> >              }
> >          } else if (!strcmp(options->name, BLOCK_OPT_PREALLOC)) {
> >              if (!options->value.s || !strcmp(options->value.s, "off")) {
> >-                prealloc = 0;
> >+                prealloc = PREALLOC_MODE_OFF;
> >              } else if (!strcmp(options->value.s, "metadata")) {
> >-                prealloc = 1;
> >+                prealloc = PREALLOC_MODE_METADATA;
> >              } else {
> >                  error_setg(errp, "Invalid preallocation mode: '%s'",
> >                             options->value.s);
> >diff --git a/qapi-schema.json b/qapi-schema.json
> >index 14b498b..f5ccb31 100644
> >--- a/qapi-schema.json
> >+++ b/qapi-schema.json
> 
> As of commit 5db15096 (Benoît's "Extract QAPI block commands"
> series), block-related QAPI definitions should go into
> qapi/block.json or qapi/block-core.json. I think the following
> definition should now go into qapi/block-core.json instead of
> qapi-schema.json.
> 
> Apart from that, this patch looks good.
> 
> Max

Thanks, I'll fix in next version.

Hu
diff mbox

Patch

diff --git a/block/qcow2.c b/block/qcow2.c
index 6732e7c..2e0b83c 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -1593,7 +1593,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,
                          QEMUOptionParameter *options, int version,
                          Error **errp)
 {
@@ -1770,7 +1770,7 @@  static int qcow2_create(const char *filename, QEMUOptionParameter *options,
     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;
@@ -1791,9 +1791,9 @@  static int qcow2_create(const char *filename, QEMUOptionParameter *options,
             }
         } else if (!strcmp(options->name, BLOCK_OPT_PREALLOC)) {
             if (!options->value.s || !strcmp(options->value.s, "off")) {
-                prealloc = 0;
+                prealloc = PREALLOC_MODE_OFF;
             } else if (!strcmp(options->value.s, "metadata")) {
-                prealloc = 1;
+                prealloc = PREALLOC_MODE_METADATA;
             } else {
                 error_setg(errp, "Invalid preallocation mode: '%s'",
                            options->value.s);
diff --git a/qapi-schema.json b/qapi-schema.json
index 14b498b..f5ccb31 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -3077,3 +3077,17 @@ 
               'btn'     : 'InputBtnEvent',
               'rel'     : 'InputMoveEvent',
               'abs'     : 'InputMoveEvent' } }
+
+##
+# @PreallocMode
+#
+# Preallocation mode of QEMU image file
+#
+# @off: no preallocation
+# @metadata: preallocate only for metadata
+# @full: preallocate all data, including metadata
+#
+# Since 2.1
+##
+{ 'enum': 'PreallocMode',
+  'data': [ 'off', 'metadata', 'full' ] }