mmc: core: add timeout for context_info->is_done_rcv
After dequeue a rq from blk and a accidental rq missing makes
bq->queue fails to fetch blk_rq again since !rq w/o been done.
Whatsoever was that, MUST ensure a schedule mechanisam to break
the dead loop, and issue the missing one again. We observe this
problem, all processes calling aio page writeback or commiting
journal were confined in io_schedule waiting for previous blk rq
to be completed, and cause os stucked.
page:
c1337420 count:3 mapcount:0 mapping:
dc8fdc34 index:0x502
page flags: 0x4000286c(referenced|uptodate|lru|active|private|writeback)
sleep_on_page: inode:
dc8fdb58, 119091
CPU: 3 PID: 199 Comm: abc Not tainted 3.10.0 #298
[<
c0013e44>] (unwind_backtrace+0x0/0xe0) from [<
c001175c>] (show_stack+0x10/0x14)
[<
c001175c>] (show_stack+0x10/0x14) from [<
c00cadb8>] (sleep_on_page+0x6c/0x8c)
[<
c00cadb8>] (sleep_on_page+0x6c/0x8c) from [<
c0769a80>] (__wait_on_bit+0x54/0xa0)
[<
c0769a80>] (__wait_on_bit+0x54/0xa0) from [<
c00ca88c>] (wait_on_page_bit+0x8c/0x9c)
[<
c00ca88c>] (wait_on_page_bit+0x8c/0x9c) from [<
c00ca954>] (filemap_fdatawait_range+0x6c/0x110)
[<
c00ca954>] (filemap_fdatawait_range+0x6c/0x110) from [<
c00cbd8c>] (filemap_write_and_wait_range+0x54/0x78)
[<
c00cbd8c>] (filemap_write_and_wait_range+0x54/0x78) from [<
c0182e14>] (ext4_sync_file+0xdc/0x308)
[<
c0182e14>] (ext4_sync_file+0xdc/0x308) from [<
c01305f8>] (vfs_fsync_range+0x34/0x44)
[<
c01305f8>] (vfs_fsync_range+0x34/0x44) from [<
c01306b0>] (generic_write_sync+0x80/0x88)
[<
c01306b0>] (generic_write_sync+0x80/0x88) from [<
c00cc3fc>] (generic_file_aio_write+0xa0/0xb0)
[<
c00cc3fc>] (generic_file_aio_write+0xa0/0xb0) from [<
c0109198>] (do_sync_write+0x74/0x98)
[<
c0109198>] (do_sync_write+0x74/0x98) from [<
c0109ab8>] (vfs_write+0xd4/0x16c)
[<
c0109ab8>] (vfs_write+0xd4/0x16c) from [<
c0109df8>] (SyS_write+0x3c/0x60)
[<
c0109df8>] (SyS_write+0x3c/0x60) from [<
c000da00>] (ret_fast_syscall+0x0/0x30)
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Tested-by: Meiyou Chen <cmy@rock-chips.com>