aboutsummaryrefslogtreecommitdiffstats
path: root/fs/affs/namei.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2008-02-07 03:15:29 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-07 11:42:27 -0500
commit210f855963ba5edc4c7150754a79709a7c8a0d3c (patch)
tree10f5030c3b0eec9e1afe9923d28a99f548f14db4 /fs/affs/namei.c
parent69840b0d065a031a2e5b3fcc3f30560229e312da (diff)
iget: stop AFFS from using iget() and read_inode()
Stop the AFFS filesystem from using iget() and read_inode(). Replace affs_read_inode() with affs_iget(), and call that instead of iget(). affs_iget() then uses iget_locked() directly and returns a proper error code instead of an inode in the event of an error. affs_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> Cc: Roman Zippel <zippel@linux-m68k.org> 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/affs/namei.c')
-rw-r--r--fs/affs/namei.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/fs/affs/namei.c b/fs/affs/namei.c
index b407e9eea3fb..2218f1ee71ce 100644
--- a/fs/affs/namei.c
+++ b/fs/affs/namei.c
@@ -208,9 +208,8 @@ affs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
208 affs_lock_dir(dir); 208 affs_lock_dir(dir);
209 bh = affs_find_entry(dir, dentry); 209 bh = affs_find_entry(dir, dentry);
210 affs_unlock_dir(dir); 210 affs_unlock_dir(dir);
211 if (IS_ERR(bh)) { 211 if (IS_ERR(bh))
212 return ERR_CAST(bh); 212 return ERR_CAST(bh);
213 }
214 if (bh) { 213 if (bh) {
215 u32 ino = bh->b_blocknr; 214 u32 ino = bh->b_blocknr;
216 215
@@ -223,10 +222,9 @@ affs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
223 ino = be32_to_cpu(AFFS_TAIL(sb, bh)->original); 222 ino = be32_to_cpu(AFFS_TAIL(sb, bh)->original);
224 } 223 }
225 affs_brelse(bh); 224 affs_brelse(bh);
226 inode = iget(sb, ino); 225 inode = affs_iget(sb, ino);
227 if (!inode) { 226 if (IS_ERR(inode))
228 return ERR_PTR(-EACCES); 227 return ERR_PTR(PTR_ERR(inode));
229 }
230 } 228 }
231 dentry->d_op = AFFS_SB(sb)->s_flags & SF_INTL ? &affs_intl_dentry_operations : &affs_dentry_operations; 229 dentry->d_op = AFFS_SB(sb)->s_flags & SF_INTL ? &affs_intl_dentry_operations : &affs_dentry_operations;
232 d_add(dentry, inode); 230 d_add(dentry, inode);