[Ocfs2-commits] khackel commits r2079 - trunk/fs/ocfs2/dlm

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Wed Mar 30 02:34:25 CST 2005


Author: khackel
Signed-off-by: mfasheh
Date: 2005-03-30 02:34:23 -0600 (Wed, 30 Mar 2005)
New Revision: 2079

Modified:
   trunk/fs/ocfs2/dlm/dlmast.c
   trunk/fs/ocfs2/dlm/dlmcommon.h
   trunk/fs/ocfs2/dlm/dlmconvert.c
   trunk/fs/ocfs2/dlm/dlmdebug.c
   trunk/fs/ocfs2/dlm/dlmdomain.c
   trunk/fs/ocfs2/dlm/dlmlock.c
   trunk/fs/ocfs2/dlm/dlmmaster.c
   trunk/fs/ocfs2/dlm/dlmrecovery.c
   trunk/fs/ocfs2/dlm/dlmthread.c
   trunk/fs/ocfs2/dlm/dlmunlock.c
Log:
* allow for lockres ref functions to be called without dlm->spinlock
* was missing very important goto label in dlm_migrate_request_handler
  in error path

Signed-off-by: mfasheh



Modified: trunk/fs/ocfs2/dlm/dlmast.c
===================================================================
--- trunk/fs/ocfs2/dlm/dlmast.c	2005-03-30 07:38:17 UTC (rev 2078)
+++ trunk/fs/ocfs2/dlm/dlmast.c	2005-03-30 08:34:23 UTC (rev 2079)
@@ -332,7 +332,7 @@
 leave:
 
 	if (res)
-		dlm_lockres_put(dlm, res);
+		dlm_lockres_put(res);
 
 	dlm_put(dlm);
 	return ret;

Modified: trunk/fs/ocfs2/dlm/dlmcommon.h
===================================================================
--- trunk/fs/ocfs2/dlm/dlmcommon.h	2005-03-30 07:38:17 UTC (rev 2078)
+++ trunk/fs/ocfs2/dlm/dlmcommon.h	2005-03-30 08:34:23 UTC (rev 2079)
@@ -796,16 +796,9 @@
 void dlm_lockres_calc_usage(dlm_ctxt *dlm,
 			    dlm_lock_resource *res);
 void dlm_purge_lockres(dlm_ctxt *dlm, dlm_lock_resource *lockres);
-void __dlm_lockres_get(dlm_lock_resource *res);
-
-dlm_lock_resource *dlm_lockres_grab(dlm_ctxt *dlm,
-				    dlm_lock_resource *res);
-void __dlm_lockres_put(dlm_ctxt *dlm,
-		       dlm_lock_resource *res);
-void dlm_lockres_put(dlm_ctxt *dlm,
-		     dlm_lock_resource *res);
-void __dlm_unhash_lock(dlm_ctxt *dlm,
-		       dlm_lock_resource *res);
+void dlm_lockres_get(dlm_lock_resource *res);
+void dlm_lockres_put(dlm_lock_resource *res);
+void __dlm_unhash_lock(dlm_lock_resource *res);
 void __dlm_insert_lock(dlm_ctxt *dlm,
 		       dlm_lock_resource *res);
 dlm_lock_resource * __dlm_lookup_lock(dlm_ctxt *dlm,

Modified: trunk/fs/ocfs2/dlm/dlmconvert.c
===================================================================
--- trunk/fs/ocfs2/dlm/dlmconvert.c	2005-03-30 07:38:17 UTC (rev 2078)
+++ trunk/fs/ocfs2/dlm/dlmconvert.c	2005-03-30 08:34:23 UTC (rev 2079)
@@ -487,7 +487,7 @@
 		dlm_kick_thread(dlm, res);
 
 	if (res)
-		dlm_lockres_put(dlm, res);
+		dlm_lockres_put(res);
 
 	dlm_put(dlm);
 

Modified: trunk/fs/ocfs2/dlm/dlmdebug.c
===================================================================
--- trunk/fs/ocfs2/dlm/dlmdebug.c	2005-03-30 07:38:17 UTC (rev 2078)
+++ trunk/fs/ocfs2/dlm/dlmdebug.c	2005-03-30 08:34:23 UTC (rev 2079)
@@ -302,7 +302,7 @@
 		ret = dlm_migrate_lockres(dlm, res, NM_MAX_NODES);
 		printk("dlm_migrate_lockres returned %d\n", ret);
 	}
-	dlm_lockres_put(dlm, res);
+	dlm_lockres_put(res);
 	dlm_put(dlm);
 
 leave:

Modified: trunk/fs/ocfs2/dlm/dlmdomain.c
===================================================================
--- trunk/fs/ocfs2/dlm/dlmdomain.c	2005-03-30 07:38:17 UTC (rev 2078)
+++ trunk/fs/ocfs2/dlm/dlmdomain.c	2005-03-30 08:34:23 UTC (rev 2079)
@@ -60,11 +60,10 @@
 
 static void dlm_unregister_domain_handlers(dlm_ctxt *dlm);
 
-void __dlm_unhash_lock(dlm_ctxt *dlm,
-		       dlm_lock_resource *lockres)
+void __dlm_unhash_lock(dlm_lock_resource *lockres)
 {
 	list_del_init(&lockres->list);
-	__dlm_lockres_put(dlm, lockres);
+	dlm_lockres_put(lockres);
 }
 
 void __dlm_insert_lock(dlm_ctxt *dlm,
@@ -80,7 +79,7 @@
 	bucket = &(dlm->resources[q->hash & DLM_HASH_MASK]);
 
 	/* get a reference for our hashtable */
-	__dlm_lockres_get(res);
+	dlm_lockres_get(res);
 
 	list_add_tail(&res->list, bucket);
 }
@@ -109,7 +108,7 @@
 		tmpres = list_entry(iter, dlm_lock_resource, list);
 		if (tmpres->lockname.len == len &&
 		    strncmp(tmpres->lockname.name, name, len) == 0) {
-			__dlm_lockres_get(tmpres);
+			dlm_lockres_get(tmpres);
 			break;
 		}
 

Modified: trunk/fs/ocfs2/dlm/dlmlock.c
===================================================================
--- trunk/fs/ocfs2/dlm/dlmlock.c	2005-03-30 07:38:17 UTC (rev 2078)
+++ trunk/fs/ocfs2/dlm/dlmlock.c	2005-03-30 08:34:23 UTC (rev 2079)
@@ -359,7 +359,7 @@
 	}
 
 	if (res)
-		dlm_lockres_put(dlm, res);
+		dlm_lockres_put(res);
 
 	dlm_put(dlm);
 
@@ -437,7 +437,8 @@
 				  lock->bast, lock->astdata);
 			goto error;
 		}
-		res = dlm_lockres_grab(dlm, lock->lockres);
+		res = lock->lockres;
+		dlm_lockres_get(res);
 retry_convert:
 		down_read(&dlm->recovery_sem);
 
@@ -539,7 +540,7 @@
 	}
 
 	if (res)
-		dlm_lockres_put(dlm, res);
+		dlm_lockres_put(res);
 
 	return status;
 }

Modified: trunk/fs/ocfs2/dlm/dlmmaster.c
===================================================================
--- trunk/fs/ocfs2/dlm/dlmmaster.c	2005-03-30 07:38:17 UTC (rev 2078)
+++ trunk/fs/ocfs2/dlm/dlmmaster.c	2005-03-30 08:34:23 UTC (rev 2079)
@@ -439,35 +439,16 @@
 	kfree(res);
 }
 
-void __dlm_lockres_get(dlm_lock_resource *res)
+void dlm_lockres_get(dlm_lock_resource *res)
 {
 	kref_get(&res->refs);
 }
 
-dlm_lock_resource *dlm_lockres_grab(dlm_ctxt *dlm,
-				    dlm_lock_resource *res)
+void dlm_lockres_put(dlm_lock_resource *res)
 {
-	spin_lock(&dlm->spinlock);
-	__dlm_lockres_get(res);
-	spin_unlock(&dlm->spinlock);
-
-	return res;
-}
-
-void __dlm_lockres_put(dlm_ctxt *dlm,
-		       dlm_lock_resource *res)
-{
 	kref_put(&res->refs, dlm_lockres_release);
 }
 
-void dlm_lockres_put(dlm_ctxt *dlm,
-		     dlm_lock_resource *res)
-{
-	spin_lock(&dlm->spinlock);
-	__dlm_lockres_put(dlm, res);
-	spin_unlock(&dlm->spinlock);
-}
-
 void dlm_init_lockres(dlm_ctxt *dlm, dlm_lock_resource *res, 
 		      const char *name, unsigned int namelen)
 {
@@ -573,7 +554,7 @@
 			kfree(mle);
 
 		if (res)
-			dlm_lockres_put(dlm, res);
+			dlm_lockres_put(res);
 
 		return tmpres;
 	}
@@ -1372,7 +1353,7 @@
 		}
 	} while (ret < 0);
 
-	dlm_lockres_put(dlm, res);
+	dlm_lockres_put(res);
 
 	dlmprintk0("finished with dlm_assert_master_worker\n");
 }
@@ -1616,7 +1597,7 @@
 				dlmprintk("freeing lock for node %u\n",
 					  lock->ml.node);
 				list_del_init(&lock->list);
-				dlm_lockres_put(dlm, lock->lockres);
+				dlm_lockres_put(lock->lockres);
 				DLM_ASSERT(lock->lksb);
 				kfree(lock->lksb);
 				kfree(lock);
@@ -1730,7 +1711,7 @@
 int dlm_migrate_request_handler(net_msg *msg, u32 len, void *data)
 {
 	dlm_ctxt *dlm = data;
-	dlm_lock_resource *res;
+	dlm_lock_resource *res = NULL;
 	dlm_migrate_request *migrate = (dlm_migrate_request *) msg->buf;
 	dlm_master_list_entry *mle = NULL, *oldmle = NULL;
 	const char *name;
@@ -1767,7 +1748,7 @@
 				   "lockres is marked as recovering!");
 			kfree(mle);
 			ret = -EINVAL; /* need a better solution */
-			goto leave;
+			goto unlock;
 		}
 		res->state |= DLM_LOCK_RES_MIGRATING;
 		spin_unlock(&res->spinlock);
@@ -1776,6 +1757,7 @@
 	dlm_add_migration_mle(dlm, res, mle, &oldmle, name, namelen, 
 			      migrate->new_master, migrate->master);
 
+unlock:
 	spin_unlock(&dlm->master_lock);
 	spin_unlock(&dlm->spinlock);
 
@@ -1785,6 +1767,8 @@
 		dlm_put_mle(oldmle);
 	}
 
+	if (res)
+		dlm_lockres_put(res);
 leave:
 	dlm_put(dlm);
 	return ret;
@@ -1913,7 +1897,7 @@
 					      	DLM_LOCK_RES_OWNER_UNKNOWN);
 				dlm_move_lockres_to_recovery_list(dlm, res);
 				spin_unlock(&res->spinlock);
-				__dlm_lockres_put(dlm, res);
+				dlm_lockres_put(res);
 
 				/* dump the mle */
 				spin_lock(&dlm->master_lock);

Modified: trunk/fs/ocfs2/dlm/dlmrecovery.c
===================================================================
--- trunk/fs/ocfs2/dlm/dlmrecovery.c	2005-03-30 07:38:17 UTC (rev 2078)
+++ trunk/fs/ocfs2/dlm/dlmrecovery.c	2005-03-30 08:34:23 UTC (rev 2079)
@@ -1042,7 +1042,7 @@
 
 		/* to match the ref that we would have gotten if 
 		 * dlm_lookup_lock had succeeded */
-		__dlm_lockres_get(res);
+		dlm_lockres_get(res);
 
 		/* mark it as recovering/migrating and hash it */
 		if (mres->flags & DLM_MRES_RECOVERY)
@@ -1384,7 +1384,8 @@
 			goto leave;
 		}
 		lksb = newlock->lksb;
-		newlock->lockres = dlm_lockres_grab(dlm, res);
+		dlm_lockres_get(res);
+		newlock->lockres = res;
 		
 		if (ml->convert_type != LKM_IVMODE) {
 			DLM_ASSERT(queue == &res->converting);

Modified: trunk/fs/ocfs2/dlm/dlmthread.c
===================================================================
--- trunk/fs/ocfs2/dlm/dlmthread.c	2005-03-30 07:38:17 UTC (rev 2078)
+++ trunk/fs/ocfs2/dlm/dlmthread.c	2005-03-30 08:34:23 UTC (rev 2079)
@@ -168,7 +168,7 @@
 		list_del_init(&lockres->purge);
 		dlm->purge_count--;
 	}
-	__dlm_unhash_lock(dlm, lockres);
+	__dlm_unhash_lock(lockres);
 }
 
 static void dlm_run_purge_list(dlm_ctxt *dlm)

Modified: trunk/fs/ocfs2/dlm/dlmunlock.c
===================================================================
--- trunk/fs/ocfs2/dlm/dlmunlock.c	2005-03-30 07:38:17 UTC (rev 2078)
+++ trunk/fs/ocfs2/dlm/dlmunlock.c	2005-03-30 08:34:23 UTC (rev 2079)
@@ -403,7 +403,7 @@
 
 leave:
 	if (res)
-		dlm_lockres_put(dlm, res);
+		dlm_lockres_put(res);
 
 	dlm_put(dlm);
 
@@ -497,10 +497,10 @@
 		return DLM_BADPARAM;
 
 	lock = lksb->lockid;
-	res = dlm_lockres_grab(dlm, lock->lockres);
-
 	DLM_ASSERT(lock);
+	res = lock->lockres;
 	DLM_ASSERT(res);
+	dlm_lockres_get(res);
 retry:
 	call_ast = 0;
 	/* need to retry up here because owner may have changed */
@@ -550,7 +550,7 @@
 	}
 
 	dlm_lockres_calc_usage(dlm, res);
-	dlm_lockres_put(dlm, res);
+	dlm_lockres_put(res);
 
 	dlmprintk("returning status=%d!\n", status);
 	return status;



More information about the Ocfs2-commits mailing list