[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