[Ocfs2-commits] khackel commits r1358 - trunk/src

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Fri Aug 13 22:19:50 CDT 2004


Author: khackel
Date: 2004-08-13 21:19:48 -0500 (Fri, 13 Aug 2004)
New Revision: 1358

Modified:
   trunk/src/namei.c
Log:
fix bugzilla bug 114

Modified: trunk/src/namei.c
===================================================================
--- trunk/src/namei.c	2004-08-14 01:29:44 UTC (rev 1357)
+++ trunk/src/namei.c	2004-08-14 02:19:48 UTC (rev 1358)
@@ -1242,14 +1242,36 @@
 	if (new_inode)
 		mark_inode_dirty(new_inode);
 
-	if (old_dir != new_dir) {
-		if (new_dir_nlink != new_dir->i_nlink)
-			LOG_ERROR_ARGS("need to change nlink for new dir %llu from %d to %d\n",
-				       OCFS_I(new_dir)->ip_blkno, (int)new_dir_nlink, new_dir->i_nlink);
+	if (old_dir != new_dir)
+		if (new_dir_nlink != new_dir->i_nlink) {
+			if (!new_dir_bh) {
+				LOG_ERROR_ARGS("need to change nlink for new dir %llu from %d to %d "
+				       "but bh is NULL!\n", OCFS_I(new_dir)->ip_blkno, 
+				       (int)new_dir_nlink, new_dir->i_nlink);
+			} else {
+				ocfs2_dinode *fe;
+				status = ocfs_journal_access(handle, new_dir_bh, OCFS_JOURNAL_ACCESS_WRITE);
+				fe = (ocfs2_dinode *) new_dir_bh->b_data;
+				fe->i_links_count = new_dir_nlink;
+				new_dir->i_nlink = new_dir_nlink;
+				status = ocfs_journal_dirty(handle, new_dir_bh);
+			}
+		}
+	
+	if (old_dir_nlink != old_dir->i_nlink) {
+		if (!old_dir_bh) {
+			LOG_ERROR_ARGS("need to change nlink for old dir %llu from %d to %d "
+				       "but bh is NULL!\n", OCFS_I(old_dir)->ip_blkno, 
+				       (int)old_dir_nlink, old_dir->i_nlink);
+		} else {
+			ocfs2_dinode *fe;
+			status = ocfs_journal_access(handle, old_dir_bh, OCFS_JOURNAL_ACCESS_WRITE);
+			fe = (ocfs2_dinode *) old_dir_bh->b_data;
+			fe->i_links_count = old_dir_nlink;
+			old_dir->i_nlink = old_dir_nlink;
+			status = ocfs_journal_dirty(handle, old_dir_bh);
+		}
 	}
-	if (old_dir_nlink != old_dir->i_nlink)
-		LOG_ERROR_ARGS("need to change nlink for old dir %llu from %d to %d\n",
-			       OCFS_I(old_dir)->ip_blkno, (int)old_dir_nlink, old_dir->i_nlink);
 
 	/* commit_trans */
 	ocfs_commit_trans(handle);



More information about the Ocfs2-commits mailing list