Commit aa34baa2 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] blockdev direct-io speedups

From: Badari Pulavarty <pbadari@us.ibm.com>

1) blkdev_direct_IO() calls blockdev_direct_IO() instead of
   blockdev_direct_IO_no_locking().

2) writev entry point is generic_file_writev() which grabs i_sem.  It
   should use generic_file_write_nolock() instead.
parent c2179a48
...@@ -155,8 +155,8 @@ blkdev_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov, ...@@ -155,8 +155,8 @@ blkdev_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
struct file *file = iocb->ki_filp; struct file *file = iocb->ki_filp;
struct inode *inode = file->f_mapping->host; struct inode *inode = file->f_mapping->host;
return blockdev_direct_IO(rw, iocb, inode, I_BDEV(inode), iov, offset, return blockdev_direct_IO_no_locking(rw, iocb, inode, I_BDEV(inode),
nr_segs, blkdev_get_blocks, NULL); iov, offset, nr_segs, blkdev_get_blocks, NULL);
} }
static int blkdev_writepage(struct page *page, struct writeback_control *wbc) static int blkdev_writepage(struct page *page, struct writeback_control *wbc)
...@@ -796,7 +796,7 @@ struct file_operations def_blk_fops = { ...@@ -796,7 +796,7 @@ struct file_operations def_blk_fops = {
.fsync = block_fsync, .fsync = block_fsync,
.ioctl = block_ioctl, .ioctl = block_ioctl,
.readv = generic_file_readv, .readv = generic_file_readv,
.writev = generic_file_writev, .writev = generic_file_write_nolock,
.sendfile = generic_file_sendfile, .sendfile = generic_file_sendfile,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment