On Fri, Aug 30, 2019 at 05:17:51PM +0100, David Howells wrote: > Christoph Hellwig <hch@xxxxxx> wrote: > > > Not related to this patch, but using iov_iter with dio is trivial, what > > is the blocker therere? > > The usual: time. > > The change as a whole is not actually trivial since it will involve completely > overhauling the fscache data API and how the filesystems use it - and then > having cachefiles perform the DIO asynchronously as per Trond's requirements > for using fscache with NFS. Well, doing in-kernel async I/O is actually rather trivial these days. Take a look at the loop driver for an example. > I also need to work out how I'm going to do data/hole detection. Can I set, > say, O_NOREADHOLE and then expect the DIO to stop early with a short read? Or > do I need to use SEEK_DATA/SEEK_HOLE in advance to define the occupied > regions? We'll you'd need to implement a IOCB_NOHOLE, but that wouldn't be all that hard. Having a READ_PLUS like interface that actually tells you how large the hole is might be hard.