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. For the iotest to succeed, this series relies on "iotests: Specify format for qemu-nbd". 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). 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 | 95 ++++++++++++++++++++++-------------------- block/nbd-client.h | 20 ++++----- block/nbd.c | 37 +++++++--------- tests/qemu-iotests/094 | 81 +++++++++++++++++++++++++++++++++++ tests/qemu-iotests/094.out | 11 +++++ tests/qemu-iotests/common.qemu | 12 +++++- tests/qemu-iotests/group | 1 + 7 files changed, 177 insertions(+), 80 deletions(-) create mode 100755 tests/qemu-iotests/094 create mode 100644 tests/qemu-iotests/094.out -- 2.1.0