X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fldlm%2Fldlm_lib.c;h=1183afe3147a04bff1c0e0d9440ab181bd2447a4;hp=7d28ef0a752f3fe418c05bb2e828ade43b2c95e4;hb=9641c7f5ea20ef6163752a3b4cd956a8ada40c9c;hpb=738ac90f521a8e69a0a4f19c97e0f8911207eda6 diff --git a/lustre/ldlm/ldlm_lib.c b/lustre/ldlm/ldlm_lib.c index 7d28ef0..1183afe 100644 --- a/lustre/ldlm/ldlm_lib.c +++ b/lustre/ldlm/ldlm_lib.c @@ -887,6 +887,7 @@ int target_queue_recovery_request(struct ptlrpc_request *req, if (obd->obd_processing_task == current->pid || transno < obd->obd_next_recovery_transno) { /* Processing the queue right now, don't re-add. */ + lustre_msg_clear_flags(req->rq_reqmsg, MSG_RESENT); LASSERT(list_empty(&req->rq_list)); spin_unlock_bh(&obd->obd_processing_task_lock); OBD_FREE(reqmsg, req->rq_reqlen); @@ -990,7 +991,12 @@ int target_queue_final_reply(struct ptlrpc_request *req, int rc) list_add(&req->rq_list, &obd->obd_delayed_reply_queue); spin_lock_bh(&obd->obd_processing_task_lock); - --obd->obd_recoverable_clients; + /* only count the first "replay over" request from each + export */ + if (req->rq_export->exp_replay_needed) { + --obd->obd_recoverable_clients; + req->rq_export->exp_replay_needed = 0; + } recovery_done = (obd->obd_recoverable_clients == 0); spin_unlock_bh(&obd->obd_processing_task_lock);