summaryrefslogtreecommitdiff
path: root/monitor.c
diff options
context:
space:
mode:
authorLuiz Capitulino <lcapitulino@redhat.com>2009-12-04 15:24:09 -0200
committerAnthony Liguori <aliguori@us.ibm.com>2009-12-07 14:04:20 -0600
commit14d505b1f2605498a8a20fcb0b4596395f62e43e (patch)
tree8fa0a51eabc12097bdd551cae3aa9da3f0edde6c /monitor.c
parentd647f672186f35e3400824ce19a243f391d3f228 (diff)
downloadqemu-14d505b1f2605498a8a20fcb0b4596395f62e43e.tar.gz
qemu-14d505b1f2605498a8a20fcb0b4596395f62e43e.tar.bz2
qemu-14d505b1f2605498a8a20fcb0b4596395f62e43e.zip
monitor: Introduce 'block_passwd' command
When using encrypted disk images, QEMU will prompt the user for passwords when started. This makes sense for the user protocol, but doesn't for QMP. The solution is to have Monitor command which allows the user or a Client to set passwords in advance, so that we avoid the prompt completely. This is what block_passwd does, for example: (QEMU) block_passwd ide0-hd0 foobar Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'monitor.c')
-rw-r--r--monitor.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/monitor.c b/monitor.c
index ba76f3416d..27c696b2d4 100644
--- a/monitor.c
+++ b/monitor.c
@@ -772,6 +772,22 @@ static void do_eject(Monitor *mon, const QDict *qdict, QObject **ret_data)
eject_device(mon, bs, force);
}
+static void do_block_set_passwd(Monitor *mon, const QDict *qdict,
+ QObject **ret_data)
+{
+ BlockDriverState *bs;
+
+ bs = bdrv_find(qdict_get_str(qdict, "device"));
+ if (!bs) {
+ qemu_error_new(QERR_DEVICE_NOT_FOUND, qdict_get_str(qdict, "device"));
+ return;
+ }
+
+ if (bdrv_set_key(bs, qdict_get_str(qdict, "password")) < 0) {
+ qemu_error_new(QERR_INVALID_PASSWORD);
+ }
+}
+
static void do_change_block(Monitor *mon, const char *device,
const char *filename, const char *fmt)
{