iget: stop FreeVXFS from using iget() and read_inode()
Stop the FreeVXFS filesystem from using iget() and read_inode(). Replace vxfs_read_inode() with vxfs_iget(), and call that instead of iget(). vxfs_iget() then uses iget_locked() directly and returns a proper error code instead of an inode in the event of an error. vxfs_fill_super() returns any error incurred when getting the root inode instead of EINVAL. [akpm@linux-foundation.org: coding-style fixes] Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
17f95a7b44
commit
d0b079483d
@@ -60,7 +60,6 @@ static int vxfs_statfs(struct dentry *, struct kstatfs *);
|
||||
static int vxfs_remount(struct super_block *, int *, char *);
|
||||
|
||||
static const struct super_operations vxfs_super_ops = {
|
||||
.read_inode = vxfs_read_inode,
|
||||
.clear_inode = vxfs_clear_inode,
|
||||
.put_super = vxfs_put_super,
|
||||
.statfs = vxfs_statfs,
|
||||
@@ -153,6 +152,7 @@ static int vxfs_fill_super(struct super_block *sbp, void *dp, int silent)
|
||||
struct buffer_head *bp = NULL;
|
||||
u_long bsize;
|
||||
struct inode *root;
|
||||
int ret = -EINVAL;
|
||||
|
||||
sbp->s_flags |= MS_RDONLY;
|
||||
|
||||
@@ -219,7 +219,11 @@ static int vxfs_fill_super(struct super_block *sbp, void *dp, int silent)
|
||||
}
|
||||
|
||||
sbp->s_op = &vxfs_super_ops;
|
||||
root = iget(sbp, VXFS_ROOT_INO);
|
||||
root = vxfs_iget(sbp, VXFS_ROOT_INO);
|
||||
if (IS_ERR(root)) {
|
||||
ret = PTR_ERR(root);
|
||||
goto out;
|
||||
}
|
||||
sbp->s_root = d_alloc_root(root);
|
||||
if (!sbp->s_root) {
|
||||
iput(root);
|
||||
@@ -236,7 +240,7 @@ out_free_ilist:
|
||||
out:
|
||||
brelse(bp);
|
||||
kfree(infp);
|
||||
return -EINVAL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user