mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 06:31:58 +02:00
btrfs: make btrfs_cleanup_fs_roots() static
btrfs_cleanup_fs_roots() is not used outside disk-io.c, so make it static, remove its prototype from disk-io.h and move its definition above the where it's used in disk-io.c Signed-off-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
7e3bfd146e
commit
504b1596bd
|
|
@ -2869,6 +2869,56 @@ static int btrfs_check_uuid_tree(struct btrfs_fs_info *fs_info)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int btrfs_cleanup_fs_roots(struct btrfs_fs_info *fs_info)
|
||||
{
|
||||
u64 root_objectid = 0;
|
||||
struct btrfs_root *gang[8];
|
||||
int i = 0;
|
||||
int err = 0;
|
||||
unsigned int ret = 0;
|
||||
|
||||
while (1) {
|
||||
spin_lock(&fs_info->fs_roots_radix_lock);
|
||||
ret = radix_tree_gang_lookup(&fs_info->fs_roots_radix,
|
||||
(void **)gang, root_objectid,
|
||||
ARRAY_SIZE(gang));
|
||||
if (!ret) {
|
||||
spin_unlock(&fs_info->fs_roots_radix_lock);
|
||||
break;
|
||||
}
|
||||
root_objectid = gang[ret - 1]->root_key.objectid + 1;
|
||||
|
||||
for (i = 0; i < ret; i++) {
|
||||
/* Avoid to grab roots in dead_roots. */
|
||||
if (btrfs_root_refs(&gang[i]->root_item) == 0) {
|
||||
gang[i] = NULL;
|
||||
continue;
|
||||
}
|
||||
/* Grab all the search result for later use. */
|
||||
gang[i] = btrfs_grab_root(gang[i]);
|
||||
}
|
||||
spin_unlock(&fs_info->fs_roots_radix_lock);
|
||||
|
||||
for (i = 0; i < ret; i++) {
|
||||
if (!gang[i])
|
||||
continue;
|
||||
root_objectid = gang[i]->root_key.objectid;
|
||||
err = btrfs_orphan_cleanup(gang[i]);
|
||||
if (err)
|
||||
goto out;
|
||||
btrfs_put_root(gang[i]);
|
||||
}
|
||||
root_objectid++;
|
||||
}
|
||||
out:
|
||||
/* Release the uncleaned roots due to error. */
|
||||
for (; i < ret; i++) {
|
||||
if (gang[i])
|
||||
btrfs_put_root(gang[i]);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
/*
|
||||
* Some options only have meaning at mount time and shouldn't persist across
|
||||
* remounts, or be displayed. Clear these at the end of mount and remount
|
||||
|
|
@ -4136,56 +4186,6 @@ void btrfs_drop_and_free_fs_root(struct btrfs_fs_info *fs_info,
|
|||
btrfs_put_root(root);
|
||||
}
|
||||
|
||||
int btrfs_cleanup_fs_roots(struct btrfs_fs_info *fs_info)
|
||||
{
|
||||
u64 root_objectid = 0;
|
||||
struct btrfs_root *gang[8];
|
||||
int i = 0;
|
||||
int err = 0;
|
||||
unsigned int ret = 0;
|
||||
|
||||
while (1) {
|
||||
spin_lock(&fs_info->fs_roots_radix_lock);
|
||||
ret = radix_tree_gang_lookup(&fs_info->fs_roots_radix,
|
||||
(void **)gang, root_objectid,
|
||||
ARRAY_SIZE(gang));
|
||||
if (!ret) {
|
||||
spin_unlock(&fs_info->fs_roots_radix_lock);
|
||||
break;
|
||||
}
|
||||
root_objectid = gang[ret - 1]->root_key.objectid + 1;
|
||||
|
||||
for (i = 0; i < ret; i++) {
|
||||
/* Avoid to grab roots in dead_roots */
|
||||
if (btrfs_root_refs(&gang[i]->root_item) == 0) {
|
||||
gang[i] = NULL;
|
||||
continue;
|
||||
}
|
||||
/* grab all the search result for later use */
|
||||
gang[i] = btrfs_grab_root(gang[i]);
|
||||
}
|
||||
spin_unlock(&fs_info->fs_roots_radix_lock);
|
||||
|
||||
for (i = 0; i < ret; i++) {
|
||||
if (!gang[i])
|
||||
continue;
|
||||
root_objectid = gang[i]->root_key.objectid;
|
||||
err = btrfs_orphan_cleanup(gang[i]);
|
||||
if (err)
|
||||
goto out;
|
||||
btrfs_put_root(gang[i]);
|
||||
}
|
||||
root_objectid++;
|
||||
}
|
||||
out:
|
||||
/* release the uncleaned roots due to error */
|
||||
for (; i < ret; i++) {
|
||||
if (gang[i])
|
||||
btrfs_put_root(gang[i]);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
int btrfs_commit_super(struct btrfs_fs_info *fs_info)
|
||||
{
|
||||
struct btrfs_root *root = fs_info->tree_root;
|
||||
|
|
|
|||
|
|
@ -77,7 +77,6 @@ struct btrfs_root *btrfs_extent_root(struct btrfs_fs_info *fs_info, u64 bytenr);
|
|||
struct btrfs_root *btrfs_block_group_root(struct btrfs_fs_info *fs_info);
|
||||
|
||||
void btrfs_free_fs_info(struct btrfs_fs_info *fs_info);
|
||||
int btrfs_cleanup_fs_roots(struct btrfs_fs_info *fs_info);
|
||||
void btrfs_btree_balance_dirty(struct btrfs_fs_info *fs_info);
|
||||
void btrfs_btree_balance_dirty_nodelay(struct btrfs_fs_info *fs_info);
|
||||
void btrfs_drop_and_free_fs_root(struct btrfs_fs_info *fs_info,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user