Avoid a possible busywait. 25-akpm/fs/direct-io.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -puN fs/direct-io.c~dio-aio-fixes-fixes fs/direct-io.c --- 25/fs/direct-io.c~dio-aio-fixes-fixes Tue Nov 25 17:05:59 2003 +++ 25-akpm/fs/direct-io.c Tue Nov 25 17:05:59 2003 @@ -1011,8 +1011,10 @@ direct_io_worker(int rw, struct kiocb *i * before returning to fallback on buffered I/O */ set_current_state(TASK_UNINTERRUPTIBLE); - while (atomic_read(&dio->bio_count)) + while (atomic_read(&dio->bio_count)) { io_schedule(); + set_current_state(TASK_UNINTERRUPTIBLE); + } set_current_state(TASK_RUNNING); dio->waiter = NULL; } _