[Ocfs2-commits] mfasheh commits r1863 - trunk/fs/ocfs2/dlm
svn-commits at oss.oracle.com
svn-commits at oss.oracle.com
Fri Jan 28 17:00:57 CST 2005
Author: mfasheh
Date: 2005-01-28 17:00:55 -0600 (Fri, 28 Jan 2005)
New Revision: 1863
Modified:
trunk/fs/ocfs2/dlm/userdlm.c
Log:
* the logic in user_cluster_unlock could at times result the process
forgetting to drop a spinlock. Fix this.
* couple of printk fixes
Modified: trunk/fs/ocfs2/dlm/userdlm.c
===================================================================
--- trunk/fs/ocfs2/dlm/userdlm.c 2005-01-28 22:58:34 UTC (rev 1862)
+++ trunk/fs/ocfs2/dlm/userdlm.c 2005-01-28 23:00:55 UTC (rev 1863)
@@ -129,8 +129,8 @@
lksb = &(lockres->l_lksb);
if (lksb->status != DLM_NORMAL) {
- printk("user_ast: lksb status value of %u "
- "on lockres %s\n", lksb->status, lockres->l_name);
+ err_printk("lksb status value of %u "
+ "on lockres %s\n", lksb->status, lockres->l_name);
spin_unlock(&lockres->l_lock);
return;
}
@@ -377,8 +377,10 @@
goto bail;
}
- dprintk("lockres %s: asking for %s lock\n", lockres->l_name,
- (level == LKM_EXMODE) ? "LKM_EXMODE" : "LKM_PRMODE");
+ dprintk("lockres %s: asking for %s lock, passed flags = 0x%x\n",
+ lockres->l_name,
+ (level == LKM_EXMODE) ? "LKM_EXMODE" : "LKM_PRMODE",
+ lkm_flags);
again:
if (signal_pending(current)) {
@@ -533,31 +535,34 @@
goto bail;
}
- if (lockres->l_flags & USER_LOCK_ATTACHED) {
- if (lockres->l_ro_holders || lockres->l_ex_holders) {
- spin_unlock(&lockres->l_lock);
- goto bail;
- }
+ if (!(lockres->l_flags & USER_LOCK_ATTACHED)) {
+ spin_unlock(&lockres->l_lock);
+ goto bail;
+ }
- lockres->l_flags &= ~USER_LOCK_ATTACHED;
- lockres->l_flags |= USER_LOCK_BUSY;
- lockres->l_flags |= USER_LOCK_IN_TEARDOWN;
+ if (lockres->l_ro_holders || lockres->l_ex_holders) {
spin_unlock(&lockres->l_lock);
+ goto bail;
+ }
- status = dlmunlock(dlm,
- &lockres->l_lksb,
- 0,
- user_unlock_ast,
- lockres);
- if (status != DLM_NORMAL) {
- err_printk("dlm returns %d!\n", status);
- status = -EINVAL;
- goto bail;
- }
+ lockres->l_flags &= ~USER_LOCK_ATTACHED;
+ lockres->l_flags |= USER_LOCK_BUSY;
+ lockres->l_flags |= USER_LOCK_IN_TEARDOWN;
+ spin_unlock(&lockres->l_lock);
- user_wait_on_busy_lock(lockres);
+ status = dlmunlock(dlm,
+ &lockres->l_lksb,
+ 0,
+ user_unlock_ast,
+ lockres);
+ if (status != DLM_NORMAL) {
+ err_printk("dlm returns %d!\n", status);
+ status = -EINVAL;
+ goto bail;
}
+ user_wait_on_busy_lock(lockres);
+
status = 0;
bail:
return status;
More information about the Ocfs2-commits
mailing list