On Fri, Sep 25, 2026 at 05:53:46PM +0200, Guillaume Vincke wrote: > Test the connect thread starting condition with reconnect-delay=0 when > the server disconnects after a successful handshake but before running > operations. Prior to the change to nbd_co_establish_connection(), this > test would demonstrate two I/O errors. The tests 264 and 277 covering > reconnection do not use reconnect-delay=0 so this case is not exercised. > > Add a test that provokes multiple errors in order to put an NBD client > in the above-mentioned situation and shows that the first operation > starts the connect thread and leads to successful subsequent I/O. > > Signed-off-by: Guillaume Vincke <[email protected]>
Guillaume, this is passing for me locally but failing under CI: https://gitlab.com/qemu-project/qemu/-/jobs/17192659287 > ▶ 137/150 qcow2 nbd-stale-connection > FAIL > 137/150 block-qcow2-optional+block-slow - qemu:io-qcow2-nbd-stale-connection > FAIL 2.39s exit status 1 > >>> ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 > >>> PYTHON=/builds/qemu-project/qemu/build/pyvenv/bin/python3.12 > >>> MALLOC_PERTURB_=65 > >>> MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 > >>> > >>> LD_LIBRARY_PATH=/builds/qemu-project/qemu/build/subprojects/libvfio-user/lib > >>> RUST_BACKTRACE=1 MESON_TEST_ITERATION=1 > >>> UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 > >>> /builds/qemu-project/qemu/build/pyvenv/bin/python3.12 > >>> /builds/qemu-project/qemu/build/../tests/qemu-iotests/check -tap -qcow2 > >>> nbd-stale-connection --source-dir > >>> /builds/qemu-project/qemu/tests/qemu-iotests --build-dir > >>> /builds/qemu-project/qemu/build/tests/qemu-iotests > ――――――――――――――――――――――――――――――――――――― ✀ ――――――――――――――――――――――――――――――――――――― > stderr: > WARNING: iotests is being run from outside of the configure-time python > virtual environment > current python: /builds/qemu-project/qemu/build/pyvenv/bin/python3.12 > pyvenv python: /builds/qemu-project/qemu/build/pyvenv/bin/python3 > Individual python tests will be executed inside the pyvenv, > but the test runner will continue to run outside. > Please use the meson run script: > /builds/qemu-project/qemu/build/run > /builds/qemu-project/qemu/build/../tests/qemu-iotests/check -tap -qcow2 > nbd-stale-connection --source-dir > /builds/qemu-project/qemu/tests/qemu-iotests --build-dir > /builds/qemu-project/qemu/build/tests/qemu-iotests > --- > /builds/qemu-project/qemu/tests/qemu-iotests/tests/nbd-stale-connection.out > +++ > /builds/qemu-project/qemu/build/scratch/qcow2-file-nbd-stale-connection/nbd-stale-connection.out.bad > @@ -13,5 +13,5 @@ > === NBD server up. Restart the connect thread === > {"error": {"class": "GenericError", "desc": "write failed: Input/output > error"}} > === Wait for the connect thread to park the new channel. Subsequent > operations are successful === > -{"return": {}} > +{"error": {"class": "GenericError", "desc": "write failed: Input/output > error"}} > Kill NBD server > ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― Can you take a look? I'm also playing with it, but I may revert your series from my current pull request if it takes too long to get to root cause. -- Eric Blake, Principal Software Engineer Red Hat, Inc. Virtualization: qemu.org | libguestfs.org
