From 75b7e5a7b448238e486b8f9bd753cda5f4b4e68b Mon Sep 17 00:00:00 2001 From: Dmitry Zogin Date: Thu, 5 Aug 2010 22:48:56 +0400 Subject: [PATCH] b=21760 Applications hung in direct I/O Make sure that the bulk is aborted, if a request has been aborted in flight. Call ptlrpc_abort_bulk() out of ptlrpc_check_set() i=oleg.drokin i=andrew.perepechko --- lustre/ptlrpc/client.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lustre/ptlrpc/client.c b/lustre/ptlrpc/client.c index 7a26e90..3c94ed2 100644 --- a/lustre/ptlrpc/client.c +++ b/lustre/ptlrpc/client.c @@ -1445,6 +1445,12 @@ int ptlrpc_check_set(const struct lu_env *env, struct ptlrpc_request_set *set) LASSERT(req->rq_next_phase != req->rq_phase); LASSERT(req->rq_next_phase != RQ_PHASE_UNDEFINED); + /* Abort the bulk, if the request itself has been + * aborted, for instance, on a client eviction. */ + if (req->rq_err && req->rq_status == -EINTR && + req->rq_bulk != NULL) + ptlrpc_abort_bulk(req->rq_bulk); + /* * Skip processing until reply is unlinked. We * can't return to pool before that and we can't -- 1.8.3.1