qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/2] Document qemu-img create -o
@ 2009-06-04 13:39 Kevin Wolf
  2009-06-04 13:39 ` [Qemu-devel] [PATCH 1/2] qemu-img: Print available options with -o ? Kevin Wolf
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Kevin Wolf @ 2009-06-04 13:39 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf

The bad habit of implementing things and no letting anybody know what has
hanged... This patch series makes the qemu-img -o option actually usable
without reading the code by documenting things.

Kevin Wolf (2):
  qemu-img: Print available options with -o ?
  Document changes in qemu-img interface

 block/cow.c       |   12 ++++++++++--
 block/qcow.c      |   18 +++++++++++++++---
 block/qcow2.c     |   30 +++++++++++++++++++++++++-----
 block/raw-posix.c |    6 +++++-
 block/raw-win32.c |    6 +++++-
 block/vmdk.c      |   18 +++++++++++++++---
 block/vpc.c       |    6 +++++-
 qemu-img.c        |   27 ++++++++++++++++++++-------
 qemu-img.texi     |   32 ++++++++++++++++++--------------
 qemu-option.c     |   13 +++++++++++++
 qemu-option.h     |    2 ++
 11 files changed, 133 insertions(+), 37 deletions(-)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH 1/2] qemu-img: Print available options with -o ?
  2009-06-04 13:39 [Qemu-devel] [PATCH 0/2] Document qemu-img create -o Kevin Wolf
@ 2009-06-04 13:39 ` Kevin Wolf
  2009-06-04 13:39 ` [Qemu-devel] [PATCH 2/2] Document changes in qemu-img interface Kevin Wolf
  2009-06-06 15:45 ` [Qemu-devel] [PATCH 0/2] Document qemu-img create -o Blue Swirl
  2 siblings, 0 replies; 4+ messages in thread
From: Kevin Wolf @ 2009-06-04 13:39 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf

This patch adds a small help text to each of the options in the block drivers
which can be displayed by using qemu-img create -f fmt -o ?

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block/cow.c       |   12 ++++++++++--
 block/qcow.c      |   18 +++++++++++++++---
 block/qcow2.c     |   30 +++++++++++++++++++++++++-----
 block/raw-posix.c |    6 +++++-
 block/raw-win32.c |    6 +++++-
 block/vmdk.c      |   18 +++++++++++++++---
 block/vpc.c       |    6 +++++-
 qemu-img.c        |   18 +++++++++++++++---
 qemu-option.c     |   13 +++++++++++++
 qemu-option.h     |    2 ++
 10 files changed, 110 insertions(+), 19 deletions(-)

diff --git a/block/cow.c b/block/cow.c
index 41d292a..84818f1 100644
--- a/block/cow.c
+++ b/block/cow.c
@@ -262,8 +262,16 @@ static void cow_flush(BlockDriverState *bs)
 }
 
 static QEMUOptionParameter cow_create_options[] = {
-    { BLOCK_OPT_SIZE,           OPT_SIZE },
-    { BLOCK_OPT_BACKING_FILE,   OPT_STRING },
+    {
+        .name = BLOCK_OPT_SIZE,
+        .type = OPT_SIZE,
+        .help = "Virtual disk size"
+    },
+    {
+        .name = BLOCK_OPT_BACKING_FILE,
+        .type = OPT_STRING,
+        .help = "File name of a base image"
+    },
     { NULL }
 };
 
diff --git a/block/qcow.c b/block/qcow.c
index 329b364..55a68a6 100644
--- a/block/qcow.c
+++ b/block/qcow.c
@@ -909,9 +909,21 @@ static int qcow_get_info(BlockDriverState *bs, BlockDriverInfo *bdi)
 
 
 static QEMUOptionParameter qcow_create_options[] = {
-    { BLOCK_OPT_SIZE,           OPT_SIZE },
-    { BLOCK_OPT_BACKING_FILE,   OPT_STRING },
-    { BLOCK_OPT_ENCRYPT,        OPT_FLAG },
+    {
+        .name = BLOCK_OPT_SIZE,
+        .type = OPT_SIZE,
+        .help = "Virtual disk size"
+    },
+    {
+        .name = BLOCK_OPT_BACKING_FILE,
+        .type = OPT_STRING,
+        .help = "File name of a base image"
+    },
+    {
+        .name = BLOCK_OPT_ENCRYPT,
+        .type = OPT_FLAG,
+        .help = "Encrypt the image"
+    },
     { NULL }
 };
 
diff --git a/block/qcow2.c b/block/qcow2.c
index d1611d1..c2be42e 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -2981,11 +2981,31 @@ static int qcow_get_buffer(BlockDriverState *bs, uint8_t *buf,
 }
 
 static QEMUOptionParameter qcow_create_options[] = {
-    { BLOCK_OPT_SIZE,           OPT_SIZE },
-    { BLOCK_OPT_BACKING_FILE,   OPT_STRING },
-    { BLOCK_OPT_BACKING_FMT,    OPT_STRING },
-    { BLOCK_OPT_ENCRYPT,        OPT_FLAG },
-    { BLOCK_OPT_CLUSTER_SIZE,   OPT_SIZE },
+    {
+        .name = BLOCK_OPT_SIZE,
+        .type = OPT_SIZE,
+        .help = "Virtual disk size"
+    },
+    {
+        .name = BLOCK_OPT_BACKING_FILE,
+        .type = OPT_STRING,
+        .help = "File name of a base image"
+    },
+    {
+        .name = BLOCK_OPT_BACKING_FMT,
+        .type = OPT_STRING,
+        .help = "Image format of the base image"
+    },
+    {
+        .name = BLOCK_OPT_ENCRYPT,
+        .type = OPT_FLAG,
+        .help = "Encrypt the image"
+    },
+    {
+        .name = BLOCK_OPT_CLUSTER_SIZE,
+        .type = OPT_SIZE,
+        .help = "qcow2 cluster size"
+    },
     { NULL }
 };
 
diff --git a/block/raw-posix.c b/block/raw-posix.c
index 38c4aa7..4798d62 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -858,7 +858,11 @@ static void raw_flush(BlockDriverState *bs)
 
 
 static QEMUOptionParameter raw_create_options[] = {
-    { BLOCK_OPT_SIZE,           OPT_SIZE },
+    {
+        .name = BLOCK_OPT_SIZE,
+        .type = OPT_SIZE,
+        .help = "Virtual disk size"
+    },
     { NULL }
 };
 
diff --git a/block/raw-win32.c b/block/raw-win32.c
index 6e5c09b..1e95153 100644
--- a/block/raw-win32.c
+++ b/block/raw-win32.c
@@ -234,7 +234,11 @@ static int raw_create(const char *filename, QEMUOptionParameter *options)
 }
 
 static QEMUOptionParameter raw_create_options[] = {
-    { BLOCK_OPT_SIZE,           OPT_SIZE },
+    {
+        .name = BLOCK_OPT_SIZE,
+        .type = OPT_SIZE,
+        .help = "Virtual disk size"
+    },
     { NULL }
 };
 
diff --git a/block/vmdk.c b/block/vmdk.c
index b3ea686..f21f02b 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -828,9 +828,21 @@ static void vmdk_flush(BlockDriverState *bs)
 
 
 static QEMUOptionParameter vmdk_create_options[] = {
-    { BLOCK_OPT_SIZE,           OPT_SIZE },
-    { BLOCK_OPT_BACKING_FILE,   OPT_STRING },
-    { BLOCK_OPT_COMPAT6,        OPT_FLAG },
+    {
+        .name = BLOCK_OPT_SIZE,
+        .type = OPT_SIZE,
+        .help = "Virtual disk size"
+    },
+    {
+        .name = BLOCK_OPT_BACKING_FILE,
+        .type = OPT_STRING,
+        .help = "File name of a base image"
+    },
+    {
+        .name = BLOCK_OPT_COMPAT6,
+        .type = OPT_FLAG,
+        .help = "VMDK version 6 image"
+    },
     { NULL }
 };
 
diff --git a/block/vpc.c b/block/vpc.c
index 662a6f6..ba482e9 100644
--- a/block/vpc.c
+++ b/block/vpc.c
@@ -594,7 +594,11 @@ static void vpc_close(BlockDriverState *bs)
 }
 
 static QEMUOptionParameter vpc_create_options[] = {
-    { "size", OPT_SIZE },
+    {
+        .name = BLOCK_OPT_SIZE,
+        .type = OPT_SIZE,
+        .help = "Virtual disk size"
+    },
     { NULL }
 };
 
diff --git a/qemu-img.c b/qemu-img.c
index 3edf25a..947e71b 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -281,15 +281,17 @@ static int img_create(int argc, char **argv)
             break;
         }
     }
-    if (optind >= argc)
-        help();
-    filename = argv[optind++];
 
     /* Find driver and parse its options */
     drv = bdrv_find_format(fmt);
     if (!drv)
         error("Unknown file format '%s'", fmt);
 
+    if (options && !strcmp(options, "?")) {
+        print_option_help(drv->create_options);
+        return 0;
+    }
+
     if (options) {
         param = parse_option_parameters(options, drv->create_options, param);
         if (param == NULL) {
@@ -299,6 +301,11 @@ static int img_create(int argc, char **argv)
         param = parse_option_parameters("", drv->create_options, param);
     }
 
+    /* Get the filename */
+    if (optind >= argc)
+        help();
+    filename = argv[optind++];
+
     /* Add size to parameters */
     if (optind < argc) {
         set_option_parameter(param, BLOCK_OPT_SIZE, argv[optind++]);
@@ -596,6 +603,11 @@ static int img_convert(int argc, char **argv)
     if (!drv)
         error("Unknown file format '%s'", out_fmt);
 
+    if (options && !strcmp(options, "?")) {
+        print_option_help(drv->create_options);
+        return 0;
+    }
+
     if (options) {
         param = parse_option_parameters(options, drv->create_options, param);
         if (param == NULL) {
diff --git a/qemu-option.c b/qemu-option.c
index 3cebdd5..646bbad 100644
--- a/qemu-option.c
+++ b/qemu-option.c
@@ -347,3 +347,16 @@ void print_option_parameters(QEMUOptionParameter *list)
         list++;
     }
 }
+
+/*
+ * Prints an overview of all available options
+ */
+void print_option_help(QEMUOptionParameter *list)
+{
+    printf("Supported options:\n");
+    while (list && list->name) {
+        printf("%-16s %s\n", list->name,
+            list->help ? list->help : "No description available");
+        list++;
+    }
+}
diff --git a/qemu-option.h b/qemu-option.h
index ac24694..059c0a4 100644
--- a/qemu-option.h
+++ b/qemu-option.h
@@ -40,6 +40,7 @@ typedef struct QEMUOptionParameter {
         uint64_t n;
         char* s;
     } value;
+    const char *help;
 } QEMUOptionParameter;
 
 
@@ -63,5 +64,6 @@ QEMUOptionParameter *parse_option_parameters(const char *param,
     QEMUOptionParameter *list, QEMUOptionParameter *dest);
 void free_option_parameters(QEMUOptionParameter *list);
 void print_option_parameters(QEMUOptionParameter *list);
+void print_option_help(QEMUOptionParameter *list);
 
 #endif
-- 
1.6.0.6

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH 2/2] Document changes in qemu-img interface
  2009-06-04 13:39 [Qemu-devel] [PATCH 0/2] Document qemu-img create -o Kevin Wolf
  2009-06-04 13:39 ` [Qemu-devel] [PATCH 1/2] qemu-img: Print available options with -o ? Kevin Wolf
@ 2009-06-04 13:39 ` Kevin Wolf
  2009-06-06 15:45 ` [Qemu-devel] [PATCH 0/2] Document qemu-img create -o Blue Swirl
  2 siblings, 0 replies; 4+ messages in thread
From: Kevin Wolf @ 2009-06-04 13:39 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf

Update the documentation to reflect the introduction of format specific options
with -o. Don't advertise -e or -6 any more, they exist only for compatibility
reasons and can be replaced by the corresponding -o options.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 qemu-img.c    |    9 +++++----
 qemu-img.texi |   32 ++++++++++++++++++--------------
 2 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/qemu-img.c b/qemu-img.c
index 947e71b..aff3980 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -59,9 +59,9 @@ static void help(void)
            "\n"
            "Command syntax:\n"
            "  check [-f fmt] filename\n"
-           "  create [-e] [-6] [-F fmt] [-b base_image] [-f fmt] filename [size]\n"
+           "  create [-F fmt] [-b base_image] [-f fmt] [-o options] filename [size]\n"
            "  commit [-f fmt] filename\n"
-           "  convert [-c] [-e] [-6] [-f fmt] [-O output_fmt] [-B output_base_image] filename [filename2 [...]] output_filename\n"
+           "  convert [-c] [-f fmt] [-O output_fmt] [-o options] [-B output_base_image] filename [filename2 [...]] output_filename\n"
            "  info [-f fmt] filename\n"
            "  snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename\n"
            "\n"
@@ -79,9 +79,10 @@ static void help(void)
            "    supported any 'k' or 'K' is ignored\n"
            "  'output_filename' is the destination disk image filename\n"
            "  'output_fmt' is the destination format\n"
+           "  'options' is a comma separated list of format specific options in a\n"
+           "    name=value format. Use -o ? for an overview of the options supported by the\n"
+           "    used format\n"
            "  '-c' indicates that target image must be compressed (qcow format only)\n"
-           "  '-e' indicates that the target image must be encrypted (qcow format only)\n"
-           "  '-6' indicates that the target image must use compatibility level 6 (vmdk format only)\n"
            "  '-h' with or without a command shows this help and lists the supported formats\n"
            "\n"
            "Parameters to snapshot subcommand:\n"
diff --git a/qemu-img.texi b/qemu-img.texi
index deef2ab..dae7b82 100644
--- a/qemu-img.texi
+++ b/qemu-img.texi
@@ -8,9 +8,9 @@ usage: qemu-img command [command options]
 
 The following commands are supported:
 @table @option
-@item create [-e] [-6] [-F @var{base_fmt}] [-b @var{base_image}] [-f @var{fmt}] @var{filename} [@var{size}]
+@item create [-F @var{base_fmt}] [-b @var{base_image}] [-f @var{fmt}] [-o @var{options}] @var{filename} [@var{size}]
 @item commit [-f @var{fmt}] @var{filename}
-@item convert [-c] [-e] [-6] [-f @var{fmt}] [-O @var{output_fmt}] [-B @var{output_base_image}] @var{filename} [@var{filename2} [...]] @var{output_filename}
+@item convert [-c] [-f @var{fmt}] [-O @var{output_fmt}] [-o @var{options}] [-B @var{output_base_image}] @var{filename} [@var{filename2} [...]] @var{output_filename}
 @item info [-f @var{fmt}] @var{filename}
 @item snapshot [-l | -a @var{snapshot} | -c @var{snapshot} | -d @var{snapshot}] @var{filename}
 @end table
@@ -61,22 +61,23 @@ CD-ROM images present for example in the Knoppix CD-ROMs.
 @end table
 
 @item size
-is the disk image size in kilobytes. Optional suffixes @code{M}
-(megabyte, 1024 * 1024) and @code{G} (gigabyte, 1024 * 1024 * 1024)
-are supported and any @code{k} or @code{K} is ignored.
+is the disk image size in bytes. Optional suffixes @code{k} or @code{K}
+(kilobyte, 1024) @code{M} (megabyte, 1024k) and @code{G} (gigabyte, 1024M)
+and T (terabyte, 1024G) are supported.  @code{b} is ignored.
 
 @item output_filename
 is the destination disk image filename
 
 @item output_fmt
  is the destination format
+@item options
+is a comma separated list of format specific options in a
+name=value format. Use @code{-o ?} for an overview of the options supported
+by the used format
+
 
 @item -c
 indicates that target image must be compressed (qcow format only)
-@item -e
-indicates that the target image must be encrypted (qcow format only)
-@item -6
-indicates that the target image must use compatibility level 6 (vmdk format only)
 @item -h
 with or without a command shows help and lists the supported formats
 @end table
@@ -100,7 +101,7 @@ lists all snapshots in the given image
 Command description:
 
 @table @option
-@item create [-6] [-e] [-b @var{base_image}] [-f @var{fmt}] @var{filename} [@var{size}]
+@item create [-F @var{base_fmt}] [-b @var{base_image}] [-f @var{fmt}] [-o @var{options}] @var{filename} [@var{size}]
 
 Create the new disk image @var{filename} of size @var{size} and format
 @var{fmt}.
@@ -110,17 +111,20 @@ differences from @var{base_image}. No size needs to be specified in
 this case. @var{base_image} will never be modified unless you use the
 @code{commit} monitor command.
 
+The size can also be specified using the @var{size} option with @code{-o},
+it doesn't need to be specified separately in this case.
+
 @item commit [-f @var{fmt}] @var{filename}
 
 Commit the changes recorded in @var{filename} in its base image.
 
-@item convert [-c] [-e] [-f @var{fmt}] @var{filename} [-O @var{output_fmt}] @var{output_filename}
+@item convert [-c] [-f @var{fmt}] [-O @var{output_fmt}] [-o @var{options}] [-B @var{output_base_image}] @var{filename} [@var{filename2} [...]] @var{output_filename}
 
 Convert the disk image @var{filename} to disk image @var{output_filename}
-using format @var{output_fmt}. It can be optionally encrypted
-(@code{-e} option) or compressed (@code{-c} option).
+using format @var{output_fmt}. It can be optionally compressed (@code{-c}
+option) or use any format specific options like encryption (@code{-o} option).
 
-Only the format @code{qcow} supports encryption or compression. The
+Only the formats @code{qcow} and @code{qcow2} support encryption or compression. The
 compression is read-only. It means that if a compressed sector is
 rewritten, then it is rewritten as uncompressed data.
 
-- 
1.6.0.6

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH 0/2] Document qemu-img create -o
  2009-06-04 13:39 [Qemu-devel] [PATCH 0/2] Document qemu-img create -o Kevin Wolf
  2009-06-04 13:39 ` [Qemu-devel] [PATCH 1/2] qemu-img: Print available options with -o ? Kevin Wolf
  2009-06-04 13:39 ` [Qemu-devel] [PATCH 2/2] Document changes in qemu-img interface Kevin Wolf
@ 2009-06-06 15:45 ` Blue Swirl
  2 siblings, 0 replies; 4+ messages in thread
From: Blue Swirl @ 2009-06-06 15:45 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: qemu-devel

On 6/4/09, Kevin Wolf <kwolf@redhat.com> wrote:
> The bad habit of implementing things and no letting anybody know what has
>  hanged... This patch series makes the qemu-img -o option actually usable
>  without reading the code by documenting things.

Thanks, applied.

With hxtool the documentation and code could be kept in one place...

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-06-06 15:45 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-04 13:39 [Qemu-devel] [PATCH 0/2] Document qemu-img create -o Kevin Wolf
2009-06-04 13:39 ` [Qemu-devel] [PATCH 1/2] qemu-img: Print available options with -o ? Kevin Wolf
2009-06-04 13:39 ` [Qemu-devel] [PATCH 2/2] Document changes in qemu-img interface Kevin Wolf
2009-06-06 15:45 ` [Qemu-devel] [PATCH 0/2] Document qemu-img create -o Blue Swirl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).