|
|
958e1b |
From bb18c8167f4b3a912e57ca4185e9e58d4d3a149b Mon Sep 17 00:00:00 2001
|
|
|
958e1b |
From: Max Reitz <mreitz@redhat.com>
|
|
|
958e1b |
Date: Fri, 24 Oct 2014 08:17:58 +0200
|
|
|
958e1b |
Subject: [PATCH 10/19] qemu-img: Allow cache mode specification for amend
|
|
|
958e1b |
|
|
|
958e1b |
Message-id: <1414138680-19600-3-git-send-email-mreitz@redhat.com>
|
|
|
958e1b |
Patchwork-id: 61863
|
|
|
958e1b |
O-Subject: [RHEL-7.1 qemu-kvm PATCH v2 2/4] qemu-img: Allow cache mode specification for amend
|
|
|
958e1b |
Bugzilla: 1138691
|
|
|
958e1b |
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
|
958e1b |
RH-Acked-by: Markus Armbruster <armbru@redhat.com>
|
|
|
958e1b |
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
958e1b |
|
|
|
958e1b |
qemu-img amend may extensively modify the target image, depending on the
|
|
|
958e1b |
options to be amended (e.g. conversion to qcow2 compat level 0.10 from
|
|
|
958e1b |
1.1 for an image with many unallocated zero clusters). Therefore it
|
|
|
958e1b |
makes sense to allow the user to specify the cache mode to be used.
|
|
|
958e1b |
|
|
|
958e1b |
Signed-off-by: Max Reitz <mreitz@redhat.com>
|
|
|
958e1b |
Reviewed-by: Eric Blake <eblake@redhat.com>
|
|
|
958e1b |
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
958e1b |
(cherry picked from commit bd39e6ed0b88a1473c652c97e731a156cccf16e2)
|
|
|
958e1b |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
958e1b |
|
|
|
958e1b |
Conflicts:
|
|
|
958e1b |
qemu-img.c
|
|
|
958e1b |
|
|
|
958e1b |
QemuOpts are not used throughout the downstream block layer.
|
|
|
958e1b |
|
|
|
958e1b |
Signed-off-by: Max Reitz <mreitz@redhat.com>
|
|
|
958e1b |
---
|
|
|
958e1b |
qemu-img-cmds.hx | 4 ++--
|
|
|
958e1b |
qemu-img.c | 19 +++++++++++++++----
|
|
|
958e1b |
qemu-img.texi | 2 +-
|
|
|
958e1b |
3 files changed, 18 insertions(+), 7 deletions(-)
|
|
|
958e1b |
|
|
|
958e1b |
diff --git a/qemu-img-cmds.hx b/qemu-img-cmds.hx
|
|
|
958e1b |
index e590d46..5efdfe9 100644
|
|
|
958e1b |
--- a/qemu-img-cmds.hx
|
|
|
958e1b |
+++ b/qemu-img-cmds.hx
|
|
|
958e1b |
@@ -70,8 +70,8 @@ STEXI
|
|
|
958e1b |
ETEXI
|
|
|
958e1b |
|
|
|
958e1b |
DEF("amend", img_amend,
|
|
|
958e1b |
- "amend [-q] [-f fmt] -o options filename")
|
|
|
958e1b |
+ "amend [-q] [-f fmt] [-t cache] -o options filename")
|
|
|
958e1b |
STEXI
|
|
|
958e1b |
-@item amend [-q] [-f @var{fmt}] -o @var{options} @var{filename}
|
|
|
958e1b |
+@item amend [-q] [-f @var{fmt}] [-t @var{cache}] -o @var{options} @var{filename}
|
|
|
958e1b |
@end table
|
|
|
958e1b |
ETEXI
|
|
|
958e1b |
diff --git a/qemu-img.c b/qemu-img.c
|
|
|
958e1b |
index 25fdc37..1f28729 100644
|
|
|
958e1b |
--- a/qemu-img.c
|
|
|
958e1b |
+++ b/qemu-img.c
|
|
|
958e1b |
@@ -2659,12 +2659,14 @@ static int img_amend(int argc, char **argv)
|
|
|
958e1b |
int c, ret = 0;
|
|
|
958e1b |
char *options = NULL;
|
|
|
958e1b |
QEMUOptionParameter *create_options = NULL, *options_param = NULL;
|
|
|
958e1b |
- const char *fmt = NULL, *filename;
|
|
|
958e1b |
+ const char *fmt = NULL, *filename, *cache;
|
|
|
958e1b |
+ int flags;
|
|
|
958e1b |
bool quiet = false;
|
|
|
958e1b |
BlockDriverState *bs = NULL;
|
|
|
958e1b |
|
|
|
958e1b |
+ cache = BDRV_DEFAULT_CACHE;
|
|
|
958e1b |
for (;;) {
|
|
|
958e1b |
- c = getopt(argc, argv, "hqf:o:");
|
|
|
958e1b |
+ c = getopt(argc, argv, "ho:f:t:q");
|
|
|
958e1b |
if (c == -1) {
|
|
|
958e1b |
break;
|
|
|
958e1b |
}
|
|
|
958e1b |
@@ -2691,6 +2693,9 @@ static int img_amend(int argc, char **argv)
|
|
|
958e1b |
case 'f':
|
|
|
958e1b |
fmt = optarg;
|
|
|
958e1b |
break;
|
|
|
958e1b |
+ case 't':
|
|
|
958e1b |
+ cache = optarg;
|
|
|
958e1b |
+ break;
|
|
|
958e1b |
case 'q':
|
|
|
958e1b |
quiet = true;
|
|
|
958e1b |
break;
|
|
|
958e1b |
@@ -2713,8 +2718,14 @@ static int img_amend(int argc, char **argv)
|
|
|
958e1b |
help();
|
|
|
958e1b |
}
|
|
|
958e1b |
|
|
|
958e1b |
- bs = bdrv_new_open("image", filename, fmt,
|
|
|
958e1b |
- BDRV_O_FLAGS | BDRV_O_RDWR, true, quiet);
|
|
|
958e1b |
+ flags = BDRV_O_FLAGS | BDRV_O_RDWR;
|
|
|
958e1b |
+ ret = bdrv_parse_cache_flags(cache, &flags);
|
|
|
958e1b |
+ if (ret < 0) {
|
|
|
958e1b |
+ error_report("Invalid cache option: %s", cache);
|
|
|
958e1b |
+ goto out;
|
|
|
958e1b |
+ }
|
|
|
958e1b |
+
|
|
|
958e1b |
+ bs = bdrv_new_open("image", filename, fmt, flags, true, quiet);
|
|
|
958e1b |
if (!bs) {
|
|
|
958e1b |
error_report("Could not open image '%s'", filename);
|
|
|
958e1b |
ret = -1;
|
|
|
958e1b |
diff --git a/qemu-img.texi b/qemu-img.texi
|
|
|
958e1b |
index 3d06e91..078fe81 100644
|
|
|
958e1b |
--- a/qemu-img.texi
|
|
|
958e1b |
+++ b/qemu-img.texi
|
|
|
958e1b |
@@ -370,7 +370,7 @@ After using this command to grow a disk image, you must use file system and
|
|
|
958e1b |
partitioning tools inside the VM to actually begin using the new space on the
|
|
|
958e1b |
device.
|
|
|
958e1b |
|
|
|
958e1b |
-@item amend [-f @var{fmt}] -o @var{options} @var{filename}
|
|
|
958e1b |
+@item amend [-f @var{fmt}] [-t @var{cache}] -o @var{options} @var{filename}
|
|
|
958e1b |
|
|
|
958e1b |
Amends the image format specific @var{options} for the image file
|
|
|
958e1b |
@var{filename}. Not all file formats support this operation.
|
|
|
958e1b |
--
|
|
|
958e1b |
1.8.3.1
|
|
|
958e1b |
|