[Ocfs2-commits] mfasheh commits r1229 - trunk/src

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Thu Jul 1 20:20:56 CDT 2004


Author: mfasheh
Date: 2004-07-01 19:20:54 -0500 (Thu, 01 Jul 2004)
New Revision: 1229

Modified:
   trunk/src/inode.c
Log:
* commit some iget cleanups from sonic.zhang at intel.com,
  elton.yang at intel.com and michael.fu at intel.com



Modified: trunk/src/inode.c
===================================================================
--- trunk/src/inode.c	2004-07-02 00:04:26 UTC (rev 1228)
+++ trunk/src/inode.c	2004-07-02 00:20:54 UTC (rev 1229)
@@ -148,6 +148,14 @@
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
 	inode = iget5_locked (sb, args.ino, ocfs_find_actor, 
 			      ocfs_init_locked_inode, &args);
+	/* 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) {
+		LOG_TRACE_STR("Inode was not in inode cache, reading it.");
+		ocfs_read_locked_inode(inode, &args);
+		unlock_new_inode(inode);
+	}
 #else
 	inode = iget4 (sb, args.ino, ocfs_find_inode, &args);
 #endif
@@ -164,26 +172,10 @@
 	}
 
 bail:
-	if (inode) {
+	if (inode)
 		LOG_TRACE_ARGS("returning inode with number %llu\n", 
 			       OCFS_I(inode)->ip_blkno);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
-		/* 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->i_state & I_NEW) {
-			LOG_TRACE_STR("Inode was not in inode cache, reading "
-				      "it.");
-			if (ocfs_read_locked_inode(inode, &args) < 0) {
-				LOG_ERROR_ARGS("bad inode: i_ino=%lu\n", inode->i_ino);
-				make_bad_inode(inode);
-				iput(inode);
-				inode = NULL;
-			} else
-				unlock_new_inode(inode);
-		}
-#endif
-	}
+
 	LOG_EXIT_PTR(inode);
 
 	return(inode);
@@ -494,6 +486,11 @@
 	}
 
 	fe = (ocfs2_dinode *) bh->b_data;
+	if(!IS_VALID_FILE_ENTRY(fe)) {
+		make_bad_inode (inode);
+		goto bail;
+	}
+
 	sysfile = le32_to_cpu(fe->i_flags) & OCFS2_SYSTEM_FL;
 	if (S_ISCHR(fe->i_mode) || S_ISBLK(fe->i_mode))
     		inode->i_rdev = huge_decode_dev(le64_to_cpu(fe->id1.dev1.i_rdev));



More information about the Ocfs2-commits mailing list