HomeFreeBSD

Lots of fixes here:

Description

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

Event Timeline

behlendo <behlendo@7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c> committed rGd6a26c6a328f: Lots of fixes here: (authored by behlendo <behlendo@7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c>).May 6 2008, 8:38 PM