> Hi,
>
> Gave xfs a test spin today. It survived a fair amount of abuse, before
> crashing on umount. Here's the oops:
>
> cpu: 0, clocks: 833065, slice: 277688
> cpu: 1, clocks: 833065, slice: 277688
> CPU: 0
> EIP: 0010:[<c0128fba>]
> EFLAGS: 00000097
> eax: ffffffff ebx: a85471c7 ecx: cdb90698 edx: 00000000
> esi: c0141e84 edi: cdb90640 ebp: c2879c00 esp: c2879bf8
> ds: 0018 es: 0018 ss: 0018
> Process umount (pid: 308, stackpage=c2879000)
> Stack: cdb90698 cdb90698 c2879c1c c0141e87 cdb90698 00000246 00000286 c2879cb
0
> 00000282 c2879c50 c0143fdc cdb90640 00000246 00000286 c2879cb0 0000000
0
> 00000200 332bb600 00000000 00000000 00000286 c2879cb0 c2879cb0 c01438f
7
> Call Trace: [<c0141e87>] [<c0143fdc>] [<c01438f7>] [<c0143390>] [<c01bf9d8>]
[<c0142e70>] [<c018534f>]
> [<c01ae2f0>] [<c01a0cef>] [<c019fc56>] [<c01ad43a>] [<c019b6dc>] [<c01
b3eba>] [<c01b440b>] [<c01c3f2d>]
> [<c01c0efa>] [<c015e634>] [<c015c186>] [<c014d6fc>] [<c014d877>] [<c01
4d9fe>] [<c014da9a>] [<c010bcf0>]
> Code: 19 c0 85 c0 75 f6 0f 31 29 d8 50 6a 01 56 51 e8 de fe ff ff
>
> >>EIP: c0128fba <_spin_lock_+32/50>
> Trace: c0141e87 <pagebuf_hold+5b/cc>
> Trace: c0143fdc <pagebuf_segment_apply+38/134>
> Trace: c01438f7 <pagebuf_iorequest+43f/574>
> Trace: c0143390 <_page_buf_page_apply+0/128>
> Trace: c01bf9d8 <xfs_bdstrat_cb+c/14>
> Trace: c0142e70 <pagebuf_iostart+158/1e0>
> Trace: c018534f <xfs_buf_item_push+33/54>
> Trace: c01ae2f0 <xfs_trans_push_ail+160/468>
> Trace: c01c0efa <linvfs_put_inode+16/1c>
> Code: c0128fba <_spin_lock_+32/50> 00000000 <_EIP>: <===
> Code: c0128fba <_spin_lock_+32/50> 0: 19 c0
sbb %eax,%eax <===
> Code: c0128fbc <_spin_lock_+34/50> 2: 85 c0
test %eax,%eax
> Code: c0128fbe <_spin_lock_+36/50> 4: 75 f6
jne c0128fb6 <_spin_lock_+2e/50>
> Code: c0128fc0 <_spin_lock_+38/50> 6: 0f 31
rdtsc
> Code: c0128fc2 <_spin_lock_+3a/50> 8: 29 d8
sub %ebx,%eax
> Code: c0128fc4 <_spin_lock_+3c/50> a: 50
push %eax
> Code: c0128fc5 <_spin_lock_+3d/50> b: 6a 01
push $0x1
> Code: c0128fc7 <_spin_lock_+3f/50> d: 56
push %esi
> Code: c0128fc8 <_spin_lock_+40/50> e: 51
push %ecx
> Code: c0128fc9 <_spin_lock_+41/50> f: e8 de fe ff ff
call c0128eac <lstat_update_time+0/c0>
>
> Looks like it tried to grab a spin lock in use and got caught by
> the nmi watchdog.
Hmm, this one could be fun - I suspect we have one thread using a buffer
while another one is attempting to free it.... I have definitely seen
problems in this area. CONFIG_PAGE_BUF_META is going to be a fairly
delicate area for a while, we have implemented a totally new buffering
system underneath XFS - and it does not have exactly the same behavior
as the original irix one.
>
> In addition, this showed up when the partition was full:
>
> xfs_iomap_write returning ERROR 28
> write, delalloc. add some code here
Congratulations! I think you are the first person to fill a disk on XFS on
Linux. The delalloc one is a bit wierd, but could be explained by the lack
of any check in the new I/O code for ENOSPC.
>
> --
> * Jens Axboe <axboe@xxxxxxx>
> * Linux CD/DVD-ROM, SuSE Labs
> * http://kernel.dk
Thanks for the input.
Steve
------------------------------------------------------------------------------
Steve Lord voice: +1-651-683-5291
Silicon Graphics Inc
655F Lone Oak Drive email: lord@xxxxxxx
Eagan, MN, 55121, USA
------------------------------------------------------------------------------
|