[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 0/6] block: Fix permissions after ro/rw reopen
From: |
Fam Zheng |
Subject: |
Re: [Qemu-devel] [PATCH 0/6] block: Fix permissions after ro/rw reopen |
Date: |
Mon, 18 Sep 2017 15:51:07 +0800 |
User-agent: |
Mutt/1.8.3 (2017-05-23) |
On Fri, 09/15 12:10, Kevin Wolf wrote:
> bdrv_reopen() can switch nodes between read-only and read-write modes.
> This has implications for the required permissions on their child nodes.
> For example, a qcow2 node requests write permissions on bs->file only if
> it is writable itself.
>
> This means that during bdrv_reopen(), the permissions need to be
> recalculated in order to prevent failures where the bs->file
> permissions don't match its actual read-only state (e.g. bs->file is a
> read-write node, but the permission still enforces read-only access).
Passing reopen_queue around makes the interface and implementations complicated.
I wonder if any of the alternatives make sense:
1) Don't pass reopen_queue as a parameter, just pass the one interesting
BDRVReopenState pointer. So that callees don't need to call
bdrv_reopen_get_flags().
2) Don't change the prototypes at all, just change .bdrv_reopen_prepare contract
so that after it returns, .bdrv_child_perm/.bdrv_check_perm should comply to the
new state that would be commited once .bdrv_reopen_commit() is called, or
reverted if .bdrv_reopen_abort().
3) Don't change the prototypes at all, track the reopen progress in block.c
generically, (e.g. ignore conflicts and voilations) and update the permissions
only after bdrv_reopen_commit().
Fam
>
> Kevin Wolf (6):
> qemu-io: Reset qemuio_blk permissions before each command
> block: Add reopen_queue to bdrv_child_perm()
> block: Add reopen queue to bdrv_check_perm()
> block: Base permissions on rw state after reopen
> block: reopen: Queue children after their parents
> block: Fix permissions after bdrv_reopen()
>
> include/block/block.h | 2 +-
> include/block/block_int.h | 7 ++
> block.c | 191
> +++++++++++++++++++++++++++++++++------------
> block/commit.c | 1 +
> block/mirror.c | 1 +
> block/replication.c | 1 +
> block/vvfat.c | 1 +
> qemu-io.c | 13 +++
> tests/qemu-iotests/187.out | 2 +-
> 9 files changed, 169 insertions(+), 50 deletions(-)
>
> --
> 2.13.5
>
- Re: [Qemu-devel] [PATCH 2/6] block: Add reopen_queue to bdrv_child_perm(), (continued)
Re: [Qemu-devel] [PATCH 0/6] block: Fix permissions after ro/rw reopen, Kevin Wolf, 2017/09/20