diff options
Diffstat (limited to 'fs/btrfs/delayed-inode.c')
-rw-r--r-- | fs/btrfs/delayed-inode.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c index 478f66bdc57b..34836036f01b 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c | |||
@@ -651,7 +651,8 @@ static int btrfs_delayed_inode_reserve_metadata( | |||
651 | */ | 651 | */ |
652 | if (!src_rsv || (!trans->bytes_reserved && | 652 | if (!src_rsv || (!trans->bytes_reserved && |
653 | src_rsv->type != BTRFS_BLOCK_RSV_DELALLOC)) { | 653 | src_rsv->type != BTRFS_BLOCK_RSV_DELALLOC)) { |
654 | ret = btrfs_block_rsv_add_noflush(root, dst_rsv, num_bytes); | 654 | ret = btrfs_block_rsv_add(root, dst_rsv, num_bytes, |
655 | BTRFS_RESERVE_NO_FLUSH); | ||
655 | /* | 656 | /* |
656 | * Since we're under a transaction reserve_metadata_bytes could | 657 | * Since we're under a transaction reserve_metadata_bytes could |
657 | * try to commit the transaction which will make it return | 658 | * try to commit the transaction which will make it return |
@@ -686,7 +687,8 @@ static int btrfs_delayed_inode_reserve_metadata( | |||
686 | * reserve something strictly for us. If not be a pain and try | 687 | * reserve something strictly for us. If not be a pain and try |
687 | * to steal from the delalloc block rsv. | 688 | * to steal from the delalloc block rsv. |
688 | */ | 689 | */ |
689 | ret = btrfs_block_rsv_add_noflush(root, dst_rsv, num_bytes); | 690 | ret = btrfs_block_rsv_add(root, dst_rsv, num_bytes, |
691 | BTRFS_RESERVE_NO_FLUSH); | ||
690 | if (!ret) | 692 | if (!ret) |
691 | goto out; | 693 | goto out; |
692 | 694 | ||
@@ -1255,7 +1257,6 @@ static void btrfs_async_run_delayed_node_done(struct btrfs_work *work) | |||
1255 | struct btrfs_delayed_node *delayed_node = NULL; | 1257 | struct btrfs_delayed_node *delayed_node = NULL; |
1256 | struct btrfs_root *root; | 1258 | struct btrfs_root *root; |
1257 | struct btrfs_block_rsv *block_rsv; | 1259 | struct btrfs_block_rsv *block_rsv; |
1258 | unsigned long nr = 0; | ||
1259 | int need_requeue = 0; | 1260 | int need_requeue = 0; |
1260 | int ret; | 1261 | int ret; |
1261 | 1262 | ||
@@ -1316,11 +1317,9 @@ static void btrfs_async_run_delayed_node_done(struct btrfs_work *work) | |||
1316 | delayed_node); | 1317 | delayed_node); |
1317 | mutex_unlock(&delayed_node->mutex); | 1318 | mutex_unlock(&delayed_node->mutex); |
1318 | 1319 | ||
1319 | nr = trans->blocks_used; | ||
1320 | |||
1321 | trans->block_rsv = block_rsv; | 1320 | trans->block_rsv = block_rsv; |
1322 | btrfs_end_transaction_dmeta(trans, root); | 1321 | btrfs_end_transaction_dmeta(trans, root); |
1323 | __btrfs_btree_balance_dirty(root, nr); | 1322 | btrfs_btree_balance_dirty_nodelay(root); |
1324 | free_path: | 1323 | free_path: |
1325 | btrfs_free_path(path); | 1324 | btrfs_free_path(path); |
1326 | out: | 1325 | out: |