From 2e6dbf8ca4d2092428d7c6d2894c31870b210883 Mon Sep 17 00:00:00 2001 From: "Alexander.Boyko" Date: Mon, 17 Sep 2012 17:48:59 +0400 Subject: [PATCH] LU-1517 ptlrpc: throw net error to ptlrpc for bulk Start reconnect and resend if network error occures for the bulk transfer. Signed-off-by: Alexander Boyko Change-Id: I0cf2ee1230a039336f081fbb520c1ce768882088 Xyratex-bug-id: MRP-523 Reviewed-on: http://review.whamcloud.com/3102 Tested-by: Hudson Reviewed-by: Liang Zhen Reviewed-by: Keith Mannthey Tested-by: Maloo Reviewed-by: Cory Spitz Reviewed-by: Johann Lombardi --- lustre/ptlrpc/events.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lustre/ptlrpc/events.c b/lustre/ptlrpc/events.c index d820570..0827ee5 100644 --- a/lustre/ptlrpc/events.c +++ b/lustre/ptlrpc/events.c @@ -181,6 +181,7 @@ void client_bulk_callback (lnet_event_t *ev) { struct ptlrpc_cb_id *cbid = ev->md.user_ptr; struct ptlrpc_bulk_desc *desc = cbid->cbid_arg; + struct ptlrpc_request *req; ENTRY; if (OBD_FAIL_CHECK(OBD_FAIL_PTLRPC_CLIENT_BULK_CB)) @@ -198,7 +199,7 @@ void client_bulk_callback (lnet_event_t *ev) ev->type, ev->status, desc); spin_lock(&desc->bd_lock); - + req = desc->bd_req; LASSERT(desc->bd_network_rw); desc->bd_network_rw = 0; @@ -206,11 +207,16 @@ void client_bulk_callback (lnet_event_t *ev) desc->bd_success = 1; desc->bd_nob_transferred = ev->mlength; desc->bd_sender = ev->sender; + } else { + /* start reconnect and resend if network error hit */ + spin_lock(&req->rq_lock); + req->rq_net_err = 1; + spin_unlock(&req->rq_lock); } /* NB don't unlock till after wakeup; desc can disappear under us * otherwise */ - ptlrpc_client_wake_req(desc->bd_req); + ptlrpc_client_wake_req(req); spin_unlock(&desc->bd_lock); EXIT; -- 1.8.3.1