dax: Remove pointless writeback from dax_do_io()
authorJan Kara <jack@suse.cz>
Wed, 11 May 2016 09:58:52 +0000 (11:58 +0200)
committerVishal Verma <vishal.l.verma@intel.com>
Tue, 17 May 2016 06:44:09 +0000 (00:44 -0600)
dax_do_io() is calling filemap_write_and_wait() if DIO_LOCKING flags is
set. Presumably this was copied over from direct IO code. However DAX
inodes have no pagecache pages to write so the call is pointless. Remove
it.

Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
fs/dax.c

index 7c0036d..2375814 100644 (file)
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -268,15 +268,8 @@ ssize_t dax_do_io(struct kiocb *iocb, struct inode *inode,
        memset(&bh, 0, sizeof(bh));
        bh.b_bdev = inode->i_sb->s_bdev;
 
-       if ((flags & DIO_LOCKING) && iov_iter_rw(iter) == READ) {
-               struct address_space *mapping = inode->i_mapping;
+       if ((flags & DIO_LOCKING) && iov_iter_rw(iter) == READ)
                inode_lock(inode);
-               retval = filemap_write_and_wait_range(mapping, pos, end - 1);
-               if (retval) {
-                       inode_unlock(inode);
-                       goto out;
-               }
-       }
 
        /* Protects against truncate */
        if (!(flags & DIO_SKIP_DIO_COUNT))
@@ -297,7 +290,6 @@ ssize_t dax_do_io(struct kiocb *iocb, struct inode *inode,
 
        if (!(flags & DIO_SKIP_DIO_COUNT))
                inode_dio_end(inode);
- out:
        return retval;
 }
 EXPORT_SYMBOL_GPL(dax_do_io);