diff options
Diffstat (limited to 'fs/btrfs/tests/btrfs-tests.c')
| -rw-r--r-- | fs/btrfs/tests/btrfs-tests.c | 44 | 
1 files changed, 7 insertions, 37 deletions
diff --git a/fs/btrfs/tests/btrfs-tests.c b/fs/btrfs/tests/btrfs-tests.c index 84fb3fa940a6..999c14e5d0bd 100644 --- a/fs/btrfs/tests/btrfs-tests.c +++ b/fs/btrfs/tests/btrfs-tests.c @@ -120,6 +120,8 @@ struct btrfs_fs_info *btrfs_alloc_dummy_fs_info(u32 nodesize, u32 sectorsize)  		kfree(fs_info);  		return NULL;  	} +	INIT_LIST_HEAD(&fs_info->fs_devices->devices); +  	fs_info->super_copy = kzalloc(sizeof(struct btrfs_super_block),  				      GFP_KERNEL);  	if (!fs_info->super_copy) { @@ -128,39 +130,10 @@ struct btrfs_fs_info *btrfs_alloc_dummy_fs_info(u32 nodesize, u32 sectorsize)  		return NULL;  	} +	btrfs_init_fs_info(fs_info); +  	fs_info->nodesize = nodesize;  	fs_info->sectorsize = sectorsize; - -	if (init_srcu_struct(&fs_info->subvol_srcu)) { -		kfree(fs_info->fs_devices); -		kfree(fs_info->super_copy); -		kfree(fs_info); -		return NULL; -	} - -	spin_lock_init(&fs_info->buffer_lock); -	spin_lock_init(&fs_info->qgroup_lock); -	spin_lock_init(&fs_info->super_lock); -	spin_lock_init(&fs_info->fs_roots_radix_lock); -	mutex_init(&fs_info->qgroup_ioctl_lock); -	mutex_init(&fs_info->qgroup_rescan_lock); -	rwlock_init(&fs_info->tree_mod_log_lock); -	fs_info->running_transaction = NULL; -	fs_info->qgroup_tree = RB_ROOT; -	fs_info->qgroup_ulist = NULL; -	atomic64_set(&fs_info->tree_mod_seq, 0); -	INIT_LIST_HEAD(&fs_info->dirty_qgroups); -	INIT_LIST_HEAD(&fs_info->dead_roots); -	INIT_LIST_HEAD(&fs_info->tree_mod_seq_list); -	INIT_LIST_HEAD(&fs_info->fs_devices->devices); -	INIT_RADIX_TREE(&fs_info->buffer_radix, GFP_ATOMIC); -	INIT_RADIX_TREE(&fs_info->fs_roots_radix, GFP_ATOMIC); -	extent_io_tree_init(fs_info, &fs_info->freed_extents[0], -			    IO_TREE_FS_INFO_FREED_EXTENTS0, NULL); -	extent_io_tree_init(fs_info, &fs_info->freed_extents[1], -			    IO_TREE_FS_INFO_FREED_EXTENTS1, NULL); -	extent_map_tree_init(&fs_info->mapping_tree); -	fs_info->pinned_extents = &fs_info->freed_extents[0];  	set_bit(BTRFS_FS_STATE_DUMMY_FS_INFO, &fs_info->fs_state);  	test_mnt->mnt_sb->s_fs_info = fs_info; @@ -210,8 +183,9 @@ void btrfs_free_dummy_fs_info(struct btrfs_fs_info *fs_info)  	}  	btrfs_free_qgroup_config(fs_info);  	btrfs_free_fs_roots(fs_info); -	cleanup_srcu_struct(&fs_info->subvol_srcu);  	kfree(fs_info->super_copy); +	btrfs_check_leaked_roots(fs_info); +	btrfs_extent_buffer_leak_debug_check(fs_info);  	kfree(fs_info->fs_devices);  	kfree(fs_info);  } @@ -223,11 +197,7 @@ void btrfs_free_dummy_root(struct btrfs_root *root)  	/* Will be freed by btrfs_free_fs_roots */  	if (WARN_ON(test_bit(BTRFS_ROOT_IN_RADIX, &root->state)))  		return; -	if (root->node) { -		/* One for allocate_extent_buffer */ -		free_extent_buffer(root->node); -	} -	kfree(root); +	btrfs_put_root(root);  }  struct btrfs_block_group *  |