From ed70cb30852dbe5d25757607ba509dc0e54c7c5c Mon Sep 17 00:00:00 2001 From: dzogin Date: Wed, 26 Aug 2009 00:54:12 +0000 Subject: [PATCH] Branch HEAD b=18674 i=alexey.lyashkov i=dmitry.zogin Modified Files: lustre/ChangeLog lustre/ost/ost_handler.c Description: Do not start bulk transfer, if client tried to reconnect. Details : Do not start bulk transfer, if client tried to reconnect, but failed due to active rpcs. Check for exp_abort_active_req has been implemented. --- lustre/ChangeLog | 7 +++++++ lustre/ost/ost_handler.c | 10 ++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 6c1c647..8938a12 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -13,6 +13,13 @@ tbd Sun Microsystems, Inc. removed cwd "./" (refer to Bugzilla 14399). * File join has been disabled in this release, refer to Bugzilla 16929. +Severity : normal +Bugzilla : 18674 +Description: Do not start bulk transfer, if client tried to reconnect. +Details : Do not start bulk transfer, if client tried to reconnect, + but failed due to active rpcs. Check for exp_abort_active_req + has been implemented. + Severity : normal Bugzilla : 19566 Description: Prevent inconsistences between linux and lustre mount structures. diff --git a/lustre/ost/ost_handler.c b/lustre/ost/ost_handler.c index 6d669af..02298d1 100644 --- a/lustre/ost/ost_handler.c +++ b/lustre/ost/ost_handler.c @@ -753,7 +753,8 @@ static int ost_brw_read(struct ptlrpc_request *req, struct obd_trans_info *oti) obd_evict_inprogress), &lwi); } - if (exp->exp_failed) + /* Check if client was evicted or tried to reconnect already */ + if (exp->exp_failed || exp->exp_abort_active_req) rc = -ENOTCONN; else { rc = sptlrpc_svc_wrap_bulk(req, desc); @@ -998,9 +999,10 @@ static int ost_brw_write(struct ptlrpc_request *req, struct obd_trans_info *oti) if (rc != 0) GOTO(out_lock, rc); - /* Check if client was evicted while we were doing i/o before touching - network */ - if (desc->bd_export->exp_failed) + /* Check if client was evicted or tried to reconnect while we + * were doing i/o before touching network */ + if (desc->bd_export->exp_failed || + desc->bd_export->exp_abort_active_req) rc = -ENOTCONN; else rc = ptlrpc_start_bulk_transfer(desc); -- 1.8.3.1