diff options
Diffstat (limited to 'cmds-check.c')
-rw-r--r-- | cmds-check.c | 96 |
1 files changed, 42 insertions, 54 deletions
diff --git a/cmds-check.c b/cmds-check.c index faf48e6d..2a348397 100644 --- a/cmds-check.c +++ b/cmds-check.c @@ -268,7 +268,7 @@ static struct inode_record *get_inode_rec(struct cache_tree *inode_cache, struct inode_record *rec = NULL; int ret; - cache = find_cache_extent(inode_cache, ino, 1); + cache = lookup_cache_extent(inode_cache, ino, 1); if (cache) { node = container_of(cache, struct ptr_node, cache); rec = node->data; @@ -375,7 +375,7 @@ static void maybe_free_inode_rec(struct cache_tree *inode_cache, BUG_ON(rec->refs != 1); if (can_free_inode_rec(rec)) { - cache = find_cache_extent(inode_cache, rec->ino, 1); + cache = lookup_cache_extent(inode_cache, rec->ino, 1); node = container_of(cache, struct ptr_node, cache); BUG_ON(node->data != rec); remove_cache_extent(inode_cache, &node->cache); @@ -598,7 +598,7 @@ static int splice_shared_node(struct shared_node *src_node, src = &src_node->root_cache; dst = &dst_node->root_cache; again: - cache = find_first_cache_extent(src, 0); + cache = search_cache_extent(src, 0); while (cache) { node = container_of(cache, struct ptr_node, cache); rec = node->data; @@ -667,7 +667,7 @@ static struct shared_node *find_shared_node(struct cache_tree *shared, struct cache_extent *cache; struct shared_node *node; - cache = find_cache_extent(shared, bytenr, 1); + cache = lookup_cache_extent(shared, bytenr, 1); if (cache) { node = container_of(cache, struct shared_node, cache); return node; @@ -1355,7 +1355,7 @@ static int check_inode_recs(struct btrfs_root *root, } while (1) { - cache = find_first_cache_extent(inode_cache, 0); + cache = search_cache_extent(inode_cache, 0); if (!cache) break; node = container_of(cache, struct ptr_node, cache); @@ -1412,7 +1412,7 @@ static struct root_record *get_root_rec(struct cache_tree *root_cache, struct root_record *rec = NULL; int ret; - cache = find_cache_extent(root_cache, objectid, 1); + cache = lookup_cache_extent(root_cache, objectid, 1); if (cache) { rec = container_of(cache, struct root_record, cache); } else { @@ -1536,7 +1536,7 @@ static int merge_root_recs(struct btrfs_root *root, } while (1) { - cache = find_first_cache_extent(src_cache, 0); + cache = search_cache_extent(src_cache, 0); if (!cache) break; node = container_of(cache, struct ptr_node, cache); @@ -1586,7 +1586,7 @@ static int check_root_refs(struct btrfs_root *root, /* fixme: this can not detect circular references */ while (loop) { loop = 0; - cache = find_first_cache_extent(root_cache, 0); + cache = search_cache_extent(root_cache, 0); while (1) { if (!cache) break; @@ -1613,7 +1613,7 @@ static int check_root_refs(struct btrfs_root *root, } } - cache = find_first_cache_extent(root_cache, 0); + cache = search_cache_extent(root_cache, 0); while (1) { if (!cache) break; @@ -1989,14 +1989,14 @@ static int free_all_extent_backrefs(struct extent_record *rec) return 0; } -static void free_extent_cache(struct btrfs_fs_info *fs_info, - struct cache_tree *extent_cache) +static void free_extent_record_cache(struct btrfs_fs_info *fs_info, + struct cache_tree *extent_cache) { struct cache_extent *cache; struct extent_record *rec; while (1) { - cache = find_first_cache_extent(extent_cache, 0); + cache = first_cache_extent(extent_cache); if (!cache) break; rec = container_of(cache, struct extent_record, cache); @@ -2108,7 +2108,7 @@ static int record_bad_block_io(struct btrfs_fs_info *info, struct cache_extent *cache; struct btrfs_key key; - cache = find_cache_extent(extent_cache, start, len); + cache = lookup_cache_extent(extent_cache, start, len); if (!cache) return 0; @@ -2130,7 +2130,7 @@ static int check_block(struct btrfs_root *root, int ret = 1; int level; - cache = find_cache_extent(extent_cache, buf->start, buf->len); + cache = lookup_cache_extent(extent_cache, buf->start, buf->len); if (!cache) return 1; rec = container_of(cache, struct extent_record, cache); @@ -2293,7 +2293,7 @@ static int add_extent_rec(struct cache_tree *extent_cache, int ret = 0; int dup = 0; - cache = find_cache_extent(extent_cache, start, nr); + cache = lookup_cache_extent(extent_cache, start, nr); if (cache) { rec = container_of(cache, struct extent_record, cache); if (inc_ref) @@ -2418,11 +2418,11 @@ static int add_tree_backref(struct cache_tree *extent_cache, u64 bytenr, struct tree_backref *back; struct cache_extent *cache; - cache = find_cache_extent(extent_cache, bytenr, 1); + cache = lookup_cache_extent(extent_cache, bytenr, 1); if (!cache) { add_extent_rec(extent_cache, NULL, bytenr, 1, 0, 0, 0, 0, 1, 0, 0); - cache = find_cache_extent(extent_cache, bytenr, 1); + cache = lookup_cache_extent(extent_cache, bytenr, 1); if (!cache) abort(); } @@ -2466,11 +2466,11 @@ static int add_data_backref(struct cache_tree *extent_cache, u64 bytenr, struct data_backref *back; struct cache_extent *cache; - cache = find_cache_extent(extent_cache, bytenr, 1); + cache = lookup_cache_extent(extent_cache, bytenr, 1); if (!cache) { add_extent_rec(extent_cache, NULL, bytenr, 1, 0, 0, 0, 0, 0, 0, max_size); - cache = find_cache_extent(extent_cache, bytenr, 1); + cache = lookup_cache_extent(extent_cache, bytenr, 1); if (!cache) abort(); } @@ -2545,7 +2545,7 @@ static int pick_next_pending(struct cache_tree *pending, struct cache_extent *cache; int ret; - cache = find_first_cache_extent(reada, 0); + cache = search_cache_extent(reada, 0); if (cache) { bits[0].start = cache->start; bits[1].size = cache->size; @@ -2556,12 +2556,12 @@ static int pick_next_pending(struct cache_tree *pending, if (node_start > 32768) node_start -= 32768; - cache = find_first_cache_extent(nodes, node_start); + cache = search_cache_extent(nodes, node_start); if (!cache) - cache = find_first_cache_extent(nodes, 0); + cache = search_cache_extent(nodes, 0); if (!cache) { - cache = find_first_cache_extent(pending, 0); + cache = search_cache_extent(pending, 0); if (!cache) return 0; ret = 0; @@ -2585,7 +2585,7 @@ static int pick_next_pending(struct cache_tree *pending, if (bits_nr - ret > 8) { u64 lookup = bits[0].start + bits[0].size; struct cache_extent *next; - next = find_first_cache_extent(pending, lookup); + next = search_cache_extent(pending, lookup); while(next) { if (next->start - lookup > 32768) break; @@ -3182,17 +3182,17 @@ static int run_next_block(struct btrfs_root *root, bytenr = bits[0].start; size = bits[0].size; - cache = find_cache_extent(pending, bytenr, size); + cache = lookup_cache_extent(pending, bytenr, size); if (cache) { remove_cache_extent(pending, cache); free(cache); } - cache = find_cache_extent(reada, bytenr, size); + cache = lookup_cache_extent(reada, bytenr, size); if (cache) { remove_cache_extent(reada, cache); free(cache); } - cache = find_cache_extent(nodes, bytenr, size); + cache = lookup_cache_extent(nodes, bytenr, size); if (cache) { remove_cache_extent(nodes, cache); free(cache); @@ -3400,7 +3400,7 @@ static int free_extent_hook(struct btrfs_trans_handle *trans, struct cache_tree *extent_cache = root->fs_info->fsck_extent_cache; is_data = owner >= BTRFS_FIRST_FREE_OBJECTID; - cache = find_cache_extent(extent_cache, bytenr, num_bytes); + cache = lookup_cache_extent(extent_cache, bytenr, num_bytes); if (!cache) return 0; @@ -4070,8 +4070,8 @@ static int process_duplicates(struct btrfs_root *root, good->refs = rec->refs; list_splice_init(&rec->backrefs, &good->backrefs); while (1) { - cache = find_cache_extent(extent_cache, good->start, - good->nr); + cache = lookup_cache_extent(extent_cache, good->start, + good->nr); if (!cache) break; tmp = container_of(cache, struct extent_record, cache); @@ -4244,7 +4244,8 @@ static int fixup_extent_refs(struct btrfs_trans_handle *trans, goto out; /* was this block corrupt? If so, don't add references to it */ - cache = find_cache_extent(info->corrupt_blocks, rec->start, rec->max_size); + cache = lookup_cache_extent(info->corrupt_blocks, + rec->start, rec->max_size); if (cache) { ret = 0; goto out; @@ -4348,7 +4349,7 @@ static int prune_corrupt_blocks(struct btrfs_trans_handle *trans, struct cache_extent *cache; struct btrfs_corrupt_block *corrupt; - cache = find_first_cache_extent(info->corrupt_blocks, 0); + cache = search_cache_extent(info->corrupt_blocks, 0); while (1) { if (!cache) break; @@ -4407,7 +4408,7 @@ static int check_block_groups(struct btrfs_trans_handle *trans, /* this isn't quite working */ return 0; - ce = find_first_cache_extent(&map_tree->cache_tree, 0); + ce = search_cache_extent(&map_tree->cache_tree, 0); while (1) { if (!ce) break; @@ -4463,7 +4464,7 @@ static int check_extent_refs(struct btrfs_trans_handle *trans, * In the worst case, this will be all the * extents in the FS */ - cache = find_first_cache_extent(extent_cache, 0); + cache = search_cache_extent(extent_cache, 0); while(cache) { rec = container_of(cache, struct extent_record, cache); btrfs_pin_extent(root->fs_info, @@ -4472,7 +4473,7 @@ static int check_extent_refs(struct btrfs_trans_handle *trans, } /* pin down all the corrupted blocks too */ - cache = find_first_cache_extent(root->fs_info->corrupt_blocks, 0); + cache = search_cache_extent(root->fs_info->corrupt_blocks, 0); while(cache) { rec = container_of(cache, struct extent_record, cache); btrfs_pin_extent(root->fs_info, @@ -4522,7 +4523,7 @@ static int check_extent_refs(struct btrfs_trans_handle *trans, while(1) { fixed = 0; - cache = find_first_cache_extent(extent_cache, 0); + cache = search_cache_extent(extent_cache, 0); if (!cache) break; rec = container_of(cache, struct extent_record, cache); @@ -4594,19 +4595,6 @@ repair_abort: return err; } -static void free_cache_tree(struct cache_tree *tree) -{ - struct cache_extent *cache; - - while (1) { - cache = find_first_cache_extent(tree, 0); - if (!cache) - break; - remove_cache_extent(tree, cache); - free(cache); - } -} - static int check_extents(struct btrfs_root *root, int repair) { struct cache_tree extent_cache; @@ -4716,11 +4704,11 @@ again: } free_corrupt_blocks_tree(root->fs_info->corrupt_blocks); - free_cache_tree(&seen); - free_cache_tree(&pending); - free_cache_tree(&reada); - free_cache_tree(&nodes); - free_extent_cache(root->fs_info, &extent_cache); + free_extent_cache_tree(&seen); + free_extent_cache_tree(&pending); + free_extent_cache_tree(&reada); + free_extent_cache_tree(&nodes); + free_extent_record_cache(root->fs_info, &extent_cache); goto again; } |