On 2/27/06, Roger Willcocks <willcor@xxxxxxxxx> wrote:
> I've reproduced the problem on a clean checkout of linux-2.6-xfs from
> oss.sgi.com.
I've narrowed this down to XFS_DIR_CREATENAME returning ENOSPC in xfs_create.
(resblks = 40, resblks - XFS_IALLOC_SPACE_RES(mp) = 35).
There's an assertion to catch this but it's not checked in a release build.
Incidentally the system I'm testing on has an XFS root drive and that gets
corrupted too when the test disk goes bang.
It all appears to work correctly in a debug build, which is a little tiresome.
However if try to unmount the drive I get an assertion error:
Assertion failed: vn_count(vp) == 0, file: fs/xfs/xfs_inode.c, line: 3594
------------[ cut here ]------------
kernel BUG at fs/xfs/support/debug.c:83!
invalid opcode: 0000 [#1]
PREEMPT SMP
Modules linked in: usbserial parport_pc lp parport nfsd exportfs autofs
ohci_hcd e100 0 snd_intel8x0 snd_ac97_codec snd_ac97_bus snd_pcm_oss
snd_mixer_oss snd_pcm snd_time r snd soundcore snd_page_alloc i2c_i801 i2c_core
hw_random intel_agp agpgart microcod e ohci1394 ieee1394 joydev usbhid uhci_hcd
ehci_hcd usbcore xfs 3w_9xxx sd_mod scsi_m od
CPU: 1
EIP: 0060:[<f8a06d46>] Not tainted VLI
EFLAGS: 00010282 (2.6.16-rc4-fl3 #4)
EIP is at assfail+0x16/0x22 [xfs]
eax: 0000004d ebx: e5cdf500 ecx: e5b05e8c edx: f8a82fa0
esi: f70a9000 edi: f5877380 ebp: f6fe20c0 esp: e5b05e88
ds: 007b es: 007b ss: 0068
Process umount (pid: 4338, threadinfo=e5b04000 task=f7f22a90)
Stack: <0>f8a82fa0 f8a0aeee f8a0aa69 00000e0a f89d7a88 f8a0aeee f8a0aa69
00000e0a
f70a9000 f6fe20c0 f89e6b3f f70a9000 00000000 00000000 00000000 f70a9000
f89f008e f70a9000 00000000 00000001 00000000 00000000 00000000 f70a9000
Call Trace:
[<f89d7a88>] xfs_iflush_all+0x43/0x78 [xfs]
[<f89e6b3f>] xfs_unmountfs+0x2e/0x113 [xfs]
[<f89f008e>] xfs_unmount+0x168/0x19d [xfs]
[<f8a03a0e>] vfs_unmount+0x5b/0x60 [xfs]
[<f8a0314f>] linvfs_put_super+0x30/0x61 [xfs]
[<c015db96>] generic_shutdown_super+0x124/0x134
[<c015e561>] kill_block_super+0x11/0x23
[<c015d9ba>] deactivate_super+0x74/0x92
[<c0171a4b>] sys_umount+0x33/0x71
[<c0113449>] do_page_fault+0x17e/0x53a
[<c014a9dd>] sys_munmap+0x4d/0x69
[<c0171a94>] sys_oldumount+0xb/0xe
[<c0102a9b>] sysenter_past_esp+0x54/0x79
Code: c7 83 c4 0c 85 db 75 08 0f 0b 4c 00 36 d4 a0 f8 5b 5e 5f 5d c3 ff 74 24
0c ff 7 4 24 0c ff 74 24 0c 68 a0 2f a8 f8 e8 07 54 71 c7 <0f> 0b 53 00 36 d4
a0 f8 83 c4 10 c3 8b 15 60 69 a9 f8 b9 1d f3
Badness in do_exit at kernel/exit.c:802
[<c011e6f7>] do_exit+0x3ec/0x3f4
[<c0104339>] do_trap+0x0/0xbf
[<c0104598>] do_invalid_op+0x0/0x86
[<c0104612>] do_invalid_op+0x7a/0x86
[<c02eedbf>] schedule+0x343/0x704
[<f8a06d46>] assfail+0x16/0x22 [xfs]
[<c02ef1d2>] preempt_schedule+0x52/0x65
[<c011c301>] vprintk+0x1a3/0x277
[<c02efefb>] __mutex_lock_slowpath+0x28d/0x4aa
[<c02eff3b>] __mutex_lock_slowpath+0x2cd/0x4aa
[<f89d7a56>] xfs_iflush_all+0x11/0x78 [xfs]
[<c0130a83>] debug_mutex_add_waiter+0x23/0x93
[<c0103c1f>] error_code+0x4f/0x60
[<f89d007b>] xfs_inobt_split+0x4b4/0x589 [xfs]
[<f8a06d46>] assfail+0x16/0x22 [xfs]
[<f89d7a88>] xfs_iflush_all+0x43/0x78 [xfs]
[<f89e6b3f>] xfs_unmountfs+0x2e/0x113 [xfs]
[<f89f008e>] xfs_unmount+0x168/0x19d [xfs]
[<f8a03a0e>] vfs_unmount+0x5b/0x60 [xfs]
[<f8a0314f>] linvfs_put_super+0x30/0x61 [xfs]
[<c015db96>] generic_shutdown_super+0x124/0x134
[<c015e561>] kill_block_super+0x11/0x23
[<c015d9ba>] deactivate_super+0x74/0x92
[<c0171a4b>] sys_umount+0x33/0x71
[<c0113449>] do_page_fault+0x17e/0x53a
[<c014a9dd>] sys_munmap+0x4d/0x69
[<c0171a94>] sys_oldumount+0xb/0xe
[<c0102a9b>] sysenter_past_esp+0x54/0x79
BUG: umount/4338, lock held at task exit time!
[f5870650] {alloc_super}
.. held by: umount: 4338 [f7f22a90, 117]
... acquired at: generic_shutdown_super+0x55/0x134
--
Roger
|