aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/inode.c
diff options
context:
space:
mode:
authorJosef Bacik <jbacik@fb.com>2015-02-11 15:08:58 -0500
committerChris Mason <clm@fb.com>2015-02-14 11:19:14 -0500
commit3266789f9d08b27275bae5ab1dcd27d1bbf15e79 (patch)
treeb0543175a216240566971738f492b6ab87ac4732 /fs/btrfs/inode.c
parent3e05bde8c3c2dd761da4d52944a087907955a53c (diff)
Btrfs: don't set and clear delalloc for O_DIRECT writes
We do this to get the space accounting, but this is just needless churn on the io_tree, so just drop setting/clearing delalloc and just drop the reserved data space when we have a successfull allocation. Thanks, Signed-off-by: Josef Bacik <jbacik@fb.com> Reviewed-by: Liu Bo <bo.li.liu@oracle.com> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r--fs/btrfs/inode.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 5a5b902e647f..3b957921ba59 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -7160,7 +7160,7 @@ static int btrfs_get_blocks_direct(struct inode *inode, sector_t iblock,
7160 int ret = 0; 7160 int ret = 0;
7161 7161
7162 if (create) 7162 if (create)
7163 unlock_bits |= EXTENT_DELALLOC | EXTENT_DIRTY; 7163 unlock_bits |= EXTENT_DIRTY;
7164 else 7164 else
7165 len = min_t(u64, len, root->sectorsize); 7165 len = min_t(u64, len, root->sectorsize);
7166 7166
@@ -7296,11 +7296,7 @@ unlock:
7296 BTRFS_I(inode)->outstanding_extents++; 7296 BTRFS_I(inode)->outstanding_extents++;
7297 spin_unlock(&BTRFS_I(inode)->lock); 7297 spin_unlock(&BTRFS_I(inode)->lock);
7298 } 7298 }
7299 7299 btrfs_free_reserved_data_space(inode, len);
7300 ret = set_extent_bit(&BTRFS_I(inode)->io_tree, lockstart,
7301 lockstart + len - 1, EXTENT_DELALLOC, NULL,
7302 &cached_state, GFP_NOFS);
7303 BUG_ON(ret);
7304 } 7300 }
7305 7301
7306 /* 7302 /*