On Tue, Feb 14, 2023 at 04:39:01PM +0100, Miklos Szeredi wrote: > On Tue, 14 Feb 2023 at 15:35, Ming Lei <ming.lei@xxxxxxxxxx> wrote: > > > I understand it isn't one issue from block device driver viewpoint at > > least, since the WRITE to buffer in sink end can be thought as DMA > > to buffer from device, and it is the upper layer(FS)'s responsibility > > for updating page flag. And block driver needn't to handle page > > status update. > > The block device still needs to know when the DMA is finished, right? Yeah, for normal in-kernel device driver, the completion is triggered by interrupt or io polling. For ublk, io handling is done by userspace, here we use io_uring to handle the IO in aio style. When the aio is completed, the userspace gets notified of the completion. Here the way is basically same with loop dio mode(losetup --direct-io=on), it is still zero copy, pages from loop block driver are passed to FS(backing file) directly for handling the original IO. Thanks, Ming