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.

v3:
bottom = bdrv_find_overlay() moved into the stream_start()

v2:
The function bdrv_find_overlay() with the same functionality has been
used in the qmp_block_stream() to find a bottom node.
The algorithm in the bdrv_do_is_allocated_above() was simplified.
The commit messages were modified.

Discussed in the e-mail threads with the message IDs
<1553866154-257311-1-git-send-email-andrey.shinkev...@virtuozzo.com>
<1550762799-830661-1-git-send-email-andrey.shinkev...@virtuozzo.com>
<1554120365-39119-1-git-send-email-andrey.shinkev...@virtuozzo.com>

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/io.c             | 33 ++++++++++++++++++++----
 block/stream.c         | 69 +++++++++++++++++++++++++-------------------------
 block/trace-events     |  2 +-
 include/block/block.h  |  4 +++
 tests/qemu-iotests/245 |  4 +--
 5 files changed, 69 insertions(+), 43 deletions(-)

-- 
1.8.3.1


Reply via email to