mirror of
https://github.com/kdave/btrfs-progs
synced 2024-12-26 08:02:21 +00:00
btrfs-progs: check: pass a template to add_extent_rec_nolookup
Reduce number of parameters that just fill the extent_record from a temporary template that's supposed to be zeroed and filled by the callers. Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
b70aa412d7
commit
a087884799
99
cmds-check.c
99
cmds-check.c
@ -4509,11 +4509,13 @@ static void check_extent_type(struct extent_record *rec)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Allocate a new extent record, fill default values from @tmpl and insert int
|
||||||
|
* @extent_cache. Caller is supposed to make sure the [start,nr) is not in
|
||||||
|
* the cache, otherwise it fails.
|
||||||
|
*/
|
||||||
static int add_extent_rec_nolookup(struct cache_tree *extent_cache,
|
static int add_extent_rec_nolookup(struct cache_tree *extent_cache,
|
||||||
struct btrfs_key *parent_key, u64 parent_gen,
|
struct extent_record *tmpl)
|
||||||
u64 start, u64 nr, u64 extent_item_refs,
|
|
||||||
int is_root, int inc_ref, int set_checked,
|
|
||||||
int metadata, int extent_rec, u64 max_size)
|
|
||||||
{
|
{
|
||||||
struct extent_record *rec;
|
struct extent_record *rec;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@ -4521,14 +4523,14 @@ static int add_extent_rec_nolookup(struct cache_tree *extent_cache,
|
|||||||
rec = malloc(sizeof(*rec));
|
rec = malloc(sizeof(*rec));
|
||||||
if (!rec)
|
if (!rec)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
rec->start = start;
|
rec->start = tmpl->start;
|
||||||
rec->max_size = max_size;
|
rec->max_size = tmpl->max_size;
|
||||||
rec->nr = max(nr, max_size);
|
rec->nr = max(tmpl->nr, tmpl->max_size);
|
||||||
rec->found_rec = !!extent_rec;
|
rec->found_rec = tmpl->found_rec;
|
||||||
rec->content_checked = 0;
|
rec->content_checked = tmpl->content_checked;
|
||||||
rec->owner_ref_checked = 0;
|
rec->owner_ref_checked = tmpl->owner_ref_checked;
|
||||||
rec->num_duplicates = 0;
|
rec->num_duplicates = 0;
|
||||||
rec->metadata = metadata;
|
rec->metadata = tmpl->metadata;
|
||||||
rec->flag_block_full_backref = -1;
|
rec->flag_block_full_backref = -1;
|
||||||
rec->bad_full_backref = 0;
|
rec->bad_full_backref = 0;
|
||||||
rec->crossing_stripes = 0;
|
rec->crossing_stripes = 0;
|
||||||
@ -4537,42 +4539,32 @@ static int add_extent_rec_nolookup(struct cache_tree *extent_cache,
|
|||||||
INIT_LIST_HEAD(&rec->dups);
|
INIT_LIST_HEAD(&rec->dups);
|
||||||
INIT_LIST_HEAD(&rec->list);
|
INIT_LIST_HEAD(&rec->list);
|
||||||
|
|
||||||
if (is_root)
|
if (tmpl->is_root)
|
||||||
rec->is_root = 1;
|
rec->is_root = 1;
|
||||||
else
|
else
|
||||||
rec->is_root = 0;
|
rec->is_root = 0;
|
||||||
|
|
||||||
if (inc_ref)
|
rec->refs = tmpl->refs;
|
||||||
rec->refs = 1;
|
|
||||||
else
|
|
||||||
rec->refs = 0;
|
|
||||||
|
|
||||||
if (extent_item_refs)
|
if (tmpl->extent_item_refs)
|
||||||
rec->extent_item_refs = extent_item_refs;
|
rec->extent_item_refs = tmpl->extent_item_refs;
|
||||||
else
|
else
|
||||||
rec->extent_item_refs = 0;
|
rec->extent_item_refs = 0;
|
||||||
|
|
||||||
if (parent_key)
|
memcpy(&rec->parent_key, &tmpl->parent_key, sizeof(tmpl->parent_key));
|
||||||
btrfs_cpu_key_to_disk(&rec->parent_key, parent_key);
|
|
||||||
else
|
|
||||||
memset(&rec->parent_key, 0, sizeof(*parent_key));
|
|
||||||
|
|
||||||
if (parent_gen)
|
if (tmpl->parent_generation)
|
||||||
rec->parent_generation = parent_gen;
|
rec->parent_generation = tmpl->parent_generation;
|
||||||
else
|
else
|
||||||
rec->parent_generation = 0;
|
rec->parent_generation = 0;
|
||||||
|
|
||||||
rec->cache.start = start;
|
rec->cache.start = tmpl->start;
|
||||||
rec->cache.size = nr;
|
rec->cache.size = tmpl->nr;
|
||||||
ret = insert_cache_extent(extent_cache, &rec->cache);
|
ret = insert_cache_extent(extent_cache, &rec->cache);
|
||||||
BUG_ON(ret);
|
BUG_ON(ret);
|
||||||
bytes_used += nr;
|
bytes_used += tmpl->nr;
|
||||||
if (set_checked) {
|
|
||||||
rec->content_checked = 1;
|
|
||||||
rec->owner_ref_checked = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (metadata)
|
if (tmpl->metadata)
|
||||||
rec->crossing_stripes = check_crossing_stripes(rec->start,
|
rec->crossing_stripes = check_crossing_stripes(rec->start,
|
||||||
rec->max_size);
|
rec->max_size);
|
||||||
check_extent_type(rec);
|
check_extent_type(rec);
|
||||||
@ -4587,6 +4579,7 @@ static int add_extent_rec(struct cache_tree *extent_cache,
|
|||||||
{
|
{
|
||||||
struct extent_record *rec;
|
struct extent_record *rec;
|
||||||
struct cache_extent *cache;
|
struct cache_extent *cache;
|
||||||
|
struct extent_record tmpl;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int dup = 0;
|
int dup = 0;
|
||||||
|
|
||||||
@ -4676,9 +4669,23 @@ static int add_extent_rec(struct cache_tree *extent_cache,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = add_extent_rec_nolookup(extent_cache, parent_key, parent_gen,
|
memset(&tmpl, 0, sizeof(tmpl));
|
||||||
start, nr, extent_item_refs, is_root, inc_ref,
|
|
||||||
set_checked, metadata, extent_rec, max_size);
|
if (parent_key)
|
||||||
|
btrfs_cpu_key_to_disk(&tmpl.parent_key, parent_key);
|
||||||
|
tmpl.parent_generation = parent_gen;
|
||||||
|
tmpl.start = start;
|
||||||
|
tmpl.nr = nr;
|
||||||
|
tmpl.extent_item_refs = extent_item_refs;
|
||||||
|
tmpl.is_root = is_root;
|
||||||
|
tmpl.metadata = metadata;
|
||||||
|
tmpl.found_rec = extent_rec;
|
||||||
|
tmpl.max_size = max_size;
|
||||||
|
tmpl.content_checked = set_checked;
|
||||||
|
tmpl.owner_ref_checked = set_checked;
|
||||||
|
tmpl.refs = !!inc_ref;
|
||||||
|
|
||||||
|
ret = add_extent_rec_nolookup(extent_cache, &tmpl);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -4692,8 +4699,15 @@ static int add_tree_backref(struct cache_tree *extent_cache, u64 bytenr,
|
|||||||
|
|
||||||
cache = lookup_cache_extent(extent_cache, bytenr, 1);
|
cache = lookup_cache_extent(extent_cache, bytenr, 1);
|
||||||
if (!cache) {
|
if (!cache) {
|
||||||
add_extent_rec_nolookup(extent_cache, NULL, 0, bytenr,
|
struct extent_record tmpl;
|
||||||
1, 0, 0, 0, 0, 1, 0, 0);
|
|
||||||
|
memset(&tmpl, 0, sizeof(tmpl));
|
||||||
|
tmpl.start = bytenr;
|
||||||
|
tmpl.nr = 1;
|
||||||
|
tmpl.metadata = 1;
|
||||||
|
|
||||||
|
add_extent_rec_nolookup(extent_cache, &tmpl);
|
||||||
|
|
||||||
cache = lookup_cache_extent(extent_cache, bytenr, 1);
|
cache = lookup_cache_extent(extent_cache, bytenr, 1);
|
||||||
if (!cache)
|
if (!cache)
|
||||||
abort();
|
abort();
|
||||||
@ -4744,8 +4758,15 @@ static int add_data_backref(struct cache_tree *extent_cache, u64 bytenr,
|
|||||||
|
|
||||||
cache = lookup_cache_extent(extent_cache, bytenr, 1);
|
cache = lookup_cache_extent(extent_cache, bytenr, 1);
|
||||||
if (!cache) {
|
if (!cache) {
|
||||||
add_extent_rec_nolookup(extent_cache, NULL, 0, bytenr, 1, 0, 0,
|
struct extent_record tmpl;
|
||||||
0, 0, 0, 0, max_size);
|
|
||||||
|
memset(&tmpl, 0, sizeof(tmpl));
|
||||||
|
tmpl.start = bytenr;
|
||||||
|
tmpl.nr = 1;
|
||||||
|
tmpl.max_size = max_size;
|
||||||
|
|
||||||
|
add_extent_rec_nolookup(extent_cache, &tmpl);
|
||||||
|
|
||||||
cache = lookup_cache_extent(extent_cache, bytenr, 1);
|
cache = lookup_cache_extent(extent_cache, bytenr, 1);
|
||||||
if (!cache)
|
if (!cache)
|
||||||
abort();
|
abort();
|
||||||
|
Loading…
Reference in New Issue
Block a user