Whamcloud - gitweb
b=21760 Applications hung in direct I/O
authorDmitry Zogin <dmitry.zoguine@oracle.com>
Thu, 5 Aug 2010 18:48:56 +0000 (22:48 +0400)
committerMikhail Pershin <tappro@sun.com>
Fri, 6 Aug 2010 19:21:58 +0000 (23:21 +0400)
 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

index 7a26e90..3c94ed2 100644 (file)
@@ -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