aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorLiu Bo <bo.li.liu@oracle.com>2012-11-14 09:34:34 -0500
committerJosef Bacik <jbacik@fusionio.com>2012-12-12 17:15:28 -0500
commitb53d3f5db2b79637acadc06a330db6c2c60863f5 (patch)
treef5ad7a1612f413e1ae459eb88d20642972d6b02c /fs
parent3ef5969cd8a42a78ccdbc53f7abb2e6136b2ec65 (diff)
Btrfs: cleanup for btrfs_btree_balance_dirty
- 'nr' is no more used. - btrfs_btree_balance_dirty() and __btrfs_btree_balance_dirty() can share a bunch of code. Signed-off-by: Liu Bo <bo.li.liu@oracle.com> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/delayed-inode.c5
-rw-r--r--fs/btrfs/disk-io.c29
-rw-r--r--fs/btrfs/disk-io.h4
-rw-r--r--fs/btrfs/file.c9
-rw-r--r--fs/btrfs/inode.c42
-rw-r--r--fs/btrfs/relocation.c22
-rw-r--r--fs/btrfs/transaction.c4
7 files changed, 34 insertions, 81 deletions
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
index 0c6dca550ea1..34836036f01b 100644
--- a/fs/btrfs/delayed-inode.c
+++ b/fs/btrfs/delayed-inode.c
@@ -1257,7 +1257,6 @@ static void btrfs_async_run_delayed_node_done(struct btrfs_work *work)
1257 struct btrfs_delayed_node *delayed_node = NULL; 1257 struct btrfs_delayed_node *delayed_node = NULL;
1258 struct btrfs_root *root; 1258 struct btrfs_root *root;
1259 struct btrfs_block_rsv *block_rsv; 1259 struct btrfs_block_rsv *block_rsv;
1260 unsigned long nr = 0;
1261 int need_requeue = 0; 1260 int need_requeue = 0;
1262 int ret; 1261 int ret;
1263 1262
@@ -1318,11 +1317,9 @@ static void btrfs_async_run_delayed_node_done(struct btrfs_work *work)
1318 delayed_node); 1317 delayed_node);
1319 mutex_unlock(&delayed_node->mutex); 1318 mutex_unlock(&delayed_node->mutex);
1320 1319
1321 nr = trans->blocks_used;
1322
1323 trans->block_rsv = block_rsv; 1320 trans->block_rsv = block_rsv;
1324 btrfs_end_transaction_dmeta(trans, root); 1321 btrfs_end_transaction_dmeta(trans, root);
1325 __btrfs_btree_balance_dirty(root, nr); 1322 btrfs_btree_balance_dirty_nodelay(root);
1326free_path: 1323free_path:
1327 btrfs_free_path(path); 1324 btrfs_free_path(path);
1328out: 1325out:
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 07a2162cdd65..ff5d259ac275 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -3411,7 +3411,8 @@ void btrfs_mark_buffer_dirty(struct extent_buffer *buf)
3411 } 3411 }
3412} 3412}
3413 3413
3414void btrfs_btree_balance_dirty(struct btrfs_root *root, unsigned long nr) 3414static void __btrfs_btree_balance_dirty(struct btrfs_root *root,
3415 int flush_delayed)
3415{ 3416{
3416 /* 3417 /*
3417 * looks as though older kernels can get into trouble with 3418 * looks as though older kernels can get into trouble with
@@ -3423,7 +3424,8 @@ void btrfs_btree_balance_dirty(struct btrfs_root *root, unsigned long nr)
3423 if (current->flags & PF_MEMALLOC) 3424 if (current->flags & PF_MEMALLOC)
3424 return; 3425 return;
3425 3426
3426 btrfs_balance_delayed_items(root); 3427 if (flush_delayed)
3428 btrfs_balance_delayed_items(root);
3427 3429
3428 num_dirty = root->fs_info->dirty_metadata_bytes; 3430 num_dirty = root->fs_info->dirty_metadata_bytes;
3429 3431
@@ -3434,25 +3436,14 @@ void btrfs_btree_balance_dirty(struct btrfs_root *root, unsigned long nr)
3434 return; 3436 return;
3435} 3437}
3436 3438
3437void __btrfs_btree_balance_dirty(struct btrfs_root *root, unsigned long nr) 3439void btrfs_btree_balance_dirty(struct btrfs_root *root)
3438{ 3440{
3439 /* 3441 __btrfs_btree_balance_dirty(root, 1);
3440 * looks as though older kernels can get into trouble with 3442}
3441 * this code, they end up stuck in balance_dirty_pages forever
3442 */
3443 u64 num_dirty;
3444 unsigned long thresh = 32 * 1024 * 1024;
3445
3446 if (current->flags & PF_MEMALLOC)
3447 return;
3448
3449 num_dirty = root->fs_info->dirty_metadata_bytes;
3450 3443
3451 if (num_dirty > thresh) { 3444void btrfs_btree_balance_dirty_nodelay(struct btrfs_root *root)
3452 balance_dirty_pages_ratelimited_nr( 3445{
3453 root->fs_info->btree_inode->i_mapping, 1); 3446 __btrfs_btree_balance_dirty(root, 0);
3454 }
3455 return;
3456} 3447}
3457 3448
3458int btrfs_read_buffer(struct extent_buffer *buf, u64 parent_transid) 3449int btrfs_read_buffer(struct extent_buffer *buf, u64 parent_transid)
diff --git a/fs/btrfs/disk-io.h b/fs/btrfs/disk-io.h
index 2025a9132c16..305c33efb0e3 100644
--- a/fs/btrfs/disk-io.h
+++ b/fs/btrfs/disk-io.h
@@ -62,8 +62,8 @@ struct btrfs_root *btrfs_read_fs_root_no_radix(struct btrfs_root *tree_root,
62struct btrfs_root *btrfs_read_fs_root_no_name(struct btrfs_fs_info *fs_info, 62struct btrfs_root *btrfs_read_fs_root_no_name(struct btrfs_fs_info *fs_info,
63 struct btrfs_key *location); 63 struct btrfs_key *location);
64int btrfs_cleanup_fs_roots(struct btrfs_fs_info *fs_info); 64int btrfs_cleanup_fs_roots(struct btrfs_fs_info *fs_info);
65void btrfs_btree_balance_dirty(struct btrfs_root *root, unsigned long nr); 65void btrfs_btree_balance_dirty(struct btrfs_root *root);
66void __btrfs_btree_balance_dirty(struct btrfs_root *root, unsigned long nr); 66void btrfs_btree_balance_dirty_nodelay(struct btrfs_root *root);
67void btrfs_free_fs_root(struct btrfs_fs_info *fs_info, struct btrfs_root *root); 67void btrfs_free_fs_root(struct btrfs_fs_info *fs_info, struct btrfs_root *root);
68void btrfs_mark_buffer_dirty(struct extent_buffer *buf); 68void btrfs_mark_buffer_dirty(struct extent_buffer *buf);
69int btrfs_buffer_uptodate(struct extent_buffer *buf, u64 parent_transid, 69int btrfs_buffer_uptodate(struct extent_buffer *buf, u64 parent_transid,
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 883cf826cf25..bd7f1b01e051 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1349,7 +1349,7 @@ static noinline ssize_t __btrfs_buffered_write(struct file *file,
1349 balance_dirty_pages_ratelimited_nr(inode->i_mapping, 1349 balance_dirty_pages_ratelimited_nr(inode->i_mapping,
1350 dirty_pages); 1350 dirty_pages);
1351 if (dirty_pages < (root->leafsize >> PAGE_CACHE_SHIFT) + 1) 1351 if (dirty_pages < (root->leafsize >> PAGE_CACHE_SHIFT) + 1)
1352 btrfs_btree_balance_dirty(root, 1); 1352 btrfs_btree_balance_dirty(root);
1353 1353
1354 pos += copied; 1354 pos += copied;
1355 num_written += copied; 1355 num_written += copied;
@@ -1803,7 +1803,6 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
1803 u64 cur_offset = lockstart; 1803 u64 cur_offset = lockstart;
1804 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1); 1804 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1);
1805 u64 drop_end; 1805 u64 drop_end;
1806 unsigned long nr;
1807 int ret = 0; 1806 int ret = 0;
1808 int err = 0; 1807 int err = 0;
1809 bool same_page = (offset >> PAGE_CACHE_SHIFT) == 1808 bool same_page = (offset >> PAGE_CACHE_SHIFT) ==
@@ -1931,9 +1930,8 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
1931 break; 1930 break;
1932 } 1931 }
1933 1932
1934 nr = trans->blocks_used;
1935 btrfs_end_transaction(trans, root); 1933 btrfs_end_transaction(trans, root);
1936 btrfs_btree_balance_dirty(root, nr); 1934 btrfs_btree_balance_dirty(root);
1937 1935
1938 trans = btrfs_start_transaction(root, 3); 1936 trans = btrfs_start_transaction(root, 3);
1939 if (IS_ERR(trans)) { 1937 if (IS_ERR(trans)) {
@@ -1969,9 +1967,8 @@ out_trans:
1969 1967
1970 trans->block_rsv = &root->fs_info->trans_block_rsv; 1968 trans->block_rsv = &root->fs_info->trans_block_rsv;
1971 ret = btrfs_update_inode(trans, root, inode); 1969 ret = btrfs_update_inode(trans, root, inode);
1972 nr = trans->blocks_used;
1973 btrfs_end_transaction(trans, root); 1970 btrfs_end_transaction(trans, root);
1974 btrfs_btree_balance_dirty(root, nr); 1971 btrfs_btree_balance_dirty(root);
1975out_free: 1972out_free:
1976 btrfs_free_path(path); 1973 btrfs_free_path(path);
1977 btrfs_free_block_rsv(root, rsv); 1974 btrfs_free_block_rsv(root, rsv);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index e8733fab2739..aabf747d056e 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -3091,7 +3091,6 @@ static int btrfs_unlink(struct inode *dir, struct dentry *dentry)
3091 struct btrfs_trans_handle *trans; 3091 struct btrfs_trans_handle *trans;
3092 struct inode *inode = dentry->d_inode; 3092 struct inode *inode = dentry->d_inode;
3093 int ret; 3093 int ret;
3094 unsigned long nr = 0;
3095 3094
3096 trans = __unlink_start_trans(dir, dentry); 3095 trans = __unlink_start_trans(dir, dentry);
3097 if (IS_ERR(trans)) 3096 if (IS_ERR(trans))
@@ -3111,9 +3110,8 @@ static int btrfs_unlink(struct inode *dir, struct dentry *dentry)
3111 } 3110 }
3112 3111
3113out: 3112out:
3114 nr = trans->blocks_used;
3115 __unlink_end_trans(trans, root); 3113 __unlink_end_trans(trans, root);
3116 btrfs_btree_balance_dirty(root, nr); 3114 btrfs_btree_balance_dirty(root);
3117 return ret; 3115 return ret;
3118} 3116}
3119 3117
@@ -3203,7 +3201,6 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry)
3203 int err = 0; 3201 int err = 0;
3204 struct btrfs_root *root = BTRFS_I(dir)->root; 3202 struct btrfs_root *root = BTRFS_I(dir)->root;
3205 struct btrfs_trans_handle *trans; 3203 struct btrfs_trans_handle *trans;
3206 unsigned long nr = 0;
3207 3204
3208 if (inode->i_size > BTRFS_EMPTY_DIR_SIZE) 3205 if (inode->i_size > BTRFS_EMPTY_DIR_SIZE)
3209 return -ENOTEMPTY; 3206 return -ENOTEMPTY;
@@ -3232,9 +3229,8 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry)
3232 if (!err) 3229 if (!err)
3233 btrfs_i_size_write(inode, 0); 3230 btrfs_i_size_write(inode, 0);
3234out: 3231out:
3235 nr = trans->blocks_used;
3236 __unlink_end_trans(trans, root); 3232 __unlink_end_trans(trans, root);
3237 btrfs_btree_balance_dirty(root, nr); 3233 btrfs_btree_balance_dirty(root);
3238 3234
3239 return err; 3235 return err;
3240} 3236}
@@ -3800,7 +3796,6 @@ void btrfs_evict_inode(struct inode *inode)
3800 struct btrfs_root *root = BTRFS_I(inode)->root; 3796 struct btrfs_root *root = BTRFS_I(inode)->root;
3801 struct btrfs_block_rsv *rsv, *global_rsv; 3797 struct btrfs_block_rsv *rsv, *global_rsv;
3802 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1); 3798 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1);
3803 unsigned long nr;
3804 int ret; 3799 int ret;
3805 3800
3806 trace_btrfs_inode_evict(inode); 3801 trace_btrfs_inode_evict(inode);
@@ -3882,10 +3877,9 @@ void btrfs_evict_inode(struct inode *inode)
3882 ret = btrfs_update_inode(trans, root, inode); 3877 ret = btrfs_update_inode(trans, root, inode);
3883 BUG_ON(ret); 3878 BUG_ON(ret);
3884 3879
3885 nr = trans->blocks_used;
3886 btrfs_end_transaction(trans, root); 3880 btrfs_end_transaction(trans, root);
3887 trans = NULL; 3881 trans = NULL;
3888 btrfs_btree_balance_dirty(root, nr); 3882 btrfs_btree_balance_dirty(root);
3889 } 3883 }
3890 3884
3891 btrfs_free_block_rsv(root, rsv); 3885 btrfs_free_block_rsv(root, rsv);
@@ -3901,9 +3895,8 @@ void btrfs_evict_inode(struct inode *inode)
3901 root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)) 3895 root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID))
3902 btrfs_return_ino(root, btrfs_ino(inode)); 3896 btrfs_return_ino(root, btrfs_ino(inode));
3903 3897
3904 nr = trans->blocks_used;
3905 btrfs_end_transaction(trans, root); 3898 btrfs_end_transaction(trans, root);
3906 btrfs_btree_balance_dirty(root, nr); 3899 btrfs_btree_balance_dirty(root);
3907no_delete: 3900no_delete:
3908 clear_inode(inode); 3901 clear_inode(inode);
3909 return; 3902 return;
@@ -4915,7 +4908,6 @@ static int btrfs_mknod(struct inode *dir, struct dentry *dentry,
4915 int err; 4908 int err;
4916 int drop_inode = 0; 4909 int drop_inode = 0;
4917 u64 objectid; 4910 u64 objectid;
4918 unsigned long nr = 0;
4919 u64 index = 0; 4911 u64 index = 0;
4920 4912
4921 if (!new_valid_dev(rdev)) 4913 if (!new_valid_dev(rdev))
@@ -4965,9 +4957,8 @@ static int btrfs_mknod(struct inode *dir, struct dentry *dentry,
4965 d_instantiate(dentry, inode); 4957 d_instantiate(dentry, inode);
4966 } 4958 }
4967out_unlock: 4959out_unlock:
4968 nr = trans->blocks_used;
4969 btrfs_end_transaction(trans, root); 4960 btrfs_end_transaction(trans, root);
4970 btrfs_btree_balance_dirty(root, nr); 4961 btrfs_btree_balance_dirty(root);
4971 if (drop_inode) { 4962 if (drop_inode) {
4972 inode_dec_link_count(inode); 4963 inode_dec_link_count(inode);
4973 iput(inode); 4964 iput(inode);
@@ -4983,7 +4974,6 @@ static int btrfs_create(struct inode *dir, struct dentry *dentry,
4983 struct inode *inode = NULL; 4974 struct inode *inode = NULL;
4984 int drop_inode = 0; 4975 int drop_inode = 0;
4985 int err; 4976 int err;
4986 unsigned long nr = 0;
4987 u64 objectid; 4977 u64 objectid;
4988 u64 index = 0; 4978 u64 index = 0;
4989 4979
@@ -5033,13 +5023,12 @@ static int btrfs_create(struct inode *dir, struct dentry *dentry,
5033 d_instantiate(dentry, inode); 5023 d_instantiate(dentry, inode);
5034 } 5024 }
5035out_unlock: 5025out_unlock:
5036 nr = trans->blocks_used;
5037 btrfs_end_transaction(trans, root); 5026 btrfs_end_transaction(trans, root);
5038 if (drop_inode) { 5027 if (drop_inode) {
5039 inode_dec_link_count(inode); 5028 inode_dec_link_count(inode);
5040 iput(inode); 5029 iput(inode);
5041 } 5030 }
5042 btrfs_btree_balance_dirty(root, nr); 5031 btrfs_btree_balance_dirty(root);
5043 return err; 5032 return err;
5044} 5033}
5045 5034
@@ -5050,7 +5039,6 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir,
5050 struct btrfs_root *root = BTRFS_I(dir)->root; 5039 struct btrfs_root *root = BTRFS_I(dir)->root;
5051 struct inode *inode = old_dentry->d_inode; 5040 struct inode *inode = old_dentry->d_inode;
5052 u64 index; 5041 u64 index;
5053 unsigned long nr = 0;
5054 int err; 5042 int err;
5055 int drop_inode = 0; 5043 int drop_inode = 0;
5056 5044
@@ -5094,14 +5082,13 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir,
5094 btrfs_log_new_name(trans, inode, NULL, parent); 5082 btrfs_log_new_name(trans, inode, NULL, parent);
5095 } 5083 }
5096 5084
5097 nr = trans->blocks_used;
5098 btrfs_end_transaction(trans, root); 5085 btrfs_end_transaction(trans, root);
5099fail: 5086fail:
5100 if (drop_inode) { 5087 if (drop_inode) {
5101 inode_dec_link_count(inode); 5088 inode_dec_link_count(inode);
5102 iput(inode); 5089 iput(inode);
5103 } 5090 }
5104 btrfs_btree_balance_dirty(root, nr); 5091 btrfs_btree_balance_dirty(root);
5105 return err; 5092 return err;
5106} 5093}
5107 5094
@@ -5114,7 +5101,6 @@ static int btrfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
5114 int drop_on_err = 0; 5101 int drop_on_err = 0;
5115 u64 objectid = 0; 5102 u64 objectid = 0;
5116 u64 index = 0; 5103 u64 index = 0;
5117 unsigned long nr = 1;
5118 5104
5119 /* 5105 /*
5120 * 2 items for inode and ref 5106 * 2 items for inode and ref
@@ -5160,11 +5146,10 @@ static int btrfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
5160 drop_on_err = 0; 5146 drop_on_err = 0;
5161 5147
5162out_fail: 5148out_fail:
5163 nr = trans->blocks_used;
5164 btrfs_end_transaction(trans, root); 5149 btrfs_end_transaction(trans, root);
5165 if (drop_on_err) 5150 if (drop_on_err)
5166 iput(inode); 5151 iput(inode);
5167 btrfs_btree_balance_dirty(root, nr); 5152 btrfs_btree_balance_dirty(root);
5168 return err; 5153 return err;
5169} 5154}
5170 5155
@@ -6872,7 +6857,6 @@ static int btrfs_truncate(struct inode *inode)
6872 int ret; 6857 int ret;
6873 int err = 0; 6858 int err = 0;
6874 struct btrfs_trans_handle *trans; 6859 struct btrfs_trans_handle *trans;
6875 unsigned long nr;
6876 u64 mask = root->sectorsize - 1; 6860 u64 mask = root->sectorsize - 1;
6877 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1); 6861 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1);
6878 6862
@@ -6995,9 +6979,8 @@ static int btrfs_truncate(struct inode *inode)
6995 break; 6979 break;
6996 } 6980 }
6997 6981
6998 nr = trans->blocks_used;
6999 btrfs_end_transaction(trans, root); 6982 btrfs_end_transaction(trans, root);
7000 btrfs_btree_balance_dirty(root, nr); 6983 btrfs_btree_balance_dirty(root);
7001 6984
7002 trans = btrfs_start_transaction(root, 2); 6985 trans = btrfs_start_transaction(root, 2);
7003 if (IS_ERR(trans)) { 6986 if (IS_ERR(trans)) {
@@ -7031,9 +7014,8 @@ static int btrfs_truncate(struct inode *inode)
7031 if (ret && !err) 7014 if (ret && !err)
7032 err = ret; 7015 err = ret;
7033 7016
7034 nr = trans->blocks_used;
7035 ret = btrfs_end_transaction(trans, root); 7017 ret = btrfs_end_transaction(trans, root);
7036 btrfs_btree_balance_dirty(root, nr); 7018 btrfs_btree_balance_dirty(root);
7037 } 7019 }
7038 7020
7039out: 7021out:
@@ -7594,7 +7576,6 @@ static int btrfs_symlink(struct inode *dir, struct dentry *dentry,
7594 unsigned long ptr; 7576 unsigned long ptr;
7595 struct btrfs_file_extent_item *ei; 7577 struct btrfs_file_extent_item *ei;
7596 struct extent_buffer *leaf; 7578 struct extent_buffer *leaf;
7597 unsigned long nr = 0;
7598 7579
7599 name_len = strlen(symname) + 1; 7580 name_len = strlen(symname) + 1;
7600 if (name_len > BTRFS_MAX_INLINE_DATA_SIZE(root)) 7581 if (name_len > BTRFS_MAX_INLINE_DATA_SIZE(root))
@@ -7692,13 +7673,12 @@ static int btrfs_symlink(struct inode *dir, struct dentry *dentry,
7692out_unlock: 7673out_unlock:
7693 if (!err) 7674 if (!err)
7694 d_instantiate(dentry, inode); 7675 d_instantiate(dentry, inode);
7695 nr = trans->blocks_used;
7696 btrfs_end_transaction(trans, root); 7676 btrfs_end_transaction(trans, root);
7697 if (drop_inode) { 7677 if (drop_inode) {
7698 inode_dec_link_count(inode); 7678 inode_dec_link_count(inode);
7699 iput(inode); 7679 iput(inode);
7700 } 7680 }
7701 btrfs_btree_balance_dirty(root, nr); 7681 btrfs_btree_balance_dirty(root);
7702 return err; 7682 return err;
7703} 7683}
7704 7684
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 270f24ffe1be..300e09ac3659 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -2025,7 +2025,6 @@ static noinline_for_stack int merge_reloc_root(struct reloc_control *rc,
2025 struct btrfs_root_item *root_item; 2025 struct btrfs_root_item *root_item;
2026 struct btrfs_path *path; 2026 struct btrfs_path *path;
2027 struct extent_buffer *leaf; 2027 struct extent_buffer *leaf;
2028 unsigned long nr;
2029 int level; 2028 int level;
2030 int max_level; 2029 int max_level;
2031 int replaced = 0; 2030 int replaced = 0;
@@ -2126,10 +2125,9 @@ static noinline_for_stack int merge_reloc_root(struct reloc_control *rc,
2126 path->slots[level]); 2125 path->slots[level]);
2127 root_item->drop_level = level; 2126 root_item->drop_level = level;
2128 2127
2129 nr = trans->blocks_used;
2130 btrfs_end_transaction_throttle(trans, root); 2128 btrfs_end_transaction_throttle(trans, root);
2131 2129
2132 btrfs_btree_balance_dirty(root, nr); 2130 btrfs_btree_balance_dirty(root);
2133 2131
2134 if (replaced && rc->stage == UPDATE_DATA_PTRS) 2132 if (replaced && rc->stage == UPDATE_DATA_PTRS)
2135 invalidate_extent_cache(root, &key, &next_key); 2133 invalidate_extent_cache(root, &key, &next_key);
@@ -2156,10 +2154,9 @@ out:
2156 btrfs_update_reloc_root(trans, root); 2154 btrfs_update_reloc_root(trans, root);
2157 } 2155 }
2158 2156
2159 nr = trans->blocks_used;
2160 btrfs_end_transaction_throttle(trans, root); 2157 btrfs_end_transaction_throttle(trans, root);
2161 2158
2162 btrfs_btree_balance_dirty(root, nr); 2159 btrfs_btree_balance_dirty(root);
2163 2160
2164 if (replaced && rc->stage == UPDATE_DATA_PTRS) 2161 if (replaced && rc->stage == UPDATE_DATA_PTRS)
2165 invalidate_extent_cache(root, &key, &next_key); 2162 invalidate_extent_cache(root, &key, &next_key);
@@ -3262,7 +3259,6 @@ static int delete_block_group_cache(struct btrfs_fs_info *fs_info,
3262 struct btrfs_path *path; 3259 struct btrfs_path *path;
3263 struct btrfs_root *root = fs_info->tree_root; 3260 struct btrfs_root *root = fs_info->tree_root;
3264 struct btrfs_trans_handle *trans; 3261 struct btrfs_trans_handle *trans;
3265 unsigned long nr;
3266 int ret = 0; 3262 int ret = 0;
3267 3263
3268 if (inode) 3264 if (inode)
@@ -3296,9 +3292,8 @@ truncate:
3296 ret = btrfs_truncate_free_space_cache(root, trans, path, inode); 3292 ret = btrfs_truncate_free_space_cache(root, trans, path, inode);
3297 3293
3298 btrfs_free_path(path); 3294 btrfs_free_path(path);
3299 nr = trans->blocks_used;
3300 btrfs_end_transaction(trans, root); 3295 btrfs_end_transaction(trans, root);
3301 btrfs_btree_balance_dirty(root, nr); 3296 btrfs_btree_balance_dirty(root);
3302out: 3297out:
3303 iput(inode); 3298 iput(inode);
3304 return ret; 3299 return ret;
@@ -3715,7 +3710,6 @@ static noinline_for_stack int relocate_block_group(struct reloc_control *rc)
3715 struct btrfs_trans_handle *trans = NULL; 3710 struct btrfs_trans_handle *trans = NULL;
3716 struct btrfs_path *path; 3711 struct btrfs_path *path;
3717 struct btrfs_extent_item *ei; 3712 struct btrfs_extent_item *ei;
3718 unsigned long nr;
3719 u64 flags; 3713 u64 flags;
3720 u32 item_size; 3714 u32 item_size;
3721 int ret; 3715 int ret;
@@ -3832,9 +3826,8 @@ restart:
3832 ret = btrfs_commit_transaction(trans, rc->extent_root); 3826 ret = btrfs_commit_transaction(trans, rc->extent_root);
3833 BUG_ON(ret); 3827 BUG_ON(ret);
3834 } else { 3828 } else {
3835 nr = trans->blocks_used;
3836 btrfs_end_transaction_throttle(trans, rc->extent_root); 3829 btrfs_end_transaction_throttle(trans, rc->extent_root);
3837 btrfs_btree_balance_dirty(rc->extent_root, nr); 3830 btrfs_btree_balance_dirty(rc->extent_root);
3838 } 3831 }
3839 trans = NULL; 3832 trans = NULL;
3840 3833
@@ -3864,9 +3857,8 @@ restart:
3864 GFP_NOFS); 3857 GFP_NOFS);
3865 3858
3866 if (trans) { 3859 if (trans) {
3867 nr = trans->blocks_used;
3868 btrfs_end_transaction_throttle(trans, rc->extent_root); 3860 btrfs_end_transaction_throttle(trans, rc->extent_root);
3869 btrfs_btree_balance_dirty(rc->extent_root, nr); 3861 btrfs_btree_balance_dirty(rc->extent_root);
3870 } 3862 }
3871 3863
3872 if (!err) { 3864 if (!err) {
@@ -3945,7 +3937,6 @@ struct inode *create_reloc_inode(struct btrfs_fs_info *fs_info,
3945 struct btrfs_trans_handle *trans; 3937 struct btrfs_trans_handle *trans;
3946 struct btrfs_root *root; 3938 struct btrfs_root *root;
3947 struct btrfs_key key; 3939 struct btrfs_key key;
3948 unsigned long nr;
3949 u64 objectid = BTRFS_FIRST_FREE_OBJECTID; 3940 u64 objectid = BTRFS_FIRST_FREE_OBJECTID;
3950 int err = 0; 3941 int err = 0;
3951 3942
@@ -3973,9 +3964,8 @@ struct inode *create_reloc_inode(struct btrfs_fs_info *fs_info,
3973 3964
3974 err = btrfs_orphan_add(trans, inode); 3965 err = btrfs_orphan_add(trans, inode);
3975out: 3966out:
3976 nr = trans->blocks_used;
3977 btrfs_end_transaction(trans, root); 3967 btrfs_end_transaction(trans, root);
3978 btrfs_btree_balance_dirty(root, nr); 3968 btrfs_btree_balance_dirty(root);
3979 if (err) { 3969 if (err) {
3980 if (inode) 3970 if (inode)
3981 iput(inode); 3971 iput(inode);
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index f21f39f0b1a1..7b297354e738 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -952,7 +952,6 @@ int btrfs_defrag_root(struct btrfs_root *root, int cacheonly)
952 struct btrfs_fs_info *info = root->fs_info; 952 struct btrfs_fs_info *info = root->fs_info;
953 struct btrfs_trans_handle *trans; 953 struct btrfs_trans_handle *trans;
954 int ret; 954 int ret;
955 unsigned long nr;
956 955
957 if (xchg(&root->defrag_running, 1)) 956 if (xchg(&root->defrag_running, 1))
958 return 0; 957 return 0;
@@ -964,9 +963,8 @@ int btrfs_defrag_root(struct btrfs_root *root, int cacheonly)
964 963
965 ret = btrfs_defrag_leaves(trans, root, cacheonly); 964 ret = btrfs_defrag_leaves(trans, root, cacheonly);
966 965
967 nr = trans->blocks_used;
968 btrfs_end_transaction(trans, root); 966 btrfs_end_transaction(trans, root);
969 btrfs_btree_balance_dirty(info->tree_root, nr); 967 btrfs_btree_balance_dirty(info->tree_root);
970 cond_resched(); 968 cond_resched();
971 969
972 if (btrfs_fs_closing(root->fs_info) || ret != -EAGAIN) 970 if (btrfs_fs_closing(root->fs_info) || ret != -EAGAIN)