All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>, qemu-block@nongnu.org
Cc: jcody@redhat.com, famz@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 16/54] block: Default .bdrv_child_perm() for filter drivers
Date: Wed, 22 Feb 2017 15:28:35 +0100	[thread overview]
Message-ID: <64d326d6-8b82-c48e-c1a9-161fb6085ea7@redhat.com> (raw)
In-Reply-To: <1487689130-30373-17-git-send-email-kwolf@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 2108 bytes --]

On 21.02.2017 15:58, Kevin Wolf wrote:
> Most filters need permissions related to read and write for their
> children, but only if the node has a parent that wants to use the same
> operation on the filter. The same is true for resize.
> 
> This adds a default implementation that simply forwards all necessary
> permissions to all children of the node and leaves the other permissions
> unchanged.
> 
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>  block.c                   | 24 ++++++++++++++++++++++++
>  include/block/block_int.h |  8 ++++++++
>  2 files changed, 32 insertions(+)
> 
> diff --git a/block.c b/block.c
> index 2a86781..523cbd3 100644
> --- a/block.c
> +++ b/block.c
> @@ -1531,6 +1531,30 @@ int bdrv_child_try_set_perm(BdrvChild *c, uint64_t perm, uint64_t shared,
>      return 0;
>  }
>  
> +#define DEFAULT_PERM_PASSTHROUGH (BLK_PERM_CONSISTENT_READ \
> +                                 | BLK_PERM_WRITE \
> +                                 | BLK_PERM_WRITE_UNCHANGED \
> +                                 | BLK_PERM_RESIZE)
> +#define DEFAULT_PERM_UNCHANGED (BLK_PERM_ALL & ~DEFAULT_PERM_PASSTHROUGH)
> +
> +void bdrv_filter_default_perms(BlockDriverState *bs, BdrvChild *c,
> +                               const BdrvChildRole *role,
> +                               uint64_t perm, uint64_t shared,
> +                               uint64_t *nperm, uint64_t *nshared)
> +{
> +    if (c == NULL) {
> +        *nperm = 0;
> +        *nshared = BLK_PERM_ALL;

On second thought, I don't understand this. Why isn't this

*nperm = perm & DEFAULT_PERM_PASSTHROUGH;
*nshared = shared & DEFAULT_PERM_PASSTHROUGH;

?

Max

> +        return;
> +    }
> +
> +    *nperm = (perm & DEFAULT_PERM_PASSTHROUGH) |
> +             (c->perm & DEFAULT_PERM_UNCHANGED);
> +    *nshared = (shared & DEFAULT_PERM_PASSTHROUGH) |
> +               (c->shared_perm & DEFAULT_PERM_UNCHANGED);
> +}
> +
> +
>  static void bdrv_replace_child(BdrvChild *child, BlockDriverState *new_bs)
>  {
>      BlockDriverState *old_bs = child->bs;


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 512 bytes --]

  parent reply	other threads:[~2017-02-22 14:28 UTC|newest]

Thread overview: 131+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-21 14:57 [Qemu-devel] [PATCH 00/54] New op blocker system, part 1 Kevin Wolf
2017-02-21 14:57 ` [Qemu-devel] [PATCH 01/54] blockdev: Use BlockBackend to resize in qmp_block_resize() Kevin Wolf
2017-02-22 12:27   ` Max Reitz
2017-02-21 14:57 ` [Qemu-devel] [PATCH 02/54] qcow2: Use BB for resizing in qcow2_amend_options() Kevin Wolf
2017-02-22 12:28   ` Max Reitz
2017-02-22 15:53   ` Eric Blake
2017-02-21 14:57 ` [Qemu-devel] [PATCH 03/54] mirror: Resize active commit base in mirror_run() Kevin Wolf
2017-02-22 12:34   ` Max Reitz
2017-02-23 11:31   ` Fam Zheng
2017-02-21 14:58 ` [Qemu-devel] [PATCH 04/54] block: Pass BdrvChild to bdrv_truncate() Kevin Wolf
2017-02-22 12:37   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 05/54] block: Attach bs->file only during .bdrv_open() Kevin Wolf
2017-02-22 12:41   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 06/54] block: Factor out bdrv_open_child_bs() Kevin Wolf
2017-02-22 12:46   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 07/54] block: Use BlockBackend for image probing Kevin Wolf
2017-02-22 12:56   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 08/54] block: Factor out bdrv_open_driver() Kevin Wolf
2017-02-22 12:59   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 09/54] block: Add bdrv_new_open_driver() Kevin Wolf
2017-02-22 13:15   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 10/54] vvfat: Use opened node as backing file Kevin Wolf
2017-02-22 13:26   ` Max Reitz
2017-02-23 11:49   ` Fam Zheng
2017-02-23 12:25     ` Kevin Wolf
2017-02-23 12:45       ` Fam Zheng
2017-02-21 14:58 ` [Qemu-devel] [PATCH 11/54] tests: Use opened block node for block job tests Kevin Wolf
2017-02-22 13:41   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 12/54] block: Add op blocker permission constants Kevin Wolf
2017-02-22 13:43   ` Max Reitz
2017-02-23 11:53   ` Fam Zheng
2017-02-21 14:58 ` [Qemu-devel] [PATCH 13/54] block: Add Error argument to bdrv_attach_child() Kevin Wolf
2017-02-22 13:46   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 14/54] block: Let callers request permissions when attaching a child node Kevin Wolf
2017-02-22 13:47   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 15/54] block: Involve block drivers in permission granting Kevin Wolf
2017-02-22 14:04   ` Max Reitz
2017-02-27 12:28     ` Kevin Wolf
2017-02-27 12:32       ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 16/54] block: Default .bdrv_child_perm() for filter drivers Kevin Wolf
2017-02-22 14:05   ` Max Reitz
2017-02-22 14:28   ` Max Reitz [this message]
2017-02-23 12:36   ` Fam Zheng
2017-02-21 14:58 ` [Qemu-devel] [PATCH 17/54] block: Request child permissions in " Kevin Wolf
2017-02-22 14:07   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 18/54] block: Default .bdrv_child_perm() for format drivers Kevin Wolf
2017-02-22 14:08   ` Max Reitz
2017-02-25 11:57   ` Max Reitz
2017-02-27 12:33     ` Kevin Wolf
2017-02-27 12:34       ` Max Reitz
2017-02-27 14:05         ` Kevin Wolf
2017-02-27 14:15           ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 19/54] block: Request child permissions in " Kevin Wolf
2017-02-22 14:09   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 20/54] vvfat: Implement .bdrv_child_perm() Kevin Wolf
2017-02-22 14:12   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 21/54] block: Require .bdrv_child_perm() with child nodes Kevin Wolf
2017-02-22 14:14   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 22/54] block: Request real permissions in bdrv_attach_child() Kevin Wolf
2017-02-22 14:24   ` Max Reitz
2017-02-22 14:31   ` Max Reitz
2017-02-27 14:10     ` Kevin Wolf
2017-02-21 14:58 ` [Qemu-devel] [PATCH 23/54] block: Add permissions to BlockBackend Kevin Wolf
2017-02-22 14:32   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 24/54] block: Add permissions to blk_new() Kevin Wolf
2017-02-22 14:36   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 25/54] block: Add error parameter to blk_insert_bs() Kevin Wolf
2017-02-22 14:42   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 26/54] block: Add BDRV_O_RESIZE for blk_new_open() Kevin Wolf
2017-02-22 14:51   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 27/54] block: Request real permissions in blk_new_open() Kevin Wolf
2017-02-22 14:52   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 28/54] block: Allow error return in BlockDevOps.change_media_cb() Kevin Wolf
2017-02-24 13:29   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 29/54] hw/block: Request permissions Kevin Wolf
2017-02-24 13:46   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 30/54] hw/block: Introduce share-rw qdev property Kevin Wolf
2017-02-24 13:49   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 31/54] blockjob: Add permissions to block_job_create() Kevin Wolf
2017-02-24 13:50   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 32/54] block: Add BdrvChildRole.get_parent_desc() Kevin Wolf
2017-02-24 13:56   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 33/54] block: Include details on permission errors in message Kevin Wolf
2017-02-24  8:41   ` Fam Zheng
2017-02-24 13:58   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 34/54] block: Add BdrvChildRole.stay_at_node Kevin Wolf
2017-02-24 14:00   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 35/54] blockjob: Add permissions to block_job_add_bdrv() Kevin Wolf
2017-02-24 14:10   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 36/54] commit: Use real permissions in commit block job Kevin Wolf
2017-02-24 17:29   ` Max Reitz
2017-02-27 18:43     ` Kevin Wolf
2017-02-21 14:58 ` [Qemu-devel] [PATCH 37/54] commit: Use real permissions for HMP 'commit' Kevin Wolf
2017-02-25 11:58   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 38/54] backup: Use real permissions in backup block job Kevin Wolf
2017-02-25 12:06   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 39/54] block: Fix pending requests check in bdrv_append() Kevin Wolf
2017-02-25 12:15   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 40/54] block: BdrvChildRole.attach/detach() callbacks Kevin Wolf
2017-02-25 12:29   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 41/54] block: Allow backing file links in change_parent_backing_link() Kevin Wolf
2017-02-25 12:33   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 42/54] mirror: Use real permissions in mirror/active commit block job Kevin Wolf
2017-02-25 13:49   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 43/54] stream: Use real permissions in streaming " Kevin Wolf
2017-02-25 13:58   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 44/54] mirror: Add filter-node-name to blockdev-mirror Kevin Wolf
2017-02-25 14:19   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 45/54] commit: Add filter-node-name to block-commit Kevin Wolf
2017-02-25 14:37   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 46/54] hmp: Request permissions in qemu-io Kevin Wolf
2017-02-25 14:46   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 47/54] migration/block: Use real permissions Kevin Wolf
2017-02-25 14:54   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 48/54] nbd/server: Use real permissions for NBD exports Kevin Wolf
2017-02-25 15:05   ` Max Reitz
2017-02-27 20:09   ` Eric Blake
2017-02-21 14:58 ` [Qemu-devel] [PATCH 49/54] tests: Remove FIXME comments Kevin Wolf
2017-02-25 15:06   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 50/54] block: Pass BdrvChild to bdrv_aligned_preadv/pwritev Kevin Wolf
2017-02-25 15:12   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 51/54] block: Assertions for write permissions Kevin Wolf
2017-02-25 15:13   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 52/54] block: Assertions for resize permission Kevin Wolf
2017-02-25 15:14   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 53/54] block: Add Error parameter to bdrv_set_backing_hd() Kevin Wolf
2017-02-25 15:36   ` Max Reitz
2017-02-21 14:58 ` [Qemu-devel] [PATCH 54/54] block: Add Error parameter to bdrv_append() Kevin Wolf
2017-02-25 15:49   ` Max Reitz
2017-02-21 16:38 ` [Qemu-devel] [PATCH 00/54] New op blocker system, part 1 no-reply
2017-02-24 14:25 ` Kevin Wolf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=64d326d6-8b82-c48e-c1a9-161fb6085ea7@redhat.com \
    --to=mreitz@redhat.com \
    --cc=famz@redhat.com \
    --cc=jcody@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.