Commit 920a9958 authored by Josef Bacik's avatar Josef Bacik Committed by David Sterba

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: default avatarNikolay Borisov <nborisov@suse.com>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Tested-by: default avatarNikolay Borisov <nborisov@suse.com>
Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent d7f81fac
...@@ -516,10 +516,10 @@ static inline u64 calc_reclaim_items_nr(struct btrfs_fs_info *fs_info, ...@@ -516,10 +516,10 @@ static inline u64 calc_reclaim_items_nr(struct btrfs_fs_info *fs_info,
/* /*
* shrink metadata reservation for delalloc * shrink metadata reservation for delalloc
*/ */
static void shrink_delalloc(struct btrfs_fs_info *fs_info, u64 to_reclaim, static void shrink_delalloc(struct btrfs_fs_info *fs_info,
bool wait_ordered) struct btrfs_space_info *space_info,
u64 to_reclaim, bool wait_ordered)
{ {
struct btrfs_space_info *space_info;
struct btrfs_trans_handle *trans; struct btrfs_trans_handle *trans;
u64 delalloc_bytes; u64 delalloc_bytes;
u64 dio_bytes; u64 dio_bytes;
...@@ -545,7 +545,6 @@ static void shrink_delalloc(struct btrfs_fs_info *fs_info, u64 to_reclaim, ...@@ -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; 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( delalloc_bytes = percpu_counter_sum_positive(
&fs_info->delalloc_bytes); &fs_info->delalloc_bytes);
...@@ -753,7 +752,7 @@ static void flush_space(struct btrfs_fs_info *fs_info, ...@@ -753,7 +752,7 @@ static void flush_space(struct btrfs_fs_info *fs_info,
break; break;
case FLUSH_DELALLOC: case FLUSH_DELALLOC:
case FLUSH_DELALLOC_WAIT: case FLUSH_DELALLOC_WAIT:
shrink_delalloc(fs_info, num_bytes, shrink_delalloc(fs_info, space_info, num_bytes,
state == FLUSH_DELALLOC_WAIT); state == FLUSH_DELALLOC_WAIT);
break; break;
case FLUSH_DELAYED_REFS_NR: case FLUSH_DELAYED_REFS_NR:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment