|
@@ -4158,6 +4158,7 @@ static int img_dd(int argc, char **argv)
|
|
|
};
|
|
|
const struct option long_options[] = {
|
|
|
{ "help", no_argument, 0, 'h'},
|
|
|
+ { "object", required_argument, 0, OPTION_OBJECT},
|
|
|
{ "image-opts", no_argument, 0, OPTION_IMAGE_OPTS},
|
|
|
{ "force-share", no_argument, 0, 'U'},
|
|
|
{ 0, 0, 0, 0 }
|
|
@@ -4186,6 +4187,15 @@ static int img_dd(int argc, char **argv)
|
|
|
case 'U':
|
|
|
force_share = true;
|
|
|
break;
|
|
|
+ case OPTION_OBJECT: {
|
|
|
+ QemuOpts *opts;
|
|
|
+ opts = qemu_opts_parse_noisily(&qemu_object_opts,
|
|
|
+ optarg, true);
|
|
|
+ if (!opts) {
|
|
|
+ ret = -1;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+ } break;
|
|
|
case OPTION_IMAGE_OPTS:
|
|
|
image_opts = true;
|
|
|
break;
|
|
@@ -4230,6 +4240,14 @@ static int img_dd(int argc, char **argv)
|
|
|
ret = -1;
|
|
|
goto out;
|
|
|
}
|
|
|
+
|
|
|
+ if (qemu_opts_foreach(&qemu_object_opts,
|
|
|
+ user_creatable_add_opts_foreach,
|
|
|
+ NULL, NULL)) {
|
|
|
+ ret = -1;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+
|
|
|
blk1 = img_open(image_opts, in.filename, fmt, 0, false, false,
|
|
|
force_share);
|
|
|
|