qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] qemu-img rebase: Add -f option


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH] qemu-img rebase: Add -f option
Date: Tue, 09 Mar 2010 11:22:02 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091209 Fedora/3.0-4.fc12 Lightning/1.0pre Thunderbird/3.0

On 03/02/2010 05:14 AM, Kevin Wolf wrote:
Allow the user to specify the format of the image to rebase.

Signed-off-by: Kevin Wolf<address@hidden>

Applied.  Thanks.

Regards,

Anthony Liguori
---
  qemu-img.c |   20 ++++++++++++++++----
  1 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/qemu-img.c b/qemu-img.c
index 258dc62..7fc980a 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -1081,24 +1081,28 @@ static int img_snapshot(int argc, char **argv)
  static int img_rebase(int argc, char **argv)
  {
      BlockDriverState *bs, *bs_old_backing, *bs_new_backing;
-    BlockDriver *old_backing_drv, *new_backing_drv;
+    BlockDriver *drv, *old_backing_drv, *new_backing_drv;
      char *filename;
-    const char *out_basefmt, *out_baseimg;
+    const char *fmt, *out_basefmt, *out_baseimg;
      int c, flags, ret;
      int unsafe = 0;

      /* Parse commandline parameters */
+    fmt = NULL;
      out_baseimg = NULL;
      out_basefmt = NULL;

      for(;;) {
-        c = getopt(argc, argv, "uhF:b:");
+        c = getopt(argc, argv, "uhf:F:b:");
          if (c == -1)
              break;
          switch(c) {
          case 'h':
              help();
              return 0;
+        case 'f':
+            fmt = optarg;
+            break;
          case 'F':
              out_basefmt = optarg;
              break;
@@ -1125,8 +1129,16 @@ static int img_rebase(int argc, char **argv)
      if (!bs)
          error("Not enough memory");

+    drv = NULL;
+    if (fmt) {
+        drv = bdrv_find_format(fmt);
+        if (drv == NULL) {
+            error("Invalid format name: '%s'", fmt);
+        }
+    }
+
      flags = BRDV_O_FLAGS | BDRV_O_RDWR | (unsafe ? BDRV_O_NO_BACKING : 0);
-    if (bdrv_open2(bs, filename, flags, NULL)<  0) {
+    if (bdrv_open2(bs, filename, flags, drv)<  0) {
          error("Could not open '%s'", filename);
      }






reply via email to

[Prev in Thread] Current Thread [Next in Thread]