From: yangsheng Date: Fri, 6 May 2011 15:03:56 +0000 (+0800) Subject: LU-286 racer: general protection fault. X-Git-Tag: 1.8.5.56~13 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=58a0c1a6c239774fc3f662d58b47cb57f4e53c6d;p=fs%2Flustre-release.git 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 Reviewed-on: http://review.whamcloud.com/506 Tested-by: Hudson Reviewed-by: Johann Lombardi --- 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);