From: Bin Guo <[email protected]> On Wed, 18 Jun 2026, Peter Xu wrote: > If io_readv() reads partial, IIUC returning how much it reads is the > correct behavior. You can refer to qio_channel_socket_readv().
You're right. I misread the QIOChannel contract. readv() should return whatever is available, not loop until the full request is satisfied. The socket implementation confirms that. > RDMA doesn't respect blocking is because it _always_ blocks. That is, > qemu_rdma_exchange_recv() always will block even if blocking=false. Yes, that's the real issue. My v2 patch only changed the blocking path and left qemu_rdma_exchange_recv() blocking unconditionally in non-blocking mode, which is wrong and can break coroutine use cases. I'll drop [PATCH 1/2]. The blocking/non-blocking handling in RDMA needs a more fundamental rework than this series attempted. > Also, I'd like Zhijian to take another look, and cc Dan too. Understood. For [PATCH 2/2] "migration/rdma: account transferred bytes for zero page compression", it is an independent fix for RDMA migration accounting and unrelated to the blocking-mode discussion. I'd like to keep that one separate and submit it on its own if there are no further comments. Thanks, Bin Guo
