extent_item_objectid);
if (!search_commit_root) {
- trans = btrfs_attach_transaction(fs_info->extent_root);
- if (IS_ERR(trans)) {
- if (PTR_ERR(trans) != -ENOENT &&
- PTR_ERR(trans) != -EROFS)
- return PTR_ERR(trans);
- trans = NULL;
- }
- }
-
- if (trans)
+ trans = btrfs_join_transaction(fs_info->extent_root);
+ if (IS_ERR(trans))
+ return PTR_ERR(trans);
btrfs_get_tree_mod_seq(fs_info, &tree_mod_seq_elem);
- else
+ } else {
down_read(&fs_info->commit_root_sem);
+ }
ret = btrfs_find_all_leafs(trans, fs_info, extent_item_objectid,
tree_mod_seq_elem.seq, &refs,
free_leaf_list(refs);
out:
- if (trans) {
+ if (!search_commit_root) {
btrfs_put_tree_mod_seq(fs_info, &tree_mod_seq_elem);
btrfs_end_transaction(trans);
} else {