diff options
author | David Howells <dhowells@redhat.com> | 2008-02-07 03:15:39 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-07 11:42:28 -0500 |
commit | d0b079483dd4cf6373f0ff234d5fdaef80c9588f (patch) | |
tree | 8f222250ca750d370238b07111ec4f7ddc989a9c /fs/freevxfs/vxfs_super.c | |
parent | 17f95a7b4416a2c61e35f51b29eaaf1818fb5d7d (diff) |
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>
Diffstat (limited to 'fs/freevxfs/vxfs_super.c')
-rw-r--r-- | fs/freevxfs/vxfs_super.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/freevxfs/vxfs_super.c b/fs/freevxfs/vxfs_super.c index 4f95572d2722..1dacda831577 100644 --- a/fs/freevxfs/vxfs_super.c +++ b/fs/freevxfs/vxfs_super.c | |||
@@ -60,7 +60,6 @@ static int vxfs_statfs(struct dentry *, struct kstatfs *); | |||
60 | static int vxfs_remount(struct super_block *, int *, char *); | 60 | static int vxfs_remount(struct super_block *, int *, char *); |
61 | 61 | ||
62 | static const struct super_operations vxfs_super_ops = { | 62 | static const struct super_operations vxfs_super_ops = { |
63 | .read_inode = vxfs_read_inode, | ||
64 | .clear_inode = vxfs_clear_inode, | 63 | .clear_inode = vxfs_clear_inode, |
65 | .put_super = vxfs_put_super, | 64 | .put_super = vxfs_put_super, |
66 | .statfs = vxfs_statfs, | 65 | .statfs = vxfs_statfs, |
@@ -153,6 +152,7 @@ static int vxfs_fill_super(struct super_block *sbp, void *dp, int silent) | |||
153 | struct buffer_head *bp = NULL; | 152 | struct buffer_head *bp = NULL; |
154 | u_long bsize; | 153 | u_long bsize; |
155 | struct inode *root; | 154 | struct inode *root; |
155 | int ret = -EINVAL; | ||
156 | 156 | ||
157 | sbp->s_flags |= MS_RDONLY; | 157 | sbp->s_flags |= MS_RDONLY; |
158 | 158 | ||
@@ -219,7 +219,11 @@ static int vxfs_fill_super(struct super_block *sbp, void *dp, int silent) | |||
219 | } | 219 | } |
220 | 220 | ||
221 | sbp->s_op = &vxfs_super_ops; | 221 | sbp->s_op = &vxfs_super_ops; |
222 | root = iget(sbp, VXFS_ROOT_INO); | 222 | root = vxfs_iget(sbp, VXFS_ROOT_INO); |
223 | if (IS_ERR(root)) { | ||
224 | ret = PTR_ERR(root); | ||
225 | goto out; | ||
226 | } | ||
223 | sbp->s_root = d_alloc_root(root); | 227 | sbp->s_root = d_alloc_root(root); |
224 | if (!sbp->s_root) { | 228 | if (!sbp->s_root) { |
225 | iput(root); | 229 | iput(root); |
@@ -236,7 +240,7 @@ out_free_ilist: | |||
236 | out: | 240 | out: |
237 | brelse(bp); | 241 | brelse(bp); |
238 | kfree(infp); | 242 | kfree(infp); |
239 | return -EINVAL; | 243 | return ret; |
240 | } | 244 | } |
241 | 245 | ||
242 | /* | 246 | /* |