Message ID | 20180529055158.0170231e@lwn.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue 29-05-18 05:51:58, Jonathan Corbet wrote: > On Tue, 29 May 2018 10:26:44 +0200 > Michal Hocko <mhocko@kernel.org> wrote: > > > Although the api is documented in the source code Ted has pointed out > > that there is no mention in the core-api Documentation and there are > > people looking there to find answers how to use a specific API. > > So, I still think that this: > > > +The traditional way to avoid this deadlock problem is to clear __GFP_FS > > +respectively __GFP_IO (note the latter implies clearing the first as well) in > > doesn't read the way you intend it to. But we've sent you in more > than enough circles on this already, so I went ahead and applied it; > wording can always be tweaked later. Thanks a lot Jonathan! I am open to any suggestions of course and can follow up with some refinements. Just for the background. The above paragraph is meant to say that: - clearing __GFP_FS is a way to avoid reclaim recursion into filesystems deadlocks - clearing __GFP_IO is a way to avoid reclaim recursion into the IO layer deadlocks - GFP_NOIO implies __GFP_NOFS > You added the kerneldoc comments, but didn't bring them into your new > document. I'm going to tack this on afterward, hopefully nobody will > object. I have to confess I've never studied how the rst and kerneldoc should be interlinked so thanks for the fix up!
diff --git a/Documentation/core-api/gfp_mask-from-fs-io.rst b/Documentation/core-api/gfp_mask-from-fs-io.rst index 2dc442b04a77..e0df8f416582 100644 --- a/Documentation/core-api/gfp_mask-from-fs-io.rst +++ b/Documentation/core-api/gfp_mask-from-fs-io.rst @@ -33,6 +33,11 @@ section from a filesystem or I/O point of view. Any allocation from that scope will inherently drop __GFP_FS respectively __GFP_IO from the given mask so no memory allocation can recurse back in the FS/IO. +.. kernel-doc:: include/linux/sched/mm.h + :functions: memalloc_nofs_save memalloc_nofs_restore +.. kernel-doc:: include/linux/sched/mm.h + :functions: memalloc_noio_save memalloc_noio_restore + FS/IO code then simply calls the appropriate save function before any critical section with respect to the reclaim is started - e.g. lock shared with the reclaim context or when a transaction context