aboutsummaryrefslogtreecommitdiff
path: root/block/file-posix.c
diff options
context:
space:
mode:
authorAlberto Garcia <berto@igalia.com>2018-09-06 12:37:07 +0300
committerKevin Wolf <kwolf@redhat.com>2018-10-01 12:51:12 +0200
commit8d3245750be30f3191f710f52fbe53ca10e78bfc (patch)
tree9186029d7739e3d655ed1c3cfdd17a26243b1378 /block/file-posix.c
parent57f9db9a947f4d32bbd56ed9b1e0989f6c306dfb (diff)
downloadqemu-8d3245750be30f3191f710f52fbe53ca10e78bfc.zip
qemu-8d3245750be30f3191f710f52fbe53ca10e78bfc.tar.gz
qemu-8d3245750be30f3191f710f52fbe53ca10e78bfc.tar.bz2
file-posix: Forbid trying to change unsupported options during reopen
The file-posix code is used for the "file", "host_device" and "host_cdrom" drivers, and it allows reopening images. However the only option that is actually processed is "x-check-cache-dropped", and changes in all other options (e.g. "filename") are silently ignored: (qemu) qemu-io virtio0 "reopen -o file.filename=no-such-file" While we could allow changing some of the other options, let's keep things as they are for now but return an error if the user tries to change any of them. Signed-off-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block/file-posix.c')
-rw-r--r--block/file-posix.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/block/file-posix.c b/block/file-posix.c
index bc5e545..2da3a76 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -849,8 +849,13 @@ static int raw_reopen_prepare(BDRVReopenState *state,
goto out;
}
- rs->check_cache_dropped = qemu_opt_get_bool(opts, "x-check-cache-dropped",
- false);
+ rs->check_cache_dropped =
+ qemu_opt_get_bool_del(opts, "x-check-cache-dropped", false);
+
+ /* This driver's reopen function doesn't currently allow changing
+ * other options, so let's put them back in the original QDict and
+ * bdrv_reopen_prepare() will detect changes and complain. */
+ qemu_opts_to_qdict(opts, state->options);
if (s->type == FTYPE_CD) {
rs->open_flags |= O_NONBLOCK;