Russell Cattelan [cattelan@xxxxxxxxxxx] wrote:
> Ok one more shot at it.
>
> I'm not convinced this is entirely correct, but is closer to the irix
> semantics
>
> notable exception; the pagebuf lock is not grabbed before checking the pin
> count.
>
> I'm trying to think of a scenario where is this matters, it is much cheaper to
>
> just check the count rather than grabbing the lock checking the count and
> then dropping the
>
> lock.
>
> If this still hangs please send the bt and the output of kdb's pb <addr>.
>
> I've tested doing busy umounts:
>
> mount /xfs2; cd /xfs2/dbench/; ./dbench 10 ; cd / ; umount /xfs2
>
> seems to work?!
>
> I'm going toss a lvm volume on top of this and see if that makes a difference.
>
> --
> Russell Cattelan
> --
> Digital Elves inc. -- Currently on loan to SGI
> Linux XFS core developer.
>
it still hangs.
utz
Entering kdb (current=0xc0358000, pid 0) due to Keyboard Entry
kdb> ps
Task Addr Pid Parent [*] cpu State Thread Command
0xc15fe000 00000001 00000000 0 000 stop 0xc15fe260 init
0xc15f0000 00000002 00000001 0 000 stop 0xc15f0260 keventd
0xc15ec000 00000003 00000001 0 000 stop 0xc15ec260 kswapd
0xc15ea000 00000004 00000001 0 000 stop 0xc15ea260 kreclaimd
0xc15e8000 00000005 00000001 0 000 stop 0xc15e8260 bdflush
0xc15e6000 00000006 00000001 0 000 stop 0xc15e6260 kupdated
0xc15c0000 00000007 00000001 0 000 stop 0xc15c0260 scsi_eh_0
0xc157e000 00000008 00000001 0 000 stop 0xc157e260 mdrecoveryd
0xc1572000 00000009 00000001 0 000 stop 0xc1572260 pagebuf_daemon
0xcb622000 00001228 00000001 0 000 stop 0xcb622260 rc
0xcbe80000 00001615 00001228 0 000 stop 0xcbe80260 S20reboot
0xcf7fe000 00001636 00001615 0 000 stop 0xcf7fe260 umount
kdb> bta
Stack traceback for pid 1
EBP EIP Function(args)
0xc15ffefc 0xc01108ae schedule+0x2de (0xc15fff10)
kernel .text 0xc0100000 0xc01105d0 0xc0110a10
0xc15fff24 0xc011059a schedule_timeout+0x7a
kernel .text 0xc0100000 0xc0110520 0xc01105c0
0xc013d613 do_select+0x93 (0xb, 0xc15fffa8, 0xc15fffa4)
kernel .text 0xc0100000 0xc013d580 0xc013d790
0xc013dbf2 sys_select+0x432 (0xb, 0xbffff93c, 0x0, 0x0, 0xbffff884)
kernel .text 0xc0100000 0xc013d7c0 0xc013dd70
0xc0106f17 system_call+0x33
kernel .text 0xc0100000 0xc0106ee4 0xc0106f1c
Enter <q> to end, <cr> to continue:
Stack traceback for pid 2
EBP EIP Function(args)
0xc15f1fa8 0xc01108ae schedule+0x2de (0x700)
kernel .text 0xc0100000 0xc01105d0 0xc0110a10
0xc011dd05 context_thread+0x115
kernel .text 0xc0100000 0xc011dbf0 0xc011ddb0
0xc01054b3 kernel_thread+0x23
kernel .text 0xc0100000 0xc0105490 0xc01054c0
Enter <q> to end, <cr> to continue:
Stack traceback for pid 3
EBP EIP Function(args)
0xc15edf90 0xc01108ae schedule+0x2de (0xc15edfa4)
kernel .text 0xc0100000 0xc01105d0 0xc0110a10
0xc15edfb8 0xc011059a schedule_timeout+0x7a (0x10f00, 0xc027bbb1, 0xc15ec239)
kernel .text 0xc0100000 0xc0110520 0xc01105c0
0xc15edfdc 0xc0110c16 interruptible_sleep_on_timeout+0x46 (0xc15fffbc)
kernel .text 0xc0100000 0xc0110bd0 0xc0110c40
0xc01293b9 kswapd+0xe9
kernel .text 0xc0100000 0xc01292d0 0xc01293e0
0xc01054b3 kernel_thread+0x23
kernel .text 0xc0100000 0xc0105490 0xc01054c0
Enter <q> to end, <cr> to continue:
Stack traceback for pid 4
EBP EIP Function(args)
0xc15ebfb0 0xc01108ae schedule+0x2de (0x10f00)
kernel .text 0xc0100000 0xc01105d0 0xc0110a10
0xc15ebfcc 0xc0110bb0 interruptible_sleep_on+0x40 (0x10f00, 0xc15fffb0)
kernel .text 0xc0100000 0xc0110b70 0xc0110bd0
0xc012948b kreclaimd+0x5b
kernel .text 0xc0100000 0xc0129430 0xc0129510
0xc01054b3 kernel_thread+0x23
kernel .text 0xc0100000 0xc0105490 0xc01054c0
Enter <q> to end, <cr> to continue:
Stack traceback for pid 5
EBP EIP Function(args)
0xc15e9fd8 0xc01108ae schedule+0x2de (0x10f00)
kernel .text 0xc0100000 0xc01105d0 0xc0110a10
0xc0132c3e bdflush+0xce
kernel .text 0xc0100000 0xc0132b70 0xc0132c50
0xc01054b3 kernel_thread+0x23
kernel .text 0xc0100000 0xc0105490 0xc01054c0
Enter <q> to end, <cr> to continue:
Stack traceback for pid 6
EBP EIP Function(args)
0xc15e7f88 0xc01108ae schedule+0x2de
kernel .text 0xc0100000 0xc01105d0 0xc0110a10
0xc0133a83 __wait_on_super+0x73 (0xcf909e00)
kernel .text 0xc0100000 0xc0133a10 0xc0133aa0
0xc0133ae5 sync_supers+0x45 (0x0)
kernel .text 0xc0100000 0xc0133aa0 0xc0133b50
0xc0132a67 sync_old_buffers+0x7 (0x10f00)
kernel .text 0xc0100000 0xc0132a60 0xc0132aa0
0xc0132d2c kupdate+0xdc
kernel .text 0xc0100000 0xc0132c50 0xc0132d30
0xc01054b3 kernel_thread+0x23
kernel .text 0xc0100000 0xc0105490 0xc01054c0
Enter <q> to end, <cr> to continue:
Stack traceback for pid 7
EBP EIP Function(args)
0xc15c1f78 0xc01108ae schedule+0x2de (0xc15c20c0, 0xc15c0000)
kernel .text 0xc0100000 0xc01105d0 0xc0110a10
0xc0105b00 __down_interruptible+0x80
kernel .text 0xc0100000 0xc0105a80 0xc0105b50
0xc0105b9f __down_failed_interruptible+0x7 (0x100, 0xc15fff68,
0xc15fffc0, 0xc15c20c0, 0x0)
kernel .text 0xc0100000 0xc0105b98 0xc0105ba4
0xc0271403 stext_lock+0xdab
kernel .text.lock 0xc0270658 0xc0270658
0xc0271800
0xc01f660e scsi_error_handler+0xbe
kernel .text 0xc0100000 0xc01f6550 0xc01f6680
0xc01054b3 kernel_thread+0x23
kernel .text 0xc0100000 0xc0105490 0xc01054c0
Enter <q> to end, <cr> to continue:
Stack traceback for pid 8
EBP EIP Function(args)
0xc157ffb4 0xc01108ae schedule+0x2de
kernel .text 0xc0100000 0xc01105d0 0xc0110a10
0xc022d694 md_thread+0x104
kernel .text 0xc0100000 0xc022d590 0xc022d700
0xc01054b3 kernel_thread+0x23
kernel .text 0xc0100000 0xc0105490 0xc01054c0
Enter <q> to end, <cr> to continue:
Stack traceback for pid 9
EBP EIP Function(args)
0xc1573f90 0xc01108ae schedule+0x2de (0xc144ac08)
kernel .text 0xc0100000 0xc01105d0 0xc0110a10
0xc1573fac 0xc0110bb0 interruptible_sleep_on+0x40 (0xc1573fdc, 0xc1573fdc,
0xf00)
kernel .text 0xc0100000 0xc0110b70 0xc0110bd0
0xc015d604 pagebuf_daemon+0xd4
kernel .text 0xc0100000 0xc015d530 0xc015d760
0xc01054b3 kernel_thread+0x23
kernel .text 0xc0100000 0xc0105490 0xc01054c0
Enter <q> to end, <cr> to continue:
Stack traceback for pid 1228
EBP EIP Function(args)
0xcb623f80 0xc01108ae schedule+0x2de (0xcb622000)
kernel .text 0xc0100000 0xc01105d0 0xc0110a10
0xc0115caf sys_wait4+0x37f (0xffffffff, 0xbffff8a0, 0x0, 0x0, 0x0)
kernel .text 0xc0100000 0xc0115930 0xc0115ce0
0xc0106f17 system_call+0x33
kernel .text 0xc0100000 0xc0106ee4 0xc0106f1c
Enter <q> to end, <cr> to continue:
Stack traceback for pid 1615
EBP EIP Function(args)
0xcbe81f80 0xc01108ae schedule+0x2de (0xcbe80000)
kernel .text 0xc0100000 0xc01105d0 0xc0110a10
0xc0115caf sys_wait4+0x37f (0xffffffff, 0xbffffa00, 0x0, 0x0, 0x0)
kernel .text 0xc0100000 0xc0115930 0xc0115ce0
0xc0106f17 system_call+0x33
kernel .text 0xc0100000 0xc0106ee4 0xc0106f1c
Enter <q> to end, <cr> to continue:
Stack traceback for pid 1636
EBP EIP Function(args)
0xcf7ffe58 0xc01108ae schedule+0x2de (0xcfc14ec0)
kernel .text 0xc0100000 0xc01105d0 0xc0110a10
0xcf7ffe70 0xc0105a2f __down+0x5f
kernel .text 0xc0100000 0xc01059d0 0xc0105a80
0xc0105b94 __down_failed+0x8 (0xcfc14ec0, 0xc01aa9c2, 0xcfc14ec0,
0xcfc85800, 0xcfc14ec0)
kernel .text 0xc0100000 0xc0105b8c 0xc0105b98
0xc0271025 stext_lock+0x9cd
kernel .text.lock 0xc0270658 0xc0270658
0xc0271800
0xc015cfea pagebuf_iowait+0x2a (0xcfc14ec0, 0xcfc85800, 0xcfc14ec0,
0xcfc14ec0)
kernel .text 0xc0100000 0xc015cfc0 0xc015cff0
0xc01aa9c2 xfs_unmountfs_writesb+0x92 (0xcfc85800)
kernel .text 0xc0100000 0xc01aa930 0xc01aaa10
0xc01aa88a xfs_unmountfs+0x5a (0xcfc85800, 0x3, 0xc03ac360)
kernel .text 0xc0100000 0xc01aa830 0xc01aa8e0
0xc01b2f78 xfs_unmount+0x168 (0xcfc85800, 0x0, 0xc03ac360)
kernel .text 0xc0100000 0xc01b2e10 0xc01b2f90
0xc01bdf4a fs_dounmount+0x5a (0xcfc85800, 0x0, 0x0, 0xc03ac360,
0xcf7e5dc8)
kernel .text 0xc0100000 0xc01bdef0 0xc01bdf70
0xc01c52b8 linvfs_put_super+0x58 (0xcf909e00)
kernel .text 0xc0100000 0xc01c5260 0xc01c5330
more>
0xc0134237 kill_super+0x87 (0xcf909e00, 0x0, 0xc1575f40, 0xffffffff,
0xcfb6fac0)
kernel .text 0xc0100000 0xc01341b0 0xc01342f0
0xc0134641 do_umount+0x1c1 (0xc1575f40, 0x0, 0x0)
kernel .text 0xc0100000 0xc0134480 0xc0134650
0xc0134716 sys_umount+0xc6 (0x8052428, 0x0)
kernel .text 0xc0100000 0xc0134650 0xc0134750
0xc013475c sys_oldumount+0xc (0x8052428, 0x804ee27, 0x8052468,
0x8052429, 0x804ee20)
kernel .text 0xc0100000 0xc0134750 0xc0134760
0xc0106f17 system_call+0x33
kernel .text 0xc0100000 0xc0106ee4 0xc0106f1c
Enter <q> to end, <cr> to continue:
kdb> pb 0xcfc14ec0
page_buf_t at 0xcfc14ec0
pb_flags MAPPED SYNC LOCKABLE MEM_ALLOCATED FORCEIO
pb_target 0xcf7e5ac0 pb_hold 1 pb_next 0xcfc14ec0 pb_prev 0xcfc14ec0
pb_file_offset 0x0 pb_buffer_length 0x200 pb_addr 0xcf7d0200
pb_bn 0x0 pb_count_desired 0x200
pb_io_remaining 0 pb_error 0 pb_mem 0xcfc15c40
pb_iodonesema (-1,1) pb_sema (1,0) pincount (0)
kdb> reboot
|