|
@@ -655,12 +655,9 @@ void dlm_lockres_clear_refmap_bit(struct dlm_ctxt *dlm,
|
|
|
clear_bit(bit, res->refmap);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-void dlm_lockres_grab_inflight_ref(struct dlm_ctxt *dlm,
|
|
|
+static void __dlm_lockres_grab_inflight_ref(struct dlm_ctxt *dlm,
|
|
|
struct dlm_lock_resource *res)
|
|
|
{
|
|
|
- assert_spin_locked(&res->spinlock);
|
|
|
-
|
|
|
res->inflight_locks++;
|
|
|
|
|
|
mlog(0, "%s: res %.*s, inflight++: now %u, %ps()\n", dlm->name,
|
|
@@ -668,6 +665,13 @@ void dlm_lockres_grab_inflight_ref(struct dlm_ctxt *dlm,
|
|
|
__builtin_return_address(0));
|
|
|
}
|
|
|
|
|
|
+void dlm_lockres_grab_inflight_ref(struct dlm_ctxt *dlm,
|
|
|
+ struct dlm_lock_resource *res)
|
|
|
+{
|
|
|
+ assert_spin_locked(&res->spinlock);
|
|
|
+ __dlm_lockres_grab_inflight_ref(dlm, res);
|
|
|
+}
|
|
|
+
|
|
|
void dlm_lockres_drop_inflight_ref(struct dlm_ctxt *dlm,
|
|
|
struct dlm_lock_resource *res)
|
|
|
{
|
|
@@ -894,10 +898,8 @@ lookup:
|
|
|
/* finally add the lockres to its hash bucket */
|
|
|
__dlm_insert_lockres(dlm, res);
|
|
|
|
|
|
- /* Grab inflight ref to pin the resource */
|
|
|
- spin_lock(&res->spinlock);
|
|
|
- dlm_lockres_grab_inflight_ref(dlm, res);
|
|
|
- spin_unlock(&res->spinlock);
|
|
|
+ /* since this lockres is new it doesn't not require the spinlock */
|
|
|
+ __dlm_lockres_grab_inflight_ref(dlm, res);
|
|
|
|
|
|
/* get an extra ref on the mle in case this is a BLOCK
|
|
|
* if so, the creator of the BLOCK may try to put the last
|