Re: [PATCH 8/8] Revert "ext4: fix wrong gfp type under transaction"
From: Michal Hocko <mhocko@kernel.org>
Date: 2017-01-26 07:44:55
Also in:
ceph-devel, linux-btrfs, linux-ext4, linux-f2fs-devel, linux-fsdevel, linux-nfs, linux-xfs, lkml
On Thu 19-01-17 10:44:05, Michal Hocko wrote:
On Thu 19-01-17 10:22:36, Jan Kara wrote:quoted
On Thu 19-01-17 09:39:56, Michal Hocko wrote:quoted
On Tue 17-01-17 18:29:25, Jan Kara wrote:quoted
On Tue 17-01-17 17:16:19, Michal Hocko wrote:quoted
quoted
quoted
But before going to play with that I am really wondering whether we need all this with no journal at all. AFAIU what Jack told me it is the journal lock(s) which is the biggest problem from the reclaim recursion point of view. What would cause a deadlock in no journal mode?We still have the original problem for why we need GFP_NOFS even in ext2. If we are in a writeback path, and we need to allocate memory, we don't want to recurse back into the file system's writeback path.But we do not enter the writeback path from the direct reclaim. Or do you mean something other than pageout()'s mapping->a_ops->writepage? There is only try_to_release_page where we get back to the filesystems but I do not see any NOFS protection in ext4_releasepage.Maybe to expand a bit: These days, direct reclaim can call ->releasepage() callback, ->evict_inode() callback (and only for inodes with i_nlink > 0), shrinkers. That's it. So the recursion possibilities are rather more limited than they used to be several years ago and we likely do not need as much GFP_NOFS protection as we used to.Thanks for making my remark more clear Jack! I would just want to add that I was playing with the patch below (it is basically GFP_NOFS->GFP_KERNEL for all allocations which trigger warning from the debugging patch which means they are called from within transaction) and it didn't hit the lockdep when running xfstests both with or without the enabled journal. So am I still missing something or the nojournal mode is safe and the current series is OK wrt. ext*?I'm convinced the current series is OK, only real life will tell us whether we missed something or not ;)I would like to extend the changelog of "jbd2: mark the transaction context with the scope GFP_NOFS context". " Please note that setups without journal do not suffer from potential recursion problems and so they do not need the scope protection because neither ->releasepage nor ->evict_inode (which are the only fs entry points from the direct reclaim) can reenter a locked context which is doing the allocation currently. "
Could you comment on this Ted, please? -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>