Changes in v3:
* Also deal with edge case in bdrv_next_cleanup(). Haven't run
into an actual issue there, but at least the caller in
migration/block.c uses bdrv_nb_sectors() which, while not a
coroutine wrapper itself (it's written manually), may call
bdrv_refresh_total_sectors(), which is a generated coroutine
wrapper, so AFAIU, the block graph can change during that call.
And even without that, it's just better to be more consistent
with bdrv_next().
Changes in v2:
* Ran into another issue while writing the IO test Stefan wanted
to have (good call :)), so include a fix for that and add the
test. I didn't notice during manual testing, because I hadn't
used a scripted QMP 'quit', so there was no race.
Fiona Ebner (3):
block-backend: fix edge case in bdrv_next() where BDS associated to BB
changes
block-backend: fix edge case in bdrv_next_cleanup() where BDS
associated to BB changes
iotests: add test for stream job with an unaligned prefetch read
Stefan Reiter (1):
block/io: accept NULL qiov in bdrv_pad_request
block/block-backend.c | 18 ++--
block/io.c | 31 ++++---
.../tests/stream-unaligned-prefetch | 86 +++++++++++++++++++
.../tests/stream-unaligned-prefetch.out | 5 ++
4 files changed, 117 insertions(+), 23 deletions(-)
create mode 100755 tests/qemu-iotests/tests/stream-unaligned-prefetch
create mode 100644 tests/qemu-iotests/tests/stream-unaligned-prefetch.out
--
2.39.2