qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 2/2] block-stream: include base into job node li


From: Vladimir Sementsov-Ogievskiy
Subject: Re: [Qemu-devel] [PATCH 2/2] block-stream: include base into job node list
Date: Mon, 25 Feb 2019 16:39:14 +0000

21.02.2019 18:26, Andrey Shinkevich wrote:
> The block-stream job needs to own the base node as the limiter
> of the copy-on-read operation. So, the base node is included in
> the job node list (block_job_add_bdrv).
> Also, the block-stream job would not allow the base node to go
> away due to the graph modification, e.g. when a filter node is
> inserted between the bottom node and the base node.
> For that reason, the flag BLK_PERM_GRAPH_MOD is unset in the
> shared permission bit mask of the base node.
> 
> Signed-off-by: Andrey Shinkevich <address@hidden>
> ---
>   block/stream.c | 9 +++++++++
>   1 file changed, 9 insertions(+)
> 
> diff --git a/block/stream.c b/block/stream.c
> index 7a49ac0..c8f93d4 100644
> --- a/block/stream.c
> +++ b/block/stream.c
> @@ -259,6 +259,15 @@ void stream_start(const char *job_id, BlockDriverState 
> *bs,
>                              &error_abort);
>       }
>   
> +    if (base) {
> +        /*
> +         * The base node should not disappear during the job.
> +         */
> +        block_job_add_bdrv(&s->common, "base", base, 0,
> +                           BLK_PERM_ALL & ~BLK_PERM_GRAPH_MOD,
> +                           &error_abort);
> +    }
> +
>       s->base = base;
>       s->backing_file_str = g_strdup(backing_file_str);
>       s->bs_read_only = bs_read_only;
> 


Hmm, intersting, is BLK_PERM_GRAPH_MOD a good way to lock relations in node 
graph?

bdrv_replace_node don't check this permission. So, I don't understand, how this
permission works.. Graph modification operation in difference with read or write
are not done through BdrvChild at all.

Are there any ideas or work started for some another mechanism of "freezing" a 
subgraph
during an operation?


-- 
Best regards,
Vladimir

reply via email to

[Prev in Thread] Current Thread [Next in Thread]