summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/adfs/dir.c16
-rw-r--r--fs/adfs/dir_f.c3
-rw-r--r--fs/adfs/dir_fplus.c6
3 files changed, 13 insertions, 12 deletions
diff --git a/fs/adfs/dir.c b/fs/adfs/dir.c
index a54c53244992..c1b8b5bccbec 100644
--- a/fs/adfs/dir.c
+++ b/fs/adfs/dir.c
@@ -13,6 +13,16 @@
*/
static DEFINE_RWLOCK(adfs_dir_lock);
+static int adfs_dir_read(struct super_block *sb, u32 indaddr,
+ unsigned int size, struct adfs_dir *dir)
+{
+ dir->sb = sb;
+ dir->bhs = dir->bh;
+ dir->nr_buffers = 0;
+
+ return ADFS_SB(sb)->s_dir->read(sb, indaddr, size, dir);
+}
+
void adfs_object_fixup(struct adfs_dir *dir, struct object_info *obj)
{
unsigned int dots, i;
@@ -64,7 +74,7 @@ adfs_readdir(struct file *file, struct dir_context *ctx)
if (ctx->pos >> 32)
return 0;
- ret = ops->read(sb, inode->i_ino, inode->i_size, &dir);
+ ret = adfs_dir_read(sb, inode->i_ino, inode->i_size, &dir);
if (ret)
return ret;
@@ -115,7 +125,7 @@ adfs_dir_update(struct super_block *sb, struct object_info *obj, int wait)
goto out;
}
- ret = ops->read(sb, obj->parent_id, 0, &dir);
+ ret = adfs_dir_read(sb, obj->parent_id, 0, &dir);
if (ret)
goto out;
@@ -167,7 +177,7 @@ static int adfs_dir_lookup_byname(struct inode *inode, const struct qstr *qstr,
u32 name_len;
int ret;
- ret = ops->read(sb, inode->i_ino, inode->i_size, &dir);
+ ret = adfs_dir_read(sb, inode->i_ino, inode->i_size, &dir);
if (ret)
goto out;
diff --git a/fs/adfs/dir_f.c b/fs/adfs/dir_f.c
index c1a950c7400a..e62f35eb7789 100644
--- a/fs/adfs/dir_f.c
+++ b/fs/adfs/dir_f.c
@@ -139,9 +139,6 @@ static int adfs_dir_read(struct super_block *sb, u32 indaddr,
size >>= blocksize_bits;
- dir->nr_buffers = 0;
- dir->sb = sb;
-
for (blk = 0; blk < size; blk++) {
int phys;
diff --git a/fs/adfs/dir_fplus.c b/fs/adfs/dir_fplus.c
index 5f5420c9b943..52c42a9986d9 100644
--- a/fs/adfs/dir_fplus.c
+++ b/fs/adfs/dir_fplus.c
@@ -17,11 +17,6 @@ adfs_fplus_read(struct super_block *sb, unsigned int id, unsigned int sz, struct
unsigned int blk, size;
int i, ret = -EIO;
- dir->nr_buffers = 0;
-
- /* start off using fixed bh set - only alloc for big dirs */
- dir->bhs = &dir->bh[0];
-
block = __adfs_block_map(sb, id, 0);
if (!block) {
adfs_error(sb, "dir object %X has a hole at offset 0", id);
@@ -94,7 +89,6 @@ adfs_fplus_read(struct super_block *sb, unsigned int id, unsigned int sz, struct
}
dir->parent_id = le32_to_cpu(h->bigdirparent);
- dir->sb = sb;
return 0;
out: