diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-12-10 15:40:31 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-12-10 15:40:31 +0900 |
commit | b5c00a3a412857d6f07970984068c450429e051c (patch) | |
tree | 1fde50630cbc24e11a45169f717f281db8eb6dcc /fs/direct-io.c | |
parent | ca6f2d7fafd2d48b2f6943f5c6787beaec2014d0 (diff) | |
parent | 3067e02f8f3ae2f3f02ba76400d03b8bcb4942b0 (diff) | |
download | kernel-crypto-b5c00a3a412857d6f07970984068c450429e051c.tar.gz kernel-crypto-b5c00a3a412857d6f07970984068c450429e051c.tar.xz kernel-crypto-b5c00a3a412857d6f07970984068c450429e051c.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into sh/for-2.6.33
Diffstat (limited to 'fs/direct-io.c')
-rw-r--r-- | fs/direct-io.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/direct-io.c b/fs/direct-io.c index 8b10b87dc01..b912270942f 100644 --- a/fs/direct-io.c +++ b/fs/direct-io.c @@ -1028,9 +1028,6 @@ direct_io_worker(int rw, struct kiocb *iocb, struct inode *inode, if (dio->bio) dio_bio_submit(dio); - /* All IO is now issued, send it on its way */ - blk_run_address_space(inode->i_mapping); - /* * It is possible that, we return short IO due to end of file. * In that case, we need to release all the pages we got hold on. @@ -1057,8 +1054,11 @@ direct_io_worker(int rw, struct kiocb *iocb, struct inode *inode, ((rw & READ) || (dio->result == dio->size))) ret = -EIOCBQUEUED; - if (ret != -EIOCBQUEUED) + if (ret != -EIOCBQUEUED) { + /* All IO is now issued, send it on its way */ + blk_run_address_space(inode->i_mapping); dio_await_completion(dio); + } /* * Sync will always be dropping the final ref and completing the @@ -1124,7 +1124,7 @@ __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode, int acquire_i_mutex = 0; if (rw & WRITE) - rw = WRITE_ODIRECT; + rw = WRITE_ODIRECT_PLUG; if (bdev) bdev_blkbits = blksize_bits(bdev_logical_block_size(bdev)); |