[PATCH 2/2] fs: btrfs: use fs_ls_generic() and drop custom implementation
Alexey Charkov
alchark at flipper.net
Thu Jun 25 19:24:22 CEST 2026
Now that generic callbacks for opendir/readdir/closedir are implemented,
the custom btrfs_ls() implementation is no longer needed, along with the
btrfs_iter_dir() callback iterator.
Use fs_ls_generic() instead.
Signed-off-by: Alexey Charkov <alchark at flipper.net>
---
fs/btrfs/dir-item.c | 59 +++--------------------------------------------------
fs/fs.c | 2 +-
include/btrfs.h | 1 -
3 files changed, 4 insertions(+), 58 deletions(-)
diff --git a/fs/btrfs/dir-item.c b/fs/btrfs/dir-item.c
index 8cf5be3790e7..e8aebc0c7366 100644
--- a/fs/btrfs/dir-item.c
+++ b/fs/btrfs/dir-item.c
@@ -114,65 +114,12 @@ struct btrfs_dir_item *btrfs_lookup_dir_item(struct btrfs_trans_handle *trans,
return btrfs_match_dir_item_name(root, path, name, name_len);
}
-int btrfs_iter_dir(struct btrfs_root *root, u64 ino,
- btrfs_iter_dir_callback_t callback)
-{
- struct btrfs_path path;
- struct btrfs_key key;
- int ret;
-
- btrfs_init_path(&path);
- key.objectid = ino;
- key.type = BTRFS_DIR_INDEX_KEY;
- key.offset = 0;
-
- ret = btrfs_search_slot(NULL, root, &key, &path, 0, 0);
- if (ret < 0)
- return ret;
- /* Should not happen */
- if (ret == 0) {
- ret = -EUCLEAN;
- goto out;
- }
- if (path.slots[0] >= btrfs_header_nritems(path.nodes[0])) {
- ret = btrfs_next_leaf(root, &path);
- if (ret < 0)
- goto out;
- if (ret > 0) {
- ret = 0;
- goto out;
- }
- }
- do {
- struct btrfs_dir_item *di;
-
- btrfs_item_key_to_cpu(path.nodes[0], &key, path.slots[0]);
- if (key.objectid != ino || key.type != BTRFS_DIR_INDEX_KEY)
- break;
- di = btrfs_item_ptr(path.nodes[0], path.slots[0],
- struct btrfs_dir_item);
- if (verify_dir_item(root, path.nodes[0], di)) {
- ret = -EUCLEAN;
- goto out;
- }
- ret = callback(root, path.nodes[0], di);
- if (ret < 0)
- goto out;
- } while (!(ret = btrfs_next_item(root, &path)));
-
- if (ret > 0)
- ret = 0;
-out:
- btrfs_release_path(&path);
- return ret;
-}
-
/*
* btrfs_next_dir_entry() - read one directory entry at or after a cursor
*
- * Streaming counterpart to btrfs_iter_dir() for the fs-layer readdir, which
- * is re-entered once per entry: returns the first real entry whose
- * BTRFS_DIR_INDEX_KEY offset is >= *offset and advances *offset past it.
+ * Iterator for the fs-layer readdir, which is re-entered once per entry:
+ * returns the first real entry whose BTRFS_DIR_INDEX_KEY offset is
+ * >= *offset and advances *offset past it.
*
* @root, @ino: directory to read
* @offset: in/out cursor; DIR_INDEX offset to resume from
diff --git a/fs/fs.c b/fs/fs.c
index 4694a88f776b..1ebda6f4ee2a 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -320,7 +320,7 @@ static struct fstype_info fstypes[] = {
.null_dev_desc_ok = false,
.probe = btrfs_probe,
.close = btrfs_close,
- .ls = btrfs_ls,
+ .ls = fs_ls_generic,
.exists = btrfs_exists,
.size = btrfs_size,
.read = btrfs_read,
diff --git a/include/btrfs.h b/include/btrfs.h
index 6fff45a497ee..3878b7817ea6 100644
--- a/include/btrfs.h
+++ b/include/btrfs.h
@@ -15,7 +15,6 @@ struct fs_dirent;
int btrfs_probe(struct blk_desc *fs_dev_desc,
struct disk_partition *fs_partition);
-int btrfs_ls(const char *);
int btrfs_exists(const char *);
int btrfs_size(const char *, loff_t *);
int btrfs_read(const char *, void *, loff_t, loff_t, loff_t *);
--
2.53.0
More information about the U-Boot
mailing list