From: Kevin Wolf Date: Thu, 6 Mar 2014 14:43:42 +0000 (+0100) Subject: blockdev: Fail blockdev-add with encrypted images X-Git-Tag: TizenStudio_2.0_p2.3.2~208^2~1013^2~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8ae8e904fcba484ff7c3f8f31339b56ebd88fbad;p=sdk%2Femulator%2Fqemu.git blockdev: Fail blockdev-add with encrypted images Encrypted images need a password before they can be used, and we don't want blockdev-add to create BDSes that aren't fully initialised. So for now simply forbid encrypted images; we can come back to it later if we need the functionality. Signed-off-by: Kevin Wolf Reviewed-by: Eric Blake --- diff --git a/blockdev.c b/blockdev.c index 357f760..561cb81 100644 --- a/blockdev.c +++ b/blockdev.c @@ -2266,6 +2266,7 @@ void qmp_block_job_complete(const char *device, Error **errp) void qmp_blockdev_add(BlockdevOptions *options, Error **errp) { QmpOutputVisitor *ov = qmp_output_visitor_new(); + DriveInfo *dinfo; QObject *obj; QDict *qdict; Error *local_err = NULL; @@ -2301,12 +2302,18 @@ void qmp_blockdev_add(BlockdevOptions *options, Error **errp) qdict_flatten(qdict); - blockdev_init(NULL, qdict, &local_err); + dinfo = blockdev_init(NULL, qdict, &local_err); if (local_err) { error_propagate(errp, local_err); goto fail; } + if (bdrv_key_required(dinfo->bdrv)) { + drive_uninit(dinfo); + error_setg(errp, "blockdev-add doesn't support encrypted devices"); + goto fail; + } + fail: qmp_output_visitor_cleanup(ov); }