mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-06-07 14:36:38 +03:00
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
This commit is contained in:
@@ -426,7 +426,7 @@ mutex_seq_start(struct seq_file *f, loff_t *pos)
|
||||
loff_t n = *pos;
|
||||
ENTRY;
|
||||
|
||||
mutex_lock(&mutex_stats_lock);
|
||||
down_read(&mutex_stats_sem);
|
||||
if (!n)
|
||||
mutex_seq_show_headers(f);
|
||||
|
||||
@@ -454,7 +454,7 @@ mutex_seq_next(struct seq_file *f, void *p, loff_t *pos)
|
||||
static void
|
||||
mutex_seq_stop(struct seq_file *f, void *v)
|
||||
{
|
||||
mutex_unlock(&mutex_stats_lock);
|
||||
up_read(&mutex_stats_sem);
|
||||
}
|
||||
|
||||
static struct seq_operations mutex_seq_ops = {
|
||||
|
||||
Reference in New Issue
Block a user