We are hopefully going to get rid of OBD_ALLOC_LARGE() as well, though.

It's simple enough to write a function:

void *obd_zalloc(size_t size)
{
        if (size > 4 * PAGE_CACHE_SIZE)
                return vzalloc(size);
        else
                return kmalloc(size, GFP_NOFS);
}

Except, huh?  Shouldn't we be using GFP_NOFS for the vzalloc() side?
There was some discussion of that GFP_NOFS was a bit buggy back in 2010
(http://marc.info/?l=linux-mm&m=128942194520631&w=4) but the current
lustre code doesn't try to pass GFP_NOFS.

Then it's simple enough to change OBD_FREE_LARGE() to kvfree().

Also it's weird that only the lustre people have thought of this trick
to allocate big chunks of RAM and no one else has.  What would happen if
we just change vmalloc() so it worked this way for everyone?

regards,
dan carpenter
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to