diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 33c05188cbf0cec78d79b1ec865b75347cef3bd9..73fadc7ead0e4bf1805a8cfdd6a88a31f2499373 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -7533,7 +7533,8 @@ static ssize_t btrfs_direct_IO(int rw, struct kiocb *iocb,
 	count = iov_iter_count(iter);
 	if (test_bit(BTRFS_INODE_HAS_ASYNC_EXTENT,
 		     &BTRFS_I(inode)->runtime_flags))
-		filemap_fdatawrite_range(inode->i_mapping, offset, count);
+		filemap_fdatawrite_range(inode->i_mapping, offset,
+					 offset + count - 1);
 
 	if (rw & WRITE) {
 		/*