Re: implicit AOP_FLAG_NOFS for grab_cache_page_write_begin

From: Christoph Hellwig
Date: Fri Apr 17 2020 - 04:06:21 EST


On Fri, Apr 17, 2020 at 10:00:03AM +0200, Michal Hocko wrote:
> > commit aea1b9532143218f8599ecedbbd6bfbf812385e1
> > Author: Dave Chinner <dchinner@xxxxxxxxxx>
> > Date: Tue Jul 20 17:54:12 2010 +1000
> >
> > xfs: use GFP_NOFS for page cache allocation
> >
> > Avoid a lockdep warning by preventing page cache allocation from
> > recursing back into the filesystem during memory reclaim.
>
> Thanks for digging this up! The changelog is not really clear whether
> NOFS is to avoid false possitive lockup warnings or real ones. If the
> former then we have grown __GFP_NOLOCKDEP flag to workaround the problem
> if the later then can we use memalloc_nofs_{save,restore} in the xfs
> specific code please?

As far as I can tell we are never in a file system transaction in XFS
when allocating page cache pages. We do, however usually have i_rwsem
locked (or back in the day the XFS-specific predecessor). I'm not
sure what the current issues are, but maybe Dave remembers. In doubt
we should try removing the flag and run heavy stress testing with
lockdep enabled and see if it screams.