mirror_zfs/modules/spl
behlendo d6a26c6a32 Lots of fixes here:
- Detailed kmem memory allocation tracking.  We can now get on
  spl module unload a list of all memory allocations which were
  not free'd and where the original alloc was.  E.g.

SPL: 15554:632:(spl-kmem.c:442:kmem_fini()) kmem leaked 90/319332 bytes
SPL: 15554:648:(spl-kmem.c:451:kmem_fini()) address          size  data             func:line
SPL: 15554:648:(spl-kmem.c:457:kmem_fini()) ffff8100734b68b8 32    0100000001005a5a __spl_mutex_init:70
SPL: 15554:648:(spl-kmem.c:457:kmem_fini()) ffff8100734b6148 13    &tl->tl_lock     __spl_mutex_init:74
SPL: 15554:648:(spl-kmem.c:457:kmem_fini()) ffff81007ac43730 32    0100000001005a5a __spl_mutex_init:70
SPL: 15554:648:(spl-kmem.c:457:kmem_fini()) ffff81007ac437d8 13    &tl->tl_lock     __spl_mutex_init:74

- Shift to using rwsems in kmem implmentation, to simply locking and
  improve concurency.

- Shift to using rwsems in mutex implementation, additionally ensure we
  never sleep in the init function if non-zero preempt_count or 
  interrupts are disabled as can happen in a slab cache ctor/dtor.

- Other minor formating fixes and such.

TODO:

- Finish the vmem memory allocation tracking

- Vet all other SPL primatives for potential sleeping during *_init.  I
suspect the rwlock implemenation does this and should be fixes just
like the mutex implemenation.



git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@95 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
2008-05-06 20:38:28 +00:00
..
Makefile.in Commit adaptive mutexes. This seems to have introduced some new 2008-05-05 20:18:49 +00:00
spl-atomic.c Update SPL to use new debug infrastructure. This means: 2008-04-21 17:29:47 +00:00
spl-debug.c More fixes to ensure we get good debug logs even if we're in the 2008-04-21 22:44:11 +00:00
spl-err.c Update SPL to use new debug infrastructure. This means: 2008-04-21 17:29:47 +00:00
spl-generic.c Commit adaptive mutexes. This seems to have introduced some new 2008-05-05 20:18:49 +00:00
spl-kmem.c Lots of fixes here: 2008-05-06 20:38:28 +00:00
spl-kobj.c Update SPL to use new debug infrastructure. This means: 2008-04-21 17:29:47 +00:00
spl-module.c Update SPL to use new debug infrastructure. This means: 2008-04-21 17:29:47 +00:00
spl-mutex.c Lots of fixes here: 2008-05-06 20:38:28 +00:00
spl-proc.c Lots of fixes here: 2008-05-06 20:38:28 +00:00
spl-rwlock.c Update SPL to use new debug infrastructure. This means: 2008-04-21 17:29:47 +00:00
spl-taskq.c Commit adaptive mutexes. This seems to have introduced some new 2008-05-05 20:18:49 +00:00
spl-thread.c Update SPL to use new debug infrastructure. This means: 2008-04-21 17:29:47 +00:00
spl-time.c Update SPL to use new debug infrastructure. This means: 2008-04-21 17:29:47 +00:00
spl-vnode.c Update SPL to use new debug infrastructure. This means: 2008-04-21 17:29:47 +00:00