>From 69219538cf774475344472a0b42795012aa0ec71 Mon Sep 17 00:00:00 2001 From: yangsheng Date: Fri, 6 May 2011 23:03:56 +0800 Subject: [PATCH] LU-286 racer: general protection fault. Fixed previous patch hasn't cleanup appropriate may cause invalid reference. Change-Id: Ib9b6375c9a7bc57ee5ad17da514848ce8ca87acd Signed-off-by: Yang Sheng --- lustre/mdc/mdc_lib.c | 7 +++++++ lustre/mdc/mdc_locks.c | 3 ++- 2 files changed, 9 insertions(+), 1 deletions(-) diff --git a/lustre/mdc/mdc_lib.c b/lustre/mdc/mdc_lib.c index ea93da1..798df45 100644 --- a/lustre/mdc/mdc_lib.c +++ b/lustre/mdc/mdc_lib.c @@ -964,6 +964,13 @@ int mdc_enter_request(struct client_obd *cli) spin_unlock(&cli->cl_loi_list_lock); rc = l_wait_event(mcw.mcw_waitq, mdc_req_avail(cli, &mcw), &lwi); + if (rc) { + spin_lock(&cli->cl_loi_list_lock); + if (list_empty(&mcw.mcw_entry)) + cli->cl_r_in_flight--; + list_del_init(&mcw.mcw_entry); + spin_unlock(&cli->cl_loi_list_lock); + } } else { cli->cl_r_in_flight++; spin_unlock(&cli->cl_loi_list_lock); diff --git a/lustre/mdc/mdc_locks.c b/lustre/mdc/mdc_locks.c index e29de48..cdc7fe9 100644 --- a/lustre/mdc/mdc_locks.c +++ b/lustre/mdc/mdc_locks.c @@ -642,10 +642,11 @@ int mdc_enqueue(struct obd_export *exp, struct ldlm_enqueue_info *einfo, rc = ldlm_cli_enqueue(exp, &req, einfo, res_id, &policy, &flags, NULL, 0, NULL, lockh, 0); mdc_exit_request(&obddev->u.cli); + if (rc < 0) + CERROR("ldlm_cli_enqueue error: %d\n", rc); } mdc_put_rpc_lock(obddev->u.cli.cl_rpc_lock, it); if (rc < 0) { - CERROR("ldlm_cli_enqueue: %d\n", rc); mdc_clear_replay_flag(req, rc); ptlrpc_req_finished(req); RETURN(rc); -- 1.7.4.1