Re: [BUG] D state process after unplug and umount usb disk

From: Dave Young
Date: Mon Sep 05 2011 - 22:09:32 EST


On Mon, Sep 5, 2011 at 9:31 PM, Wu Fengguang <fengguang.wu@xxxxxxxxx> wrote:
> On Sat, Sep 03, 2011 at 06:31:11PM +0800, Dave Young wrote:
>> Hi,
>>
>> Known issue?
>>
>> Reproduce by:
>> mount /dev/sdb2 /mnt/sdb2 -t ext3
>> cat /mnt/sdb2/* >/dev/null
>> unplug usb disk
>> umount -f /mnt/sdb2
>
> When I do the above sequence on a normal disk, umount will rightfully
> fail. So the error is specific to unplugging a mounted USB disk.

Yes, unplugging is necessary.

>
> root@fat /home/wfg# mount /dev/sda7 /fs/sda7
> root@fat /home/wfg# ls /fs/sda7
> root@fat /home/wfg# cp /dev/zero /fs/sda7&
> [1] 7900
> root@fat /home/wfg# cat /fs/sda7/* > /dev/null&; umount -f /fs/sda7
> [2] 7909
> umount2: Device or resource busy
> umount: /fs/sda7: device is busy.
> Â Â Â Â(In some cases useful info about processes that use
> Â Â Â Â the device is found by lsof(8) or fuser(1))
> umount2: Device or resource busy
>
>> dmesg as below:
>>
>> [ 1440.567271] SysRq : Show Blocked State
>> [ 1440.567278]  task            ÂPC stack  pid father
>> [ 1440.567312] cat       D ffff880037a1e378 Â4296 Â2381  2310 0x00000004
>> [ 1440.567320] Âffff88003cca5838 0000000000000046 ffff88003cca57e8
>> ffffffff00000000
>> [ 1440.567332] Â00000000000134c0 00000000000134c0 00000000000134c0
>> ffff880037a1e000
>> [ 1440.567339] Â00000000000134c0 ffff88003cca5fd8 00000000000134c0
>> 00000000000134c0
>> [ 1440.567347] Call Trace:
>> [ 1440.567357] Â[<ffffffff810c0468>] ? lock_page+0x2a/0x2a
>> [ 1440.567363] Â[<ffffffff815e452d>] io_schedule+0x5e/0x79
>> [ 1440.567368] Â[<ffffffff810c0471>] sleep_on_page+0x9/0xd
>> [ 1440.567373] Â[<ffffffff815e4adf>] __wait_on_bit_lock+0x41/0x8a
>> [ 1440.567378] Â[<ffffffff810c0437>] __lock_page+0x61/0x68
>> [ 1440.567384] Â[<ffffffff81058739>] ? autoremove_wake_function+0x34/0x34
>> [ 1440.567390] Â[<ffffffff8102f704>] ? should_resched+0x9/0x29
>
>> [ 1440.567395] Â[<ffffffff810c9b0b>] lock_page+0x25/0x29
>> [ 1440.567400] Â[<ffffffff810ca1ac>] truncate_inode_pages_range+0x2a6/0x32d
>> [ 1440.567406] Â[<ffffffff810ca240>] truncate_inode_pages+0xd/0xf
>
> Maybe the page is locked for read IO somewhere else, which never
> managed to complete due to the unplugged USB disk?
>
> This can be (not strictly) confirmed by running this and check if
> there are locked and !uptodate pages:
>
> Â Â Â Âpage-types -lr -b locked
>
> If so the root cause should be, the IO requests are stuck rather than
> being failed after some timeout value.

offset len flags
38e5d 3 L____l__________________d_________
38e60 1 L____l____________________________
531e7 1 L____l__________________d_____I___
531e8 18 L____l__________________d_________


flags page-count MB symbolic-flags long-symbolic-flags
0x0000000400000021 27 0
L____l__________________d_________ locked,lru,mappedtodisk
0x0000000000000021 1 0
L____l____________________________ locked,lru
0x0001000400000021 1 0
L____l__________________d_____I___ locked,lru,mappedtodisk,readahead
total 29 0


BTW, forgot to tell, my kernel applied NeilBrown's
move-bdev_inode_switch_bdi-after-kill_bdev patch

>
> Thanks,
> Fengguang
>
>> [ 1440.567411] Â[<ffffffff811642cf>] ext3_evict_inode+0xc9/0x1d7
>> [ 1440.567417] Â[<ffffffff8111288e>] evict+0xa3/0x15e
>> [ 1440.567422] Â[<ffffffff81112b34>] dispose_list+0x3d/0x49
>> [ 1440.567426] Â[<ffffffff81113475>] evict_inodes+0xf1/0x100
>> [ 1440.567431] Â[<ffffffff810ffd21>] generic_shutdown_super+0x47/0xc7
>> [ 1440.567436] Â[<ffffffff810ffdc3>] kill_block_super+0x22/0x65
>> [ 1440.567441] Â[<ffffffff811000da>] deactivate_locked_super+0x21/0x52
>> [ 1440.567445] Â[<ffffffff811009ab>] deactivate_super+0x35/0x39
>> [ 1440.567452] Â[<ffffffff81116395>] mntput_no_expire+0xcb/0xd0
>> [ 1440.567457] Â[<ffffffff811163bb>] mntput+0x21/0x23
>> [ 1440.567461] Â[<ffffffff810ff8e7>] fput+0x196/0x1a5
>> [ 1440.567467] Â[<ffffffff810fc7a1>] filp_close+0x6b/0x76
>> [ 1440.567472] Â[<ffffffff8103fa8a>] put_files_struct+0x73/0xd1
>> [ 1440.567477] Â[<ffffffff8103fb7b>] exit_files+0x46/0x4f
>> [ 1440.567481] Â[<ffffffff8103fe01>] do_exit+0x27d/0x7b3
>> [ 1440.567487] Â[<ffffffff8104d97f>] ? get_signal_to_deliver+0x81/0x4ac
>> [ 1440.567493] Â[<ffffffff812e5e27>] ? do_raw_spin_lock+0x6b/0x122
>> [ 1440.567497] Â[<ffffffff810405c5>] do_group_exit+0x7d/0xa8
>> [ 1440.567502] Â[<ffffffff8104dd8b>] get_signal_to_deliver+0x48d/0x4ac
>> [ 1440.567509] Â[<ffffffff81001ea2>] do_signal+0x39/0x600
>> [ 1440.567514] Â[<ffffffff810fdb37>] ? fsnotify_access+0x5d/0x65
>> [ 1440.567519] Â[<ffffffff810024a4>] do_notify_resume+0x27/0x69
>> [ 1440.567524] Â[<ffffffff812e158e>] ? trace_hardirqs_on_thunk+0x3a/0x3f
>> [ 1440.567529] Â[<ffffffff815ecd63>] int_signal+0x12/0x17
>> [ 1440.710163] INFO: task cat:2381 blocked for more than 120 seconds.
>> [ 1440.710170] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
>> disables this message.
>> [ 1440.710175] cat       D ffff880037a1e378 Â4296 Â2381  2310 0x00000004
>> [ 1440.710188] Âffff88003cca5838 0000000000000046 ffff88003cca57e8
>> ffffffff00000000
>> [ 1440.710201] Â00000000000134c0 00000000000134c0 00000000000134c0
>> ffff880037a1e000
>> [ 1440.710218] Â00000000000134c0 ffff88003cca5fd8 00000000000134c0
>> 00000000000134c0
>> [ 1440.710225] Call Trace:
>> [ 1440.710233] Â[<ffffffff810c0468>] ? lock_page+0x2a/0x2a
>> [ 1440.710239] Â[<ffffffff815e452d>] io_schedule+0x5e/0x79
>> [ 1440.710244] Â[<ffffffff810c0471>] sleep_on_page+0x9/0xd
>> [ 1440.710249] Â[<ffffffff815e4adf>] __wait_on_bit_lock+0x41/0x8a
>> [ 1440.710253] Â[<ffffffff810c0437>] __lock_page+0x61/0x68
>> [ 1440.710259] Â[<ffffffff81058739>] ? autoremove_wake_function+0x34/0x34
>> [ 1440.710264] Â[<ffffffff8102f704>] ? should_resched+0x9/0x29
>> [ 1440.710269] Â[<ffffffff810c9b0b>] lock_page+0x25/0x29
>> [ 1440.710274] Â[<ffffffff810ca1ac>] truncate_inode_pages_range+0x2a6/0x32d
>> [ 1440.710279] Â[<ffffffff810ca240>] truncate_inode_pages+0xd/0xf
>> [ 1440.710284] Â[<ffffffff811642cf>] ext3_evict_inode+0xc9/0x1d7
>> [ 1440.710289] Â[<ffffffff8111288e>] evict+0xa3/0x15e
>> [ 1440.710294] Â[<ffffffff81112b34>] dispose_list+0x3d/0x49
>> [ 1440.710299] Â[<ffffffff81113475>] evict_inodes+0xf1/0x100
>> [ 1440.710303] Â[<ffffffff810ffd21>] generic_shutdown_super+0x47/0xc7
>> [ 1440.710308] Â[<ffffffff810ffdc3>] kill_block_super+0x22/0x65
>> [ 1440.710312] Â[<ffffffff811000da>] deactivate_locked_super+0x21/0x52
>> [ 1440.710316] Â[<ffffffff811009ab>] deactivate_super+0x35/0x39
>> [ 1440.710322] Â[<ffffffff81116395>] mntput_no_expire+0xcb/0xd0
>> [ 1440.710326] Â[<ffffffff811163bb>] mntput+0x21/0x23
>> [ 1440.710330] Â[<ffffffff810ff8e7>] fput+0x196/0x1a5
>> [ 1440.710335] Â[<ffffffff810fc7a1>] filp_close+0x6b/0x76
>> [ 1440.710342] Â[<ffffffff8103fa8a>] put_files_struct+0x73/0xd1
>> [ 1440.710346] Â[<ffffffff8103fb7b>] exit_files+0x46/0x4f
>> [ 1440.710350] Â[<ffffffff8103fe01>] do_exit+0x27d/0x7b3
>> [ 1440.710356] Â[<ffffffff8104d97f>] ? get_signal_to_deliver+0x81/0x4ac
>> [ 1440.710361] Â[<ffffffff812e5e27>] ? do_raw_spin_lock+0x6b/0x122
>> [ 1440.710366] Â[<ffffffff810405c5>] do_group_exit+0x7d/0xa8
>> [ 1440.710371] Â[<ffffffff8104dd8b>] get_signal_to_deliver+0x48d/0x4ac
>> [ 1440.710376] Â[<ffffffff81001ea2>] do_signal+0x39/0x600
>> [ 1440.710381] Â[<ffffffff810fdb37>] ? fsnotify_access+0x5d/0x65
>> [ 1440.710386] Â[<ffffffff810024a4>] do_notify_resume+0x27/0x69
>> [ 1440.710391] Â[<ffffffff812e158e>] ? trace_hardirqs_on_thunk+0x3a/0x3f
>> [ 1440.710396] Â[<ffffffff815ecd63>] int_signal+0x12/0x17
>> [ 1440.710399] INFO: lockdep is turned off.
>>
>> --
>> Regards
>> Yang RuiRui
>



--
Regards
Yang RuiRui
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/