On Mon, 2022-01-17 at 15:24 +0000, David Howells wrote: > Jeff Layton <jlayton@xxxxxxxxxx> wrote: > > > On Mon, 2022-01-17 at 13:47 +0000, Matthew Wilcox wrote: > > > This all falls very much under "doing it the hard way", and quite > > > possibly under the "actively buggy with races" category. > > > > > > read_mapping_folio() does what you want, as long as you pass 'filp' > > > as your 'void *data'. I should fix that type ... > > > How much do we care about the case where we don't have either the > CEPH_CAP_FILE_CACHE or the CEPH_CAP_FILE_LAZYIO caps? Is it possible just to > shove the page into the pagecache whatever we do? At the moment there are two > threads, both of which get a page - one attached to the page cache, one not. > The rest is then common because from that point on, it doesn't matter where > the folio resides. > Well, the protocol says that if you don't have CEPH_CAP_FILE_CACHE (Fc) then you're not allowed to do reads from the cache. I wouldn't care if we stuffed the page into the mapping anyway, but that could potentially affect mmap readers at the same time. OTOH, mmap reads when we don't have Fc is somewhat racy anyway. Maybe it doesn't matter... -- Jeff Layton <jlayton@xxxxxxxxxx>