mirror_zfs/module/spl
Brian Behlendorf 8b45dda2bc Linux 2.6.31 kmem cache alignment fixes and cleanup.
The big fix here is the removal of kmalloc() in kv_alloc().  It used
to be true in previous kernels that kmallocs over PAGE_SIZE would
always be pages aligned.  This is no longer true atleast in 2.6.31
there are no longer any alignment expectations.  Since kv_alloc()
requires the resulting address to be page align we no only either
directly allocate pages in the KMC_KMEM case, or directly call
__vmalloc() both of which will always return a page aligned address.
Additionally, to avoid wasting memory size is always a power of two.

As for cleanup several helper functions were introduced to calculate
the aligned sizes of various data structures.  This helps ensure no
case is accidentally missed where the alignment needs to be taken in
to account.  The helpers now use P2ROUNDUP_TYPE instead of P2ROUNDUP
which is safer since the type will be explict and we no longer count
on the compiler to auto promote types hopefully as we expected.

Always wnforce minimum (SPL_KMEM_CACHE_ALIGN) and maximum (PAGE_SIZE)
alignment restrictions at cache creation time.

Use SPL_KMEM_CACHE_ALIGN in splat alignment test.
2009-11-13 11:12:43 -08:00
..
Makefile.in Add basic credential support and splat tests. 2009-07-27 17:18:59 -07:00
spl-atomic.c Use Linux atomic primitives by default. 2009-10-30 10:55:25 -07:00
spl-condvar.c Rename modules to module and update references 2009-01-15 10:44:54 -08:00
spl-cred.c Remove get/put_task_struct as they are not available for SLES11 2009-07-28 15:04:21 -07:00
spl-debug.c Rebase cmn_err on vcmn_err and don't warn about missing \n 2009-10-27 16:13:35 -07:00
spl-err.c I should not have removed these, they are important. 2009-10-27 16:17:06 -07:00
spl-generic.c Set cwd to '/' for the process executing insmod. 2009-10-01 16:06:15 -07:00
spl-kmem.c Linux 2.6.31 kmem cache alignment fixes and cleanup. 2009-11-13 11:12:43 -08:00
spl-kobj.c Rename modules to module and update references 2009-01-15 10:44:54 -08:00
spl-kstat.c Autoconf --enable-debug-* cleanup 2009-10-30 13:58:51 -07:00
spl-module.c Positive Solaris ioctl return codes need to be negated for use by libc 2009-07-23 16:14:52 -07:00
spl-mutex.c Reimplement mutexs for Linux lock profiling/analysis 2009-09-25 14:47:01 -07:00
spl-proc.c Autoconf --enable-debug-* cleanup 2009-10-30 13:58:51 -07:00
spl-rwlock.c Update rwlocks to track owner to ensure correct semantics 2009-09-25 14:14:35 -07:00
spl-taskq.c Add basic support for TASKQ_THREADS_CPU_PCT taskq flag which is 2009-07-09 10:07:52 -07:00
spl-thread.c Rename modules to module and update references 2009-01-15 10:44:54 -08:00
spl-time.c Prevent integer overflow after ~164 days of uptime. 2009-07-14 15:23:25 -07:00
spl-vnode.c Set cwd to '/' for the process executing insmod. 2009-10-01 16:06:15 -07:00
spl-xdr.c Minor bug fix in XDR code introduced in last minute change before landing. 2009-03-11 16:27:35 -07:00