[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 16/27] block: Apply auto-read-only for ro-whitelist d
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PULL 16/27] block: Apply auto-read-only for ro-whitelist drivers |
Date: |
Fri, 1 Feb 2019 17:35:07 +0100 |
If QEMU was configured with a driver in --block-drv-ro-whitelist, trying
to use that driver read-write resulted in an error message even if
auto-read-only=on was set.
Consider auto-read-only=on for the whitelist checking and use it to
automatically degrade to read-only for block drivers on the read-only
whitelist.
Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
---
block.c | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/block.c b/block.c
index 0c5d1f11a5..5a4d27173e 100644
--- a/block.c
+++ b/block.c
@@ -1438,13 +1438,19 @@ static int bdrv_open_common(BlockDriverState *bs,
BlockBackend *file,
bs->read_only = !(bs->open_flags & BDRV_O_RDWR);
if (use_bdrv_whitelist && !bdrv_is_whitelisted(drv, bs->read_only)) {
- error_setg(errp,
- !bs->read_only && bdrv_is_whitelisted(drv, true)
- ? "Driver '%s' can only be used for read-only devices"
- : "Driver '%s' is not whitelisted",
- drv->format_name);
- ret = -ENOTSUP;
- goto fail_opts;
+ if (!bs->read_only && bdrv_is_whitelisted(drv, true)) {
+ ret = bdrv_apply_auto_read_only(bs, NULL, NULL);
+ } else {
+ ret = -ENOTSUP;
+ }
+ if (ret < 0) {
+ error_setg(errp,
+ !bs->read_only && bdrv_is_whitelisted(drv, true)
+ ? "Driver '%s' can only be used for read-only devices"
+ : "Driver '%s' is not whitelisted",
+ drv->format_name);
+ goto fail_opts;
+ }
}
/* bdrv_new() and bdrv_close() make it so */
--
2.20.1
- [Qemu-devel] [PULL 00/27] Block layer patches, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 02/27] mirror: Block the source BlockDriverState in mirror_start_job(), Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 05/27] block: Replace qdict_put() by qdict_put_obj() where appropriate, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 06/27] block: Fix hangs in synchronous APIs with iothreads, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 12/27] vmdk: Reject excess extents in blockdev-create, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 01/27] mirror: Release the dirty bitmap if mirror_start_job() fails, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 20/27] scsi-disk: Acquire the AioContext in scsi_*_realize(), Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 16/27] block: Apply auto-read-only for ro-whitelist drivers,
Kevin Wolf <=
- [Qemu-devel] [PULL 17/27] block: Remove blk_attach_dev_legacy() / legacy_dev code, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 11/27] iotests: Add VMDK tests for blockdev-create, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 10/27] iotests: Filter cid numbers in VMDK extent info, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 13/27] block/vpc: Don't take address of fields in packed structs, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 23/27] iotests/236: fix transaction kwarg order, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 03/27] qcow2: Assert that refcount block offsets fit in the refcount table, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 24/27] block: Fix invalidate_cache error path for parent activation, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 15/27] uuid: Make qemu_uuid_bswap() take and return a QemuUUID, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 07/27] iotests: Make 234 stable, Kevin Wolf, 2019/02/01
- [Qemu-devel] [PULL 08/27] vmdk: Refactor vmdk_create_extent, Kevin Wolf, 2019/02/01