Commit 90011c7a authored by Russell King's avatar Russell King Committed by Al Viro

fs/adfs: dir: add helper to read directory using inode

Add a helper to read a directory using the inode, which we do in two
places.
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 419a6e5e
...@@ -137,6 +137,26 @@ static int adfs_dir_read(struct super_block *sb, u32 indaddr, ...@@ -137,6 +137,26 @@ static int adfs_dir_read(struct super_block *sb, u32 indaddr,
return ADFS_SB(sb)->s_dir->read(sb, indaddr, size, dir); return ADFS_SB(sb)->s_dir->read(sb, indaddr, size, dir);
} }
static int adfs_dir_read_inode(struct super_block *sb, struct inode *inode,
struct adfs_dir *dir)
{
int ret;
ret = adfs_dir_read(sb, inode->i_ino, inode->i_size, dir);
if (ret)
return ret;
if (ADFS_I(inode)->parent_id != dir->parent_id) {
adfs_error(sb,
"parent directory id changed under me! (%06x but got %06x)\n",
ADFS_I(inode)->parent_id, dir->parent_id);
adfs_dir_relse(dir);
ret = -EIO;
}
return ret;
}
static int adfs_dir_sync(struct adfs_dir *dir) static int adfs_dir_sync(struct adfs_dir *dir)
{ {
int err = 0; int err = 0;
...@@ -203,7 +223,7 @@ adfs_readdir(struct file *file, struct dir_context *ctx) ...@@ -203,7 +223,7 @@ adfs_readdir(struct file *file, struct dir_context *ctx)
if (ctx->pos >> 32) if (ctx->pos >> 32)
return 0; return 0;
ret = adfs_dir_read(sb, inode->i_ino, inode->i_size, &dir); ret = adfs_dir_read_inode(sb, inode, &dir);
if (ret) if (ret)
return ret; return ret;
...@@ -304,18 +324,10 @@ static int adfs_dir_lookup_byname(struct inode *inode, const struct qstr *qstr, ...@@ -304,18 +324,10 @@ static int adfs_dir_lookup_byname(struct inode *inode, const struct qstr *qstr,
u32 name_len; u32 name_len;
int ret; int ret;
ret = adfs_dir_read(sb, inode->i_ino, inode->i_size, &dir); ret = adfs_dir_read_inode(sb, inode, &dir);
if (ret) if (ret)
goto out; goto out;
if (ADFS_I(inode)->parent_id != dir.parent_id) {
adfs_error(sb,
"parent directory changed under me! (%06x but got %06x)\n",
ADFS_I(inode)->parent_id, dir.parent_id);
ret = -EIO;
goto free_out;
}
obj->parent_id = inode->i_ino; obj->parent_id = inode->i_ino;
read_lock(&adfs_dir_lock); read_lock(&adfs_dir_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment