Signed-off-by: MORITA Kazutaka <morita.kazut...@lab.ntt.co.jp> --- qemu-img-cmds.hx | 4 ++-- qemu-img.c | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/qemu-img-cmds.hx b/qemu-img-cmds.hx index 641bd87..be873a4 100644 --- a/qemu-img-cmds.hx +++ b/qemu-img-cmds.hx @@ -40,8 +40,8 @@ STEXI ETEXI DEF("snapshot", img_snapshot, - "snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename") + "snapshot [-f fmt] [-l | -a snapshot | -c snapshot | -d snapshot] filename") STEXI -...@item snapshot [-l | -a @var{snapshot} | -c @var{snapshot} | -d @var{snapshot}] @var{filename} +...@item snapshot [-f fmt] [-l | -a @var{snapshot} | -c @var{snapshot} | -d @var{snapshot}] @var{filename} @end table ETEXI diff --git a/qemu-img.c b/qemu-img.c index 0056f5e..aa33a6b 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -938,6 +938,8 @@ static int img_info(int argc, char **argv) static int img_snapshot(int argc, char **argv) { BlockDriverState *bs; + const char *fmt = "raw"; + BlockDriver *drv; QEMUSnapshotInfo sn; char *filename, *snapshot_name = NULL; int c, ret; @@ -946,7 +948,7 @@ static int img_snapshot(int argc, char **argv) /* Parse commandline parameters */ for(;;) { - c = getopt(argc, argv, "la:c:d:h"); + c = getopt(argc, argv, "la:c:d:f:h"); if (c == -1) break; switch(c) { @@ -984,6 +986,9 @@ static int img_snapshot(int argc, char **argv) action = SNAPSHOT_DELETE; snapshot_name = optarg; break; + case 'f': + fmt = optarg; + break; } } @@ -995,8 +1000,14 @@ static int img_snapshot(int argc, char **argv) bs = bdrv_new(""); if (!bs) error("Not enough memory"); - - if (bdrv_open2(bs, filename, 0, NULL) < 0) { + if (fmt) { + drv = bdrv_find_format(fmt); + if (!drv) + error("Unknown file format '%s'", fmt); + } else { + drv = NULL; + } + if (bdrv_open2(bs, filename, 0, drv) < 0) { error("Could not open '%s'", filename); } -- 1.5.6.5 -- sheepdog mailing list sheepdog@lists.wpkg.org http://lists.wpkg.org/mailman/listinfo/sheepdog