[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [RFC PATCH 04/10] block: Allow changing 'force-share' on re
From: |
Alberto Garcia |
Subject: |
[Qemu-block] [RFC PATCH 04/10] block: Allow changing 'force-share' on reopen |
Date: |
Thu, 14 Jun 2018 18:49:01 +0300 |
'force-share' is one of the basic BlockdevOptions available for all
drivers, but it's silently ignored by bdrv_reopen_prepare/commit(), so
the user cannot change it and doesn't get an error explaining that it
can't be changed.
Since there's no reason why we shouldn't allow changing it and the
implementation is trivial, let's just do it.
Signed-off-by: Alberto Garcia <address@hidden>
---
block.c | 11 +++++++++++
include/block/block.h | 1 +
2 files changed, 12 insertions(+)
diff --git a/block.c b/block.c
index 4c186e54b6..a741300fae 100644
--- a/block.c
+++ b/block.c
@@ -3169,6 +3169,16 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state,
BlockReopenQueue *queue,
}
}
+ reopen_state->force_share = qemu_opt_get_bool(opts, BDRV_OPT_FORCE_SHARE,
+ false);
+ if (reopen_state->force_share && (reopen_state->flags & BDRV_O_RDWR)) {
+ error_setg(errp,
+ BDRV_OPT_FORCE_SHARE
+ "=on can only be used with read-only images");
+ ret = -EINVAL;
+ goto error;
+ }
+
/* node-name and driver must be unchanged. Put them back into the QDict, so
* that they are checked at the end of this function. */
value = qemu_opt_get(opts, "node-name");
@@ -3300,6 +3310,7 @@ void bdrv_reopen_commit(BDRVReopenState *reopen_state)
bs->open_flags = reopen_state->flags;
bs->read_only = !(reopen_state->flags & BDRV_O_RDWR);
bs->detect_zeroes = reopen_state->detect_zeroes;
+ bs->force_share = reopen_state->force_share;
bdrv_refresh_limits(bs, NULL);
diff --git a/include/block/block.h b/include/block/block.h
index 1e78587331..9306c986ef 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -160,6 +160,7 @@ typedef struct BDRVReopenState {
BlockDriverState *bs;
int flags;
BlockdevDetectZeroesOptions detect_zeroes;
+ bool force_share;
uint64_t perm, shared_perm;
QDict *options;
QDict *explicit_options;
--
2.11.0
- [Qemu-block] [RFC PATCH 00/10] Add a 'x-blockdev-reopen' QMP command, Alberto Garcia, 2018/06/14
- [Qemu-block] [RFC PATCH 02/10] block: Allow changing 'discard' on reopen, Alberto Garcia, 2018/06/14
- [Qemu-block] [RFC PATCH 03/10] block: Allow changing 'detect-zeroes' on reopen, Alberto Garcia, 2018/06/14
- [Qemu-block] [RFC PATCH 01/10] file-posix: Forbid trying to change unsupported options during reopen, Alberto Garcia, 2018/06/14
- [Qemu-block] [RFC PATCH 08/10] block: Add bdrv_reset_options_allowed(), Alberto Garcia, 2018/06/14
- [Qemu-block] [RFC PATCH 04/10] block: Allow changing 'force-share' on reopen,
Alberto Garcia <=
- [Qemu-block] [RFC PATCH 05/10] block: Add 'keep_old_opts' parameter to bdrv_reopen_queue(), Alberto Garcia, 2018/06/14
- [Qemu-block] [RFC PATCH 06/10] block: Allow changing the backing file on reopen, Alberto Garcia, 2018/06/14