From: Johann Lombardi Date: Thu, 25 Nov 2010 17:36:38 +0000 (+0100) Subject: b=21804 make sure the request is protected by rq_refcount while X-Git-Tag: 1.8.5.51~33 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=f35a070ec5e4694313c29d605eaff872474babc8;p=fs%2Flustre-release.git b=21804 make sure the request is protected by rq_refcount while i=vitaly i=oleg --- 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++;