Use requeue_io_wait() if inode is somehow blocked. CC: Jan Kara <jack@xxxxxxx> CC: Dave Chinner <david@xxxxxxxxxxxxx> Signed-off-by: Wu Fengguang <fengguang.wu@xxxxxxxxx> --- fs/fs-writeback.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- linux-next.orig/fs/fs-writeback.c 2011-10-20 22:42:25.000000000 +0800 +++ linux-next/fs/fs-writeback.c 2011-10-20 22:43:42.000000000 +0800 @@ -471,25 +471,25 @@ writeback_single_inode(struct inode *ino /* * slice used up: queue for next turn */ requeue_io(inode, wb); } else { /* * Writeback blocked by something other than * congestion. Delay the inode for some time to * avoid spinning on the CPU (100% iowait) * retrying writeback of the dirty page/inode * that cannot be performed immediately. */ - redirty_tail(inode, wb); + requeue_io_wait(inode, wb); } } else if (inode->i_state & I_DIRTY) { /* * Filesystems can dirty the inode during writeback * operations, such as delayed allocation during * submission or metadata updates after data IO * completion. * * For the latter case it is very important to give * the inode another turn on b_more_io instead of * redirtying it. Constantly moving dirtied_when * forward will prevent us from ever writing out -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html