On 7/21/22 7:05 PM, Dylan Yudaken wrote:
It seems to be a problem with blocking reads, buffer select and READV. My guess is that ext4/xfs are not blocking. in b66e65f41426 ("io_uring: never call io_buffer_select() for a buffer re-select"), this line was added in __io_iov_buffer_select - iov[0].iov_len = len; + req->rw.len = iov[0].iov_len = len; Basically stashing the buffer length in rw.len. The problem is that the next time around that breaks at if (req->rw.len != 1) return -EINVAL; The below fixes it as an example, but it's not great. Maybe someone can figure out a better patch? Otherwise I can try tomorrow:
It's 8:05 PM from my end. I'll try to play with your patch after dinner while waiting for others say something. -- Ammar Faizi