|
@@ -1137,7 +1137,6 @@ static ldlm_policy_res_t ldlm_cancel_no_wait_policy(struct ldlm_namespace *ns,
|
|
|
int count)
|
|
|
{
|
|
|
ldlm_policy_res_t result = LDLM_POLICY_CANCEL_LOCK;
|
|
|
- ldlm_cancel_for_recovery cb = ns->ns_cancel_for_recovery;
|
|
|
|
|
|
/* don't check added & count since we want to process all locks
|
|
|
* from unused list.
|
|
@@ -1147,7 +1146,7 @@ static ldlm_policy_res_t ldlm_cancel_no_wait_policy(struct ldlm_namespace *ns,
|
|
|
switch (lock->l_resource->lr_type) {
|
|
|
case LDLM_EXTENT:
|
|
|
case LDLM_IBITS:
|
|
|
- if (cb && cb(lock))
|
|
|
+ if (ns->ns_cancel && ns->ns_cancel(lock) != 0)
|
|
|
break;
|
|
|
default:
|
|
|
result = LDLM_POLICY_SKIP_LOCK;
|
|
@@ -1197,8 +1196,13 @@ static ldlm_policy_res_t ldlm_cancel_lrur_policy(struct ldlm_namespace *ns,
|
|
|
/* Stop when SLV is not yet come from server or lv is smaller than
|
|
|
* it is.
|
|
|
*/
|
|
|
- return (slv == 0 || lv < slv) ?
|
|
|
- LDLM_POLICY_KEEP_LOCK : LDLM_POLICY_CANCEL_LOCK;
|
|
|
+ if (slv == 0 || lv < slv)
|
|
|
+ return LDLM_POLICY_KEEP_LOCK;
|
|
|
+
|
|
|
+ if (ns->ns_cancel && ns->ns_cancel(lock) == 0)
|
|
|
+ return LDLM_POLICY_KEEP_LOCK;
|
|
|
+
|
|
|
+ return LDLM_POLICY_CANCEL_LOCK;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1236,11 +1240,17 @@ static ldlm_policy_res_t ldlm_cancel_aged_policy(struct ldlm_namespace *ns,
|
|
|
int unused, int added,
|
|
|
int count)
|
|
|
{
|
|
|
- /* Stop LRU processing if young lock is found and we reach past count */
|
|
|
- return ((added >= count) &&
|
|
|
- time_before(cfs_time_current(),
|
|
|
- cfs_time_add(lock->l_last_used, ns->ns_max_age))) ?
|
|
|
- LDLM_POLICY_KEEP_LOCK : LDLM_POLICY_CANCEL_LOCK;
|
|
|
+ if (added >= count)
|
|
|
+ return LDLM_POLICY_KEEP_LOCK;
|
|
|
+
|
|
|
+ if (time_before(cfs_time_current(),
|
|
|
+ cfs_time_add(lock->l_last_used, ns->ns_max_age)))
|
|
|
+ return LDLM_POLICY_KEEP_LOCK;
|
|
|
+
|
|
|
+ if (ns->ns_cancel && ns->ns_cancel(lock) == 0)
|
|
|
+ return LDLM_POLICY_KEEP_LOCK;
|
|
|
+
|
|
|
+ return LDLM_POLICY_CANCEL_LOCK;
|
|
|
}
|
|
|
|
|
|
/**
|