fs: Remove unneeded IS_DAX() check in io_is_direct()
authorIra Weiny <ira.weiny@intel.com>
Thu, 30 Apr 2020 14:41:33 +0000 (07:41 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Mon, 4 May 2020 15:49:39 +0000 (08:49 -0700)
Remove the check because DAX now has it's own read/write methods and
file systems which support DAX check IS_DAX() prior to IOCB_DIRECT on
their own.  Therefore, it does not matter if the file state is DAX when
the iocb flags are created.

Also remove io_is_direct() as it is just a simple flag check.

Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
drivers/block/loop.c
include/linux/fs.h

index da693e6a834e583f47403cbd0f54c3f5908f441c..14372df0f35498bbd0f8adb59c671a92e690c609 100644 (file)
@@ -634,8 +634,8 @@ static int do_req_filebacked(struct loop_device *lo, struct request *rq)
 
 static inline void loop_update_dio(struct loop_device *lo)
 {
-       __loop_update_dio(lo, io_is_direct(lo->lo_backing_file) |
-                       lo->use_dio);
+       __loop_update_dio(lo, (lo->lo_backing_file->f_flags & O_DIRECT) |
+                               lo->use_dio);
 }
 
 static void loop_reread_partitions(struct loop_device *lo,
@@ -1028,7 +1028,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
        if (!(lo_flags & LO_FLAGS_READ_ONLY) && file->f_op->fsync)
                blk_queue_write_cache(lo->lo_queue, true, false);
 
-       if (io_is_direct(lo->lo_backing_file) && inode->i_sb->s_bdev) {
+       if ((lo->lo_backing_file->f_flags & O_DIRECT) && inode->i_sb->s_bdev) {
                /* In case of direct I/O, match underlying block size */
                unsigned short bsize = bdev_logical_block_size(
                        inode->i_sb->s_bdev);
index 4f6f59b4f22a807e55e479468df1f1cb7068cfdc..a87cc5845a02a30b574e71d908438859a06f8d6a 100644 (file)
@@ -3394,11 +3394,6 @@ extern void setattr_copy(struct inode *inode, const struct iattr *attr);
 
 extern int file_update_time(struct file *file);
 
-static inline bool io_is_direct(struct file *filp)
-{
-       return (filp->f_flags & O_DIRECT) || IS_DAX(filp->f_mapping->host);
-}
-
 static inline bool vma_is_dax(const struct vm_area_struct *vma)
 {
        return vma->vm_file && IS_DAX(vma->vm_file->f_mapping->host);
@@ -3423,7 +3418,7 @@ static inline int iocb_flags(struct file *file)
        int res = 0;
        if (file->f_flags & O_APPEND)
                res |= IOCB_APPEND;
-       if (io_is_direct(file))
+       if (file->f_flags & O_DIRECT)
                res |= IOCB_DIRECT;
        if ((file->f_flags & O_DSYNC) || IS_SYNC(file->f_mapping->host))
                res |= IOCB_DSYNC;