Re: [RFC] propagate gfp_t to page table alloc functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 04/26/2012 09:20 AM, David Rientjes wrote:

> On Thu, 26 Apr 2012, KAMEZAWA Hiroyuki wrote:
> 
>>> Or do we instead do this:
>>>
>>> -	some_function(foo, bar, GFP_NOIO);
>>> +	old_gfp = set_current_gfp(GFP_NOIO);
>>> +	some_function(foo, bar);
>>> +	set_current_gfp(old_gfp);
>>>
>>> So the rule is "if the code was using an explicit GFP_foo then convert
>>> it to use set_current_gfp().  If the code was receiving a gfp_t
>>> variable from the caller then delete that arg".
>>>
>>> Or something like that.  It's all too hopelessly impractical to bother
>>> discussing - 20 years too late!
>>>
>>>
>>> otoh, maybe a constrained version of this could be used to address the
>>> vmalloc() problem alone.
>>>
>>
>> Yes, I think it will be good start.
>>
> 
> Maybe a per-thread_info variant of gfp_allowed_mask?  So Andrew's 
> set_current_gfp() becomes set_current_gfp_allowed() that does
> 
> 	void set_current_gfp_allowed(gfp_t gfp_mask)
> 	{
> 		current->gfp_allowed = gfp_mask & gfp_allowed_mask;
> 	}
> 
> and then the page allocator does
> 
> 	gfp_mask &= current->gfp_allowed;
> 
> rather than how it currently does
> 
> 	gfp_mask &= gfp_allowed_mask;
> 
> and then the caller of set_current_gfp_allowed() cleans up with 
> set_current_gfp_allowed(__GFP_BITS_MASK).


Caller should restore old gfp_mask instead of __GFP_BITS_MASK in case of
nesting.And how do we care of atomic context?

I was about to add warning in __vmalloc internal if caller uses GFP_NOIO, GFP_NOFS, GFP_ATOMIC
with Nick's comment and let them make to fix it. But it seems Andrew doesn't agree.

Andrew, please tell me your opinion for fixing this problem.

-- 
Kind regards,
Minchan Kim

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]