[OpenAFS-devel] [PATCH] fix openafs crashes on linux 2.6.10-2.6.12, and all RHEL4 kernels

chas williams - CONTRACTOR chas@cmf.nrl.navy.mil
Thu, 10 May 2007 11:19:31 -0400


In message <56145D14A8009EDA1E7D6811@sphinx.andrew.cmu.edu>,Chaskiel M Grundman
 writes:
>vmalloc'd memory is not pageable. (I can't find a definitive current 
>reference for this, but searching for "linux kernel pageable" comes up with 

my mistake.  for some reason i thought it was pageable.

>vmalloc is about memory fragmentation. (kmalloc allocates memory that has a 
>1:1 physical/virtual mapping, which means allocating large objects from it 
>insufficient pages, or if the virtual address space reserved for it fills 
>or becomes fragmented)

which is why we should not be using kmalloc() to allocate huge chunks
of memory in the first place.  ideally, afs would just use vmalloc for
everything but early kernels dont have a vmalloc(GFP_NOFS).  afs doesnt
need anything to be physical contiguous.  however, i am fairly sure
most of the large allocations are done at startup creating the linked
lists of vcache/dcache entries.  this could be implemented via the
slab/kmem_cache interface which seem like a better fit (it might even
align the structures to cache boundarys).