Btrfs: do not async submit for nodatasum inodes
authorLiu Bo <bo.li.liu@oracle.com>
Fri, 18 Aug 2017 17:54:02 +0000 (11:54 -0600)
committerDavid Sterba <dsterba@suse.com>
Mon, 30 Oct 2017 11:27:55 +0000 (12:27 +0100)
While we submit direct writes, if the inode is flagged with nodatasum,
there's no benefit to submit asynchronously, because

a) we don't have to calculate checksum across processors,

b) and direct IO has started a plug, but async submit makes us queue
IO on each device's scheduled IO list instead of DIO's plug list, so
that IOs get much less merges in general.

Lets use sync submit for nodatasum inodes.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/inode.c

index d94e3f68b9b134f8e3027dec70f1952c42e8ce52..0460c5431a72ef86ba1e75e94c823662324c0bba 100644 (file)
@@ -8577,7 +8577,7 @@ __btrfs_submit_dio_bio(struct bio *bio, struct inode *inode, u64 file_offset,
                        goto err;
        }
 map:
-       ret = btrfs_map_bio(fs_info, bio, 0, async_submit);
+       ret = btrfs_map_bio(fs_info, bio, 0, 0);
 err:
        bio_put(bio);
        return ret;