> > The 'confirm' operation was only used for splicing from page cache, to > > wait for read on a page to finish. But generic_file_splice_read() > > already blocks on readahead reads, so it seems logical to block on the > > rare and slow single page reads too. > > > > So wait for readpage to finish inside __generic_file_splice_read() and > > remove the 'confirm' method. > > > > This also fixes short return counts when the filesystem (e.g. fuse) > > invalidates the page between insertation and removal. > > One of the basic goals of splice is to allow the pipe buffer to only be > consisten when a consumer asks for it, otherwise the filling will always > be sync. There should be no blocking on reads in the splice-in path, > only on consumption for splice-out. What you are ignoring (and I've mentioned in the changelog) is that it is *already* sync. Look at the code: this starts I/O: page_cache_sync_readahead(mapping, &in->f_ra, in, index, req_pages - spd.nr_pages); And this waits for it to finish: if (!PageUptodate(page)) { ... lock_page(page); The only way it will be async, is if there's no readahead. But do we want to optmize that case? Miklos -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html