aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/disk-io.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r--fs/btrfs/disk-io.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index fcf367581073..0cafacb07b43 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -2136,10 +2136,16 @@ int open_ctree(struct super_block *sb,
2136 goto fail_dirty_metadata_bytes; 2136 goto fail_dirty_metadata_bytes;
2137 } 2137 }
2138 2138
2139 ret = percpu_counter_init(&fs_info->bio_counter, 0);
2140 if (ret) {
2141 err = ret;
2142 goto fail_delalloc_bytes;
2143 }
2144
2139 fs_info->btree_inode = new_inode(sb); 2145 fs_info->btree_inode = new_inode(sb);
2140 if (!fs_info->btree_inode) { 2146 if (!fs_info->btree_inode) {
2141 err = -ENOMEM; 2147 err = -ENOMEM;
2142 goto fail_delalloc_bytes; 2148 goto fail_bio_counter;
2143 } 2149 }
2144 2150
2145 mapping_set_gfp_mask(fs_info->btree_inode->i_mapping, GFP_NOFS); 2151 mapping_set_gfp_mask(fs_info->btree_inode->i_mapping, GFP_NOFS);
@@ -2214,6 +2220,7 @@ int open_ctree(struct super_block *sb,
2214 atomic_set(&fs_info->scrub_pause_req, 0); 2220 atomic_set(&fs_info->scrub_pause_req, 0);
2215 atomic_set(&fs_info->scrubs_paused, 0); 2221 atomic_set(&fs_info->scrubs_paused, 0);
2216 atomic_set(&fs_info->scrub_cancel_req, 0); 2222 atomic_set(&fs_info->scrub_cancel_req, 0);
2223 init_waitqueue_head(&fs_info->replace_wait);
2217 init_waitqueue_head(&fs_info->scrub_pause_wait); 2224 init_waitqueue_head(&fs_info->scrub_pause_wait);
2218 fs_info->scrub_workers_refcnt = 0; 2225 fs_info->scrub_workers_refcnt = 0;
2219#ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY 2226#ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY
@@ -2966,6 +2973,8 @@ fail_iput:
2966 btrfs_mapping_tree_free(&fs_info->mapping_tree); 2973 btrfs_mapping_tree_free(&fs_info->mapping_tree);
2967 2974
2968 iput(fs_info->btree_inode); 2975 iput(fs_info->btree_inode);
2976fail_bio_counter:
2977 percpu_counter_destroy(&fs_info->bio_counter);
2969fail_delalloc_bytes: 2978fail_delalloc_bytes:
2970 percpu_counter_destroy(&fs_info->delalloc_bytes); 2979 percpu_counter_destroy(&fs_info->delalloc_bytes);
2971fail_dirty_metadata_bytes: 2980fail_dirty_metadata_bytes:
@@ -3613,6 +3622,7 @@ int close_ctree(struct btrfs_root *root)
3613 3622
3614 percpu_counter_destroy(&fs_info->dirty_metadata_bytes); 3623 percpu_counter_destroy(&fs_info->dirty_metadata_bytes);
3615 percpu_counter_destroy(&fs_info->delalloc_bytes); 3624 percpu_counter_destroy(&fs_info->delalloc_bytes);
3625 percpu_counter_destroy(&fs_info->bio_counter);
3616 bdi_destroy(&fs_info->bdi); 3626 bdi_destroy(&fs_info->bdi);
3617 cleanup_srcu_struct(&fs_info->subvol_srcu); 3627 cleanup_srcu_struct(&fs_info->subvol_srcu);
3618 3628