From c0cf085da9b6b1d21791dd88c34f7ad7f0b83359 Mon Sep 17 00:00:00 2001 From: Alexandre Derumier Date: Mon, 29 Oct 2012 17:18:42 +0100 Subject: [PATCH] add qemu-img convert -C option (skip target volume creation) Signed-off-by: Alexandre Derumier --- .../qemu-img-convert-skipcreate-option.patch | 84 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 85 insertions(+) create mode 100644 debian/patches/qemu-img-convert-skipcreate-option.patch diff --git a/debian/patches/qemu-img-convert-skipcreate-option.patch b/debian/patches/qemu-img-convert-skipcreate-option.patch new file mode 100644 index 0000000..b9725b5 --- /dev/null +++ b/debian/patches/qemu-img-convert-skipcreate-option.patch @@ -0,0 +1,84 @@ +From 6b8ac153620bbc1a39e9ee6eef0392219886ebb3 Mon Sep 17 00:00:00 2001 +From: Alexandre Derumier +Date: Mon, 29 Oct 2012 10:02:33 +0100 +Subject: [PATCH] skipcreate + + +Signed-off-by: Alexandre Derumier +--- + qemu-img.c | 36 +++++++++++++++++++++--------------- + 1 file changed, 21 insertions(+), 15 deletions(-) + +diff --git a/qemu-img.c b/qemu-img.c +index b41e670..d399ccd 100644 +--- a/qemu-img.c ++++ b/qemu-img.c +@@ -654,7 +654,7 @@ static int compare_sectors(const uint8_t *buf1, const uint8_t *buf2, int n, + + static int img_convert(int argc, char **argv) + { +- int c, ret = 0, n, n1, bs_n, bs_i, compress, cluster_size, cluster_sectors; ++ int c, ret = 0, n, n1, bs_n, bs_i, compress, cluster_size, cluster_sectors, skipcreate; + int progress = 0, flags; + const char *fmt, *out_fmt, *cache, *out_baseimg, *out_filename; + BlockDriver *drv, *proto_drv; +@@ -676,8 +676,9 @@ static int img_convert(int argc, char **argv) + cache = "unsafe"; + out_baseimg = NULL; + compress = 0; ++ skipcreate = 0; + for(;;) { +- c = getopt(argc, argv, "f:O:B:s:hce6o:pS:t:"); ++ c = getopt(argc, argv, "f:O:B:s:hcCe6o:pS:t:"); + if (c == -1) { + break; + } +@@ -698,6 +699,9 @@ static int img_convert(int argc, char **argv) + case 'c': + compress = 1; + break; ++ case 'C': ++ skipcreate = 1; ++ break; + case 'e': + error_report("option -e is deprecated, please use \'-o " + "encryption\' instead!"); +@@ -858,20 +862,22 @@ static int img_convert(int argc, char **argv) + } + } + +- /* Create the new image */ +- ret = bdrv_create(drv, out_filename, param); +- if (ret < 0) { +- if (ret == -ENOTSUP) { +- error_report("Formatting not supported for file format '%s'", +- out_fmt); +- } else if (ret == -EFBIG) { +- error_report("The image size is too large for file format '%s'", +- out_fmt); +- } else { +- error_report("%s: error while converting %s: %s", +- out_filename, out_fmt, strerror(-ret)); ++ if (!skipcreate) { ++ /* Create the new image */ ++ ret = bdrv_create(drv, out_filename, param); ++ if (ret < 0) { ++ if (ret == -ENOTSUP) { ++ error_report("Formatting not supported for file format '%s'", ++ out_fmt); ++ } else if (ret == -EFBIG) { ++ error_report("The image size is too large for file format '%s'", ++ out_fmt); ++ } else { ++ error_report("%s: error while converting %s: %s", ++ out_filename, out_fmt, strerror(-ret)); ++ } ++ goto out; + } +- goto out; + } + + flags = BDRV_O_RDWR; +-- +1.7.10.4 + diff --git a/debian/patches/series b/debian/patches/series index d3dcbcd..5768d6c 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -14,3 +14,4 @@ move-bdrv-snapshot-find.patch internal-snapshot-async.patch savevm-live.patch stream-fix-ratelimit_set_speed.patch +qemu-img-convert-skipcreate-option.patch -- 2.39.2