I have both ->read() and ->read_iter(). I'll negate a ->read() and a_ops->direct_IO() because those were for testing. I'll go over my io_uring test code in user space. Thanks for your advice. 2022년 5월 25일 (수) 오후 12:00, Jens Axboe <axboe@xxxxxxxxx>님이 작성: > > 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 >