View Incident:
http://co-op.engr.sgi.com/BugWorks/code/bwxquery.cgi?search=Search&wlong=1&view_type=Bug&wi=800992
Status : open Priority : 2
Assigned Engineer : dxm Submitter : dxm
*Modified User : dxm *Modified User Domain : engr
*Description :
On my test box, I'd been playing with xfs, then
umounted, rmmoded and insmoded the modules. When
pagebuf was insmoded, this kernel BUG() was tripped.
I'll see if I can get some more info on this one.
kmem_cache_destroy: Can't free all objects c116d764
kernel BUG at slab.c:806!
Entering kdb (0xc215e000) Panic: invalid operand
.....
==========================
ADDITIONAL INFORMATION (ADD)
From: dxm@engr (BugWorks)
Date: Sep 14 2000 10:23:35PM
==========================
Ok, so it turns out that I never noticed this before because
it's only an issue if CONFIG_XFS_VNODE_TRACING is enabled
_and_ you fail a mount.
On a failed unmount, linvfs_read_super does not do a
ktrace_free on the buffer it allocates with ktrace_alloc.
The ktrace_free is normally done by linvfs_put_super but
this is not called since the mount failed.
This patch also stops a leaked inode on mount fail and
gotos the right place if the pagebuf daemons fail to start.
Could someone rv for me? Steve? Ta. (beta worthy?)
--- /usr/tmp/p_rdiff_a0PybF/xfs_super.c Fri Sep 15 16:19:57 2000
+++ /build1/people/dxm/isms/slinx-xfs/linux/fs/xfs/linux/xfs_super.c Fri Sep
15 16:14:29 2000
@@ -174,7 +174,7 @@
/* first mount pagebuf delayed write daemon not running yet */
if (pagebuf_daemon_start() < 0) {
- goto fail_vnrele;
+ goto fail_daemon;
}
/* Setup the uap structure */
@@ -299,6 +299,15 @@
fail_vfsop:
vfs_deallocate(vfsp);
+#ifdef CONFIG_XFS_VNODE_TRACING
+ ktrace_free(cvp->v_trace);
+
+ cvp->v_trace = NULL;
+#endif /* CONFIG_XFS_VNODE_TRACING */
+
+ kfree(cvp->v_inode);
+
+fail_daemon:
MOD_DEC_USE_COUNT;
return(NULL);
|