Message ID | 20220302164829.17524-4-gniebler@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs: Introduce macro to iterate over slots | expand |
On Wed, Mar 02, 2022 at 05:48:18PM +0100, Gabriel Niebler wrote: > This function can be simplified by refactoring to use the new iterator macro. > > No functional changes. > > Signed-off-by: Marcos Paulo de Souza <mpdesouza@suse.com> > Signed-off-by: Gabriel Niebler <gniebler@suse.com> > --- > fs/btrfs/dev-replace.c | 41 ++++++++--------------------------------- > 1 file changed, 8 insertions(+), 33 deletions(-) > > diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c > index 62b9651ea662..3357739f427f 100644 > --- a/fs/btrfs/dev-replace.c > +++ b/fs/btrfs/dev-replace.c > @@ -470,6 +470,7 @@ static int mark_block_group_to_copy(struct btrfs_fs_info *fs_info, > struct btrfs_dev_extent *dev_extent = NULL; > struct btrfs_block_group *cache; > struct btrfs_trans_handle *trans; > + int iter_ret = 0; > int ret = 0; > u64 chunk_offset; > > @@ -520,29 +521,8 @@ static int mark_block_group_to_copy(struct btrfs_fs_info *fs_info, > key.type = BTRFS_DEV_EXTENT_KEY; > key.offset = 0; > > - ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); > - if (ret < 0) > - goto free_path; > - if (ret > 0) { > - if (path->slots[0] >= > - btrfs_header_nritems(path->nodes[0])) { > - ret = btrfs_next_leaf(root, path); > - if (ret < 0) > - goto free_path; > - if (ret > 0) { > - ret = 0; > - goto free_path; > - } > - } else { > - ret = 0; > - } > - } > - > - while (1) { > + btrfs_for_each_slot(root, &key, &found_key, path, iter_ret) { > struct extent_buffer *leaf = path->nodes[0]; > - int slot = path->slots[0]; > - > - btrfs_item_key_to_cpu(leaf, &found_key, slot); > > if (found_key.objectid != src_dev->devid) > break; > @@ -553,30 +533,25 @@ static int mark_block_group_to_copy(struct btrfs_fs_info *fs_info, > if (found_key.offset < key.offset) > break; > > - dev_extent = btrfs_item_ptr(leaf, slot, struct btrfs_dev_extent); > + dev_extent = btrfs_item_ptr(leaf, path->slots[0], > + struct btrfs_dev_extent); > > chunk_offset = btrfs_dev_extent_chunk_offset(leaf, dev_extent); > > cache = btrfs_lookup_block_group(fs_info, chunk_offset); > if (!cache) > - goto skip; > + continue; > > spin_lock(&cache->lock); > cache->to_copy = 1; > spin_unlock(&cache->lock); > > btrfs_put_block_group(cache); > - > -skip: > - ret = btrfs_next_item(root, path); > - if (ret != 0) { > - if (ret > 0) > - ret = 0; > - break; > - } > + } > + if (iter_ret < 0) { > + ret = iter_ret; > } No { } around single statement conditions 'if'
diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c index 62b9651ea662..3357739f427f 100644 --- a/fs/btrfs/dev-replace.c +++ b/fs/btrfs/dev-replace.c @@ -470,6 +470,7 @@ static int mark_block_group_to_copy(struct btrfs_fs_info *fs_info, struct btrfs_dev_extent *dev_extent = NULL; struct btrfs_block_group *cache; struct btrfs_trans_handle *trans; + int iter_ret = 0; int ret = 0; u64 chunk_offset; @@ -520,29 +521,8 @@ static int mark_block_group_to_copy(struct btrfs_fs_info *fs_info, key.type = BTRFS_DEV_EXTENT_KEY; key.offset = 0; - ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); - if (ret < 0) - goto free_path; - if (ret > 0) { - if (path->slots[0] >= - btrfs_header_nritems(path->nodes[0])) { - ret = btrfs_next_leaf(root, path); - if (ret < 0) - goto free_path; - if (ret > 0) { - ret = 0; - goto free_path; - } - } else { - ret = 0; - } - } - - while (1) { + btrfs_for_each_slot(root, &key, &found_key, path, iter_ret) { struct extent_buffer *leaf = path->nodes[0]; - int slot = path->slots[0]; - - btrfs_item_key_to_cpu(leaf, &found_key, slot); if (found_key.objectid != src_dev->devid) break; @@ -553,30 +533,25 @@ static int mark_block_group_to_copy(struct btrfs_fs_info *fs_info, if (found_key.offset < key.offset) break; - dev_extent = btrfs_item_ptr(leaf, slot, struct btrfs_dev_extent); + dev_extent = btrfs_item_ptr(leaf, path->slots[0], + struct btrfs_dev_extent); chunk_offset = btrfs_dev_extent_chunk_offset(leaf, dev_extent); cache = btrfs_lookup_block_group(fs_info, chunk_offset); if (!cache) - goto skip; + continue; spin_lock(&cache->lock); cache->to_copy = 1; spin_unlock(&cache->lock); btrfs_put_block_group(cache); - -skip: - ret = btrfs_next_item(root, path); - if (ret != 0) { - if (ret > 0) - ret = 0; - break; - } + } + if (iter_ret < 0) { + ret = iter_ret; } -free_path: btrfs_free_path(path); unlock: mutex_unlock(&fs_info->chunk_mutex);