38-rc1: umount+rmmod cause ext4 error.

Tao Ma
2011-01-19T06:53:13Z

Hi Nick and Ted,
I ran some very basic test with 38-rc1 and my box run into error with
the message like:

slab error in kmem_cache_destroy(): cache `ext4_inode_cache': Can't free
all objects
Pid: 4395, comm: rmmod Not tainted 2.6.38-rc1 #1
Call Trace:
[<ffffffff820d61dc>] ? kmem_cache_destroy+0x83/0xc7
[<ffffffffa0574025>] ? destroy_inodecache+0x15/0x17 [ext4]
[<ffffffffa05923d1>] ? ext4_exit_fs+0x109/0x143 [ext4]
[<ffffffff8203d194>] ? put_online_cpus+0x56/0x58
[<ffffffff8206735a>] ? module_refcount+0x85/0x9d
[<ffffffff82067b22>] ? sys_delete_module+0x1b5/0x218
[<ffffffff82074fc3>] ? audit_syscall_entry+0x187/0x1ba
[<ffffffff82002a6b>] ? system_call_fastpath+0x16/0x1b
SLAB: cache with size 888 has lost its name
SLAB: cache with size 888 has lost its name
SLAB: cache with size 888 has lost its name
SLAB: cache with size 888 has lost its name

The reproduce process is simple:just rmmod ext4 immediately after umount
an ext4 volume.

I have done some very simple investigation and it seems that with Nick's
new ext4_i_callback, even after we do ext4_destroy_inode, it isn't
freed. So after we destroy the ext_inode_cache, and when freeing the
inode, it errors. Hope it helps. If you have any fixes, I can test it.

Regards,
Tao