On 09.07.20 17:13, Andrey Shinkevich wrote: > On 25.06.2020 18:21, Max Reitz wrote: >> Because of the (not so recent anymore) changes that make the stream job >> independent of the base node and instead track the node above it, we >> have to split that "bottom" node into two cases: The bottom COW node, >> and the node directly above the base node (which may be an R/W filter >> or the bottom COW node). >> >> Signed-off-by: Max Reitz >> --- >>   qapi/block-core.json |  4 +++ >>   block/stream.c       | 63 ++++++++++++++++++++++++++++++++------------ >>   blockdev.c           |  4 ++- >>   3 files changed, 53 insertions(+), 18 deletions(-) >> >> diff --git a/qapi/block-core.json b/qapi/block-core.json >> index b20332e592..df87855429 100644 >> --- a/qapi/block-core.json >> +++ b/qapi/block-core.json >> @@ -2486,6 +2486,10 @@ >>   # On successful completion the image file is updated to drop the >> backing file >>   # and the BLOCK_JOB_COMPLETED event is emitted. >>   # >> +# In case @device is a filter node, block-stream modifies the first >> non-filter >> +# overlay node below it to point to base's backing node (or NULL if >> @base was > > Forgot one thing. To me, it would be more understandable to read > > "...to point to the base as backing node..." because it may be thought > as a backing > > node of the base. This doesn’t sound like it’s about understandability; “point to the base as backing node” and “point to base’s backing node [as backing node]” are semantically different. Was my phrasing just wrong? @base should be the backing node, so yours seems correct. Max