[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 02/14] block: Add bdrv_reopen_set_read_only()
From: |
Alberto Garcia |
Subject: |
[Qemu-devel] [PATCH v2 02/14] block: Add bdrv_reopen_set_read_only() |
Date: |
Wed, 17 Oct 2018 15:57:18 +0300 |
Most callers of bdrv_reopen() only use it to switch a BlockDriverState
between read-only and read-write, so this patch adds a new function
that does just that.
We also want to get rid of the flags parameter in the bdrv_reopen()
API, so this function sets the "read-only" option and passes the
original flags (which will then be updated in bdrv_reopen_prepare()).
Signed-off-by: Alberto Garcia <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
---
block.c | 17 +++++++++++++++++
include/block/block.h | 2 ++
2 files changed, 19 insertions(+)
diff --git a/block.c b/block.c
index 47d5fe2f91..40c3a3d30b 100644
--- a/block.c
+++ b/block.c
@@ -3098,6 +3098,23 @@ int bdrv_reopen(BlockDriverState *bs, int bdrv_flags,
Error **errp)
return ret;
}
+int bdrv_reopen_set_read_only(BlockDriverState *bs, bool read_only,
+ Error **errp)
+{
+ int ret;
+ BlockReopenQueue *queue;
+ QDict *opts = qdict_new();
+
+ qdict_put_bool(opts, BDRV_OPT_READ_ONLY, read_only);
+
+ bdrv_subtree_drained_begin(bs);
+ queue = bdrv_reopen_queue(NULL, bs, opts, bdrv_get_flags(bs));
+ ret = bdrv_reopen_multiple(bdrv_get_aio_context(bs), queue, errp);
+ bdrv_subtree_drained_end(bs);
+
+ return ret;
+}
+
static BlockReopenQueueEntry *find_parent_in_reopen_queue(BlockReopenQueue *q,
BdrvChild *c)
{
diff --git a/include/block/block.h b/include/block/block.h
index b189cf422e..97317fdfb6 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -301,6 +301,8 @@ BlockReopenQueue *bdrv_reopen_queue(BlockReopenQueue
*bs_queue,
QDict *options, int flags);
int bdrv_reopen_multiple(AioContext *ctx, BlockReopenQueue *bs_queue, Error
**errp);
int bdrv_reopen(BlockDriverState *bs, int bdrv_flags, Error **errp);
+int bdrv_reopen_set_read_only(BlockDriverState *bs, bool read_only,
+ Error **errp);
int bdrv_reopen_prepare(BDRVReopenState *reopen_state,
BlockReopenQueue *queue, Error **errp);
void bdrv_reopen_commit(BDRVReopenState *reopen_state);
--
2.11.0
- [Qemu-devel] [PATCH v2 00/14] Don't pass flags to bdrv_reopen_queue(), Alberto Garcia, 2018/10/17
- [Qemu-devel] [PATCH v2 06/14] block: Use bdrv_reopen_set_read_only() in stream_start/complete(), Alberto Garcia, 2018/10/17
- [Qemu-devel] [PATCH v2 07/14] block: Use bdrv_reopen_set_read_only() in qmp_change_backing_file(), Alberto Garcia, 2018/10/17
- [Qemu-devel] [PATCH v2 03/14] block: Use bdrv_reopen_set_read_only() in bdrv_backing_update_filename(), Alberto Garcia, 2018/10/17
- [Qemu-devel] [PATCH v2 09/14] block: Use bdrv_reopen_set_read_only() in the mirror driver, Alberto Garcia, 2018/10/17
- [Qemu-devel] [PATCH v2 02/14] block: Add bdrv_reopen_set_read_only(),
Alberto Garcia <=
- [Qemu-devel] [PATCH v2 01/14] block: Don't call update_flags_from_options() if the options are wrong, Alberto Garcia, 2018/10/17
- [Qemu-devel] [PATCH v2 08/14] block: Use bdrv_reopen_set_read_only() in external_snapshot_commit(), Alberto Garcia, 2018/10/17
- [Qemu-devel] [PATCH v2 04/14] block: Use bdrv_reopen_set_read_only() in commit_start/complete(), Alberto Garcia, 2018/10/17
- [Qemu-devel] [PATCH v2 05/14] block: Use bdrv_reopen_set_read_only() in bdrv_commit(), Alberto Garcia, 2018/10/17
- [Qemu-devel] [PATCH v2 11/14] qemu-io: Put flag changes in the options QDict in reopen_f(), Alberto Garcia, 2018/10/17
- [Qemu-devel] [PATCH v2 10/14] block: Drop bdrv_reopen(), Alberto Garcia, 2018/10/17
- [Qemu-devel] [PATCH v2 13/14] block: Remove flags parameter from bdrv_reopen_queue(), Alberto Garcia, 2018/10/17
- [Qemu-devel] [PATCH v2 12/14] block: Clean up reopen_backing_file() in block/replication.c, Alberto Garcia, 2018/10/17
- [Qemu-devel] [PATCH v2 14/14] block: Stop passing flags to bdrv_reopen_queue_child(), Alberto Garcia, 2018/10/17