forked from Minki/linux
btrfs: make shrink_delalloc take space_info as an arg
Currently shrink_delalloc just looks up the metadata space info, but this won't work if we're trying to reclaim space for data chunks. We get the right space_info we want passed into flush_space, so simply pass that along to shrink_delalloc. Reviewed-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Tested-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
d7f81fac97
commit
920a9958c2
@ -516,10 +516,10 @@ static inline u64 calc_reclaim_items_nr(struct btrfs_fs_info *fs_info,
|
||||
/*
|
||||
* shrink metadata reservation for delalloc
|
||||
*/
|
||||
static void shrink_delalloc(struct btrfs_fs_info *fs_info, u64 to_reclaim,
|
||||
bool wait_ordered)
|
||||
static void shrink_delalloc(struct btrfs_fs_info *fs_info,
|
||||
struct btrfs_space_info *space_info,
|
||||
u64 to_reclaim, bool wait_ordered)
|
||||
{
|
||||
struct btrfs_space_info *space_info;
|
||||
struct btrfs_trans_handle *trans;
|
||||
u64 delalloc_bytes;
|
||||
u64 dio_bytes;
|
||||
@ -545,7 +545,6 @@ static void shrink_delalloc(struct btrfs_fs_info *fs_info, u64 to_reclaim,
|
||||
}
|
||||
|
||||
trans = (struct btrfs_trans_handle *)current->journal_info;
|
||||
space_info = btrfs_find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA);
|
||||
|
||||
delalloc_bytes = percpu_counter_sum_positive(
|
||||
&fs_info->delalloc_bytes);
|
||||
@ -753,7 +752,7 @@ static void flush_space(struct btrfs_fs_info *fs_info,
|
||||
break;
|
||||
case FLUSH_DELALLOC:
|
||||
case FLUSH_DELALLOC_WAIT:
|
||||
shrink_delalloc(fs_info, num_bytes,
|
||||
shrink_delalloc(fs_info, space_info, num_bytes,
|
||||
state == FLUSH_DELALLOC_WAIT);
|
||||
break;
|
||||
case FLUSH_DELAYED_REFS_NR:
|
||||
|
Loading…
Reference in New Issue
Block a user