mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-20 11:13:58 +08:00
btrfs: root->fs_info cleanup, access fs_info->delayed_root directly
This results in btrfs_assert_delayed_root_empty and btrfs_destroy_delayed_inode taking an fs_info instead of a root. Signed-off-by: Jeff Mahoney <jeffm@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
0b246afa62
commit
ccdf9b305a
@ -72,12 +72,6 @@ static inline int btrfs_is_continuous_delayed_item(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct btrfs_delayed_root *btrfs_get_delayed_root(
|
|
||||||
struct btrfs_root *root)
|
|
||||||
{
|
|
||||||
return root->fs_info->delayed_root;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct btrfs_delayed_node *btrfs_get_delayed_node(struct inode *inode)
|
static struct btrfs_delayed_node *btrfs_get_delayed_node(struct inode *inode)
|
||||||
{
|
{
|
||||||
struct btrfs_inode *btrfs_inode = BTRFS_I(inode);
|
struct btrfs_inode *btrfs_inode = BTRFS_I(inode);
|
||||||
@ -1163,7 +1157,7 @@ static int __btrfs_run_delayed_items(struct btrfs_trans_handle *trans,
|
|||||||
block_rsv = trans->block_rsv;
|
block_rsv = trans->block_rsv;
|
||||||
trans->block_rsv = &fs_info->delayed_block_rsv;
|
trans->block_rsv = &fs_info->delayed_block_rsv;
|
||||||
|
|
||||||
delayed_root = btrfs_get_delayed_root(root);
|
delayed_root = fs_info->delayed_root;
|
||||||
|
|
||||||
curr_node = btrfs_first_delayed_node(delayed_root);
|
curr_node = btrfs_first_delayed_node(delayed_root);
|
||||||
while (curr_node && (!count || (count && nr--))) {
|
while (curr_node && (!count || (count && nr--))) {
|
||||||
@ -1390,11 +1384,9 @@ static int btrfs_wq_run_delayed_node(struct btrfs_delayed_root *delayed_root,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void btrfs_assert_delayed_root_empty(struct btrfs_root *root)
|
void btrfs_assert_delayed_root_empty(struct btrfs_fs_info *fs_info)
|
||||||
{
|
{
|
||||||
struct btrfs_delayed_root *delayed_root;
|
WARN_ON(btrfs_first_delayed_node(fs_info->delayed_root));
|
||||||
delayed_root = btrfs_get_delayed_root(root);
|
|
||||||
WARN_ON(btrfs_first_delayed_node(delayed_root));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int could_end_wait(struct btrfs_delayed_root *delayed_root, int seq)
|
static int could_end_wait(struct btrfs_delayed_root *delayed_root, int seq)
|
||||||
@ -1415,7 +1407,7 @@ void btrfs_balance_delayed_items(struct btrfs_root *root)
|
|||||||
struct btrfs_delayed_root *delayed_root;
|
struct btrfs_delayed_root *delayed_root;
|
||||||
struct btrfs_fs_info *fs_info = root->fs_info;
|
struct btrfs_fs_info *fs_info = root->fs_info;
|
||||||
|
|
||||||
delayed_root = btrfs_get_delayed_root(root);
|
delayed_root = fs_info->delayed_root;
|
||||||
|
|
||||||
if (atomic_read(&delayed_root->items) < BTRFS_DELAYED_BACKGROUND)
|
if (atomic_read(&delayed_root->items) < BTRFS_DELAYED_BACKGROUND)
|
||||||
return;
|
return;
|
||||||
@ -1980,14 +1972,11 @@ void btrfs_kill_all_delayed_nodes(struct btrfs_root *root)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void btrfs_destroy_delayed_inodes(struct btrfs_root *root)
|
void btrfs_destroy_delayed_inodes(struct btrfs_fs_info *fs_info)
|
||||||
{
|
{
|
||||||
struct btrfs_delayed_root *delayed_root;
|
|
||||||
struct btrfs_delayed_node *curr_node, *prev_node;
|
struct btrfs_delayed_node *curr_node, *prev_node;
|
||||||
|
|
||||||
delayed_root = btrfs_get_delayed_root(root);
|
curr_node = btrfs_first_delayed_node(fs_info->delayed_root);
|
||||||
|
|
||||||
curr_node = btrfs_first_delayed_node(delayed_root);
|
|
||||||
while (curr_node) {
|
while (curr_node) {
|
||||||
__btrfs_kill_delayed_node(curr_node);
|
__btrfs_kill_delayed_node(curr_node);
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ int btrfs_delayed_delete_inode_ref(struct inode *inode);
|
|||||||
void btrfs_kill_all_delayed_nodes(struct btrfs_root *root);
|
void btrfs_kill_all_delayed_nodes(struct btrfs_root *root);
|
||||||
|
|
||||||
/* Used for clean the transaction */
|
/* Used for clean the transaction */
|
||||||
void btrfs_destroy_delayed_inodes(struct btrfs_root *root);
|
void btrfs_destroy_delayed_inodes(struct btrfs_fs_info *fs_info);
|
||||||
|
|
||||||
/* Used for readdir() */
|
/* Used for readdir() */
|
||||||
bool btrfs_readdir_get_delayed_items(struct inode *inode,
|
bool btrfs_readdir_get_delayed_items(struct inode *inode,
|
||||||
@ -153,6 +153,6 @@ int __init btrfs_delayed_inode_init(void);
|
|||||||
void btrfs_delayed_inode_exit(void);
|
void btrfs_delayed_inode_exit(void);
|
||||||
|
|
||||||
/* for debugging */
|
/* for debugging */
|
||||||
void btrfs_assert_delayed_root_empty(struct btrfs_root *root);
|
void btrfs_assert_delayed_root_empty(struct btrfs_fs_info *fs_info);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -4587,8 +4587,8 @@ void btrfs_cleanup_one_transaction(struct btrfs_transaction *cur_trans,
|
|||||||
cur_trans->state = TRANS_STATE_UNBLOCKED;
|
cur_trans->state = TRANS_STATE_UNBLOCKED;
|
||||||
wake_up(&fs_info->transaction_wait);
|
wake_up(&fs_info->transaction_wait);
|
||||||
|
|
||||||
btrfs_destroy_delayed_inodes(root);
|
btrfs_destroy_delayed_inodes(fs_info);
|
||||||
btrfs_assert_delayed_root_empty(root);
|
btrfs_assert_delayed_root_empty(fs_info);
|
||||||
|
|
||||||
btrfs_destroy_marked_extents(root, &cur_trans->dirty_pages,
|
btrfs_destroy_marked_extents(root, &cur_trans->dirty_pages,
|
||||||
EXTENT_DIRTY);
|
EXTENT_DIRTY);
|
||||||
@ -4649,8 +4649,8 @@ static int btrfs_cleanup_transaction(struct btrfs_root *root)
|
|||||||
}
|
}
|
||||||
spin_unlock(&fs_info->trans_lock);
|
spin_unlock(&fs_info->trans_lock);
|
||||||
btrfs_destroy_all_ordered_extents(fs_info);
|
btrfs_destroy_all_ordered_extents(fs_info);
|
||||||
btrfs_destroy_delayed_inodes(root);
|
btrfs_destroy_delayed_inodes(fs_info);
|
||||||
btrfs_assert_delayed_root_empty(root);
|
btrfs_assert_delayed_root_empty(fs_info);
|
||||||
btrfs_destroy_pinned_extent(root, fs_info->pinned_extents);
|
btrfs_destroy_pinned_extent(root, fs_info->pinned_extents);
|
||||||
btrfs_destroy_all_delalloc_inodes(fs_info);
|
btrfs_destroy_all_delalloc_inodes(fs_info);
|
||||||
mutex_unlock(&fs_info->transaction_kthread_mutex);
|
mutex_unlock(&fs_info->transaction_kthread_mutex);
|
||||||
|
@ -2133,7 +2133,7 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
|
|||||||
* make sure none of the code above managed to slip in a
|
* make sure none of the code above managed to slip in a
|
||||||
* delayed item
|
* delayed item
|
||||||
*/
|
*/
|
||||||
btrfs_assert_delayed_root_empty(root);
|
btrfs_assert_delayed_root_empty(fs_info);
|
||||||
|
|
||||||
WARN_ON(cur_trans != trans->transaction);
|
WARN_ON(cur_trans != trans->transaction);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user