Whamcloud - gitweb
b=21760 Application hung in direct I/O
authorDmitry Zogin <dmitry.zoguine@oracle.com>
Fri, 30 Jul 2010 13:48:09 +0000 (09:48 -0400)
committerJohann Lombardi <johann.lombardi@oracle.com>
Mon, 2 Aug 2010 07:56:11 +0000 (09:56 +0200)
 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 a318c69..4af9a73 100644 (file)
@@ -1224,6 +1224,12 @@ int ptlrpc_check_set(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
                          * call interpret before that. We need to make