From: Andriy Skulysh Date: Tue, 19 May 2020 12:10:52 +0000 (+0300) Subject: LU-13990 ldlm: ldlm_flock_deadlock() ASSERTION(req != lock) failed X-Git-Tag: 2.13.57~47 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=1f828c4699462936f75f18d8d8e8f33720e448fd;p=fs%2Flustre-release.git LU-13990 ldlm: ldlm_flock_deadlock() ASSERTION(req != lock) failed A client gets evicted and reconnects, so there can be a window with 2 exports with flocks from the same client. In this case during deadlock search from the new export we can go to the old export and back to the new one. Failed exports should be excluded from deadlock search. Change-Id: I9dec50d4c6694bbbcf13b976b5ebdc29377261ce HPE-bug-id: LUS-8635 Signed-off-by: Andriy Skulysh Reviewed-by: Alexander Boyko Reviewed-by: Vitaly Fertman Reviewed-on: https://review.whamcloud.com/40047 Reviewed-by: Alexander Boyko Tested-by: jenkins Reviewed-by: Vitaly Fertman Tested-by: Maloo Reviewed-by: Oleg Drokin --- diff --git a/lustre/ldlm/ldlm_flock.c b/lustre/ldlm/ldlm_flock.c index 007d00ad..92f7aa5 100644 --- a/lustre/ldlm/ldlm_flock.c +++ b/lustre/ldlm/ldlm_flock.c @@ -173,6 +173,9 @@ static int ldlm_flock_lookup_cb(struct obd_export *exp, void *data) struct ldlm_flock_lookup_cb_data *cb_data = data; struct ldlm_lock *lock; + if (exp->exp_failed) + return 0; + lock = cfs_hash_lookup(exp->exp_flock_hash, cb_data->bl_owner); if (lock == NULL) return 0;