--- /dev/null
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Alexandre Derumier <aderumier@odiso.com>
+Date: Wed, 21 Mar 2018 08:51:34 +0100
+Subject: [PATCH] qemu-img dd : add -n skip_create
+
+---
+ qemu-img.c | 23 ++++++++++++++---------
+ 1 file changed, 14 insertions(+), 9 deletions(-)
+
+diff --git a/qemu-img.c b/qemu-img.c
+index 2605367c59..73aa18e086 100644
+--- a/qemu-img.c
++++ b/qemu-img.c
+@@ -4218,7 +4218,7 @@ static int img_dd(int argc, char **argv)
+ const char *fmt = NULL;
+ int64_t size = 0, readsize = 0;
+ int64_t block_count = 0, out_pos, in_pos;
+- bool force_share = false;
++ bool force_share = false, skip_create = false;
+ struct DdInfo dd = {
+ .flags = 0,
+ .count = 0,
+@@ -4256,7 +4256,7 @@ static int img_dd(int argc, char **argv)
+ { 0, 0, 0, 0 }
+ };
+
+- while ((c = getopt_long(argc, argv, ":hf:O:U", long_options, NULL))) {
++ while ((c = getopt_long(argc, argv, ":hf:O:U:n", long_options, NULL))) {
+ if (c == EOF) {
+ break;
+ }
+@@ -4276,6 +4276,9 @@ static int img_dd(int argc, char **argv)
+ case 'h':
+ help();
+ break;
++ case 'n':
++ skip_create = true;
++ break;
+ case 'U':
+ force_share = true;
+ break;
+@@ -4416,13 +4419,15 @@ static int img_dd(int argc, char **argv)
+ size - in.bsz * in.offset, &error_abort);
+ }
+
+- ret = bdrv_create(drv, out.filename, opts, &local_err);
+- if (ret < 0) {
+- error_reportf_err(local_err,
+- "%s: error while creating output image: ",
+- out.filename);
+- ret = -1;
+- goto out;
++ if (!skip_create) {
++ ret = bdrv_create(drv, out.filename, opts, &local_err);
++ if (ret < 0) {
++ error_reportf_err(local_err,
++ "%s: error while creating output image: ",
++ out.filename);
++ ret = -1;
++ goto out;
++ }
+ }
+
+ /* TODO, we can't honour --image-opts for the target,
+--
+2.11.0
+