On 5/24/22 6:56 PM, Changman Lee wrote: > Hi List, > > I'm CM Lee. I'm developing a custom character device managing pcie dma. > I've tried to use io uring for the char device which supports readv > and writev with synchronous and blocking manner and seek. > When I use a io uring with IORING_SETUP_IOPOLL and IORING_SETUP_SQPOLL > for reducing syscall overhead, a readv of the char device driver seems > to be not called. So I added a_ops->direct_IO when the device is > opened with O_DIRECT. But the result was the same. > This is my question. > Q1: Does io uring support a character device ? > Q2: Is it better to reimplement a device driver as block device type ? io_uring doesn't care what file type it is, I suspect your problem lies elsewhere. Do you have a ->read() defined as well? If you do, the vfs will pick that over ->read_iter(). If regular read/write works with O_DIRECT and reading from the device in general, then io_uring will too. -- Jens Axboe