lkml.org 
[lkml]   [2011]   [Sep]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [BUG] D state process after unplug and umount usb disk
    From
    On Mon, Sep 5, 2011 at 9:31 PM, Wu Fengguang <fengguang.wu@intel.com> 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@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2011-09-06 04:11    [W:3.291 / U:0.288 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site