Seems you sent a v3 twice today. I reviewed the earlier v3 and assume this v3 is an identical accident dupe. If this is actually a v3 let me know and i'll review further...
On Wed, Nov 12, 2025 at 07:11:25PM -0600, Eric Blake wrote: > v2 was here: > https://lists.nongnu.org/archive/html/qemu-devel/2025-11/msg01243.html > > Since then: > - drop patch 7/12; refcounting for GSource case is now unchanged > - add a couple of patches: fix a chardev leaky abstraction, and add a > mutex lock for cross-thread safety > - improve commit messages to document why NBD is safe now, even without > adding notify callbacks to AioContext > > Now that the new behavior is opt-in rather than a change of defaults, > and only NBD opts in, it should still be safe to include in 10.2. > But the technical debt here means that we really should consider > improving the AioContext API for 11.0 to allow for a notify function > similar to what GSource provides. > > 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/13:[----] [--] 'iotests: Drop execute permissions on vvfat.out' > 002/13:[----] [--] 'qio: Add trace points to net_listener' > 003/13:[----] [--] 'qio: Unwatch before notify in QIONetListener' > 004/13:[----] [--] 'qio: Remember context of > qio_net_listener_set_client_func_full' > 005/13:[down] 'qio: Protect NetListener callback with mutex' > 006/13:[----] [-C] 'qio: Minor optimization when callback function is > unchanged' > 007/13:[0042] [FC] 'qio: Factor out helpers qio_net_listener_[un]watch' > 008/13:[down] 'chardev: Reuse channel's cached local address' > 009/13:[0053] [FC] 'qio: Provide accessor around QIONetListener->sioc' > 010/13:[0013] [FC] 'qio: Prepare NetListener to use AioContext' > 011/13:[0041] [FC] 'qio: Add QIONetListener API for using AioContext' > 012/13:[----] [--] 'nbd: Avoid deadlock in client connecting to same-process > server' > 013/13:[----] [--] 'iotests: Add coverage of recent NBD qio deadlock fix' > > Eric Blake (13): > iotests: Drop execute permissions on vvfat.out > qio: Add trace points to net_listener > qio: Unwatch before notify in QIONetListener > qio: Remember context of qio_net_listener_set_client_func_full > qio: Protect NetListener callback with mutex > qio: Minor optimization when callback function is unchanged > qio: Factor out helpers qio_net_listener_[un]watch > chardev: Reuse channel's cached local address > qio: Provide accessor around QIONetListener->sioc > qio: Prepare NetListener to use AioContext > qio: Add QIONetListener API for using AioContext > nbd: Avoid deadlock in client connecting to same-process server > iotests: Add coverage of recent NBD qio deadlock fix > > include/io/channel-socket.h | 2 +- > include/io/net-listener.h | 71 ++++- > blockdev-nbd.c | 4 +- > chardev/char-socket.c | 2 +- > io/net-listener.c | 300 +++++++++++++----- > migration/socket.c | 4 +- > ui/vnc.c | 34 +- > io/trace-events | 5 + > tests/qemu-iotests/tests/nbd-in-qcow2-chain | 94 ++++++ > .../qemu-iotests/tests/nbd-in-qcow2-chain.out | 75 +++++ > tests/qemu-iotests/tests/vvfat.out | 0 > 11 files changed, 498 insertions(+), 93 deletions(-) > create mode 100755 tests/qemu-iotests/tests/nbd-in-qcow2-chain > create mode 100644 tests/qemu-iotests/tests/nbd-in-qcow2-chain.out > mode change 100755 => 100644 tests/qemu-iotests/tests/vvfat.out > > -- > 2.51.1 > With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
