Right now, bdrv_swap() on NBD BDSs results in a segmentation fault pretty much all of the time. This series fixes this.
Note that this is not a common case, as bdrv_swap() is generally only performed on root BDSs (there are exceptions, though) and NBD BDSs normally have a format BDS above them. However, due to misconfiguration (or maybe it is not even a misconfiguration, but just a strange configuration) these cases may indeed occur. I took the second patch in this series from my other series "block: Rework bdrv_close_all()" (which has 21 patches itself and depends on 64 other patches, so making this series rely on that one probably would not have been a very good idea). v2: - Rename all functions which now take a BlockDriverState * instead of an NbdClientSession * from nbd_client_session_* to nbd_client_* [Paolo] - Rename nbd_client_close() in nbd.c to client_close() and make it static; otherwise, it would conflict with the "new" nbd_client_close() in block/nbd-client.c git-backport-diff against v1: Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/3:[0089] [FC] 'nbd: Drop BDS backpointer' 002/3:[----] [--] 'iotests: Add "wait" functionality to _cleanup_qemu' 003/3:[----] [--] 'iotests: Add test for drive-mirror with NBD target' Max Reitz (3): nbd: Drop BDS backpointer iotests: Add "wait" functionality to _cleanup_qemu iotests: Add test for drive-mirror with NBD target block/nbd-client.c | 101 +++++++++++++++++++++-------------------- block/nbd-client.h | 34 +++++++------- block/nbd.c | 37 ++++++--------- include/block/nbd.h | 1 - nbd.c | 8 ++-- tests/qemu-iotests/094 | 81 +++++++++++++++++++++++++++++++++ tests/qemu-iotests/094.out | 11 +++++ tests/qemu-iotests/common.qemu | 12 ++++- tests/qemu-iotests/group | 1 + 9 files changed, 191 insertions(+), 95 deletions(-) create mode 100755 tests/qemu-iotests/094 create mode 100644 tests/qemu-iotests/094.out -- 2.1.0