qemu-storage-daemon: fuse export deadlock Steps to reproduce: 1. Start QSD 2. Issue a `block-stream` and a read from the fuse export at the same time ``` Term 1: (QEMU) block-stream device=root job-id=job1 {"return": {}} (QEMU) {'timestamp': {'seconds': 1708386076, 'microseconds': 965781}, 'event': 'JOB_STATUS_CHANGE', 'data': {'status': 'created', 'id': 'job1'}} {'timestamp': {'seconds': 1708386076, 'microseconds': 965838}, 'event': 'JOB_STATUS_CHANGE', 'data': {'status': 'running', 'id': 'job1'}} (QEMU) (QEMU) (QEMU) (QEMU) query-block-jobs Term 2: dd if=/tmp/fuse_exp of=/dev/null bs=1M skip=2000 ``` ``` $ pidof qemu-storage-daemon 92313 $ sudo cat /proc/92313/task/92313/stack [<0>] do_sys_poll+0x4e1/0x5d0 [<0>] __x64_sys_ppoll+0xe2/0x170 [<0>] do_syscall_64+0x64/0xe0 [<0>] entry_SYSCALL_64_after_hwframe+0x6e/0x76 $ sudo cat /proc/92313/task/92314/stack [<0>] futex_wait_queue+0x63/0x90 [<0>] __futex_wait+0x14f/0x1c0 [<0>] futex_wait+0x77/0x110 [<0>] do_futex+0xcb/0x190 [<0>] __x64_sys_futex+0x129/0x1e0 [<0>] do_syscall_64+0x64/0xe0 [<0>] entry_SYSCALL_64_after_hwframe+0x6e/0x76 ``` Additional information: This might also be a general between `block-stream` and `copy-on-read` but I could only trigger the problem with FUSE and not NBD. E.g this command does not deadlock: ``` --export type=nbd,id=nbd-root,node-name=root_crw,name=root_crw,writable=off nbdfuse /tmp/tmp.69dRvNXj1O/disk nbd://localhost:10809/root_crw dd if=/tmp/tmp.69dRvNXj1O/disk of=/dev/null bs=1M skip=2000 ```