diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/disk-io.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index aff571cb6e04..84c4fa503ef5 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -2826,6 +2826,7 @@ fail_qgroup: | |||
2826 | fail_trans_kthread: | 2826 | fail_trans_kthread: |
2827 | kthread_stop(fs_info->transaction_kthread); | 2827 | kthread_stop(fs_info->transaction_kthread); |
2828 | del_fs_roots(fs_info); | 2828 | del_fs_roots(fs_info); |
2829 | btrfs_cleanup_transaction(fs_info->tree_root); | ||
2829 | fail_cleaner: | 2830 | fail_cleaner: |
2830 | kthread_stop(fs_info->cleaner_kthread); | 2831 | kthread_stop(fs_info->cleaner_kthread); |
2831 | 2832 | ||
@@ -2836,6 +2837,7 @@ fail_cleaner: | |||
2836 | filemap_write_and_wait(fs_info->btree_inode->i_mapping); | 2837 | filemap_write_and_wait(fs_info->btree_inode->i_mapping); |
2837 | 2838 | ||
2838 | fail_block_groups: | 2839 | fail_block_groups: |
2840 | btrfs_put_block_group_cache(fs_info); | ||
2839 | btrfs_free_block_groups(fs_info); | 2841 | btrfs_free_block_groups(fs_info); |
2840 | 2842 | ||
2841 | fail_tree_roots: | 2843 | fail_tree_roots: |
@@ -3681,6 +3683,9 @@ int btrfs_destroy_delayed_refs(struct btrfs_transaction *trans, | |||
3681 | continue; | 3683 | continue; |
3682 | } | 3684 | } |
3683 | 3685 | ||
3686 | if (head->must_insert_reserved) | ||
3687 | btrfs_pin_extent(root, ref->bytenr, | ||
3688 | ref->num_bytes, 1); | ||
3684 | btrfs_free_delayed_extent_op(head->extent_op); | 3689 | btrfs_free_delayed_extent_op(head->extent_op); |
3685 | delayed_refs->num_heads--; | 3690 | delayed_refs->num_heads--; |
3686 | if (list_empty(&head->cluster)) | 3691 | if (list_empty(&head->cluster)) |
@@ -3876,10 +3881,6 @@ int btrfs_cleanup_transaction(struct btrfs_root *root) | |||
3876 | 3881 | ||
3877 | btrfs_destroy_delayed_refs(t, root); | 3882 | btrfs_destroy_delayed_refs(t, root); |
3878 | 3883 | ||
3879 | btrfs_block_rsv_release(root, | ||
3880 | &root->fs_info->trans_block_rsv, | ||
3881 | t->dirty_pages.dirty_bytes); | ||
3882 | |||
3883 | /* FIXME: cleanup wait for commit */ | 3884 | /* FIXME: cleanup wait for commit */ |
3884 | t->in_commit = 1; | 3885 | t->in_commit = 1; |
3885 | t->blocked = 1; | 3886 | t->blocked = 1; |