mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-04 04:04:19 +00:00
btrfs: pass fs_info to btrfs_delete_ref_head()
One of the following patches in the series will need to access fs_info at btrfs_delete_ref_head(), so pass a fs_info argument to it. Reviewed-by: Boris Burkov <boris@bur.io> Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
765f828902
commit
5f54384c73
@ -624,7 +624,8 @@ void btrfs_unselect_ref_head(struct btrfs_delayed_ref_root *delayed_refs,
|
||||
btrfs_delayed_ref_unlock(head);
|
||||
}
|
||||
|
||||
void btrfs_delete_ref_head(struct btrfs_delayed_ref_root *delayed_refs,
|
||||
void btrfs_delete_ref_head(const struct btrfs_fs_info *fs_info,
|
||||
struct btrfs_delayed_ref_root *delayed_refs,
|
||||
struct btrfs_delayed_ref_head *head)
|
||||
{
|
||||
lockdep_assert_held(&delayed_refs->lock);
|
||||
@ -1294,7 +1295,7 @@ void btrfs_destroy_delayed_refs(struct btrfs_transaction *trans)
|
||||
if (head->must_insert_reserved)
|
||||
pin_bytes = true;
|
||||
btrfs_free_delayed_extent_op(head->extent_op);
|
||||
btrfs_delete_ref_head(delayed_refs, head);
|
||||
btrfs_delete_ref_head(fs_info, delayed_refs, head);
|
||||
spin_unlock(&head->lock);
|
||||
spin_unlock(&delayed_refs->lock);
|
||||
mutex_unlock(&head->mutex);
|
||||
|
@ -374,7 +374,8 @@ static inline void btrfs_delayed_ref_unlock(struct btrfs_delayed_ref_head *head)
|
||||
{
|
||||
mutex_unlock(&head->mutex);
|
||||
}
|
||||
void btrfs_delete_ref_head(struct btrfs_delayed_ref_root *delayed_refs,
|
||||
void btrfs_delete_ref_head(const struct btrfs_fs_info *fs_info,
|
||||
struct btrfs_delayed_ref_root *delayed_refs,
|
||||
struct btrfs_delayed_ref_head *head);
|
||||
|
||||
struct btrfs_delayed_ref_head *btrfs_select_ref_head(
|
||||
|
@ -1920,7 +1920,7 @@ static int cleanup_ref_head(struct btrfs_trans_handle *trans,
|
||||
spin_unlock(&delayed_refs->lock);
|
||||
return 1;
|
||||
}
|
||||
btrfs_delete_ref_head(delayed_refs, head);
|
||||
btrfs_delete_ref_head(fs_info, delayed_refs, head);
|
||||
spin_unlock(&head->lock);
|
||||
spin_unlock(&delayed_refs->lock);
|
||||
|
||||
@ -3353,13 +3353,14 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
|
||||
static noinline int check_ref_cleanup(struct btrfs_trans_handle *trans,
|
||||
u64 bytenr)
|
||||
{
|
||||
struct btrfs_fs_info *fs_info = trans->fs_info;
|
||||
struct btrfs_delayed_ref_head *head;
|
||||
struct btrfs_delayed_ref_root *delayed_refs;
|
||||
int ret = 0;
|
||||
|
||||
delayed_refs = &trans->transaction->delayed_refs;
|
||||
spin_lock(&delayed_refs->lock);
|
||||
head = btrfs_find_delayed_ref_head(trans->fs_info, delayed_refs, bytenr);
|
||||
head = btrfs_find_delayed_ref_head(fs_info, delayed_refs, bytenr);
|
||||
if (!head)
|
||||
goto out_delayed_unlock;
|
||||
|
||||
@ -3377,7 +3378,7 @@ static noinline int check_ref_cleanup(struct btrfs_trans_handle *trans,
|
||||
if (!mutex_trylock(&head->mutex))
|
||||
goto out;
|
||||
|
||||
btrfs_delete_ref_head(delayed_refs, head);
|
||||
btrfs_delete_ref_head(fs_info, delayed_refs, head);
|
||||
head->processing = false;
|
||||
|
||||
spin_unlock(&head->lock);
|
||||
@ -3387,7 +3388,7 @@ static noinline int check_ref_cleanup(struct btrfs_trans_handle *trans,
|
||||
if (head->must_insert_reserved)
|
||||
ret = 1;
|
||||
|
||||
btrfs_cleanup_ref_head_accounting(trans->fs_info, delayed_refs, head);
|
||||
btrfs_cleanup_ref_head_accounting(fs_info, delayed_refs, head);
|
||||
mutex_unlock(&head->mutex);
|
||||
btrfs_put_delayed_ref_head(head);
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user