On Wed 25-04-18 11:25:09, Mikulas Patocka wrote: > > > On Wed, 25 Apr 2018, Michal Hocko wrote: > > > On Wed 25-04-18 08:43:32, Mikulas Patocka wrote: > > > > > > > > > On Tue, 24 Apr 2018, Michal Hocko wrote: > > > > > > > On Tue 24-04-18 19:17:12, Mikulas Patocka wrote: > > > > > > > > > > > > > > > On Tue, 24 Apr 2018, Michal Hocko wrote: > > > > > > > > > > > > So in a perfect world a filesystem calls memalloc_nofs_save/restore and > > > > > > > always uses GFP_KERNEL for kmalloc/vmalloc? > > > > > > > > > > > > Exactly! And in a dream world those memalloc_nofs_save act as a > > > > > > documentation of the reclaim recursion documentation ;) > > > > > > -- > > > > > > Michal Hocko > > > > > > SUSE Labs > > > > > > > > > > BTW. should memalloc_nofs_save and memalloc_noio_save be merged into just > > > > > one that prevents both I/O and FS recursion? > > > > > > > > Why should FS usage stop IO altogether? > > > > > > Because the IO may reach loop and loop may redirect it to the same > > > filesystem that is running under memalloc_nofs_save and deadlock. > > > > So what is the difference with the current GFP_NOFS? > > My point is that filesystems should use GFP_NOIO too. If > alloc_pages(GFP_NOFS) issues some random I/O to some block device, the I/O > may be end up being redirected (via block loop device) to the filesystem > that is calling alloc_pages(GFP_NOFS). Talk to FS people, but I believe there is a good reason to distinguish the two. -- Michal Hocko SUSE Labs