Re: [PATCH RFC] ext4: use __GFP_NOFAIL in ext4_free_blocks()
From: Michal Hocko <mhocko@kernel.org>
Date: 2016-02-25 09:08:39
Also in:
linux-fsdevel, linux-mm, lkml
From: Michal Hocko <mhocko@kernel.org>
Date: 2016-02-25 09:08:39
Also in:
linux-fsdevel, linux-mm, lkml
On Thu 25-02-16 11:01:32, Nikolay Borisov wrote:
On 02/24/2016 07:09 PM, Konstantin Khlebnikov wrote:quoted
This might be unexpected but pages allocated for sbi->s_buddy_cache are charged to current memory cgroup. So, GFP_NOFS allocation could fail if current task has been killed by OOM or if current memory cgroup has no free memory left. Block allocator cannot handle such failures here yet. Signed-off-by: Konstantin Khlebnikov <redacted>Adding new users of GFP_NOFAIL is deprecated.
This is not true. GFP_NOFAIL should be used where the allocation failure is no tolleratable and it is much more preferrable to doing an opencoded endless loop over page allocator.
Where exactly does the block allocator fail, I skimmed the code and failing ext4_mb_load_buddy seems to be handled at all call sites. There are some BUG_ONs but from the comments there I guess they should occur when we try to find a page and not allocate a new one?
I have posted a similar patch last year: http://lkml.kernel.org/r/1438768284-30927-6-git-send-email-mhocko@kernel.org because I could see emergency reboots when GFP_NOFS allocations were allowed to fail. -- 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>