[lustre-devel] [PATCH 139/622] lustre: ldlm: don't apply ELC to converting and DOM locks
James Simmons
jsimmons at infradead.org
Thu Feb 27 13:10:07 PST 2020
From: Mikhail Pershin <mpershin at whamcloud.com>
Prevent ELC for locks being converted and for locks
having DOM bit set to avoid data flush without need.
WC-bug-id: https://jira.whamcloud.com/browse/LU-11276
Lustre-commit: 70a01a6c9c7c ("LU-11276 ldlm: don't apply ELC to converting and DOM locks")
Signed-off-by: Mikhail Pershin <mpershin at whamcloud.com>
Reviewed-on: https://review.whamcloud.com/33125
Reviewed-by: Lai Siyao <lai.siyao at whamcloud.com>
Reviewed-by: Oleg Drokin <green at whamcloud.com>
Signed-off-by: James Simmons <jsimmons at infradead.org>
---
fs/lustre/ldlm/ldlm_request.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/fs/lustre/ldlm/ldlm_request.c b/fs/lustre/ldlm/ldlm_request.c
index 9d3330c..1afe9a5 100644
--- a/fs/lustre/ldlm/ldlm_request.c
+++ b/fs/lustre/ldlm/ldlm_request.c
@@ -1823,7 +1823,8 @@ int ldlm_cancel_resource_local(struct ldlm_resource *res,
/* If somebody is already doing CANCEL, or blocking AST came,
* skip this lock.
*/
- if (ldlm_is_bl_ast(lock) || ldlm_is_canceling(lock))
+ if (ldlm_is_bl_ast(lock) || ldlm_is_canceling(lock) ||
+ ldlm_is_converting(lock))
continue;
if (lockmode_compat(lock->l_granted_mode, mode))
@@ -1831,10 +1832,11 @@ int ldlm_cancel_resource_local(struct ldlm_resource *res,
/* If policy is given and this is IBITS lock, add to list only
* those locks that match by policy.
+ * Skip locks with DoM bit always to don't flush data.
*/
if (policy && (lock->l_resource->lr_type == LDLM_IBITS) &&
- !(lock->l_policy_data.l_inodebits.bits &
- policy->l_inodebits.bits))
+ (!(lock->l_policy_data.l_inodebits.bits &
+ policy->l_inodebits.bits) || ldlm_has_dom(lock)))
continue;
/* See CBPENDING comment in ldlm_cancel_lru */
--
1.8.3.1
More information about the lustre-devel
mailing list