|
@@ -695,14 +695,6 @@ void __dlm_lockres_grab_inflight_worker(struct dlm_ctxt *dlm,
|
|
|
res->inflight_assert_workers);
|
|
|
}
|
|
|
|
|
|
-static void dlm_lockres_grab_inflight_worker(struct dlm_ctxt *dlm,
|
|
|
- struct dlm_lock_resource *res)
|
|
|
-{
|
|
|
- spin_lock(&res->spinlock);
|
|
|
- __dlm_lockres_grab_inflight_worker(dlm, res);
|
|
|
- spin_unlock(&res->spinlock);
|
|
|
-}
|
|
|
-
|
|
|
static void __dlm_lockres_drop_inflight_worker(struct dlm_ctxt *dlm,
|
|
|
struct dlm_lock_resource *res)
|
|
|
{
|
|
@@ -1646,6 +1638,7 @@ send_response:
|
|
|
}
|
|
|
mlog(0, "%u is the owner of %.*s, cleaning everyone else\n",
|
|
|
dlm->node_num, res->lockname.len, res->lockname.name);
|
|
|
+ spin_lock(&res->spinlock);
|
|
|
ret = dlm_dispatch_assert_master(dlm, res, 0, request->node_idx,
|
|
|
DLM_ASSERT_MASTER_MLE_CLEANUP);
|
|
|
if (ret < 0) {
|
|
@@ -1653,7 +1646,8 @@ send_response:
|
|
|
response = DLM_MASTER_RESP_ERROR;
|
|
|
dlm_lockres_put(res);
|
|
|
} else
|
|
|
- dlm_lockres_grab_inflight_worker(dlm, res);
|
|
|
+ __dlm_lockres_grab_inflight_worker(dlm, res);
|
|
|
+ spin_unlock(&res->spinlock);
|
|
|
} else {
|
|
|
if (res)
|
|
|
dlm_lockres_put(res);
|