qemu-devel
[Top][All Lists]
Advanced

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

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


From: Kevin Wolf
Subject: [Qemu-devel] [PATCH] qemu-img rebase: Add -f option
Date: Tue, 2 Mar 2010 12:14:31 +0100

Allow the user to specify the format of the image to rebase.

Signed-off-by: Kevin Wolf <address@hidden>
---
 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);
     }
 
-- 
1.6.6.1





reply via email to

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