diff options
author | Chris Mason <clm@fb.com> | 2015-04-06 21:46:08 +0200 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2015-04-10 23:07:22 +0200 |
commit | 1bbc621ef28462456131c035eaeb5567a1a2a2fe (patch) | |
tree | d2c9e87e9cef8884a440bc9b6a5bf6574eff9fc7 /fs/btrfs/free-space-cache.h | |
parent | Btrfs: don't use highmem for free space cache pages (diff) | |
download | linux-1bbc621ef28462456131c035eaeb5567a1a2a2fe.tar.xz linux-1bbc621ef28462456131c035eaeb5567a1a2a2fe.zip |
Btrfs: allow block group cache writeout outside critical section in commit
We loop through all of the dirty block groups during commit and write
the free space cache. In order to make sure the cache is currect, we do
this while no other writers are allowed in the commit.
If a large number of block groups are dirty, this can introduce long
stalls during the final stages of the commit, which can block new procs
trying to change the filesystem.
This commit changes the block group cache writeout to take appropriate
locks and allow it to run earlier in the commit. We'll still have to
redo some of the block groups, but it means we can get most of the work
out of the way without blocking the entire FS.
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs/free-space-cache.h')
-rw-r--r-- | fs/btrfs/free-space-cache.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/free-space-cache.h b/fs/btrfs/free-space-cache.h index c4339863af05..a16a029ad3b1 100644 --- a/fs/btrfs/free-space-cache.h +++ b/fs/btrfs/free-space-cache.h @@ -62,6 +62,7 @@ int btrfs_check_trunc_cache_free_space(struct btrfs_root *root, struct btrfs_block_rsv *rsv); int btrfs_truncate_free_space_cache(struct btrfs_root *root, struct btrfs_trans_handle *trans, + struct btrfs_block_group_cache *block_group, struct inode *inode); int load_free_space_cache(struct btrfs_fs_info *fs_info, struct btrfs_block_group_cache *block_group); |