[Cluster-devel] GFS2: Use kmalloc when possible for ->readdir() (try #2)

Steven Whitehouse swhiteho at redhat.com
Wed Jul 28 17:51:19 UTC 2010


Hi,

On Wed, 2010-07-28 at 10:13 -0700, Andrew Morton wrote:
> On Wed, 28 Jul 2010 17:56:23 +0100 Steven Whitehouse <swhiteho at redhat.com> wrote:
> 
> > +static void *gfs2_alloc_sort_buffer(unsigned size)
> > +{
> > +	void *ptr = NULL;
> > +
> > +	if (size < KMALLOC_MAX_SIZE)
> > +		ptr = kmalloc(size, GFP_NOFS | __GFP_NOWARN);
> > +	if (!ptr)
> > +		ptr = __vmalloc(size, GFP_NOFS, PAGE_KERNEL);
> > +	return ptr;
> > +}
> > +
> > +static void gfs2_free_sort_buffer(void *ptr)
> > +{
> > +	if (is_vmalloc_addr(ptr))
> > +		vfree(ptr);
> > +	else
> > +		kfree(ptr);
> > +}
> 
> This got kicked around a bit in May (Subject: mm: generic adaptive
> large memory allocation APIs).  That patch tried kmalloc(), then
> alloc_pages(), then vmalloc().  Nothing got merged though.
> 
> I wasn't terribly excited about it because of vague fears that it would
> just incite people to spend even less effort thinking about how large
> their individual allocations are.
> 
> apparmor has a private kvfree/kvmalloc.  Probably there are other
> versions floating around the tree as well.
> 

I did wonder about that too, but bearing in mind that the longer term
plan is to eliminate the vmalloc call, I wasn't sure it was worth doing,

Steve.





More information about the Cluster-devel mailing list