[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