ocfs2: Little refactoring against ocfs2_iget.
authorTao Ma <boyu.mt@taobao.com>
Mon, 21 Feb 2011 03:18:30 +0000 (11:18 +0800)
committerTao Ma <boyu.mt@taobao.com>
Mon, 21 Feb 2011 03:18:30 +0000 (11:18 +0800)
ocfs2_iget is used to get/create inode. Only iget5_locked
will give us an inode = NULL. So move this check ahead of
ocfs2_read_locked_inode so that we don't need to check
inode before we read and unlock inode. This is also helpful
for trace event(see the next patch).

Signed-off-by: Tao Ma <boyu.mt@taobao.com>
fs/ocfs2/inode.c

index a96e56f..8ec0cb0 100644 (file)
@@ -152,16 +152,16 @@ struct inode *ocfs2_iget(struct ocfs2_super *osb, u64 blkno, unsigned flags,
        /* inode was *not* in the inode cache. 2.6.x requires
         * us to do our own read_inode call and unlock it
         * afterwards. */
-       if (inode && inode->i_state & I_NEW) {
-               mlog(0, "Inode was not in inode cache, reading it.\n");
-               ocfs2_read_locked_inode(inode, &args);
-               unlock_new_inode(inode);
-       }
        if (inode == NULL) {
                inode = ERR_PTR(-ENOMEM);
                mlog_errno(PTR_ERR(inode));
                goto bail;
        }
+       if (inode->i_state & I_NEW) {
+               mlog(0, "Inode was not in inode cache, reading it.\n");
+               ocfs2_read_locked_inode(inode, &args);
+               unlock_new_inode(inode);
+       }
        if (is_bad_inode(inode)) {
                iput(inode);
                inode = ERR_PTR(-ESTALE);