> On Aug 29, 2024, at 12:00 AM, Christoph Hellwig <hch@xxxxxx> wrote: > >> Wouldn't readplus (and maybe a sparse copy program) rather have >> something that is "SEEK_DATA, fill the buffer with data from that file >> position, and tell me what pos the data came from"? > > Or rather a read operation that returns a length but no data if there > is a hole. That is essentially what READ_PLUS does. The "HOLE" array members are a length. The receiving client is then free to represent that hole in whatever way is most convenient. NFSD can certainly implement READ_PLUS so that it returns only a single array element -- and that element would be either CONTENT or HOLE -- in a possibly short read result. (That might be what it is doing already, come to think of it). The problem with SEEK_DATA AIUI is that READ_PLUS wants a snapshot of the file's state. SEEK_DATA is a separate operation, so some kind of serialization would be necessary to prevent file changes between reads and seeks. -- Chuck Lever