On 29.05.19 19:56, Andrey Shinkevich wrote: > This series introduces a bottom intermediate node that eliminates the > dependency on the base that may change while stream job is running. > It happens when stream/commit parallel jobs are running on the same > backing chain. The base node of the stream job may be a top node of > the parallel commit job and can change before the stream job is > completed. We avoid that dependency by introducing the bottom node. > > v7: [resend by Andrey] > 01: assert(intermediate) was inserted before the call to > bdrv_is_allocated() in the intermediate node loop of the > bdrv_is_allocated_above() as suggested by Max. > 02: The change of the intermediate node loop in the stream_start() was > rolled back to its original design and the reassignment of the base > node pointer was added as Vladimir and Max suggested. The relevant > comment was amended. > > v6: [resend by Vladimir] > 01: improve comment in block/io.c, suggested by Alberto > > v5: [resend by Vladimir] > 01: use comment wording in block/io.c suggested by Alberto > > v4: > trace_stream_start reverted to the base. > bdrv_is_allocated_above_inclusive() deleted and the new parameter > 'bool include_base' was added to the bdrv_is_allocated_above(). > > Andrey Shinkevich (3): > block: include base when checking image chain for block allocation > block/stream: refactor stream_run: drop goto > block/stream: introduce a bottom node > > block/commit.c | 2 +- > block/io.c | 21 +++++++++++++------ > block/mirror.c | 2 +- > block/replication.c | 2 +- > block/stream.c | 56 ++++++++++++++++++++++++-------------------------- > include/block/block.h | 3 ++- > tests/qemu-iotests/245 | 4 ++-- > 7 files changed, 49 insertions(+), 41 deletions(-) Reviewed-by: Max Reitz Just needs some simple changes to patch 1 to rebase it on 863cc78f1b3 and c8bb23cbdbe. Max