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

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Thu Dec 16 20:05:39 CST 2004


Author: mfasheh
Date: 2004-12-16 20:05:37 -0600 (Thu, 16 Dec 2004)
New Revision: 1710

Modified:
   trunk/src/dlmglue.c
Log:
* some logging fixes, and I added more logging for dlmglue.c

* fix a bug which was preventing the vote thread from requeueing
  blocked metadata locks.



Modified: trunk/src/dlmglue.c
===================================================================
--- trunk/src/dlmglue.c	2004-12-16 22:47:52 UTC (rev 1709)
+++ trunk/src/dlmglue.c	2004-12-17 02:05:37 UTC (rev 1710)
@@ -286,7 +286,7 @@
 
 	OCFS_ASSERT(len = (OCFS2_LOCK_ID_MAX_LEN - 1));
 
-#ifdef OCFS2_VERBOSE_LOCKING_TRACE
+#ifdef VERBOSE_LOCKING_TRACE
 	printk("built lock resource with name: %s\n", name);
 #endif
 	*ret = name;
@@ -529,7 +529,7 @@
 	inode = ocfs2_lock_res_inode(lockres);
 	osb = OCFS2_SB(inode->i_sb);
 
-#ifdef OCFS2_VERBOSE_LOCKING_TRACE
+#ifdef VERBOSE_LOCKING_TRACE
 	printk("AST fired for inode %llu\n", OCFS_I(inode)->ip_blkno);
 #endif
 	OCFS_ASSERT(ocfs2_is_inode_lock(lockres));
@@ -603,7 +603,7 @@
 	inode = ocfs2_lock_res_inode(lockres);
 	osb = OCFS2_SB(inode->i_sb);
 
-#ifdef OCFS2_VERBOSE_LOCKING_TRACE
+#ifdef VERBOSE_LOCKING_TRACE
 	printk("BAST fired for inode %llu\n", OCFS_I(inode)->ip_blkno);
 #endif
 	ocfs2_generic_handle_bast(lockres, level);
@@ -620,7 +620,7 @@
 
 	LOG_ENTRY();
 
-#ifdef OCFS2_VERBOSE_LOCKING_TRACE
+#ifdef VERBOSE_LOCKING_TRACE
 	printk("Superblock AST fired\n");
 #endif
 	OCFS_ASSERT(ocfs2_is_super_lock(lockres));
@@ -664,7 +664,7 @@
 	LOG_ENTRY();
        	osb = ocfs2_lock_res_super(lockres);
 
-#ifdef OCFS2_VERBOSE_LOCKING_TRACE
+#ifdef VERBOSE_LOCKING_TRACE
 	printk("Superblock BAST fired\n");
 #endif
 	ocfs2_generic_handle_bast(lockres, level);
@@ -949,7 +949,7 @@
 
 	LOG_ENTRY();
 
-#ifdef OCFS2_VERBOSE_LOCKING_TRACE
+#ifdef VERBOSE_LOCKING_TRACE
 	printk("ocfs2: (%u) inode %llu, take %s DATA lock\n",
 	       current->pid, OCFS_I(inode)->ip_blkno,
 	       write ? "EXMODE" : "PRMODE");
@@ -1006,7 +1006,7 @@
 
 	LOG_ENTRY();
 
-#ifdef OCFS2_VERBOSE_LOCKING_TRACE
+#ifdef VERBOSE_LOCKING_TRACE
 	printk("ocfs2: (%u) inode %llu drop %s DATA lock\n",
 	       current->pid, OCFS_I(inode)->ip_blkno, 
 	       write ? "EXMODE" : "PRMODE");
@@ -1237,7 +1237,7 @@
 		ocfs_refresh_inode(inode, fe);
 	}
 
-#ifdef OCFS2_VERBOSE_LOCKING_TRACE
+#ifdef VERBOSE_LOCKING_TRACE
 	printk("inode %llu, I can only trust %u clusters\n",
 	       OCFS_I(inode)->ip_blkno, trustable_clusters);
 #endif
@@ -1271,7 +1271,7 @@
 
 	LOG_ENTRY();
 
-#ifdef OCFS2_VERBOSE_LOCKING_TRACE
+#ifdef VERBOSE_LOCKING_TRACE
 	printk("ocfs2: (%u) inode %llu, take %s META lock\n",
 	       current->pid, OCFS_I(inode)->ip_blkno,
 	       ex ? "EXMODE" : "PRMODE");
@@ -1342,7 +1342,7 @@
 
 	LOG_ENTRY();
 
-#ifdef OCFS2_VERBOSE_LOCKING_TRACE
+#ifdef VERBOSE_LOCKING_TRACE
 	printk("ocfs2: (%u) inode %llu drop %s META lock\n",
 	       current->pid, OCFS_I(inode)->ip_blkno,
 	       ex ? "EXMODE" : "PRMODE");
@@ -1625,11 +1625,19 @@
 	LOG_ENTRY();
 
 	OCFS_ASSERT(lockres->l_blocking > LKM_NLMODE);
+
 	if (lockres->l_level <= new_level) {
-		LOG_ERROR_ARGS("lockres->l_level (%u) <= new_level (%u)\n", lockres->l_level, new_level);
+		LOG_ERROR_ARGS("lockres->l_level (%u) <= new_level (%u)\n",
+			       lockres->l_level, new_level);
 		BUG();
 	}
 
+#ifdef VERBOSE_LOCKING_TRACE
+	printk("(%u) __ocfs2_downconvert_lock: lock %s, new_level = %d,"
+	       "l_blocking = %d, lvb = %d\n", current->pid, lockres->l_name,
+	       new_level, lockres->l_blocking, lvb);
+#endif
+
 	lockres->l_action = OCFS2_AST_DOWNCONVERT;
 	lockres->l_requested = new_level;
 	lockres->l_flags |= OCFS2_LOCK_BUSY;
@@ -1666,6 +1674,11 @@
 
 	LOG_ENTRY();
 
+#ifdef VERBOSE_LOCKING_TRACE
+	printk("(%u) __ocfs2_cancel_convert: lock %s\n", current->pid,
+	       lockres->l_name);
+#endif
+
 	/* were we in a convert when we got the bast fire? */
 	OCFS_ASSERT(lockres->l_action == OCFS2_AST_CONVERT ||
 		    lockres->l_action == OCFS2_AST_DOWNCONVERT);
@@ -1732,19 +1745,17 @@
        	lockres = &OCFS_I(inode)->ip_meta_lockres;
 
 	spin_lock(&lockres->l_lock);
-	if (!(lockres->l_flags & OCFS2_LOCK_BLOCKED)) {
-		spin_unlock(&lockres->l_lock);
-		ret = 0;
-		goto leave;
-	}
 
+	OCFS_ASSERT(lockres->l_flags & OCFS2_LOCK_BLOCKED);
+
 	LOG_TRACE_ARGS("l_level=%d, l_blocking=%d\n", lockres->l_level, lockres->l_blocking);
+	printk("ocfs2_do_unblock_meta: inode=%llu, l_level=%d, l_blocking=%d\n", OCFS_I(inode)->ip_blkno, lockres->l_level, lockres->l_blocking);
 
 	OCFS_ASSERT(lockres->l_level == LKM_EXMODE || 
 		    lockres->l_level == LKM_PRMODE);
 
 	if (lockres->l_flags & OCFS2_LOCK_BUSY) {
-		*requeue++;
+		*requeue = 1;
 		if (lockres->l_unlock_action == OCFS2_UNLOCK_CANCEL_CONVERT) {
 			/* If we're already trying to cancel a lock conversion
 			 * then just drop the spinlock and requeue ourselves
@@ -1771,14 +1782,14 @@
 		__ocfs2_lvb_on_downconvert(lockres, new_level);
 		LOG_TRACE_ARGS("calling __ocfs2_downconvert_lock with l_level=%d, l_blocking=%d, new_level=%d\n", lockres->l_level, lockres->l_blocking, new_level);
 		ret = __ocfs2_downconvert_lock(OCFS2_SB(inode->i_sb),
-						lockres, new_level,
-						set_lvb);
+					       lockres, new_level,
+					       set_lvb);
 		goto leave;
 	}
 	if (!ocfs_inode_fully_checkpointed(inode))
 		ocfs_start_checkpoint(OCFS2_SB(inode->i_sb));
 
-	*requeue++;
+	*requeue = 1;
 	spin_unlock(&lockres->l_lock);
 	ret = 0;
 leave:
@@ -1798,13 +1809,8 @@
 	LOG_ENTRY();
 
 	spin_lock(&lockres->l_lock);
-	if (!(lockres->l_flags & OCFS2_LOCK_BLOCKED)) {
-		spin_unlock(&lockres->l_lock);
-		*requeue = 0;
-		ret = 0;
-		goto leave;
-	}
 
+	OCFS_ASSERT(lockres->l_flags & OCFS2_LOCK_BLOCKED);
 	OCFS_ASSERT(!(lockres->l_flags & OCFS2_LOCK_BUSY));
 
 recheck:
@@ -1906,6 +1912,11 @@
 	inode = ocfs2_lock_res_inode(lockres);
 	osb = OCFS2_SB(inode->i_sb);
 
+#ifdef VERBOSE_LOCKING_TRACE
+	printk("(%u) ocfs2_unblock_data: unblock inode %llu\n",
+	       current->pid, OCFS_I(inode)->ip_blkno);
+#endif
+
 	status = ocfs2_generic_unblock_lock(osb,
 					    lockres,
 					    requeue,
@@ -1913,6 +1924,11 @@
 	if (status < 0)
 		LOG_ERROR_STATUS(status);
 
+#ifdef VERBOSE_LOCKING_TRACE
+	printk("(%u) ocfs2_unblock_data: inode %llu, reqeue = %d\n",
+	       current->pid, OCFS_I(inode)->ip_blkno, *requeue);
+#endif
+
 	/* because of inode ref counting, we never want to propagate
 	 * up requeue requests for inode locks. Instead we do it
 	 * ourselves here, and lose the extra ref we got from queueing
@@ -1937,10 +1953,20 @@
 
        	inode = ocfs2_lock_res_inode(lockres);
 
+#ifdef VERBOSE_LOCKING_TRACE
+	printk("(%u) ocfs2_unblock_meta: unblock inode %llu\n",
+	       current->pid, OCFS_I(inode)->ip_blkno);
+#endif
+
 	status = ocfs2_do_unblock_meta(inode, requeue);
 	if (status < 0)
 		LOG_ERROR_STATUS(status);
 
+#ifdef VERBOSE_LOCKING_TRACE
+	printk("(%u) ocfs2_unblock_meta: inode %llu, requeue = %d\n",
+	       current->pid, OCFS_I(inode)->ip_blkno, *requeue);
+#endif
+
 	/* if you're confused by this, see the comment in
 	 * ocfs2_unblock_data */
 	if (*requeue)



More information about the Ocfs2-commits mailing list