[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [RFC PATCH 11/41] vvfat: Implement .bdrv_child_perm()
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-block] [RFC PATCH 11/41] vvfat: Implement .bdrv_child_perm() |
Date: |
Wed, 15 Feb 2017 18:42:50 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 15.02.2017 um 18:30 hat Max Reitz geschrieben:
> On 13.02.2017 18:22, Kevin Wolf wrote:
> > vvfat is the last remaining driver that can have children, but doesn't
> > implement .bdrv_child_perm() yet. The default handlers aren't suitable
> > here, so let's implement a very simple driver-specific one that protects
> > the internal child from being used by other users as good as our
> > permissions permit.
> >
> > Signed-off-by: Kevin Wolf <address@hidden>
> > ---
> > block/vvfat.c | 13 +++++++++++++
> > 1 file changed, 13 insertions(+)
> >
> > diff --git a/block/vvfat.c b/block/vvfat.c
> > index c6bf67e..7246432 100644
> > --- a/block/vvfat.c
> > +++ b/block/vvfat.c
> > @@ -3052,6 +3052,18 @@ err:
> > return ret;
> > }
> >
> > +static void vvfat_child_perm(BlockDriverState *bs, BdrvChild *c,
> > + const BdrvChildRole *role,
> > + uint64_t perm, uint64_t shared,
> > + uint64_t *nperm, uint64_t *nshared)
> > +{
> > + assert(role == &child_vvfat_qcow);
> > +
> > + /* This is a private node, nobody should try to attach to it */
> > + *nperm = BLK_PERM_WRITE;
> > + *nshared = 0;
>
> 0 for shared is probably enough to ward every other access off, but
> maybe we should still pro forma request consistent read access...?
Makes sense, yes.
But you missed the real bug I hid there for you:
qemu-system-x86_64: block.c:1530: bdrv_check_update_perm: Assertion
`new_shared_perm & BLK_PERM_WRITE_UNCHANGED' failed.
Kevin
> Max
>
> > +}
> > +
> > static void vvfat_close(BlockDriverState *bs)
> > {
> > BDRVVVFATState *s = bs->opaque;
> > @@ -3077,6 +3089,7 @@ static BlockDriver bdrv_vvfat = {
> > .bdrv_file_open = vvfat_open,
> > .bdrv_refresh_limits = vvfat_refresh_limits,
> > .bdrv_close = vvfat_close,
> > + .bdrv_child_perm = vvfat_child_perm,
> >
> > .bdrv_co_preadv = vvfat_co_preadv,
> > .bdrv_co_pwritev = vvfat_co_pwritev,
> >
>
>
pgpz47PgLx1ck.pgp
Description: PGP signature
[Qemu-block] [RFC PATCH 10/41] block: Request child permissions in format drivers, Kevin Wolf, 2017/02/13
[Qemu-block] [RFC PATCH 11/41] vvfat: Implement .bdrv_child_perm(), Kevin Wolf, 2017/02/13
[Qemu-block] [RFC PATCH 12/41] block: Require .bdrv_child_perm() with child nodes, Kevin Wolf, 2017/02/13
[Qemu-block] [RFC PATCH 13/41] block: Request real permissions in bdrv_attach_child(), Kevin Wolf, 2017/02/13
[Qemu-block] [RFC PATCH 14/41] block: Add permissions to BlockBackend, Kevin Wolf, 2017/02/13
[Qemu-block] [RFC PATCH 15/41] block: Add permissions to blk_new(), Kevin Wolf, 2017/02/13
[Qemu-block] [RFC PATCH 17/41] block: Request real permissions in blk_new_open(), Kevin Wolf, 2017/02/13
[Qemu-block] [RFC PATCH 16/41] block: Add error parameter to blk_insert_bs(), Kevin Wolf, 2017/02/13