From 1064508f104f1367aaf43da2cc68031db33a46b6 Mon Sep 17 00:00:00 2001 From: green Date: Tue, 20 May 2008 19:49:12 +0000 Subject: [PATCH] b=15776 r=shadow,vitaly Prevent locks stalls on glimpse races --- lustre/ChangeLog | 8 ++++++++ lustre/ldlm/ldlm_lockd.c | 3 +++ 2 files changed, 11 insertions(+) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 8b19783..2e13f41 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -777,6 +777,14 @@ Details : With this patch, three improvements are included: 2. display the inaccurate data in the output of "lfs quota". 3. try to get quota info when "lfs quota" is executed. +Severity : normal +Frequency : rare +Bugzilla : 15776 +Description: Extent locks not granted with no conflicts sometimes. +Details : When race occurs in glimpse handler and nothing is returned, + we do not reprocess the queue after lock cancel, and that leads + to a stall until next activity on a resource + -------------------------------------------------------------------------------- 2007-12-07 Cluster File Systems, Inc. diff --git a/lustre/ldlm/ldlm_lockd.c b/lustre/ldlm/ldlm_lockd.c index 4a73270..8e35693 100644 --- a/lustre/ldlm/ldlm_lockd.c +++ b/lustre/ldlm/ldlm_lockd.c @@ -802,6 +802,9 @@ int ldlm_server_glimpse_ast(struct ldlm_lock *lock, void *data) rc = ldlm_res_lvbo_update(res, req->rq_repmsg, REPLY_REC_OFF, 1); ptlrpc_req_finished(req); + if (rc == -ERESTART) + ldlm_reprocess_all(res); + RETURN(rc); } -- 1.8.3.1