mirror of https://gitee.com/openkylin/qemu.git
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>
This commit is contained in:
parent
f6d855c50d
commit
a3a55a2edb
16
monitor.c
16
monitor.c
|
@ -772,6 +772,22 @@ static void do_eject(Monitor *mon, const QDict *qdict, QObject **ret_data)
|
||||||
eject_device(mon, bs, force);
|
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,
|
static void do_change_block(Monitor *mon, const char *device,
|
||||||
const char *filename, const char *fmt)
|
const char *filename, const char *fmt)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1045,6 +1045,20 @@ STEXI
|
||||||
Close the file descriptor previously assigned to @var{fdname} using the
|
Close the file descriptor previously assigned to @var{fdname} using the
|
||||||
@code{getfd} command. This is only needed if the file descriptor was never
|
@code{getfd} command. This is only needed if the file descriptor was never
|
||||||
used by another monitor command.
|
used by another monitor command.
|
||||||
|
ETEXI
|
||||||
|
|
||||||
|
{
|
||||||
|
.name = "block_passwd",
|
||||||
|
.args_type = "device:B,password:s",
|
||||||
|
.params = "block_passwd device password",
|
||||||
|
.help = "set the password of encrypted block devices",
|
||||||
|
.user_print = monitor_user_noop,
|
||||||
|
.mhandler.cmd_new = do_block_set_passwd,
|
||||||
|
},
|
||||||
|
|
||||||
|
STEXI
|
||||||
|
@item block_passwd @var{device} @var{password}
|
||||||
|
Set the encrypted device @var{device} password to @var{password}
|
||||||
ETEXI
|
ETEXI
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
|
Loading…
Reference in New Issue