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

Reply via email to