From f35a070ec5e4694313c29d605eaff872474babc8 Mon Sep 17 00:00:00 2001 From: Johann Lombardi Date: Thu, 25 Nov 2010 18:36:38 +0100 Subject: [PATCH] b=21804 make sure the request is protected by rq_refcount while i=vitaly i=oleg --- lustre/ChangeLog | 6 ++++++ lustre/ptlrpc/service.c | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index d57abf0..0119750 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -13,6 +13,12 @@ xxxx-xx-xx Oracle, Inc. lock before replay feature (bug 16774) are disabled by default. Severity : normal +Bugzilla : 21804 +Description: release request ref through ptlrpc_server_drop_request() +Details : make sure the request is protected by rq_refcount while + being processed in ptlrpc_server_handle_req_in(). + +Severity : normal Bugzilla : 23820 Description: Handle unsent requests with rq_net_err in ptlrpc_check_set() diff --git a/lustre/ptlrpc/service.c b/lustre/ptlrpc/service.c index 566da11..0bd922f 100644 --- a/lustre/ptlrpc/service.c +++ b/lustre/ptlrpc/service.c @@ -1168,6 +1168,7 @@ ptlrpc_server_handle_req_in(struct ptlrpc_service *svc) list_del_init (&req->rq_list); /* Consider this still a "queued" request as far as stats are concerned */ + ptlrpc_request_addref(req); spin_unlock(&svc->srv_lock); /* Clear request swab mask; this is a new request */ @@ -1237,9 +1238,13 @@ ptlrpc_server_handle_req_in(struct ptlrpc_service *svc) if (rc) GOTO(err_req, rc); cfs_waitq_signal(&svc->srv_waitq); + /** drop request refcount */ + ptlrpc_server_drop_request(req); RETURN(1); err_req: + /** drop request refcount */ + ptlrpc_server_drop_request(req); spin_lock(&svc->srv_lock); svc->srv_n_queued_reqs--; svc->srv_n_active_reqs++; -- 1.8.3.1