btrfs: rename btrfs_block_group_cache

The type name is misleading, a single entry is named 'cache' while this
normally means a collection of objects. Rename that everywhere. Also the
identifier was quite long, making function prototypes harder to format.

Suggested-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
David Sterba
2019-10-29 19:20:18 +01:00
parent d49a2ddb15
commit 32da5386d9
26 changed files with 278 additions and 293 deletions

View File

@@ -120,12 +120,12 @@ u64 btrfs_get_alloc_profile(struct btrfs_fs_info *fs_info, u64 orig_flags)
return get_alloc_profile(fs_info, orig_flags); return get_alloc_profile(fs_info, orig_flags);
} }
void btrfs_get_block_group(struct btrfs_block_group_cache *cache) void btrfs_get_block_group(struct btrfs_block_group *cache)
{ {
atomic_inc(&cache->count); atomic_inc(&cache->count);
} }
void btrfs_put_block_group(struct btrfs_block_group_cache *cache) void btrfs_put_block_group(struct btrfs_block_group *cache)
{ {
if (atomic_dec_and_test(&cache->count)) { if (atomic_dec_and_test(&cache->count)) {
WARN_ON(cache->pinned > 0); WARN_ON(cache->pinned > 0);
@@ -149,19 +149,18 @@ void btrfs_put_block_group(struct btrfs_block_group_cache *cache)
* This adds the block group to the fs_info rb tree for the block group cache * This adds the block group to the fs_info rb tree for the block group cache
*/ */
static int btrfs_add_block_group_cache(struct btrfs_fs_info *info, static int btrfs_add_block_group_cache(struct btrfs_fs_info *info,
struct btrfs_block_group_cache *block_group) struct btrfs_block_group *block_group)
{ {
struct rb_node **p; struct rb_node **p;
struct rb_node *parent = NULL; struct rb_node *parent = NULL;
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
spin_lock(&info->block_group_cache_lock); spin_lock(&info->block_group_cache_lock);
p = &info->block_group_cache_tree.rb_node; p = &info->block_group_cache_tree.rb_node;
while (*p) { while (*p) {
parent = *p; parent = *p;
cache = rb_entry(parent, struct btrfs_block_group_cache, cache = rb_entry(parent, struct btrfs_block_group, cache_node);
cache_node);
if (block_group->start < cache->start) { if (block_group->start < cache->start) {
p = &(*p)->rb_left; p = &(*p)->rb_left;
} else if (block_group->start > cache->start) { } else if (block_group->start > cache->start) {
@@ -188,10 +187,10 @@ static int btrfs_add_block_group_cache(struct btrfs_fs_info *info,
* This will return the block group at or after bytenr if contains is 0, else * This will return the block group at or after bytenr if contains is 0, else
* it will return the block group that contains the bytenr * it will return the block group that contains the bytenr
*/ */
static struct btrfs_block_group_cache *block_group_cache_tree_search( static struct btrfs_block_group *block_group_cache_tree_search(
struct btrfs_fs_info *info, u64 bytenr, int contains) struct btrfs_fs_info *info, u64 bytenr, int contains)
{ {
struct btrfs_block_group_cache *cache, *ret = NULL; struct btrfs_block_group *cache, *ret = NULL;
struct rb_node *n; struct rb_node *n;
u64 end, start; u64 end, start;
@@ -199,8 +198,7 @@ static struct btrfs_block_group_cache *block_group_cache_tree_search(
n = info->block_group_cache_tree.rb_node; n = info->block_group_cache_tree.rb_node;
while (n) { while (n) {
cache = rb_entry(n, struct btrfs_block_group_cache, cache = rb_entry(n, struct btrfs_block_group, cache_node);
cache_node);
end = cache->start + cache->length - 1; end = cache->start + cache->length - 1;
start = cache->start; start = cache->start;
@@ -232,7 +230,7 @@ static struct btrfs_block_group_cache *block_group_cache_tree_search(
/* /*
* Return the block group that starts at or after bytenr * Return the block group that starts at or after bytenr
*/ */
struct btrfs_block_group_cache *btrfs_lookup_first_block_group( struct btrfs_block_group *btrfs_lookup_first_block_group(
struct btrfs_fs_info *info, u64 bytenr) struct btrfs_fs_info *info, u64 bytenr)
{ {
return block_group_cache_tree_search(info, bytenr, 0); return block_group_cache_tree_search(info, bytenr, 0);
@@ -241,14 +239,14 @@ struct btrfs_block_group_cache *btrfs_lookup_first_block_group(
/* /*
* Return the block group that contains the given bytenr * Return the block group that contains the given bytenr
*/ */
struct btrfs_block_group_cache *btrfs_lookup_block_group( struct btrfs_block_group *btrfs_lookup_block_group(
struct btrfs_fs_info *info, u64 bytenr) struct btrfs_fs_info *info, u64 bytenr)
{ {
return block_group_cache_tree_search(info, bytenr, 1); return block_group_cache_tree_search(info, bytenr, 1);
} }
struct btrfs_block_group_cache *btrfs_next_block_group( struct btrfs_block_group *btrfs_next_block_group(
struct btrfs_block_group_cache *cache) struct btrfs_block_group *cache)
{ {
struct btrfs_fs_info *fs_info = cache->fs_info; struct btrfs_fs_info *fs_info = cache->fs_info;
struct rb_node *node; struct rb_node *node;
@@ -266,8 +264,7 @@ struct btrfs_block_group_cache *btrfs_next_block_group(
node = rb_next(&cache->cache_node); node = rb_next(&cache->cache_node);
btrfs_put_block_group(cache); btrfs_put_block_group(cache);
if (node) { if (node) {
cache = rb_entry(node, struct btrfs_block_group_cache, cache = rb_entry(node, struct btrfs_block_group, cache_node);
cache_node);
btrfs_get_block_group(cache); btrfs_get_block_group(cache);
} else } else
cache = NULL; cache = NULL;
@@ -277,7 +274,7 @@ struct btrfs_block_group_cache *btrfs_next_block_group(
bool btrfs_inc_nocow_writers(struct btrfs_fs_info *fs_info, u64 bytenr) bool btrfs_inc_nocow_writers(struct btrfs_fs_info *fs_info, u64 bytenr)
{ {
struct btrfs_block_group_cache *bg; struct btrfs_block_group *bg;
bool ret = true; bool ret = true;
bg = btrfs_lookup_block_group(fs_info, bytenr); bg = btrfs_lookup_block_group(fs_info, bytenr);
@@ -300,7 +297,7 @@ bool btrfs_inc_nocow_writers(struct btrfs_fs_info *fs_info, u64 bytenr)
void btrfs_dec_nocow_writers(struct btrfs_fs_info *fs_info, u64 bytenr) void btrfs_dec_nocow_writers(struct btrfs_fs_info *fs_info, u64 bytenr)
{ {
struct btrfs_block_group_cache *bg; struct btrfs_block_group *bg;
bg = btrfs_lookup_block_group(fs_info, bytenr); bg = btrfs_lookup_block_group(fs_info, bytenr);
ASSERT(bg); ASSERT(bg);
@@ -314,7 +311,7 @@ void btrfs_dec_nocow_writers(struct btrfs_fs_info *fs_info, u64 bytenr)
btrfs_put_block_group(bg); btrfs_put_block_group(bg);
} }
void btrfs_wait_nocow_writers(struct btrfs_block_group_cache *bg) void btrfs_wait_nocow_writers(struct btrfs_block_group *bg)
{ {
wait_var_event(&bg->nocow_writers, !atomic_read(&bg->nocow_writers)); wait_var_event(&bg->nocow_writers, !atomic_read(&bg->nocow_writers));
} }
@@ -322,7 +319,7 @@ void btrfs_wait_nocow_writers(struct btrfs_block_group_cache *bg)
void btrfs_dec_block_group_reservations(struct btrfs_fs_info *fs_info, void btrfs_dec_block_group_reservations(struct btrfs_fs_info *fs_info,
const u64 start) const u64 start)
{ {
struct btrfs_block_group_cache *bg; struct btrfs_block_group *bg;
bg = btrfs_lookup_block_group(fs_info, start); bg = btrfs_lookup_block_group(fs_info, start);
ASSERT(bg); ASSERT(bg);
@@ -331,7 +328,7 @@ void btrfs_dec_block_group_reservations(struct btrfs_fs_info *fs_info,
btrfs_put_block_group(bg); btrfs_put_block_group(bg);
} }
void btrfs_wait_block_group_reservations(struct btrfs_block_group_cache *bg) void btrfs_wait_block_group_reservations(struct btrfs_block_group *bg)
{ {
struct btrfs_space_info *space_info = bg->space_info; struct btrfs_space_info *space_info = bg->space_info;
@@ -357,7 +354,7 @@ void btrfs_wait_block_group_reservations(struct btrfs_block_group_cache *bg)
} }
struct btrfs_caching_control *btrfs_get_caching_control( struct btrfs_caching_control *btrfs_get_caching_control(
struct btrfs_block_group_cache *cache) struct btrfs_block_group *cache)
{ {
struct btrfs_caching_control *ctl; struct btrfs_caching_control *ctl;
@@ -392,7 +389,7 @@ void btrfs_put_caching_control(struct btrfs_caching_control *ctl)
* Callers of this must check if cache->cached == BTRFS_CACHE_ERROR before using * Callers of this must check if cache->cached == BTRFS_CACHE_ERROR before using
* any of the information in this block group. * any of the information in this block group.
*/ */
void btrfs_wait_block_group_cache_progress(struct btrfs_block_group_cache *cache, void btrfs_wait_block_group_cache_progress(struct btrfs_block_group *cache,
u64 num_bytes) u64 num_bytes)
{ {
struct btrfs_caching_control *caching_ctl; struct btrfs_caching_control *caching_ctl;
@@ -401,13 +398,13 @@ void btrfs_wait_block_group_cache_progress(struct btrfs_block_group_cache *cache
if (!caching_ctl) if (!caching_ctl)
return; return;
wait_event(caching_ctl->wait, btrfs_block_group_cache_done(cache) || wait_event(caching_ctl->wait, btrfs_block_group_done(cache) ||
(cache->free_space_ctl->free_space >= num_bytes)); (cache->free_space_ctl->free_space >= num_bytes));
btrfs_put_caching_control(caching_ctl); btrfs_put_caching_control(caching_ctl);
} }
int btrfs_wait_block_group_cache_done(struct btrfs_block_group_cache *cache) int btrfs_wait_block_group_cache_done(struct btrfs_block_group *cache)
{ {
struct btrfs_caching_control *caching_ctl; struct btrfs_caching_control *caching_ctl;
int ret = 0; int ret = 0;
@@ -416,7 +413,7 @@ int btrfs_wait_block_group_cache_done(struct btrfs_block_group_cache *cache)
if (!caching_ctl) if (!caching_ctl)
return (cache->cached == BTRFS_CACHE_ERROR) ? -EIO : 0; return (cache->cached == BTRFS_CACHE_ERROR) ? -EIO : 0;
wait_event(caching_ctl->wait, btrfs_block_group_cache_done(cache)); wait_event(caching_ctl->wait, btrfs_block_group_done(cache));
if (cache->cached == BTRFS_CACHE_ERROR) if (cache->cached == BTRFS_CACHE_ERROR)
ret = -EIO; ret = -EIO;
btrfs_put_caching_control(caching_ctl); btrfs_put_caching_control(caching_ctl);
@@ -424,7 +421,7 @@ int btrfs_wait_block_group_cache_done(struct btrfs_block_group_cache *cache)
} }
#ifdef CONFIG_BTRFS_DEBUG #ifdef CONFIG_BTRFS_DEBUG
static void fragment_free_space(struct btrfs_block_group_cache *block_group) static void fragment_free_space(struct btrfs_block_group *block_group)
{ {
struct btrfs_fs_info *fs_info = block_group->fs_info; struct btrfs_fs_info *fs_info = block_group->fs_info;
u64 start = block_group->start; u64 start = block_group->start;
@@ -450,8 +447,7 @@ static void fragment_free_space(struct btrfs_block_group_cache *block_group)
* used yet since their free space will be released as soon as the transaction * used yet since their free space will be released as soon as the transaction
* commits. * commits.
*/ */
u64 add_new_free_space(struct btrfs_block_group_cache *block_group, u64 add_new_free_space(struct btrfs_block_group *block_group, u64 start, u64 end)
u64 start, u64 end)
{ {
struct btrfs_fs_info *info = block_group->fs_info; struct btrfs_fs_info *info = block_group->fs_info;
u64 extent_start, extent_end, size, total_added = 0; u64 extent_start, extent_end, size, total_added = 0;
@@ -491,7 +487,7 @@ u64 add_new_free_space(struct btrfs_block_group_cache *block_group,
static int load_extent_tree_free(struct btrfs_caching_control *caching_ctl) static int load_extent_tree_free(struct btrfs_caching_control *caching_ctl)
{ {
struct btrfs_block_group_cache *block_group = caching_ctl->block_group; struct btrfs_block_group *block_group = caching_ctl->block_group;
struct btrfs_fs_info *fs_info = block_group->fs_info; struct btrfs_fs_info *fs_info = block_group->fs_info;
struct btrfs_root *extent_root = fs_info->extent_root; struct btrfs_root *extent_root = fs_info->extent_root;
struct btrfs_path *path; struct btrfs_path *path;
@@ -626,7 +622,7 @@ out:
static noinline void caching_thread(struct btrfs_work *work) static noinline void caching_thread(struct btrfs_work *work)
{ {
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
struct btrfs_fs_info *fs_info; struct btrfs_fs_info *fs_info;
struct btrfs_caching_control *caching_ctl; struct btrfs_caching_control *caching_ctl;
int ret; int ret;
@@ -674,8 +670,7 @@ static noinline void caching_thread(struct btrfs_work *work)
btrfs_put_block_group(block_group); btrfs_put_block_group(block_group);
} }
int btrfs_cache_block_group(struct btrfs_block_group_cache *cache, int btrfs_cache_block_group(struct btrfs_block_group *cache, int load_cache_only)
int load_cache_only)
{ {
DEFINE_WAIT(wait); DEFINE_WAIT(wait);
struct btrfs_fs_info *fs_info = cache->fs_info; struct btrfs_fs_info *fs_info = cache->fs_info;
@@ -867,7 +862,7 @@ int btrfs_remove_block_group(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
struct btrfs_root *root = fs_info->extent_root; struct btrfs_root *root = fs_info->extent_root;
struct btrfs_path *path; struct btrfs_path *path;
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
struct btrfs_free_cluster *cluster; struct btrfs_free_cluster *cluster;
struct btrfs_root *tree_root = fs_info->tree_root; struct btrfs_root *tree_root = fs_info->tree_root;
struct btrfs_key key; struct btrfs_key key;
@@ -1185,7 +1180,7 @@ struct btrfs_trans_handle *btrfs_start_trans_remove_block_group(
* data in this block group. That check should be done by relocation routine, * data in this block group. That check should be done by relocation routine,
* not this function. * not this function.
*/ */
static int inc_block_group_ro(struct btrfs_block_group_cache *cache, int force) static int inc_block_group_ro(struct btrfs_block_group *cache, int force)
{ {
struct btrfs_space_info *sinfo = cache->space_info; struct btrfs_space_info *sinfo = cache->space_info;
u64 num_bytes; u64 num_bytes;
@@ -1251,7 +1246,7 @@ out:
*/ */
void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info) void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info)
{ {
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
struct btrfs_space_info *space_info; struct btrfs_space_info *space_info;
struct btrfs_trans_handle *trans; struct btrfs_trans_handle *trans;
int ret = 0; int ret = 0;
@@ -1265,7 +1260,7 @@ void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info)
int trimming; int trimming;
block_group = list_first_entry(&fs_info->unused_bgs, block_group = list_first_entry(&fs_info->unused_bgs,
struct btrfs_block_group_cache, struct btrfs_block_group,
bg_list); bg_list);
list_del_init(&block_group->bg_list); list_del_init(&block_group->bg_list);
@@ -1413,7 +1408,7 @@ next:
spin_unlock(&fs_info->unused_bgs_lock); spin_unlock(&fs_info->unused_bgs_lock);
} }
void btrfs_mark_bg_unused(struct btrfs_block_group_cache *bg) void btrfs_mark_bg_unused(struct btrfs_block_group *bg)
{ {
struct btrfs_fs_info *fs_info = bg->fs_info; struct btrfs_fs_info *fs_info = bg->fs_info;
@@ -1521,7 +1516,7 @@ static void set_avail_alloc_bits(struct btrfs_fs_info *fs_info, u64 flags)
write_sequnlock(&fs_info->profiles_lock); write_sequnlock(&fs_info->profiles_lock);
} }
static int exclude_super_stripes(struct btrfs_block_group_cache *cache) static int exclude_super_stripes(struct btrfs_block_group *cache)
{ {
struct btrfs_fs_info *fs_info = cache->fs_info; struct btrfs_fs_info *fs_info = cache->fs_info;
u64 bytenr; u64 bytenr;
@@ -1576,7 +1571,7 @@ static int exclude_super_stripes(struct btrfs_block_group_cache *cache)
return 0; return 0;
} }
static void link_block_group(struct btrfs_block_group_cache *cache) static void link_block_group(struct btrfs_block_group *cache)
{ {
struct btrfs_space_info *space_info = cache->space_info; struct btrfs_space_info *space_info = cache->space_info;
int index = btrfs_bg_flags_to_raid_index(cache->flags); int index = btrfs_bg_flags_to_raid_index(cache->flags);
@@ -1592,10 +1587,10 @@ static void link_block_group(struct btrfs_block_group_cache *cache)
btrfs_sysfs_add_block_group_type(cache); btrfs_sysfs_add_block_group_type(cache);
} }
static struct btrfs_block_group_cache *btrfs_create_block_group_cache( static struct btrfs_block_group *btrfs_create_block_group_cache(
struct btrfs_fs_info *fs_info, u64 start, u64 size) struct btrfs_fs_info *fs_info, u64 start, u64 size)
{ {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
cache = kzalloc(sizeof(*cache), GFP_NOFS); cache = kzalloc(sizeof(*cache), GFP_NOFS);
if (!cache) if (!cache)
@@ -1640,7 +1635,7 @@ static int check_chunk_block_group_mappings(struct btrfs_fs_info *fs_info)
{ {
struct extent_map_tree *map_tree = &fs_info->mapping_tree; struct extent_map_tree *map_tree = &fs_info->mapping_tree;
struct extent_map *em; struct extent_map *em;
struct btrfs_block_group_cache *bg; struct btrfs_block_group *bg;
u64 start = 0; u64 start = 0;
int ret = 0; int ret = 0;
@@ -1692,7 +1687,7 @@ static int read_one_block_group(struct btrfs_fs_info *info,
int need_clear) int need_clear)
{ {
struct extent_buffer *leaf = path->nodes[0]; struct extent_buffer *leaf = path->nodes[0];
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
struct btrfs_space_info *space_info; struct btrfs_space_info *space_info;
struct btrfs_block_group_item bgi; struct btrfs_block_group_item bgi;
const bool mixed = btrfs_fs_incompat(info, MIXED_GROUPS); const bool mixed = btrfs_fs_incompat(info, MIXED_GROUPS);
@@ -1792,7 +1787,7 @@ int btrfs_read_block_groups(struct btrfs_fs_info *info)
{ {
struct btrfs_path *path; struct btrfs_path *path;
int ret; int ret;
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
struct btrfs_space_info *space_info; struct btrfs_space_info *space_info;
struct btrfs_key key; struct btrfs_key key;
int need_clear = 0; int need_clear = 0;
@@ -1860,7 +1855,7 @@ error:
void btrfs_create_pending_block_groups(struct btrfs_trans_handle *trans) void btrfs_create_pending_block_groups(struct btrfs_trans_handle *trans)
{ {
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
struct btrfs_root *extent_root = fs_info->extent_root; struct btrfs_root *extent_root = fs_info->extent_root;
struct btrfs_block_group_item item; struct btrfs_block_group_item item;
struct btrfs_key key; struct btrfs_key key;
@@ -1871,7 +1866,7 @@ void btrfs_create_pending_block_groups(struct btrfs_trans_handle *trans)
while (!list_empty(&trans->new_bgs)) { while (!list_empty(&trans->new_bgs)) {
block_group = list_first_entry(&trans->new_bgs, block_group = list_first_entry(&trans->new_bgs,
struct btrfs_block_group_cache, struct btrfs_block_group,
bg_list); bg_list);
if (ret) if (ret)
goto next; goto next;
@@ -1906,7 +1901,7 @@ int btrfs_make_block_group(struct btrfs_trans_handle *trans, u64 bytes_used,
u64 type, u64 chunk_offset, u64 size) u64 type, u64 chunk_offset, u64 size)
{ {
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
int ret; int ret;
btrfs_set_log_full_commit(trans); btrfs_set_log_full_commit(trans);
@@ -2022,7 +2017,7 @@ static u64 update_block_group_flags(struct btrfs_fs_info *fs_info, u64 flags)
return flags; return flags;
} }
int btrfs_inc_block_group_ro(struct btrfs_block_group_cache *cache) int btrfs_inc_block_group_ro(struct btrfs_block_group *cache)
{ {
struct btrfs_fs_info *fs_info = cache->fs_info; struct btrfs_fs_info *fs_info = cache->fs_info;
@@ -2092,7 +2087,7 @@ out:
return ret; return ret;
} }
void btrfs_dec_block_group_ro(struct btrfs_block_group_cache *cache) void btrfs_dec_block_group_ro(struct btrfs_block_group *cache)
{ {
struct btrfs_space_info *sinfo = cache->space_info; struct btrfs_space_info *sinfo = cache->space_info;
u64 num_bytes; u64 num_bytes;
@@ -2113,7 +2108,7 @@ void btrfs_dec_block_group_ro(struct btrfs_block_group_cache *cache)
static int write_one_cache_group(struct btrfs_trans_handle *trans, static int write_one_cache_group(struct btrfs_trans_handle *trans,
struct btrfs_path *path, struct btrfs_path *path,
struct btrfs_block_group_cache *cache) struct btrfs_block_group *cache)
{ {
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
int ret; int ret;
@@ -2148,7 +2143,7 @@ fail:
} }
static int cache_save_setup(struct btrfs_block_group_cache *block_group, static int cache_save_setup(struct btrfs_block_group *block_group,
struct btrfs_trans_handle *trans, struct btrfs_trans_handle *trans,
struct btrfs_path *path) struct btrfs_path *path)
{ {
@@ -2312,7 +2307,7 @@ out:
int btrfs_setup_space_cache(struct btrfs_trans_handle *trans) int btrfs_setup_space_cache(struct btrfs_trans_handle *trans)
{ {
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
struct btrfs_block_group_cache *cache, *tmp; struct btrfs_block_group *cache, *tmp;
struct btrfs_transaction *cur_trans = trans->transaction; struct btrfs_transaction *cur_trans = trans->transaction;
struct btrfs_path *path; struct btrfs_path *path;
@@ -2350,7 +2345,7 @@ int btrfs_setup_space_cache(struct btrfs_trans_handle *trans)
int btrfs_start_dirty_block_groups(struct btrfs_trans_handle *trans) int btrfs_start_dirty_block_groups(struct btrfs_trans_handle *trans)
{ {
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
struct btrfs_transaction *cur_trans = trans->transaction; struct btrfs_transaction *cur_trans = trans->transaction;
int ret = 0; int ret = 0;
int should_put; int should_put;
@@ -2387,8 +2382,7 @@ again:
while (!list_empty(&dirty)) { while (!list_empty(&dirty)) {
bool drop_reserve = true; bool drop_reserve = true;
cache = list_first_entry(&dirty, cache = list_first_entry(&dirty, struct btrfs_block_group,
struct btrfs_block_group_cache,
dirty_list); dirty_list);
/* /*
* This can happen if something re-dirties a block group that * This can happen if something re-dirties a block group that
@@ -2513,7 +2507,7 @@ again:
int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans) int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans)
{ {
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
struct btrfs_transaction *cur_trans = trans->transaction; struct btrfs_transaction *cur_trans = trans->transaction;
int ret = 0; int ret = 0;
int should_put; int should_put;
@@ -2543,7 +2537,7 @@ int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans)
spin_lock(&cur_trans->dirty_bgs_lock); spin_lock(&cur_trans->dirty_bgs_lock);
while (!list_empty(&cur_trans->dirty_bgs)) { while (!list_empty(&cur_trans->dirty_bgs)) {
cache = list_first_entry(&cur_trans->dirty_bgs, cache = list_first_entry(&cur_trans->dirty_bgs,
struct btrfs_block_group_cache, struct btrfs_block_group,
dirty_list); dirty_list);
/* /*
@@ -2625,7 +2619,7 @@ int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans)
* to use it without any locking * to use it without any locking
*/ */
while (!list_empty(io)) { while (!list_empty(io)) {
cache = list_first_entry(io, struct btrfs_block_group_cache, cache = list_first_entry(io, struct btrfs_block_group,
io_list); io_list);
list_del_init(&cache->io_list); list_del_init(&cache->io_list);
btrfs_wait_cache_io(trans, cache, path); btrfs_wait_cache_io(trans, cache, path);
@@ -2640,7 +2634,7 @@ int btrfs_update_block_group(struct btrfs_trans_handle *trans,
u64 bytenr, u64 num_bytes, int alloc) u64 bytenr, u64 num_bytes, int alloc)
{ {
struct btrfs_fs_info *info = trans->fs_info; struct btrfs_fs_info *info = trans->fs_info;
struct btrfs_block_group_cache *cache = NULL; struct btrfs_block_group *cache = NULL;
u64 total = num_bytes; u64 total = num_bytes;
u64 old_val; u64 old_val;
u64 byte_in_group; u64 byte_in_group;
@@ -2671,7 +2665,7 @@ int btrfs_update_block_group(struct btrfs_trans_handle *trans,
* is because we need the unpinning stage to actually add the * is because we need the unpinning stage to actually add the
* space back to the block group, otherwise we will leak space. * space back to the block group, otherwise we will leak space.
*/ */
if (!alloc && !btrfs_block_group_cache_done(cache)) if (!alloc && !btrfs_block_group_done(cache))
btrfs_cache_block_group(cache, 1); btrfs_cache_block_group(cache, 1);
byte_in_group = bytenr - cache->start; byte_in_group = bytenr - cache->start;
@@ -2755,7 +2749,7 @@ int btrfs_update_block_group(struct btrfs_trans_handle *trans,
* reservation and the block group has become read only we cannot make the * reservation and the block group has become read only we cannot make the
* reservation and return -EAGAIN, otherwise this function always succeeds. * reservation and return -EAGAIN, otherwise this function always succeeds.
*/ */
int btrfs_add_reserved_bytes(struct btrfs_block_group_cache *cache, int btrfs_add_reserved_bytes(struct btrfs_block_group *cache,
u64 ram_bytes, u64 num_bytes, int delalloc) u64 ram_bytes, u64 num_bytes, int delalloc)
{ {
struct btrfs_space_info *space_info = cache->space_info; struct btrfs_space_info *space_info = cache->space_info;
@@ -2791,7 +2785,7 @@ int btrfs_add_reserved_bytes(struct btrfs_block_group_cache *cache,
* A and before transaction A commits you free that leaf, you call this with * A and before transaction A commits you free that leaf, you call this with
* reserve set to 0 in order to clear the reservation. * reserve set to 0 in order to clear the reservation.
*/ */
void btrfs_free_reserved_bytes(struct btrfs_block_group_cache *cache, void btrfs_free_reserved_bytes(struct btrfs_block_group *cache,
u64 num_bytes, int delalloc) u64 num_bytes, int delalloc)
{ {
struct btrfs_space_info *space_info = cache->space_info; struct btrfs_space_info *space_info = cache->space_info;
@@ -3054,7 +3048,7 @@ void check_system_chunk(struct btrfs_trans_handle *trans, u64 type)
void btrfs_put_block_group_cache(struct btrfs_fs_info *info) void btrfs_put_block_group_cache(struct btrfs_fs_info *info)
{ {
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
u64 last = 0; u64 last = 0;
while (1) { while (1) {
@@ -3094,7 +3088,7 @@ void btrfs_put_block_group_cache(struct btrfs_fs_info *info)
*/ */
int btrfs_free_block_groups(struct btrfs_fs_info *info) int btrfs_free_block_groups(struct btrfs_fs_info *info)
{ {
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
struct btrfs_space_info *space_info; struct btrfs_space_info *space_info;
struct btrfs_caching_control *caching_ctl; struct btrfs_caching_control *caching_ctl;
struct rb_node *n; struct rb_node *n;
@@ -3111,7 +3105,7 @@ int btrfs_free_block_groups(struct btrfs_fs_info *info)
spin_lock(&info->unused_bgs_lock); spin_lock(&info->unused_bgs_lock);
while (!list_empty(&info->unused_bgs)) { while (!list_empty(&info->unused_bgs)) {
block_group = list_first_entry(&info->unused_bgs, block_group = list_first_entry(&info->unused_bgs,
struct btrfs_block_group_cache, struct btrfs_block_group,
bg_list); bg_list);
list_del_init(&block_group->bg_list); list_del_init(&block_group->bg_list);
btrfs_put_block_group(block_group); btrfs_put_block_group(block_group);
@@ -3120,7 +3114,7 @@ int btrfs_free_block_groups(struct btrfs_fs_info *info)
spin_lock(&info->block_group_cache_lock); spin_lock(&info->block_group_cache_lock);
while ((n = rb_last(&info->block_group_cache_tree)) != NULL) { while ((n = rb_last(&info->block_group_cache_tree)) != NULL) {
block_group = rb_entry(n, struct btrfs_block_group_cache, block_group = rb_entry(n, struct btrfs_block_group,
cache_node); cache_node);
rb_erase(&block_group->cache_node, rb_erase(&block_group->cache_node,
&info->block_group_cache_tree); &info->block_group_cache_tree);

View File

@@ -34,7 +34,7 @@ struct btrfs_caching_control {
struct mutex mutex; struct mutex mutex;
wait_queue_head_t wait; wait_queue_head_t wait;
struct btrfs_work work; struct btrfs_work work;
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
u64 progress; u64 progress;
refcount_t count; refcount_t count;
}; };
@@ -42,7 +42,7 @@ struct btrfs_caching_control {
/* Once caching_thread() finds this much free space, it will wake up waiters. */ /* Once caching_thread() finds this much free space, it will wake up waiters. */
#define CACHING_CTL_WAKE_UP SZ_2M #define CACHING_CTL_WAKE_UP SZ_2M
struct btrfs_block_group_cache { struct btrfs_block_group {
struct btrfs_fs_info *fs_info; struct btrfs_fs_info *fs_info;
struct inode *inode; struct inode *inode;
spinlock_t lock; spinlock_t lock;
@@ -160,7 +160,7 @@ struct btrfs_block_group_cache {
#ifdef CONFIG_BTRFS_DEBUG #ifdef CONFIG_BTRFS_DEBUG
static inline int btrfs_should_fragment_free_space( static inline int btrfs_should_fragment_free_space(
struct btrfs_block_group_cache *block_group) struct btrfs_block_group *block_group)
{ {
struct btrfs_fs_info *fs_info = block_group->fs_info; struct btrfs_fs_info *fs_info = block_group->fs_info;
@@ -171,29 +171,29 @@ static inline int btrfs_should_fragment_free_space(
} }
#endif #endif
struct btrfs_block_group_cache *btrfs_lookup_first_block_group( struct btrfs_block_group *btrfs_lookup_first_block_group(
struct btrfs_fs_info *info, u64 bytenr); struct btrfs_fs_info *info, u64 bytenr);
struct btrfs_block_group_cache *btrfs_lookup_block_group( struct btrfs_block_group *btrfs_lookup_block_group(
struct btrfs_fs_info *info, u64 bytenr); struct btrfs_fs_info *info, u64 bytenr);
struct btrfs_block_group_cache *btrfs_next_block_group( struct btrfs_block_group *btrfs_next_block_group(
struct btrfs_block_group_cache *cache); struct btrfs_block_group *cache);
void btrfs_get_block_group(struct btrfs_block_group_cache *cache); void btrfs_get_block_group(struct btrfs_block_group *cache);
void btrfs_put_block_group(struct btrfs_block_group_cache *cache); void btrfs_put_block_group(struct btrfs_block_group *cache);
void btrfs_dec_block_group_reservations(struct btrfs_fs_info *fs_info, void btrfs_dec_block_group_reservations(struct btrfs_fs_info *fs_info,
const u64 start); const u64 start);
void btrfs_wait_block_group_reservations(struct btrfs_block_group_cache *bg); void btrfs_wait_block_group_reservations(struct btrfs_block_group *bg);
bool btrfs_inc_nocow_writers(struct btrfs_fs_info *fs_info, u64 bytenr); bool btrfs_inc_nocow_writers(struct btrfs_fs_info *fs_info, u64 bytenr);
void btrfs_dec_nocow_writers(struct btrfs_fs_info *fs_info, u64 bytenr); void btrfs_dec_nocow_writers(struct btrfs_fs_info *fs_info, u64 bytenr);
void btrfs_wait_nocow_writers(struct btrfs_block_group_cache *bg); void btrfs_wait_nocow_writers(struct btrfs_block_group *bg);
void btrfs_wait_block_group_cache_progress(struct btrfs_block_group_cache *cache, void btrfs_wait_block_group_cache_progress(struct btrfs_block_group *cache,
u64 num_bytes); u64 num_bytes);
int btrfs_wait_block_group_cache_done(struct btrfs_block_group_cache *cache); int btrfs_wait_block_group_cache_done(struct btrfs_block_group *cache);
int btrfs_cache_block_group(struct btrfs_block_group_cache *cache, int btrfs_cache_block_group(struct btrfs_block_group *cache,
int load_cache_only); int load_cache_only);
void btrfs_put_caching_control(struct btrfs_caching_control *ctl); void btrfs_put_caching_control(struct btrfs_caching_control *ctl);
struct btrfs_caching_control *btrfs_get_caching_control( struct btrfs_caching_control *btrfs_get_caching_control(
struct btrfs_block_group_cache *cache); struct btrfs_block_group *cache);
u64 add_new_free_space(struct btrfs_block_group_cache *block_group, u64 add_new_free_space(struct btrfs_block_group *block_group,
u64 start, u64 end); u64 start, u64 end);
struct btrfs_trans_handle *btrfs_start_trans_remove_block_group( struct btrfs_trans_handle *btrfs_start_trans_remove_block_group(
struct btrfs_fs_info *fs_info, struct btrfs_fs_info *fs_info,
@@ -201,21 +201,21 @@ struct btrfs_trans_handle *btrfs_start_trans_remove_block_group(
int btrfs_remove_block_group(struct btrfs_trans_handle *trans, int btrfs_remove_block_group(struct btrfs_trans_handle *trans,
u64 group_start, struct extent_map *em); u64 group_start, struct extent_map *em);
void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info); void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info);
void btrfs_mark_bg_unused(struct btrfs_block_group_cache *bg); void btrfs_mark_bg_unused(struct btrfs_block_group *bg);
int btrfs_read_block_groups(struct btrfs_fs_info *info); int btrfs_read_block_groups(struct btrfs_fs_info *info);
int btrfs_make_block_group(struct btrfs_trans_handle *trans, u64 bytes_used, int btrfs_make_block_group(struct btrfs_trans_handle *trans, u64 bytes_used,
u64 type, u64 chunk_offset, u64 size); u64 type, u64 chunk_offset, u64 size);
void btrfs_create_pending_block_groups(struct btrfs_trans_handle *trans); void btrfs_create_pending_block_groups(struct btrfs_trans_handle *trans);
int btrfs_inc_block_group_ro(struct btrfs_block_group_cache *cache); int btrfs_inc_block_group_ro(struct btrfs_block_group *cache);
void btrfs_dec_block_group_ro(struct btrfs_block_group_cache *cache); void btrfs_dec_block_group_ro(struct btrfs_block_group *cache);
int btrfs_start_dirty_block_groups(struct btrfs_trans_handle *trans); int btrfs_start_dirty_block_groups(struct btrfs_trans_handle *trans);
int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans); int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans);
int btrfs_setup_space_cache(struct btrfs_trans_handle *trans); int btrfs_setup_space_cache(struct btrfs_trans_handle *trans);
int btrfs_update_block_group(struct btrfs_trans_handle *trans, int btrfs_update_block_group(struct btrfs_trans_handle *trans,
u64 bytenr, u64 num_bytes, int alloc); u64 bytenr, u64 num_bytes, int alloc);
int btrfs_add_reserved_bytes(struct btrfs_block_group_cache *cache, int btrfs_add_reserved_bytes(struct btrfs_block_group *cache,
u64 ram_bytes, u64 num_bytes, int delalloc); u64 ram_bytes, u64 num_bytes, int delalloc);
void btrfs_free_reserved_bytes(struct btrfs_block_group_cache *cache, void btrfs_free_reserved_bytes(struct btrfs_block_group *cache,
u64 num_bytes, int delalloc); u64 num_bytes, int delalloc);
int btrfs_chunk_alloc(struct btrfs_trans_handle *trans, u64 flags, int btrfs_chunk_alloc(struct btrfs_trans_handle *trans, u64 flags,
enum btrfs_chunk_alloc_enum force); enum btrfs_chunk_alloc_enum force);
@@ -240,8 +240,7 @@ static inline u64 btrfs_system_alloc_profile(struct btrfs_fs_info *fs_info)
return btrfs_get_alloc_profile(fs_info, BTRFS_BLOCK_GROUP_SYSTEM); return btrfs_get_alloc_profile(fs_info, BTRFS_BLOCK_GROUP_SYSTEM);
} }
static inline int btrfs_block_group_cache_done( static inline int btrfs_block_group_done(struct btrfs_block_group *cache)
struct btrfs_block_group_cache *cache)
{ {
smp_mb(); smp_mb();
return cache->cached == BTRFS_CACHE_FINISHED || return cache->cached == BTRFS_CACHE_FINISHED ||

View File

@@ -39,7 +39,7 @@ struct btrfs_transaction;
struct btrfs_pending_snapshot; struct btrfs_pending_snapshot;
struct btrfs_delayed_ref_root; struct btrfs_delayed_ref_root;
struct btrfs_space_info; struct btrfs_space_info;
struct btrfs_block_group_cache; struct btrfs_block_group;
extern struct kmem_cache *btrfs_trans_handle_cachep; extern struct kmem_cache *btrfs_trans_handle_cachep;
extern struct kmem_cache *btrfs_bit_radix_cachep; extern struct kmem_cache *btrfs_bit_radix_cachep;
extern struct kmem_cache *btrfs_path_cachep; extern struct kmem_cache *btrfs_path_cachep;
@@ -415,7 +415,7 @@ struct btrfs_free_cluster {
/* We did a full search and couldn't create a cluster */ /* We did a full search and couldn't create a cluster */
bool fragmented; bool fragmented;
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
/* /*
* when a cluster is allocated from a block group, we put the * when a cluster is allocated from a block group, we put the
* cluster onto a list in the block group so that it can * cluster onto a list in the block group so that it can
@@ -478,8 +478,8 @@ struct btrfs_swapfile_pin {
void *ptr; void *ptr;
struct inode *inode; struct inode *inode;
/* /*
* If true, ptr points to a struct btrfs_block_group_cache. Otherwise, * If true, ptr points to a struct btrfs_block_group. Otherwise, ptr
* ptr points to a struct btrfs_device. * points to a struct btrfs_device.
*/ */
bool is_block_group; bool is_block_group;
}; };
@@ -2401,7 +2401,7 @@ static inline u64 btrfs_calc_metadata_size(struct btrfs_fs_info *fs_info,
int btrfs_add_excluded_extent(struct btrfs_fs_info *fs_info, int btrfs_add_excluded_extent(struct btrfs_fs_info *fs_info,
u64 start, u64 num_bytes); u64 start, u64 num_bytes);
void btrfs_free_excluded_extents(struct btrfs_block_group_cache *cache); void btrfs_free_excluded_extents(struct btrfs_block_group *cache);
int btrfs_run_delayed_refs(struct btrfs_trans_handle *trans, int btrfs_run_delayed_refs(struct btrfs_trans_handle *trans,
unsigned long count); unsigned long count);
void btrfs_cleanup_ref_head_accounting(struct btrfs_fs_info *fs_info, void btrfs_cleanup_ref_head_accounting(struct btrfs_fs_info *fs_info,
@@ -2457,8 +2457,8 @@ int btrfs_inc_extent_ref(struct btrfs_trans_handle *trans,
struct btrfs_ref *generic_ref); struct btrfs_ref *generic_ref);
int btrfs_extent_readonly(struct btrfs_fs_info *fs_info, u64 bytenr); int btrfs_extent_readonly(struct btrfs_fs_info *fs_info, u64 bytenr);
void btrfs_get_block_group_trimming(struct btrfs_block_group_cache *cache); void btrfs_get_block_group_trimming(struct btrfs_block_group *cache);
void btrfs_put_block_group_trimming(struct btrfs_block_group_cache *cache); void btrfs_put_block_group_trimming(struct btrfs_block_group *cache);
void btrfs_clear_space_info_full(struct btrfs_fs_info *info); void btrfs_clear_space_info_full(struct btrfs_fs_info *info);
enum btrfs_reserve_flush_enum { enum btrfs_reserve_flush_enum {

View File

@@ -4409,7 +4409,7 @@ again:
return 0; return 0;
} }
static void btrfs_cleanup_bg_io(struct btrfs_block_group_cache *cache) static void btrfs_cleanup_bg_io(struct btrfs_block_group *cache)
{ {
struct inode *inode; struct inode *inode;
@@ -4426,12 +4426,12 @@ static void btrfs_cleanup_bg_io(struct btrfs_block_group_cache *cache)
void btrfs_cleanup_dirty_bgs(struct btrfs_transaction *cur_trans, void btrfs_cleanup_dirty_bgs(struct btrfs_transaction *cur_trans,
struct btrfs_fs_info *fs_info) struct btrfs_fs_info *fs_info)
{ {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
spin_lock(&cur_trans->dirty_bgs_lock); spin_lock(&cur_trans->dirty_bgs_lock);
while (!list_empty(&cur_trans->dirty_bgs)) { while (!list_empty(&cur_trans->dirty_bgs)) {
cache = list_first_entry(&cur_trans->dirty_bgs, cache = list_first_entry(&cur_trans->dirty_bgs,
struct btrfs_block_group_cache, struct btrfs_block_group,
dirty_list); dirty_list);
if (!list_empty(&cache->io_list)) { if (!list_empty(&cache->io_list)) {
@@ -4459,7 +4459,7 @@ void btrfs_cleanup_dirty_bgs(struct btrfs_transaction *cur_trans,
*/ */
while (!list_empty(&cur_trans->io_bgs)) { while (!list_empty(&cur_trans->io_bgs)) {
cache = list_first_entry(&cur_trans->io_bgs, cache = list_first_entry(&cur_trans->io_bgs,
struct btrfs_block_group_cache, struct btrfs_block_group,
io_list); io_list);
list_del_init(&cache->io_list); list_del_init(&cache->io_list);

View File

@@ -54,7 +54,7 @@ static int alloc_reserved_tree_block(struct btrfs_trans_handle *trans,
static int find_next_key(struct btrfs_path *path, int level, static int find_next_key(struct btrfs_path *path, int level,
struct btrfs_key *key); struct btrfs_key *key);
static int block_group_bits(struct btrfs_block_group_cache *cache, u64 bits) static int block_group_bits(struct btrfs_block_group *cache, u64 bits)
{ {
return (cache->flags & bits) == bits; return (cache->flags & bits) == bits;
} }
@@ -70,7 +70,7 @@ int btrfs_add_excluded_extent(struct btrfs_fs_info *fs_info,
return 0; return 0;
} }
void btrfs_free_excluded_extents(struct btrfs_block_group_cache *cache) void btrfs_free_excluded_extents(struct btrfs_block_group *cache)
{ {
struct btrfs_fs_info *fs_info = cache->fs_info; struct btrfs_fs_info *fs_info = cache->fs_info;
u64 start, end; u64 start, end;
@@ -2537,7 +2537,7 @@ int btrfs_dec_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root,
int btrfs_extent_readonly(struct btrfs_fs_info *fs_info, u64 bytenr) int btrfs_extent_readonly(struct btrfs_fs_info *fs_info, u64 bytenr)
{ {
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
int readonly = 0; int readonly = 0;
block_group = btrfs_lookup_block_group(fs_info, bytenr); block_group = btrfs_lookup_block_group(fs_info, bytenr);
@@ -2567,7 +2567,7 @@ static u64 get_alloc_profile_by_root(struct btrfs_root *root, int data)
static u64 first_logical_byte(struct btrfs_fs_info *fs_info, u64 search_start) static u64 first_logical_byte(struct btrfs_fs_info *fs_info, u64 search_start)
{ {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
u64 bytenr; u64 bytenr;
spin_lock(&fs_info->block_group_cache_lock); spin_lock(&fs_info->block_group_cache_lock);
@@ -2587,7 +2587,7 @@ static u64 first_logical_byte(struct btrfs_fs_info *fs_info, u64 search_start)
return bytenr; return bytenr;
} }
static int pin_down_extent(struct btrfs_block_group_cache *cache, static int pin_down_extent(struct btrfs_block_group *cache,
u64 bytenr, u64 num_bytes, int reserved) u64 bytenr, u64 num_bytes, int reserved)
{ {
struct btrfs_fs_info *fs_info = cache->fs_info; struct btrfs_fs_info *fs_info = cache->fs_info;
@@ -2614,7 +2614,7 @@ static int pin_down_extent(struct btrfs_block_group_cache *cache,
int btrfs_pin_extent(struct btrfs_fs_info *fs_info, int btrfs_pin_extent(struct btrfs_fs_info *fs_info,
u64 bytenr, u64 num_bytes, int reserved) u64 bytenr, u64 num_bytes, int reserved)
{ {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
ASSERT(fs_info->running_transaction); ASSERT(fs_info->running_transaction);
@@ -2633,7 +2633,7 @@ int btrfs_pin_extent(struct btrfs_fs_info *fs_info,
int btrfs_pin_extent_for_log_replay(struct btrfs_fs_info *fs_info, int btrfs_pin_extent_for_log_replay(struct btrfs_fs_info *fs_info,
u64 bytenr, u64 num_bytes) u64 bytenr, u64 num_bytes)
{ {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
int ret; int ret;
cache = btrfs_lookup_block_group(fs_info, bytenr); cache = btrfs_lookup_block_group(fs_info, bytenr);
@@ -2660,7 +2660,7 @@ static int __exclude_logged_extent(struct btrfs_fs_info *fs_info,
u64 start, u64 num_bytes) u64 start, u64 num_bytes)
{ {
int ret; int ret;
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
struct btrfs_caching_control *caching_ctl; struct btrfs_caching_control *caching_ctl;
block_group = btrfs_lookup_block_group(fs_info, start); block_group = btrfs_lookup_block_group(fs_info, start);
@@ -2672,7 +2672,7 @@ static int __exclude_logged_extent(struct btrfs_fs_info *fs_info,
if (!caching_ctl) { if (!caching_ctl) {
/* Logic error */ /* Logic error */
BUG_ON(!btrfs_block_group_cache_done(block_group)); BUG_ON(!btrfs_block_group_done(block_group));
ret = btrfs_remove_free_space(block_group, start, num_bytes); ret = btrfs_remove_free_space(block_group, start, num_bytes);
} else { } else {
mutex_lock(&caching_ctl->mutex); mutex_lock(&caching_ctl->mutex);
@@ -2737,7 +2737,7 @@ int btrfs_exclude_logged_extents(struct extent_buffer *eb)
} }
static void static void
btrfs_inc_block_group_reservations(struct btrfs_block_group_cache *bg) btrfs_inc_block_group_reservations(struct btrfs_block_group *bg)
{ {
atomic_inc(&bg->reservations); atomic_inc(&bg->reservations);
} }
@@ -2746,14 +2746,14 @@ void btrfs_prepare_extent_commit(struct btrfs_fs_info *fs_info)
{ {
struct btrfs_caching_control *next; struct btrfs_caching_control *next;
struct btrfs_caching_control *caching_ctl; struct btrfs_caching_control *caching_ctl;
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
down_write(&fs_info->commit_root_sem); down_write(&fs_info->commit_root_sem);
list_for_each_entry_safe(caching_ctl, next, list_for_each_entry_safe(caching_ctl, next,
&fs_info->caching_block_groups, list) { &fs_info->caching_block_groups, list) {
cache = caching_ctl->block_group; cache = caching_ctl->block_group;
if (btrfs_block_group_cache_done(cache)) { if (btrfs_block_group_done(cache)) {
cache->last_byte_to_unpin = (u64)-1; cache->last_byte_to_unpin = (u64)-1;
list_del_init(&caching_ctl->list); list_del_init(&caching_ctl->list);
btrfs_put_caching_control(caching_ctl); btrfs_put_caching_control(caching_ctl);
@@ -2805,7 +2805,7 @@ static int unpin_extent_range(struct btrfs_fs_info *fs_info,
u64 start, u64 end, u64 start, u64 end,
const bool return_free_space) const bool return_free_space)
{ {
struct btrfs_block_group_cache *cache = NULL; struct btrfs_block_group *cache = NULL;
struct btrfs_space_info *space_info; struct btrfs_space_info *space_info;
struct btrfs_block_rsv *global_rsv = &fs_info->global_block_rsv; struct btrfs_block_rsv *global_rsv = &fs_info->global_block_rsv;
struct btrfs_free_cluster *cluster = NULL; struct btrfs_free_cluster *cluster = NULL;
@@ -2900,7 +2900,7 @@ static int unpin_extent_range(struct btrfs_fs_info *fs_info,
int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans) int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans)
{ {
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
struct btrfs_block_group_cache *block_group, *tmp; struct btrfs_block_group *block_group, *tmp;
struct list_head *deleted_bgs; struct list_head *deleted_bgs;
struct extent_io_tree *unpin; struct extent_io_tree *unpin;
u64 start; u64 start;
@@ -3282,7 +3282,7 @@ void btrfs_free_tree_block(struct btrfs_trans_handle *trans,
} }
if (last_ref && btrfs_header_generation(buf) == trans->transid) { if (last_ref && btrfs_header_generation(buf) == trans->transid) {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) { if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) {
ret = check_ref_cleanup(trans, buf->start); ret = check_ref_cleanup(trans, buf->start);
@@ -3369,15 +3369,14 @@ enum btrfs_loop_type {
}; };
static inline void static inline void
btrfs_lock_block_group(struct btrfs_block_group_cache *cache, btrfs_lock_block_group(struct btrfs_block_group *cache,
int delalloc) int delalloc)
{ {
if (delalloc) if (delalloc)
down_read(&cache->data_rwsem); down_read(&cache->data_rwsem);
} }
static inline void static inline void btrfs_grab_block_group(struct btrfs_block_group *cache,
btrfs_grab_block_group(struct btrfs_block_group_cache *cache,
int delalloc) int delalloc)
{ {
btrfs_get_block_group(cache); btrfs_get_block_group(cache);
@@ -3385,12 +3384,12 @@ btrfs_grab_block_group(struct btrfs_block_group_cache *cache,
down_read(&cache->data_rwsem); down_read(&cache->data_rwsem);
} }
static struct btrfs_block_group_cache * static struct btrfs_block_group *btrfs_lock_cluster(
btrfs_lock_cluster(struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_free_cluster *cluster, struct btrfs_free_cluster *cluster,
int delalloc) int delalloc)
{ {
struct btrfs_block_group_cache *used_bg = NULL; struct btrfs_block_group *used_bg = NULL;
spin_lock(&cluster->refill_lock); spin_lock(&cluster->refill_lock);
while (1) { while (1) {
@@ -3424,7 +3423,7 @@ btrfs_lock_cluster(struct btrfs_block_group_cache *block_group,
} }
static inline void static inline void
btrfs_release_block_group(struct btrfs_block_group_cache *cache, btrfs_release_block_group(struct btrfs_block_group *cache,
int delalloc) int delalloc)
{ {
if (delalloc) if (delalloc)
@@ -3495,12 +3494,12 @@ struct find_free_extent_ctl {
* Return >0 to inform caller that we find nothing * Return >0 to inform caller that we find nothing
* Return 0 means we have found a location and set ffe_ctl->found_offset. * Return 0 means we have found a location and set ffe_ctl->found_offset.
*/ */
static int find_free_extent_clustered(struct btrfs_block_group_cache *bg, static int find_free_extent_clustered(struct btrfs_block_group *bg,
struct btrfs_free_cluster *last_ptr, struct btrfs_free_cluster *last_ptr,
struct find_free_extent_ctl *ffe_ctl, struct find_free_extent_ctl *ffe_ctl,
struct btrfs_block_group_cache **cluster_bg_ret) struct btrfs_block_group **cluster_bg_ret)
{ {
struct btrfs_block_group_cache *cluster_bg; struct btrfs_block_group *cluster_bg;
u64 aligned_cluster; u64 aligned_cluster;
u64 offset; u64 offset;
int ret; int ret;
@@ -3599,7 +3598,7 @@ refill_cluster:
* Return 0 when we found an free extent and set ffe_ctrl->found_offset * Return 0 when we found an free extent and set ffe_ctrl->found_offset
* Return -EAGAIN to inform caller that we need to re-search this block group * Return -EAGAIN to inform caller that we need to re-search this block group
*/ */
static int find_free_extent_unclustered(struct btrfs_block_group_cache *bg, static int find_free_extent_unclustered(struct btrfs_block_group *bg,
struct btrfs_free_cluster *last_ptr, struct btrfs_free_cluster *last_ptr,
struct find_free_extent_ctl *ffe_ctl) struct find_free_extent_ctl *ffe_ctl)
{ {
@@ -3801,7 +3800,7 @@ static noinline int find_free_extent(struct btrfs_fs_info *fs_info,
{ {
int ret = 0; int ret = 0;
struct btrfs_free_cluster *last_ptr = NULL; struct btrfs_free_cluster *last_ptr = NULL;
struct btrfs_block_group_cache *block_group = NULL; struct btrfs_block_group *block_group = NULL;
struct find_free_extent_ctl ffe_ctl = {0}; struct find_free_extent_ctl ffe_ctl = {0};
struct btrfs_space_info *space_info; struct btrfs_space_info *space_info;
bool use_cluster = true; bool use_cluster = true;
@@ -3955,7 +3954,7 @@ search:
} }
have_block_group: have_block_group:
ffe_ctl.cached = btrfs_block_group_cache_done(block_group); ffe_ctl.cached = btrfs_block_group_done(block_group);
if (unlikely(!ffe_ctl.cached)) { if (unlikely(!ffe_ctl.cached)) {
ffe_ctl.have_caching_bg = true; ffe_ctl.have_caching_bg = true;
ret = btrfs_cache_block_group(block_group, 0); ret = btrfs_cache_block_group(block_group, 0);
@@ -3971,7 +3970,7 @@ have_block_group:
* lets look there * lets look there
*/ */
if (last_ptr && use_cluster) { if (last_ptr && use_cluster) {
struct btrfs_block_group_cache *cluster_bg = NULL; struct btrfs_block_group *cluster_bg = NULL;
ret = find_free_extent_clustered(block_group, last_ptr, ret = find_free_extent_clustered(block_group, last_ptr,
&ffe_ctl, &cluster_bg); &ffe_ctl, &cluster_bg);
@@ -4153,7 +4152,7 @@ static int __btrfs_free_reserved_extent(struct btrfs_fs_info *fs_info,
u64 start, u64 len, u64 start, u64 len,
int pin, int delalloc) int pin, int delalloc)
{ {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
int ret = 0; int ret = 0;
cache = btrfs_lookup_block_group(fs_info, start); cache = btrfs_lookup_block_group(fs_info, start);
@@ -4386,7 +4385,7 @@ int btrfs_alloc_logged_file_extent(struct btrfs_trans_handle *trans,
{ {
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
int ret; int ret;
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
struct btrfs_space_info *space_info; struct btrfs_space_info *space_info;
/* /*
@@ -5500,7 +5499,7 @@ int btrfs_drop_subtree(struct btrfs_trans_handle *trans,
*/ */
u64 btrfs_account_ro_block_groups_free_space(struct btrfs_space_info *sinfo) u64 btrfs_account_ro_block_groups_free_space(struct btrfs_space_info *sinfo)
{ {
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
u64 free_bytes = 0; u64 free_bytes = 0;
int factor; int factor;
@@ -5642,7 +5641,7 @@ static int btrfs_trim_free_extents(struct btrfs_device *device, u64 *trimmed)
*/ */
int btrfs_trim_fs(struct btrfs_fs_info *fs_info, struct fstrim_range *range) int btrfs_trim_fs(struct btrfs_fs_info *fs_info, struct fstrim_range *range)
{ {
struct btrfs_block_group_cache *cache = NULL; struct btrfs_block_group *cache = NULL;
struct btrfs_device *device; struct btrfs_device *device;
struct list_head *devices; struct list_head *devices;
u64 group_trimmed; u64 group_trimmed;
@@ -5675,7 +5674,7 @@ int btrfs_trim_fs(struct btrfs_fs_info *fs_info, struct fstrim_range *range)
end = min(range_end, cache->start + cache->length); end = min(range_end, cache->start + cache->length);
if (end - start >= range->minlen) { if (end - start >= range->minlen) {
if (!btrfs_block_group_cache_done(cache)) { if (!btrfs_block_group_done(cache)) {
ret = btrfs_cache_block_group(cache, 0); ret = btrfs_cache_block_group(cache, 0);
if (ret) { if (ret) {
bg_failed++; bg_failed++;

View File

@@ -91,8 +91,7 @@ static struct inode *__lookup_free_space_inode(struct btrfs_root *root,
return inode; return inode;
} }
struct inode *lookup_free_space_inode( struct inode *lookup_free_space_inode(struct btrfs_block_group *block_group,
struct btrfs_block_group_cache *block_group,
struct btrfs_path *path) struct btrfs_path *path)
{ {
struct btrfs_fs_info *fs_info = block_group->fs_info; struct btrfs_fs_info *fs_info = block_group->fs_info;
@@ -190,7 +189,7 @@ static int __create_free_space_inode(struct btrfs_root *root,
} }
int create_free_space_inode(struct btrfs_trans_handle *trans, int create_free_space_inode(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path) struct btrfs_path *path)
{ {
int ret; int ret;
@@ -224,7 +223,7 @@ int btrfs_check_trunc_cache_free_space(struct btrfs_fs_info *fs_info,
} }
int btrfs_truncate_free_space_cache(struct btrfs_trans_handle *trans, int btrfs_truncate_free_space_cache(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct inode *inode) struct inode *inode)
{ {
struct btrfs_root *root = BTRFS_I(inode)->root; struct btrfs_root *root = BTRFS_I(inode)->root;
@@ -820,7 +819,7 @@ free_cache:
goto out; goto out;
} }
int load_free_space_cache(struct btrfs_block_group_cache *block_group) int load_free_space_cache(struct btrfs_block_group *block_group)
{ {
struct btrfs_fs_info *fs_info = block_group->fs_info; struct btrfs_fs_info *fs_info = block_group->fs_info;
struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl; struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl;
@@ -919,7 +918,7 @@ out:
static noinline_for_stack static noinline_for_stack
int write_cache_extent_entries(struct btrfs_io_ctl *io_ctl, int write_cache_extent_entries(struct btrfs_io_ctl *io_ctl,
struct btrfs_free_space_ctl *ctl, struct btrfs_free_space_ctl *ctl,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
int *entries, int *bitmaps, int *entries, int *bitmaps,
struct list_head *bitmap_list) struct list_head *bitmap_list)
{ {
@@ -1047,7 +1046,7 @@ fail:
} }
static noinline_for_stack int write_pinned_extent_entries( static noinline_for_stack int write_pinned_extent_entries(
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_io_ctl *io_ctl, struct btrfs_io_ctl *io_ctl,
int *entries) int *entries)
{ {
@@ -1146,7 +1145,7 @@ cleanup_write_cache_enospc(struct inode *inode,
static int __btrfs_wait_cache_io(struct btrfs_root *root, static int __btrfs_wait_cache_io(struct btrfs_root *root,
struct btrfs_trans_handle *trans, struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_io_ctl *io_ctl, struct btrfs_io_ctl *io_ctl,
struct btrfs_path *path, u64 offset) struct btrfs_path *path, u64 offset)
{ {
@@ -1215,7 +1214,7 @@ static int btrfs_wait_cache_io_root(struct btrfs_root *root,
} }
int btrfs_wait_cache_io(struct btrfs_trans_handle *trans, int btrfs_wait_cache_io(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path) struct btrfs_path *path)
{ {
return __btrfs_wait_cache_io(block_group->fs_info->tree_root, trans, return __btrfs_wait_cache_io(block_group->fs_info->tree_root, trans,
@@ -1236,7 +1235,7 @@ int btrfs_wait_cache_io(struct btrfs_trans_handle *trans,
*/ */
static int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode, static int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode,
struct btrfs_free_space_ctl *ctl, struct btrfs_free_space_ctl *ctl,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_io_ctl *io_ctl, struct btrfs_io_ctl *io_ctl,
struct btrfs_trans_handle *trans) struct btrfs_trans_handle *trans)
{ {
@@ -1374,7 +1373,7 @@ out_unlock:
} }
int btrfs_write_out_cache(struct btrfs_trans_handle *trans, int btrfs_write_out_cache(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path) struct btrfs_path *path)
{ {
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
@@ -1652,7 +1651,7 @@ static int link_free_space(struct btrfs_free_space_ctl *ctl,
static void recalculate_thresholds(struct btrfs_free_space_ctl *ctl) static void recalculate_thresholds(struct btrfs_free_space_ctl *ctl)
{ {
struct btrfs_block_group_cache *block_group = ctl->private; struct btrfs_block_group *block_group = ctl->private;
u64 max_bytes; u64 max_bytes;
u64 bitmap_bytes; u64 bitmap_bytes;
u64 extent_bytes; u64 extent_bytes;
@@ -1996,7 +1995,7 @@ static u64 add_bytes_to_bitmap(struct btrfs_free_space_ctl *ctl,
static bool use_bitmap(struct btrfs_free_space_ctl *ctl, static bool use_bitmap(struct btrfs_free_space_ctl *ctl,
struct btrfs_free_space *info) struct btrfs_free_space *info)
{ {
struct btrfs_block_group_cache *block_group = ctl->private; struct btrfs_block_group *block_group = ctl->private;
struct btrfs_fs_info *fs_info = block_group->fs_info; struct btrfs_fs_info *fs_info = block_group->fs_info;
bool forced = false; bool forced = false;
@@ -2048,7 +2047,7 @@ static int insert_into_bitmap(struct btrfs_free_space_ctl *ctl,
struct btrfs_free_space *info) struct btrfs_free_space *info)
{ {
struct btrfs_free_space *bitmap_info; struct btrfs_free_space *bitmap_info;
struct btrfs_block_group_cache *block_group = NULL; struct btrfs_block_group *block_group = NULL;
int added = 0; int added = 0;
u64 bytes, offset, bytes_added; u64 bytes, offset, bytes_added;
int ret; int ret;
@@ -2385,7 +2384,7 @@ out:
return ret; return ret;
} }
int btrfs_add_free_space(struct btrfs_block_group_cache *block_group, int btrfs_add_free_space(struct btrfs_block_group *block_group,
u64 bytenr, u64 size) u64 bytenr, u64 size)
{ {
return __btrfs_add_free_space(block_group->fs_info, return __btrfs_add_free_space(block_group->fs_info,
@@ -2393,7 +2392,7 @@ int btrfs_add_free_space(struct btrfs_block_group_cache *block_group,
bytenr, size); bytenr, size);
} }
int btrfs_remove_free_space(struct btrfs_block_group_cache *block_group, int btrfs_remove_free_space(struct btrfs_block_group *block_group,
u64 offset, u64 bytes) u64 offset, u64 bytes)
{ {
struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl; struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl;
@@ -2483,7 +2482,7 @@ out:
return ret; return ret;
} }
void btrfs_dump_free_space(struct btrfs_block_group_cache *block_group, void btrfs_dump_free_space(struct btrfs_block_group *block_group,
u64 bytes) u64 bytes)
{ {
struct btrfs_fs_info *fs_info = block_group->fs_info; struct btrfs_fs_info *fs_info = block_group->fs_info;
@@ -2508,7 +2507,7 @@ void btrfs_dump_free_space(struct btrfs_block_group_cache *block_group,
"%d blocks of free space at or bigger than bytes is", count); "%d blocks of free space at or bigger than bytes is", count);
} }
void btrfs_init_free_space_ctl(struct btrfs_block_group_cache *block_group) void btrfs_init_free_space_ctl(struct btrfs_block_group *block_group)
{ {
struct btrfs_fs_info *fs_info = block_group->fs_info; struct btrfs_fs_info *fs_info = block_group->fs_info;
struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl; struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl;
@@ -2537,7 +2536,7 @@ void btrfs_init_free_space_ctl(struct btrfs_block_group_cache *block_group)
*/ */
static int static int
__btrfs_return_cluster_to_free_space( __btrfs_return_cluster_to_free_space(
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_free_cluster *cluster) struct btrfs_free_cluster *cluster)
{ {
struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl; struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl;
@@ -2603,7 +2602,7 @@ void __btrfs_remove_free_space_cache(struct btrfs_free_space_ctl *ctl)
spin_unlock(&ctl->tree_lock); spin_unlock(&ctl->tree_lock);
} }
void btrfs_remove_free_space_cache(struct btrfs_block_group_cache *block_group) void btrfs_remove_free_space_cache(struct btrfs_block_group *block_group)
{ {
struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl; struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl;
struct btrfs_free_cluster *cluster; struct btrfs_free_cluster *cluster;
@@ -2625,7 +2624,7 @@ void btrfs_remove_free_space_cache(struct btrfs_block_group_cache *block_group)
} }
u64 btrfs_find_space_for_alloc(struct btrfs_block_group_cache *block_group, u64 btrfs_find_space_for_alloc(struct btrfs_block_group *block_group,
u64 offset, u64 bytes, u64 empty_size, u64 offset, u64 bytes, u64 empty_size,
u64 *max_extent_size) u64 *max_extent_size)
{ {
@@ -2679,7 +2678,7 @@ out:
* cluster and remove the cluster from it. * cluster and remove the cluster from it.
*/ */
int btrfs_return_cluster_to_free_space( int btrfs_return_cluster_to_free_space(
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_free_cluster *cluster) struct btrfs_free_cluster *cluster)
{ {
struct btrfs_free_space_ctl *ctl; struct btrfs_free_space_ctl *ctl;
@@ -2713,7 +2712,7 @@ int btrfs_return_cluster_to_free_space(
return ret; return ret;
} }
static u64 btrfs_alloc_from_bitmap(struct btrfs_block_group_cache *block_group, static u64 btrfs_alloc_from_bitmap(struct btrfs_block_group *block_group,
struct btrfs_free_cluster *cluster, struct btrfs_free_cluster *cluster,
struct btrfs_free_space *entry, struct btrfs_free_space *entry,
u64 bytes, u64 min_start, u64 bytes, u64 min_start,
@@ -2746,7 +2745,7 @@ static u64 btrfs_alloc_from_bitmap(struct btrfs_block_group_cache *block_group,
* if it couldn't find anything suitably large, or a logical disk offset * if it couldn't find anything suitably large, or a logical disk offset
* if things worked out * if things worked out
*/ */
u64 btrfs_alloc_from_cluster(struct btrfs_block_group_cache *block_group, u64 btrfs_alloc_from_cluster(struct btrfs_block_group *block_group,
struct btrfs_free_cluster *cluster, u64 bytes, struct btrfs_free_cluster *cluster, u64 bytes,
u64 min_start, u64 *max_extent_size) u64 min_start, u64 *max_extent_size)
{ {
@@ -2832,7 +2831,7 @@ out:
return ret; return ret;
} }
static int btrfs_bitmap_cluster(struct btrfs_block_group_cache *block_group, static int btrfs_bitmap_cluster(struct btrfs_block_group *block_group,
struct btrfs_free_space *entry, struct btrfs_free_space *entry,
struct btrfs_free_cluster *cluster, struct btrfs_free_cluster *cluster,
u64 offset, u64 bytes, u64 offset, u64 bytes,
@@ -2914,7 +2913,7 @@ again:
* extent of cont1_bytes, and other clusters of at least min_bytes. * extent of cont1_bytes, and other clusters of at least min_bytes.
*/ */
static noinline int static noinline int
setup_cluster_no_bitmap(struct btrfs_block_group_cache *block_group, setup_cluster_no_bitmap(struct btrfs_block_group *block_group,
struct btrfs_free_cluster *cluster, struct btrfs_free_cluster *cluster,
struct list_head *bitmaps, u64 offset, u64 bytes, struct list_head *bitmaps, u64 offset, u64 bytes,
u64 cont1_bytes, u64 min_bytes) u64 cont1_bytes, u64 min_bytes)
@@ -3005,7 +3004,7 @@ setup_cluster_no_bitmap(struct btrfs_block_group_cache *block_group,
* that we have already failed to find extents that will work. * that we have already failed to find extents that will work.
*/ */
static noinline int static noinline int
setup_cluster_bitmap(struct btrfs_block_group_cache *block_group, setup_cluster_bitmap(struct btrfs_block_group *block_group,
struct btrfs_free_cluster *cluster, struct btrfs_free_cluster *cluster,
struct list_head *bitmaps, u64 offset, u64 bytes, struct list_head *bitmaps, u64 offset, u64 bytes,
u64 cont1_bytes, u64 min_bytes) u64 cont1_bytes, u64 min_bytes)
@@ -3055,7 +3054,7 @@ setup_cluster_bitmap(struct btrfs_block_group_cache *block_group,
* returns zero and sets up cluster if things worked out, otherwise * returns zero and sets up cluster if things worked out, otherwise
* it returns -enospc * it returns -enospc
*/ */
int btrfs_find_space_cluster(struct btrfs_block_group_cache *block_group, int btrfs_find_space_cluster(struct btrfs_block_group *block_group,
struct btrfs_free_cluster *cluster, struct btrfs_free_cluster *cluster,
u64 offset, u64 bytes, u64 empty_size) u64 offset, u64 bytes, u64 empty_size)
{ {
@@ -3146,7 +3145,7 @@ void btrfs_init_free_cluster(struct btrfs_free_cluster *cluster)
cluster->block_group = NULL; cluster->block_group = NULL;
} }
static int do_trimming(struct btrfs_block_group_cache *block_group, static int do_trimming(struct btrfs_block_group *block_group,
u64 *total_trimmed, u64 start, u64 bytes, u64 *total_trimmed, u64 start, u64 bytes,
u64 reserved_start, u64 reserved_bytes, u64 reserved_start, u64 reserved_bytes,
struct btrfs_trim_range *trim_entry) struct btrfs_trim_range *trim_entry)
@@ -3191,7 +3190,7 @@ static int do_trimming(struct btrfs_block_group_cache *block_group,
return ret; return ret;
} }
static int trim_no_bitmap(struct btrfs_block_group_cache *block_group, static int trim_no_bitmap(struct btrfs_block_group *block_group,
u64 *total_trimmed, u64 start, u64 end, u64 minlen) u64 *total_trimmed, u64 start, u64 end, u64 minlen)
{ {
struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl; struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl;
@@ -3276,7 +3275,7 @@ out:
return ret; return ret;
} }
static int trim_bitmaps(struct btrfs_block_group_cache *block_group, static int trim_bitmaps(struct btrfs_block_group *block_group,
u64 *total_trimmed, u64 start, u64 end, u64 minlen) u64 *total_trimmed, u64 start, u64 end, u64 minlen)
{ {
struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl; struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl;
@@ -3357,12 +3356,12 @@ next:
return ret; return ret;
} }
void btrfs_get_block_group_trimming(struct btrfs_block_group_cache *cache) void btrfs_get_block_group_trimming(struct btrfs_block_group *cache)
{ {
atomic_inc(&cache->trimming); atomic_inc(&cache->trimming);
} }
void btrfs_put_block_group_trimming(struct btrfs_block_group_cache *block_group) void btrfs_put_block_group_trimming(struct btrfs_block_group *block_group)
{ {
struct btrfs_fs_info *fs_info = block_group->fs_info; struct btrfs_fs_info *fs_info = block_group->fs_info;
struct extent_map_tree *em_tree; struct extent_map_tree *em_tree;
@@ -3397,7 +3396,7 @@ void btrfs_put_block_group_trimming(struct btrfs_block_group_cache *block_group)
} }
} }
int btrfs_trim_block_group(struct btrfs_block_group_cache *block_group, int btrfs_trim_block_group(struct btrfs_block_group *block_group,
u64 *trimmed, u64 start, u64 end, u64 minlen) u64 *trimmed, u64 start, u64 end, u64 minlen)
{ {
int ret; int ret;
@@ -3595,7 +3594,7 @@ int btrfs_write_out_ino_cache(struct btrfs_root *root,
* how the free space cache loading stuff works, so you can get really weird * how the free space cache loading stuff works, so you can get really weird
* configurations. * configurations.
*/ */
int test_add_free_space_entry(struct btrfs_block_group_cache *cache, int test_add_free_space_entry(struct btrfs_block_group *cache,
u64 offset, u64 bytes, bool bitmap) u64 offset, u64 bytes, bool bitmap)
{ {
struct btrfs_free_space_ctl *ctl = cache->free_space_ctl; struct btrfs_free_space_ctl *ctl = cache->free_space_ctl;
@@ -3663,7 +3662,7 @@ again:
* just used to check the absence of space, so if there is free space in the * just used to check the absence of space, so if there is free space in the
* range at all we will return 1. * range at all we will return 1.
*/ */
int test_check_exists(struct btrfs_block_group_cache *cache, int test_check_exists(struct btrfs_block_group *cache,
u64 offset, u64 bytes) u64 offset, u64 bytes)
{ {
struct btrfs_free_space_ctl *ctl = cache->free_space_ctl; struct btrfs_free_space_ctl *ctl = cache->free_space_ctl;

View File

@@ -50,24 +50,23 @@ struct btrfs_io_ctl {
unsigned check_crcs:1; unsigned check_crcs:1;
}; };
struct inode *lookup_free_space_inode( struct inode *lookup_free_space_inode(struct btrfs_block_group *block_group,
struct btrfs_block_group_cache *block_group,
struct btrfs_path *path); struct btrfs_path *path);
int create_free_space_inode(struct btrfs_trans_handle *trans, int create_free_space_inode(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path); struct btrfs_path *path);
int btrfs_check_trunc_cache_free_space(struct btrfs_fs_info *fs_info, int btrfs_check_trunc_cache_free_space(struct btrfs_fs_info *fs_info,
struct btrfs_block_rsv *rsv); struct btrfs_block_rsv *rsv);
int btrfs_truncate_free_space_cache(struct btrfs_trans_handle *trans, int btrfs_truncate_free_space_cache(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct inode *inode); struct inode *inode);
int load_free_space_cache(struct btrfs_block_group_cache *block_group); int load_free_space_cache(struct btrfs_block_group *block_group);
int btrfs_wait_cache_io(struct btrfs_trans_handle *trans, int btrfs_wait_cache_io(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path); struct btrfs_path *path);
int btrfs_write_out_cache(struct btrfs_trans_handle *trans, int btrfs_write_out_cache(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path); struct btrfs_path *path);
struct inode *lookup_free_ino_inode(struct btrfs_root *root, struct inode *lookup_free_ino_inode(struct btrfs_root *root,
struct btrfs_path *path); struct btrfs_path *path);
@@ -81,42 +80,40 @@ int btrfs_write_out_ino_cache(struct btrfs_root *root,
struct btrfs_path *path, struct btrfs_path *path,
struct inode *inode); struct inode *inode);
void btrfs_init_free_space_ctl(struct btrfs_block_group_cache *block_group); void btrfs_init_free_space_ctl(struct btrfs_block_group *block_group);
int __btrfs_add_free_space(struct btrfs_fs_info *fs_info, int __btrfs_add_free_space(struct btrfs_fs_info *fs_info,
struct btrfs_free_space_ctl *ctl, struct btrfs_free_space_ctl *ctl,
u64 bytenr, u64 size); u64 bytenr, u64 size);
int btrfs_add_free_space(struct btrfs_block_group_cache *block_group, int btrfs_add_free_space(struct btrfs_block_group *block_group,
u64 bytenr, u64 size); u64 bytenr, u64 size);
int btrfs_remove_free_space(struct btrfs_block_group_cache *block_group, int btrfs_remove_free_space(struct btrfs_block_group *block_group,
u64 bytenr, u64 size); u64 bytenr, u64 size);
void __btrfs_remove_free_space_cache(struct btrfs_free_space_ctl *ctl); void __btrfs_remove_free_space_cache(struct btrfs_free_space_ctl *ctl);
void btrfs_remove_free_space_cache(struct btrfs_block_group_cache void btrfs_remove_free_space_cache(struct btrfs_block_group *block_group);
*block_group); u64 btrfs_find_space_for_alloc(struct btrfs_block_group *block_group,
u64 btrfs_find_space_for_alloc(struct btrfs_block_group_cache *block_group,
u64 offset, u64 bytes, u64 empty_size, u64 offset, u64 bytes, u64 empty_size,
u64 *max_extent_size); u64 *max_extent_size);
u64 btrfs_find_ino_for_alloc(struct btrfs_root *fs_root); u64 btrfs_find_ino_for_alloc(struct btrfs_root *fs_root);
void btrfs_dump_free_space(struct btrfs_block_group_cache *block_group, void btrfs_dump_free_space(struct btrfs_block_group *block_group,
u64 bytes); u64 bytes);
int btrfs_find_space_cluster(struct btrfs_block_group_cache *block_group, int btrfs_find_space_cluster(struct btrfs_block_group *block_group,
struct btrfs_free_cluster *cluster, struct btrfs_free_cluster *cluster,
u64 offset, u64 bytes, u64 empty_size); u64 offset, u64 bytes, u64 empty_size);
void btrfs_init_free_cluster(struct btrfs_free_cluster *cluster); void btrfs_init_free_cluster(struct btrfs_free_cluster *cluster);
u64 btrfs_alloc_from_cluster(struct btrfs_block_group_cache *block_group, u64 btrfs_alloc_from_cluster(struct btrfs_block_group *block_group,
struct btrfs_free_cluster *cluster, u64 bytes, struct btrfs_free_cluster *cluster, u64 bytes,
u64 min_start, u64 *max_extent_size); u64 min_start, u64 *max_extent_size);
int btrfs_return_cluster_to_free_space( int btrfs_return_cluster_to_free_space(
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_free_cluster *cluster); struct btrfs_free_cluster *cluster);
int btrfs_trim_block_group(struct btrfs_block_group_cache *block_group, int btrfs_trim_block_group(struct btrfs_block_group *block_group,
u64 *trimmed, u64 start, u64 end, u64 minlen); u64 *trimmed, u64 start, u64 end, u64 minlen);
/* Support functions for running our sanity tests */ /* Support functions for running our sanity tests */
#ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
int test_add_free_space_entry(struct btrfs_block_group_cache *cache, int test_add_free_space_entry(struct btrfs_block_group *cache,
u64 offset, u64 bytes, bool bitmap); u64 offset, u64 bytes, bool bitmap);
int test_check_exists(struct btrfs_block_group_cache *cache, int test_check_exists(struct btrfs_block_group *cache, u64 offset, u64 bytes);
u64 offset, u64 bytes);
#endif #endif
#endif #endif

View File

@@ -13,10 +13,10 @@
#include "block-group.h" #include "block-group.h"
static int __add_block_group_free_space(struct btrfs_trans_handle *trans, static int __add_block_group_free_space(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path); struct btrfs_path *path);
void set_free_space_tree_thresholds(struct btrfs_block_group_cache *cache) void set_free_space_tree_thresholds(struct btrfs_block_group *cache)
{ {
u32 bitmap_range; u32 bitmap_range;
size_t bitmap_size; size_t bitmap_size;
@@ -44,7 +44,7 @@ void set_free_space_tree_thresholds(struct btrfs_block_group_cache *cache)
} }
static int add_new_free_space_info(struct btrfs_trans_handle *trans, static int add_new_free_space_info(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path) struct btrfs_path *path)
{ {
struct btrfs_root *root = trans->fs_info->free_space_root; struct btrfs_root *root = trans->fs_info->free_space_root;
@@ -77,7 +77,7 @@ out:
EXPORT_FOR_TESTS EXPORT_FOR_TESTS
struct btrfs_free_space_info *search_free_space_info( struct btrfs_free_space_info *search_free_space_info(
struct btrfs_trans_handle *trans, struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path, int cow) struct btrfs_path *path, int cow)
{ {
struct btrfs_fs_info *fs_info = block_group->fs_info; struct btrfs_fs_info *fs_info = block_group->fs_info;
@@ -179,7 +179,7 @@ static void le_bitmap_set(unsigned long *map, unsigned int start, int len)
EXPORT_FOR_TESTS EXPORT_FOR_TESTS
int convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans, int convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path) struct btrfs_path *path)
{ {
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
@@ -319,7 +319,7 @@ out:
EXPORT_FOR_TESTS EXPORT_FOR_TESTS
int convert_free_space_to_extents(struct btrfs_trans_handle *trans, int convert_free_space_to_extents(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path) struct btrfs_path *path)
{ {
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
@@ -452,7 +452,7 @@ out:
} }
static int update_free_space_extent_count(struct btrfs_trans_handle *trans, static int update_free_space_extent_count(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path, struct btrfs_path *path,
int new_extents) int new_extents)
{ {
@@ -490,7 +490,7 @@ out:
} }
EXPORT_FOR_TESTS EXPORT_FOR_TESTS
int free_space_test_bit(struct btrfs_block_group_cache *block_group, int free_space_test_bit(struct btrfs_block_group *block_group,
struct btrfs_path *path, u64 offset) struct btrfs_path *path, u64 offset)
{ {
struct extent_buffer *leaf; struct extent_buffer *leaf;
@@ -512,7 +512,7 @@ int free_space_test_bit(struct btrfs_block_group_cache *block_group,
return !!extent_buffer_test_bit(leaf, ptr, i); return !!extent_buffer_test_bit(leaf, ptr, i);
} }
static void free_space_set_bits(struct btrfs_block_group_cache *block_group, static void free_space_set_bits(struct btrfs_block_group *block_group,
struct btrfs_path *path, u64 *start, u64 *size, struct btrfs_path *path, u64 *start, u64 *size,
int bit) int bit)
{ {
@@ -580,7 +580,7 @@ static int free_space_next_bitmap(struct btrfs_trans_handle *trans,
* the bitmap. * the bitmap.
*/ */
static int modify_free_space_bitmap(struct btrfs_trans_handle *trans, static int modify_free_space_bitmap(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path, struct btrfs_path *path,
u64 start, u64 size, int remove) u64 start, u64 size, int remove)
{ {
@@ -693,7 +693,7 @@ out:
} }
static int remove_free_space_extent(struct btrfs_trans_handle *trans, static int remove_free_space_extent(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path, struct btrfs_path *path,
u64 start, u64 size) u64 start, u64 size)
{ {
@@ -780,7 +780,7 @@ out:
EXPORT_FOR_TESTS EXPORT_FOR_TESTS
int __remove_from_free_space_tree(struct btrfs_trans_handle *trans, int __remove_from_free_space_tree(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path, u64 start, u64 size) struct btrfs_path *path, u64 start, u64 size)
{ {
struct btrfs_free_space_info *info; struct btrfs_free_space_info *info;
@@ -811,7 +811,7 @@ int __remove_from_free_space_tree(struct btrfs_trans_handle *trans,
int remove_from_free_space_tree(struct btrfs_trans_handle *trans, int remove_from_free_space_tree(struct btrfs_trans_handle *trans,
u64 start, u64 size) u64 start, u64 size)
{ {
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
struct btrfs_path *path; struct btrfs_path *path;
int ret; int ret;
@@ -845,7 +845,7 @@ out:
} }
static int add_free_space_extent(struct btrfs_trans_handle *trans, static int add_free_space_extent(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path, struct btrfs_path *path,
u64 start, u64 size) u64 start, u64 size)
{ {
@@ -973,7 +973,7 @@ out:
EXPORT_FOR_TESTS EXPORT_FOR_TESTS
int __add_to_free_space_tree(struct btrfs_trans_handle *trans, int __add_to_free_space_tree(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path, u64 start, u64 size) struct btrfs_path *path, u64 start, u64 size)
{ {
struct btrfs_free_space_info *info; struct btrfs_free_space_info *info;
@@ -1004,7 +1004,7 @@ int __add_to_free_space_tree(struct btrfs_trans_handle *trans,
int add_to_free_space_tree(struct btrfs_trans_handle *trans, int add_to_free_space_tree(struct btrfs_trans_handle *trans,
u64 start, u64 size) u64 start, u64 size)
{ {
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
struct btrfs_path *path; struct btrfs_path *path;
int ret; int ret;
@@ -1042,7 +1042,7 @@ out:
* through the normal add/remove hooks. * through the normal add/remove hooks.
*/ */
static int populate_free_space_tree(struct btrfs_trans_handle *trans, static int populate_free_space_tree(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group) struct btrfs_block_group *block_group)
{ {
struct btrfs_root *extent_root = trans->fs_info->extent_root; struct btrfs_root *extent_root = trans->fs_info->extent_root;
struct btrfs_path *path, *path2; struct btrfs_path *path, *path2;
@@ -1139,7 +1139,7 @@ int btrfs_create_free_space_tree(struct btrfs_fs_info *fs_info)
struct btrfs_trans_handle *trans; struct btrfs_trans_handle *trans;
struct btrfs_root *tree_root = fs_info->tree_root; struct btrfs_root *tree_root = fs_info->tree_root;
struct btrfs_root *free_space_root; struct btrfs_root *free_space_root;
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
struct rb_node *node; struct rb_node *node;
int ret; int ret;
@@ -1158,7 +1158,7 @@ int btrfs_create_free_space_tree(struct btrfs_fs_info *fs_info)
node = rb_first(&fs_info->block_group_cache_tree); node = rb_first(&fs_info->block_group_cache_tree);
while (node) { while (node) {
block_group = rb_entry(node, struct btrfs_block_group_cache, block_group = rb_entry(node, struct btrfs_block_group,
cache_node); cache_node);
ret = populate_free_space_tree(trans, block_group); ret = populate_free_space_tree(trans, block_group);
if (ret) if (ret)
@@ -1264,7 +1264,7 @@ abort:
} }
static int __add_block_group_free_space(struct btrfs_trans_handle *trans, static int __add_block_group_free_space(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path) struct btrfs_path *path)
{ {
int ret; int ret;
@@ -1281,7 +1281,7 @@ static int __add_block_group_free_space(struct btrfs_trans_handle *trans,
} }
int add_block_group_free_space(struct btrfs_trans_handle *trans, int add_block_group_free_space(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group) struct btrfs_block_group *block_group)
{ {
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
struct btrfs_path *path = NULL; struct btrfs_path *path = NULL;
@@ -1311,7 +1311,7 @@ out:
} }
int remove_block_group_free_space(struct btrfs_trans_handle *trans, int remove_block_group_free_space(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group) struct btrfs_block_group *block_group)
{ {
struct btrfs_root *root = trans->fs_info->free_space_root; struct btrfs_root *root = trans->fs_info->free_space_root;
struct btrfs_path *path; struct btrfs_path *path;
@@ -1390,7 +1390,7 @@ static int load_free_space_bitmaps(struct btrfs_caching_control *caching_ctl,
struct btrfs_path *path, struct btrfs_path *path,
u32 expected_extent_count) u32 expected_extent_count)
{ {
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
struct btrfs_fs_info *fs_info; struct btrfs_fs_info *fs_info;
struct btrfs_root *root; struct btrfs_root *root;
struct btrfs_key key; struct btrfs_key key;
@@ -1471,7 +1471,7 @@ static int load_free_space_extents(struct btrfs_caching_control *caching_ctl,
struct btrfs_path *path, struct btrfs_path *path,
u32 expected_extent_count) u32 expected_extent_count)
{ {
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
struct btrfs_fs_info *fs_info; struct btrfs_fs_info *fs_info;
struct btrfs_root *root; struct btrfs_root *root;
struct btrfs_key key; struct btrfs_key key;
@@ -1531,7 +1531,7 @@ out:
int load_free_space_tree(struct btrfs_caching_control *caching_ctl) int load_free_space_tree(struct btrfs_caching_control *caching_ctl)
{ {
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
struct btrfs_free_space_info *info; struct btrfs_free_space_info *info;
struct btrfs_path *path; struct btrfs_path *path;
u32 extent_count, flags; u32 extent_count, flags;

View File

@@ -16,14 +16,14 @@ struct btrfs_caching_control;
#define BTRFS_FREE_SPACE_BITMAP_SIZE 256 #define BTRFS_FREE_SPACE_BITMAP_SIZE 256
#define BTRFS_FREE_SPACE_BITMAP_BITS (BTRFS_FREE_SPACE_BITMAP_SIZE * BITS_PER_BYTE) #define BTRFS_FREE_SPACE_BITMAP_BITS (BTRFS_FREE_SPACE_BITMAP_SIZE * BITS_PER_BYTE)
void set_free_space_tree_thresholds(struct btrfs_block_group_cache *block_group); void set_free_space_tree_thresholds(struct btrfs_block_group *block_group);
int btrfs_create_free_space_tree(struct btrfs_fs_info *fs_info); int btrfs_create_free_space_tree(struct btrfs_fs_info *fs_info);
int btrfs_clear_free_space_tree(struct btrfs_fs_info *fs_info); int btrfs_clear_free_space_tree(struct btrfs_fs_info *fs_info);
int load_free_space_tree(struct btrfs_caching_control *caching_ctl); int load_free_space_tree(struct btrfs_caching_control *caching_ctl);
int add_block_group_free_space(struct btrfs_trans_handle *trans, int add_block_group_free_space(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group); struct btrfs_block_group *block_group);
int remove_block_group_free_space(struct btrfs_trans_handle *trans, int remove_block_group_free_space(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group); struct btrfs_block_group *block_group);
int add_to_free_space_tree(struct btrfs_trans_handle *trans, int add_to_free_space_tree(struct btrfs_trans_handle *trans,
u64 start, u64 size); u64 start, u64 size);
int remove_from_free_space_tree(struct btrfs_trans_handle *trans, int remove_from_free_space_tree(struct btrfs_trans_handle *trans,
@@ -32,21 +32,21 @@ int remove_from_free_space_tree(struct btrfs_trans_handle *trans,
#ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
struct btrfs_free_space_info * struct btrfs_free_space_info *
search_free_space_info(struct btrfs_trans_handle *trans, search_free_space_info(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path, int cow); struct btrfs_path *path, int cow);
int __add_to_free_space_tree(struct btrfs_trans_handle *trans, int __add_to_free_space_tree(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path, u64 start, u64 size); struct btrfs_path *path, u64 start, u64 size);
int __remove_from_free_space_tree(struct btrfs_trans_handle *trans, int __remove_from_free_space_tree(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path, u64 start, u64 size); struct btrfs_path *path, u64 start, u64 size);
int convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans, int convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path); struct btrfs_path *path);
int convert_free_space_to_extents(struct btrfs_trans_handle *trans, int convert_free_space_to_extents(struct btrfs_trans_handle *trans,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct btrfs_path *path); struct btrfs_path *path);
int free_space_test_bit(struct btrfs_block_group_cache *block_group, int free_space_test_bit(struct btrfs_block_group *block_group,
struct btrfs_path *path, u64 offset); struct btrfs_path *path, u64 offset);
#endif #endif

View File

@@ -3040,7 +3040,7 @@ out_kfree:
static void btrfs_release_delalloc_bytes(struct btrfs_fs_info *fs_info, static void btrfs_release_delalloc_bytes(struct btrfs_fs_info *fs_info,
u64 start, u64 len) u64 start, u64 len)
{ {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
cache = btrfs_lookup_block_group(fs_info, start); cache = btrfs_lookup_block_group(fs_info, start);
ASSERT(cache); ASSERT(cache);
@@ -10837,7 +10837,7 @@ static int btrfs_swap_activate(struct swap_info_struct *sis, struct file *file,
start = 0; start = 0;
while (start < isize) { while (start < isize) {
u64 logical_block_start, physical_block_start; u64 logical_block_start, physical_block_start;
struct btrfs_block_group_cache *bg; struct btrfs_block_group *bg;
u64 len = isize - start; u64 len = isize - start;
em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len, 0); em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, start, len, 0);

View File

@@ -4031,7 +4031,7 @@ out:
static void get_block_group_info(struct list_head *groups_list, static void get_block_group_info(struct list_head *groups_list,
struct btrfs_ioctl_space_info *space) struct btrfs_ioctl_space_info *space)
{ {
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
space->total_bytes = 0; space->total_bytes = 0;
space->used_bytes = 0; space->used_bytes = 0;

View File

@@ -3823,7 +3823,7 @@ out:
*/ */
int btrfs_qgroup_add_swapped_blocks(struct btrfs_trans_handle *trans, int btrfs_qgroup_add_swapped_blocks(struct btrfs_trans_handle *trans,
struct btrfs_root *subvol_root, struct btrfs_root *subvol_root,
struct btrfs_block_group_cache *bg, struct btrfs_block_group *bg,
struct extent_buffer *subvol_parent, int subvol_slot, struct extent_buffer *subvol_parent, int subvol_slot,
struct extent_buffer *reloc_parent, int reloc_slot, struct extent_buffer *reloc_parent, int reloc_slot,
u64 last_snapshot) u64 last_snapshot)

View File

@@ -408,7 +408,7 @@ void btrfs_qgroup_init_swapped_blocks(
void btrfs_qgroup_clean_swapped_blocks(struct btrfs_root *root); void btrfs_qgroup_clean_swapped_blocks(struct btrfs_root *root);
int btrfs_qgroup_add_swapped_blocks(struct btrfs_trans_handle *trans, int btrfs_qgroup_add_swapped_blocks(struct btrfs_trans_handle *trans,
struct btrfs_root *subvol_root, struct btrfs_root *subvol_root,
struct btrfs_block_group_cache *bg, struct btrfs_block_group *bg,
struct extent_buffer *subvol_parent, int subvol_slot, struct extent_buffer *subvol_parent, int subvol_slot,
struct extent_buffer *reloc_parent, int reloc_slot, struct extent_buffer *reloc_parent, int reloc_slot,
u64 last_snapshot); u64 last_snapshot);

View File

@@ -227,7 +227,7 @@ static struct reada_zone *reada_find_zone(struct btrfs_device *dev, u64 logical,
struct btrfs_fs_info *fs_info = dev->fs_info; struct btrfs_fs_info *fs_info = dev->fs_info;
int ret; int ret;
struct reada_zone *zone; struct reada_zone *zone;
struct btrfs_block_group_cache *cache = NULL; struct btrfs_block_group *cache = NULL;
u64 start; u64 start;
u64 end; u64 end;
int i; int i;

View File

@@ -147,7 +147,7 @@ struct file_extent_cluster {
struct reloc_control { struct reloc_control {
/* block group to relocate */ /* block group to relocate */
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
/* extent tree */ /* extent tree */
struct btrfs_root *extent_root; struct btrfs_root *extent_root;
/* inode for moving data */ /* inode for moving data */
@@ -1560,8 +1560,7 @@ again:
return NULL; return NULL;
} }
static int in_block_group(u64 bytenr, static int in_block_group(u64 bytenr, struct btrfs_block_group *block_group)
struct btrfs_block_group_cache *block_group)
{ {
if (bytenr >= block_group->start && if (bytenr >= block_group->start &&
bytenr < block_group->start + block_group->length) bytenr < block_group->start + block_group->length)
@@ -3544,7 +3543,7 @@ static int block_use_full_backref(struct reloc_control *rc,
} }
static int delete_block_group_cache(struct btrfs_fs_info *fs_info, static int delete_block_group_cache(struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *block_group, struct btrfs_block_group *block_group,
struct inode *inode, struct inode *inode,
u64 ino) u64 ino)
{ {
@@ -4219,7 +4218,7 @@ out:
*/ */
static noinline_for_stack static noinline_for_stack
struct inode *create_reloc_inode(struct btrfs_fs_info *fs_info, struct inode *create_reloc_inode(struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *group) struct btrfs_block_group *group)
{ {
struct inode *inode = NULL; struct inode *inode = NULL;
struct btrfs_trans_handle *trans; struct btrfs_trans_handle *trans;
@@ -4283,7 +4282,7 @@ static struct reloc_control *alloc_reloc_control(struct btrfs_fs_info *fs_info)
* Print the block group being relocated * Print the block group being relocated
*/ */
static void describe_relocation(struct btrfs_fs_info *fs_info, static void describe_relocation(struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *block_group) struct btrfs_block_group *block_group)
{ {
char buf[128] = {'\0'}; char buf[128] = {'\0'};
@@ -4299,7 +4298,7 @@ static void describe_relocation(struct btrfs_fs_info *fs_info,
*/ */
int btrfs_relocate_block_group(struct btrfs_fs_info *fs_info, u64 group_start) int btrfs_relocate_block_group(struct btrfs_fs_info *fs_info, u64 group_start)
{ {
struct btrfs_block_group_cache *bg; struct btrfs_block_group *bg;
struct btrfs_root *extent_root = fs_info->extent_root; struct btrfs_root *extent_root = fs_info->extent_root;
struct reloc_control *rc; struct reloc_control *rc;
struct inode *inode; struct inode *inode;

View File

@@ -389,8 +389,7 @@ static struct full_stripe_lock *search_full_stripe_lock(
* *
* Caller must ensure @cache is a RAID56 block group. * Caller must ensure @cache is a RAID56 block group.
*/ */
static u64 get_full_stripe_logical(struct btrfs_block_group_cache *cache, static u64 get_full_stripe_logical(struct btrfs_block_group *cache, u64 bytenr)
u64 bytenr)
{ {
u64 ret; u64 ret;
@@ -423,7 +422,7 @@ static u64 get_full_stripe_logical(struct btrfs_block_group_cache *cache,
static int lock_full_stripe(struct btrfs_fs_info *fs_info, u64 bytenr, static int lock_full_stripe(struct btrfs_fs_info *fs_info, u64 bytenr,
bool *locked_ret) bool *locked_ret)
{ {
struct btrfs_block_group_cache *bg_cache; struct btrfs_block_group *bg_cache;
struct btrfs_full_stripe_locks_tree *locks_root; struct btrfs_full_stripe_locks_tree *locks_root;
struct full_stripe_lock *existing; struct full_stripe_lock *existing;
u64 fstripe_start; u64 fstripe_start;
@@ -470,7 +469,7 @@ out:
static int unlock_full_stripe(struct btrfs_fs_info *fs_info, u64 bytenr, static int unlock_full_stripe(struct btrfs_fs_info *fs_info, u64 bytenr,
bool locked) bool locked)
{ {
struct btrfs_block_group_cache *bg_cache; struct btrfs_block_group *bg_cache;
struct btrfs_full_stripe_locks_tree *locks_root; struct btrfs_full_stripe_locks_tree *locks_root;
struct full_stripe_lock *fstripe_lock; struct full_stripe_lock *fstripe_lock;
u64 fstripe_start; u64 fstripe_start;
@@ -3417,7 +3416,7 @@ static noinline_for_stack int scrub_chunk(struct scrub_ctx *sctx,
struct btrfs_device *scrub_dev, struct btrfs_device *scrub_dev,
u64 chunk_offset, u64 length, u64 chunk_offset, u64 length,
u64 dev_offset, u64 dev_offset,
struct btrfs_block_group_cache *cache) struct btrfs_block_group *cache)
{ {
struct btrfs_fs_info *fs_info = sctx->fs_info; struct btrfs_fs_info *fs_info = sctx->fs_info;
struct extent_map_tree *map_tree = &fs_info->mapping_tree; struct extent_map_tree *map_tree = &fs_info->mapping_tree;
@@ -3481,7 +3480,7 @@ int scrub_enumerate_chunks(struct scrub_ctx *sctx,
struct extent_buffer *l; struct extent_buffer *l;
struct btrfs_key key; struct btrfs_key key;
struct btrfs_key found_key; struct btrfs_key found_key;
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
struct btrfs_dev_replace *dev_replace = &fs_info->dev_replace; struct btrfs_dev_replace *dev_replace = &fs_info->dev_replace;
path = btrfs_alloc_path(); path = btrfs_alloc_path();

View File

@@ -284,7 +284,7 @@ void btrfs_dump_space_info(struct btrfs_fs_info *fs_info,
struct btrfs_space_info *info, u64 bytes, struct btrfs_space_info *info, u64 bytes,
int dump_block_groups) int dump_block_groups)
{ {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
int index = 0; int index = 0;
spin_lock(&info->lock); spin_lock(&info->lock);

View File

@@ -397,7 +397,7 @@ static ssize_t raid_bytes_show(struct kobject *kobj,
{ {
struct btrfs_space_info *sinfo = to_space_info(kobj->parent); struct btrfs_space_info *sinfo = to_space_info(kobj->parent);
struct btrfs_block_group_cache *block_group; struct btrfs_block_group *block_group;
int index = btrfs_bg_flags_to_raid_index(to_raid_kobj(kobj)->flags); int index = btrfs_bg_flags_to_raid_index(to_raid_kobj(kobj)->flags);
u64 val = 0; u64 val = 0;
@@ -861,7 +861,7 @@ static void init_feature_attrs(void)
* Create a sysfs entry for a given block group type at path * Create a sysfs entry for a given block group type at path
* /sys/fs/btrfs/UUID/allocation/data/TYPE * /sys/fs/btrfs/UUID/allocation/data/TYPE
*/ */
void btrfs_sysfs_add_block_group_type(struct btrfs_block_group_cache *cache) void btrfs_sysfs_add_block_group_type(struct btrfs_block_group *cache)
{ {
struct btrfs_fs_info *fs_info = cache->fs_info; struct btrfs_fs_info *fs_info = cache->fs_info;
struct btrfs_space_info *space_info = cache->space_info; struct btrfs_space_info *space_info = cache->space_info;

View File

@@ -32,7 +32,7 @@ int __init btrfs_init_sysfs(void);
void __cold btrfs_exit_sysfs(void); void __cold btrfs_exit_sysfs(void);
int btrfs_sysfs_add_mounted(struct btrfs_fs_info *fs_info); int btrfs_sysfs_add_mounted(struct btrfs_fs_info *fs_info);
void btrfs_sysfs_remove_mounted(struct btrfs_fs_info *fs_info); void btrfs_sysfs_remove_mounted(struct btrfs_fs_info *fs_info);
void btrfs_sysfs_add_block_group_type(struct btrfs_block_group_cache *cache); void btrfs_sysfs_add_block_group_type(struct btrfs_block_group *cache);
int btrfs_sysfs_add_space_info_type(struct btrfs_fs_info *fs_info, int btrfs_sysfs_add_space_info_type(struct btrfs_fs_info *fs_info,
struct btrfs_space_info *space_info); struct btrfs_space_info *space_info);
void btrfs_sysfs_remove_space_info(struct btrfs_space_info *space_info); void btrfs_sysfs_remove_space_info(struct btrfs_space_info *space_info);

View File

@@ -202,11 +202,11 @@ void btrfs_free_dummy_root(struct btrfs_root *root)
kfree(root); kfree(root);
} }
struct btrfs_block_group_cache * struct btrfs_block_group *
btrfs_alloc_dummy_block_group(struct btrfs_fs_info *fs_info, btrfs_alloc_dummy_block_group(struct btrfs_fs_info *fs_info,
unsigned long length) unsigned long length)
{ {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
cache = kzalloc(sizeof(*cache), GFP_KERNEL); cache = kzalloc(sizeof(*cache), GFP_KERNEL);
if (!cache) if (!cache)
@@ -232,7 +232,7 @@ btrfs_alloc_dummy_block_group(struct btrfs_fs_info *fs_info,
return cache; return cache;
} }
void btrfs_free_dummy_block_group(struct btrfs_block_group_cache *cache) void btrfs_free_dummy_block_group(struct btrfs_block_group *cache)
{ {
if (!cache) if (!cache)
return; return;

View File

@@ -41,9 +41,9 @@ struct inode *btrfs_new_test_inode(void);
struct btrfs_fs_info *btrfs_alloc_dummy_fs_info(u32 nodesize, u32 sectorsize); struct btrfs_fs_info *btrfs_alloc_dummy_fs_info(u32 nodesize, u32 sectorsize);
void btrfs_free_dummy_fs_info(struct btrfs_fs_info *fs_info); void btrfs_free_dummy_fs_info(struct btrfs_fs_info *fs_info);
void btrfs_free_dummy_root(struct btrfs_root *root); void btrfs_free_dummy_root(struct btrfs_root *root);
struct btrfs_block_group_cache * struct btrfs_block_group *
btrfs_alloc_dummy_block_group(struct btrfs_fs_info *fs_info, unsigned long length); btrfs_alloc_dummy_block_group(struct btrfs_fs_info *fs_info, unsigned long length);
void btrfs_free_dummy_block_group(struct btrfs_block_group_cache *cache); void btrfs_free_dummy_block_group(struct btrfs_block_group *cache);
void btrfs_init_dummy_trans(struct btrfs_trans_handle *trans, void btrfs_init_dummy_trans(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info); struct btrfs_fs_info *fs_info);
#else #else

View File

@@ -17,7 +17,7 @@
* entry and remove space from either end and the middle, and make sure we can * entry and remove space from either end and the middle, and make sure we can
* remove space that covers adjacent extent entries. * remove space that covers adjacent extent entries.
*/ */
static int test_extents(struct btrfs_block_group_cache *cache) static int test_extents(struct btrfs_block_group *cache)
{ {
int ret = 0; int ret = 0;
@@ -87,8 +87,7 @@ static int test_extents(struct btrfs_block_group_cache *cache)
return 0; return 0;
} }
static int test_bitmaps(struct btrfs_block_group_cache *cache, static int test_bitmaps(struct btrfs_block_group *cache, u32 sectorsize)
u32 sectorsize)
{ {
u64 next_bitmap_offset; u64 next_bitmap_offset;
int ret; int ret;
@@ -156,7 +155,7 @@ static int test_bitmaps(struct btrfs_block_group_cache *cache,
} }
/* This is the high grade jackassery */ /* This is the high grade jackassery */
static int test_bitmaps_and_extents(struct btrfs_block_group_cache *cache, static int test_bitmaps_and_extents(struct btrfs_block_group *cache,
u32 sectorsize) u32 sectorsize)
{ {
u64 bitmap_offset = (u64)(BITS_PER_BITMAP * sectorsize); u64 bitmap_offset = (u64)(BITS_PER_BITMAP * sectorsize);
@@ -331,7 +330,7 @@ static bool test_use_bitmap(struct btrfs_free_space_ctl *ctl,
/* Used by test_steal_space_from_bitmap_to_extent(). */ /* Used by test_steal_space_from_bitmap_to_extent(). */
static int static int
check_num_extents_and_bitmaps(const struct btrfs_block_group_cache *cache, check_num_extents_and_bitmaps(const struct btrfs_block_group *cache,
const int num_extents, const int num_extents,
const int num_bitmaps) const int num_bitmaps)
{ {
@@ -351,7 +350,7 @@ check_num_extents_and_bitmaps(const struct btrfs_block_group_cache *cache,
} }
/* Used by test_steal_space_from_bitmap_to_extent(). */ /* Used by test_steal_space_from_bitmap_to_extent(). */
static int check_cache_empty(struct btrfs_block_group_cache *cache) static int check_cache_empty(struct btrfs_block_group *cache)
{ {
u64 offset; u64 offset;
u64 max_extent_size; u64 max_extent_size;
@@ -393,7 +392,7 @@ static int check_cache_empty(struct btrfs_block_group_cache *cache)
* requests. * requests.
*/ */
static int static int
test_steal_space_from_bitmap_to_extent(struct btrfs_block_group_cache *cache, test_steal_space_from_bitmap_to_extent(struct btrfs_block_group *cache,
u32 sectorsize) u32 sectorsize)
{ {
int ret; int ret;
@@ -829,7 +828,7 @@ test_steal_space_from_bitmap_to_extent(struct btrfs_block_group_cache *cache,
int btrfs_test_free_space_cache(u32 sectorsize, u32 nodesize) int btrfs_test_free_space_cache(u32 sectorsize, u32 nodesize)
{ {
struct btrfs_fs_info *fs_info; struct btrfs_fs_info *fs_info;
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
struct btrfs_root *root = NULL; struct btrfs_root *root = NULL;
int ret = -ENOMEM; int ret = -ENOMEM;

View File

@@ -18,7 +18,7 @@ struct free_space_extent {
static int __check_free_space_extents(struct btrfs_trans_handle *trans, static int __check_free_space_extents(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info, struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *cache, struct btrfs_block_group *cache,
struct btrfs_path *path, struct btrfs_path *path,
const struct free_space_extent * const extents, const struct free_space_extent * const extents,
unsigned int num_extents) unsigned int num_extents)
@@ -107,7 +107,7 @@ invalid:
static int check_free_space_extents(struct btrfs_trans_handle *trans, static int check_free_space_extents(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info, struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *cache, struct btrfs_block_group *cache,
struct btrfs_path *path, struct btrfs_path *path,
const struct free_space_extent * const extents, const struct free_space_extent * const extents,
unsigned int num_extents) unsigned int num_extents)
@@ -150,7 +150,7 @@ static int check_free_space_extents(struct btrfs_trans_handle *trans,
static int test_empty_block_group(struct btrfs_trans_handle *trans, static int test_empty_block_group(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info, struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *cache, struct btrfs_block_group *cache,
struct btrfs_path *path, struct btrfs_path *path,
u32 alignment) u32 alignment)
{ {
@@ -164,7 +164,7 @@ static int test_empty_block_group(struct btrfs_trans_handle *trans,
static int test_remove_all(struct btrfs_trans_handle *trans, static int test_remove_all(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info, struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *cache, struct btrfs_block_group *cache,
struct btrfs_path *path, struct btrfs_path *path,
u32 alignment) u32 alignment)
{ {
@@ -185,7 +185,7 @@ static int test_remove_all(struct btrfs_trans_handle *trans,
static int test_remove_beginning(struct btrfs_trans_handle *trans, static int test_remove_beginning(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info, struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *cache, struct btrfs_block_group *cache,
struct btrfs_path *path, struct btrfs_path *path,
u32 alignment) u32 alignment)
{ {
@@ -208,7 +208,7 @@ static int test_remove_beginning(struct btrfs_trans_handle *trans,
static int test_remove_end(struct btrfs_trans_handle *trans, static int test_remove_end(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info, struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *cache, struct btrfs_block_group *cache,
struct btrfs_path *path, struct btrfs_path *path,
u32 alignment) u32 alignment)
{ {
@@ -231,7 +231,7 @@ static int test_remove_end(struct btrfs_trans_handle *trans,
static int test_remove_middle(struct btrfs_trans_handle *trans, static int test_remove_middle(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info, struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *cache, struct btrfs_block_group *cache,
struct btrfs_path *path, struct btrfs_path *path,
u32 alignment) u32 alignment)
{ {
@@ -255,7 +255,7 @@ static int test_remove_middle(struct btrfs_trans_handle *trans,
static int test_merge_left(struct btrfs_trans_handle *trans, static int test_merge_left(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info, struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *cache, struct btrfs_block_group *cache,
struct btrfs_path *path, struct btrfs_path *path,
u32 alignment) u32 alignment)
{ {
@@ -292,7 +292,7 @@ static int test_merge_left(struct btrfs_trans_handle *trans,
static int test_merge_right(struct btrfs_trans_handle *trans, static int test_merge_right(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info, struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *cache, struct btrfs_block_group *cache,
struct btrfs_path *path, struct btrfs_path *path,
u32 alignment) u32 alignment)
{ {
@@ -330,7 +330,7 @@ static int test_merge_right(struct btrfs_trans_handle *trans,
static int test_merge_both(struct btrfs_trans_handle *trans, static int test_merge_both(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info, struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *cache, struct btrfs_block_group *cache,
struct btrfs_path *path, struct btrfs_path *path,
u32 alignment) u32 alignment)
{ {
@@ -373,7 +373,7 @@ static int test_merge_both(struct btrfs_trans_handle *trans,
static int test_merge_none(struct btrfs_trans_handle *trans, static int test_merge_none(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info, struct btrfs_fs_info *fs_info,
struct btrfs_block_group_cache *cache, struct btrfs_block_group *cache,
struct btrfs_path *path, struct btrfs_path *path,
u32 alignment) u32 alignment)
{ {
@@ -418,7 +418,7 @@ static int test_merge_none(struct btrfs_trans_handle *trans,
typedef int (*test_func_t)(struct btrfs_trans_handle *, typedef int (*test_func_t)(struct btrfs_trans_handle *,
struct btrfs_fs_info *, struct btrfs_fs_info *,
struct btrfs_block_group_cache *, struct btrfs_block_group *,
struct btrfs_path *, struct btrfs_path *,
u32 alignment); u32 alignment);
@@ -427,7 +427,7 @@ static int run_test(test_func_t test_func, int bitmaps, u32 sectorsize,
{ {
struct btrfs_fs_info *fs_info; struct btrfs_fs_info *fs_info;
struct btrfs_root *root = NULL; struct btrfs_root *root = NULL;
struct btrfs_block_group_cache *cache = NULL; struct btrfs_block_group *cache = NULL;
struct btrfs_trans_handle trans; struct btrfs_trans_handle trans;
struct btrfs_path *path = NULL; struct btrfs_path *path = NULL;
int ret; int ret;

View File

@@ -133,10 +133,10 @@ void btrfs_put_transaction(struct btrfs_transaction *transaction)
* discard the physical locations of the block groups. * discard the physical locations of the block groups.
*/ */
while (!list_empty(&transaction->deleted_bgs)) { while (!list_empty(&transaction->deleted_bgs)) {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
cache = list_first_entry(&transaction->deleted_bgs, cache = list_first_entry(&transaction->deleted_bgs,
struct btrfs_block_group_cache, struct btrfs_block_group,
bg_list); bg_list);
list_del_init(&cache->bg_list); list_del_init(&cache->bg_list);
btrfs_put_block_group_trimming(cache); btrfs_put_block_group_trimming(cache);
@@ -1937,7 +1937,7 @@ static void cleanup_transaction(struct btrfs_trans_handle *trans, int err)
static void btrfs_cleanup_pending_block_groups(struct btrfs_trans_handle *trans) static void btrfs_cleanup_pending_block_groups(struct btrfs_trans_handle *trans)
{ {
struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_fs_info *fs_info = trans->fs_info;
struct btrfs_block_group_cache *block_group, *tmp; struct btrfs_block_group *block_group, *tmp;
list_for_each_entry_safe(block_group, tmp, &trans->new_bgs, bg_list) { list_for_each_entry_safe(block_group, tmp, &trans->new_bgs, bg_list) {
btrfs_delayed_refs_rsv_release(fs_info, 1); btrfs_delayed_refs_rsv_release(fs_info, 1);

View File

@@ -2997,7 +2997,7 @@ error:
static int btrfs_may_alloc_data_chunk(struct btrfs_fs_info *fs_info, static int btrfs_may_alloc_data_chunk(struct btrfs_fs_info *fs_info,
u64 chunk_offset) u64 chunk_offset)
{ {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
u64 bytes_used; u64 bytes_used;
u64 chunk_type; u64 chunk_type;
@@ -3206,7 +3206,7 @@ static int chunk_profiles_filter(u64 chunk_type,
static int chunk_usage_range_filter(struct btrfs_fs_info *fs_info, u64 chunk_offset, static int chunk_usage_range_filter(struct btrfs_fs_info *fs_info, u64 chunk_offset,
struct btrfs_balance_args *bargs) struct btrfs_balance_args *bargs)
{ {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
u64 chunk_used; u64 chunk_used;
u64 user_thresh_min; u64 user_thresh_min;
u64 user_thresh_max; u64 user_thresh_max;
@@ -3239,7 +3239,7 @@ static int chunk_usage_range_filter(struct btrfs_fs_info *fs_info, u64 chunk_off
static int chunk_usage_filter(struct btrfs_fs_info *fs_info, static int chunk_usage_filter(struct btrfs_fs_info *fs_info,
u64 chunk_offset, struct btrfs_balance_args *bargs) u64 chunk_offset, struct btrfs_balance_args *bargs)
{ {
struct btrfs_block_group_cache *cache; struct btrfs_block_group *cache;
u64 chunk_used, user_thresh; u64 chunk_used, user_thresh;
int ret = 1; int ret = 1;

View File

@@ -19,7 +19,7 @@ struct btrfs_delayed_ref_node;
struct btrfs_delayed_tree_ref; struct btrfs_delayed_tree_ref;
struct btrfs_delayed_data_ref; struct btrfs_delayed_data_ref;
struct btrfs_delayed_ref_head; struct btrfs_delayed_ref_head;
struct btrfs_block_group_cache; struct btrfs_block_group;
struct btrfs_free_cluster; struct btrfs_free_cluster;
struct map_lookup; struct map_lookup;
struct extent_buffer; struct extent_buffer;
@@ -699,7 +699,7 @@ TRACE_EVENT(btrfs_sync_fs,
TRACE_EVENT(btrfs_add_block_group, TRACE_EVENT(btrfs_add_block_group,
TP_PROTO(const struct btrfs_fs_info *fs_info, TP_PROTO(const struct btrfs_fs_info *fs_info,
const struct btrfs_block_group_cache *block_group, int create), const struct btrfs_block_group *block_group, int create),
TP_ARGS(fs_info, block_group, create), TP_ARGS(fs_info, block_group, create),
@@ -1184,7 +1184,7 @@ TRACE_EVENT(find_free_extent,
DECLARE_EVENT_CLASS(btrfs__reserve_extent, DECLARE_EVENT_CLASS(btrfs__reserve_extent,
TP_PROTO(const struct btrfs_block_group_cache *block_group, u64 start, TP_PROTO(const struct btrfs_block_group *block_group, u64 start,
u64 len), u64 len),
TP_ARGS(block_group, start, len), TP_ARGS(block_group, start, len),
@@ -1214,7 +1214,7 @@ DECLARE_EVENT_CLASS(btrfs__reserve_extent,
DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent, DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent,
TP_PROTO(const struct btrfs_block_group_cache *block_group, u64 start, TP_PROTO(const struct btrfs_block_group *block_group, u64 start,
u64 len), u64 len),
TP_ARGS(block_group, start, len) TP_ARGS(block_group, start, len)
@@ -1222,7 +1222,7 @@ DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent,
DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent_cluster, DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent_cluster,
TP_PROTO(const struct btrfs_block_group_cache *block_group, u64 start, TP_PROTO(const struct btrfs_block_group *block_group, u64 start,
u64 len), u64 len),
TP_ARGS(block_group, start, len) TP_ARGS(block_group, start, len)
@@ -1230,7 +1230,7 @@ DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent_cluster,
TRACE_EVENT(btrfs_find_cluster, TRACE_EVENT(btrfs_find_cluster,
TP_PROTO(const struct btrfs_block_group_cache *block_group, u64 start, TP_PROTO(const struct btrfs_block_group *block_group, u64 start,
u64 bytes, u64 empty_size, u64 min_bytes), u64 bytes, u64 empty_size, u64 min_bytes),
TP_ARGS(block_group, start, bytes, empty_size, min_bytes), TP_ARGS(block_group, start, bytes, empty_size, min_bytes),
@@ -1263,7 +1263,7 @@ TRACE_EVENT(btrfs_find_cluster,
TRACE_EVENT(btrfs_failed_cluster_setup, TRACE_EVENT(btrfs_failed_cluster_setup,
TP_PROTO(const struct btrfs_block_group_cache *block_group), TP_PROTO(const struct btrfs_block_group *block_group),
TP_ARGS(block_group), TP_ARGS(block_group),
@@ -1280,7 +1280,7 @@ TRACE_EVENT(btrfs_failed_cluster_setup,
TRACE_EVENT(btrfs_setup_cluster, TRACE_EVENT(btrfs_setup_cluster,
TP_PROTO(const struct btrfs_block_group_cache *block_group, TP_PROTO(const struct btrfs_block_group *block_group,
const struct btrfs_free_cluster *cluster, const struct btrfs_free_cluster *cluster,
u64 size, int bitmap), u64 size, int bitmap),
@@ -1844,7 +1844,7 @@ TRACE_EVENT(btrfs_inode_mod_outstanding_extents,
); );
DECLARE_EVENT_CLASS(btrfs__block_group, DECLARE_EVENT_CLASS(btrfs__block_group,
TP_PROTO(const struct btrfs_block_group_cache *bg_cache), TP_PROTO(const struct btrfs_block_group *bg_cache),
TP_ARGS(bg_cache), TP_ARGS(bg_cache),
@@ -1868,19 +1868,19 @@ DECLARE_EVENT_CLASS(btrfs__block_group,
); );
DEFINE_EVENT(btrfs__block_group, btrfs_remove_block_group, DEFINE_EVENT(btrfs__block_group, btrfs_remove_block_group,
TP_PROTO(const struct btrfs_block_group_cache *bg_cache), TP_PROTO(const struct btrfs_block_group *bg_cache),
TP_ARGS(bg_cache) TP_ARGS(bg_cache)
); );
DEFINE_EVENT(btrfs__block_group, btrfs_add_unused_block_group, DEFINE_EVENT(btrfs__block_group, btrfs_add_unused_block_group,
TP_PROTO(const struct btrfs_block_group_cache *bg_cache), TP_PROTO(const struct btrfs_block_group *bg_cache),
TP_ARGS(bg_cache) TP_ARGS(bg_cache)
); );
DEFINE_EVENT(btrfs__block_group, btrfs_skip_unused_block_group, DEFINE_EVENT(btrfs__block_group, btrfs_skip_unused_block_group,
TP_PROTO(const struct btrfs_block_group_cache *bg_cache), TP_PROTO(const struct btrfs_block_group *bg_cache),
TP_ARGS(bg_cache) TP_ARGS(bg_cache)
); );