Thread (6 messages) 6 messages, 4 authors, 2016-03-13

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

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>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help