exit_aio() hang after I/O failure

Bart Van Assche
2012-01-22T12:48:39Z

Hi,

Apparently processes can hang in exit_aio() with at least kernel 3.2.1
after an I/O failure. Has anyone seen this before ?

This occurred after a SCSI device had been removed entirely (and hence
after all I/O requests were killed by scsi_remove_host()).

>From sysrq-t:

fio D ffff88006546ab40 0 8966 8965 0x00000004
ffff88011dab1b88 0000000000000046 ffff880100000000 ffff88012fa11d80
ffff88006546a880 ffff88011dab1fd8 ffff88011dab1fd8 ffff88011dab1fd8
ffff880128b89440 ffff88006546a880 ffff88011dab1ce8 0000000181039871
Call Trace:
[<ffffffff813b360f>] schedule+0x3f/0x60
[<ffffffff813b368f>] io_schedule+0x5f/0x80
[<ffffffff811719e0>] wait_for_all_aios+0xc0/0x100
[<ffffffff8103c210>] ? try_to_wake_up+0x270/0x270
[<ffffffff81172955>] exit_aio+0x55/0xc0
[<ffffffff8104119d>] mmput+0x2d/0x110
[<ffffffff810478cd>] exit_mm+0x10d/0x130
[<ffffffff81047f4c>] do_exit+0x65c/0x850
[<ffffffff810484a4>] do_group_exit+0x44/0xb0
[<ffffffff81057cb8>] get_signal_to_deliver+0x218/0x5a0
[<ffffffff81002065>] do_signal+0x65/0x700
[<ffffffff8106925a>] ? hrtimer_try_to_cancel+0x4a/0xb0
[<ffffffff810692e2>] ? hrtimer_cancel+0x22/0x30
[<ffffffff813b43c4>] ? do_nanosleep+0xa4/0xd0
[<ffffffff813b4326>] ? do_nanosleep+0x6/0xd0
[<ffffffff81069ea0>] ? hrtimer_nanosleep+0xa0/0x150
[<ffffffff81002775>] do_notify_resume+0x55/0x70
[<ffffffff811dcd6e>] ? trace_hardirqs_on_thunk+0x3a/0x3c
[<ffffffff813bcff3>] int_signal+0x12/0x17

Bart.