mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
block: Catch simultaneous usage of options and their aliases
While thinking about precedence of conflicting block device options from different sources, I noticed that you can specify both an option and its legacy alias at the same time (e.g. readonly=on,read-only=off). Rather than specifying the order of precedence, we should simply forbid such combinations. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Benoît Canet <benoit.canet@nodalink.com> Reviewed-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
247147fbc1
commit
5abbf0ee4d
3 changed files with 82 additions and 2 deletions
16
blockdev.c
16
blockdev.c
|
@ -538,12 +538,18 @@ err_no_opts:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static void qemu_opt_rename(QemuOpts *opts, const char *from, const char *to)
|
||||
static void qemu_opt_rename(QemuOpts *opts, const char *from, const char *to,
|
||||
Error **errp)
|
||||
{
|
||||
const char *value;
|
||||
|
||||
value = qemu_opt_get(opts, from);
|
||||
if (value) {
|
||||
if (qemu_opt_find(opts, to)) {
|
||||
error_setg(errp, "'%s' and its alias '%s' can't be used at the "
|
||||
"same time", to, from);
|
||||
return;
|
||||
}
|
||||
qemu_opt_set(opts, to, value);
|
||||
qemu_opt_unset(opts, from);
|
||||
}
|
||||
|
@ -676,7 +682,13 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type)
|
|||
};
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(opt_renames); i++) {
|
||||
qemu_opt_rename(all_opts, opt_renames[i].from, opt_renames[i].to);
|
||||
qemu_opt_rename(all_opts, opt_renames[i].from, opt_renames[i].to,
|
||||
&local_err);
|
||||
if (local_err) {
|
||||
error_report("%s", error_get_pretty(local_err));
|
||||
error_free(local_err);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
value = qemu_opt_get(all_opts, "cache");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue