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 <[email protected]> --- 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

