Re: [PATCH 3/4] slab: fix cpuset check in fallback_alloc

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

 



Hi Christoph,

On Fri, Sep 26, 2014 at 11:31:31AM -0500, Christoph Lameter wrote:
> On Fri, 26 Sep 2014, Vladimir Davydov wrote:
> 
> > To avoid this we should use softwall cpuset check in fallback_alloc.
> 
> Its weird that softwall checking occurs by setting __GFP_HARDWALL.

Hmm, I don't think I follow. Currently we enforce *hardwall* check by
passing __GFP_HARDWALL to cpuset_zone_allowed(). However, we need
softwall check there to conform to the page allocator behavior, so I
remove the __GFP_HARDWALL flag from cpuset_zone_allowed() to get
softwall check.

Actually, initially we used softwall check in fallback_alloc(). This was
changed to hardwall check by commit b8b50b6519afa ("mm: fallback_alloc
cpuset_zone_allowed irq fix") in order to fix sleep-in-atomic bug,
because at that time softwall check required taking the callback_mutex
while fallback_alloc is called with interrupts disabled.

Thanks,
Vladimir

> >
> > Signed-off-by: Vladimir Davydov <vdavydov@xxxxxxxxxxxxx>
> > ---
> >  mm/slab.c |    2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/mm/slab.c b/mm/slab.c
> > index eb6f0cf6875c..e35822d07821 100644
> > --- a/mm/slab.c
> > +++ b/mm/slab.c
> > @@ -3051,7 +3051,7 @@ retry:
> >  	for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) {
> >  		nid = zone_to_nid(zone);
> >
> > -		if (cpuset_zone_allowed(zone, flags | __GFP_HARDWALL) &&
> > +		if (cpuset_zone_allowed(zone, flags) &&
> >  			get_node(cache, nid) &&
> >  			get_node(cache, nid)->free_objects) {
> >  				obj = ____cache_alloc_node(cache,
> >

--
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/ .
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]