Whamcloud - gitweb
LU-14069 ldlm: Fix unbounded OBD_FAIL_LDLM_CANCEL_BL_CB_RACE wait 75/40375/3
authorOleg Drokin <green@whamcloud.com>
Fri, 23 Oct 2020 06:56:04 +0000 (02:56 -0400)
committerOleg Drokin <green@whamcloud.com>
Thu, 29 Oct 2020 04:37:39 +0000 (04:37 +0000)
in ldlm_handle_cp_callback the while loop is clearly supposed
to be limited by the "to" value of 1 second, but is not.
Seems to have been broken by all the Solaris porting in HEAD
all the way back in 2008.
Restore the to assignment to make it not hang indefinitely.

Change-Id: I449bfd7f585ab7db475fb3fd4cbbd876126ff789
Fixes: adde80ff ("Land b_head_libcfs onto HEAD")
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/40375
Reviewed-by: Mike Pershin <mpershin@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/ldlm/ldlm_lockd.c

index ca0729c..de10643 100644 (file)
@@ -1927,7 +1927,7 @@ static int ldlm_handle_cp_callback(struct ptlrpc_request *req,
                ldlm_callback_reply(req, 0);
 
                while (to > 0) {
-                       schedule_timeout_interruptible(to);
+                       to = schedule_timeout_interruptible(to);
                        if (ldlm_is_granted(lock) ||
                            ldlm_is_destroyed(lock))
                                break;