Whamcloud - gitweb
Branch HEAD
authordzogin <dzogin>
Wed, 26 Aug 2009 00:54:12 +0000 (00:54 +0000)
committerdzogin <dzogin>
Wed, 26 Aug 2009 00:54:12 +0000 (00:54 +0000)
 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
lustre/ost/ost_handler.c

index 6c1c647..8938a12 100644 (file)
@@ -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.
 
         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.
 Severity   : normal
 Bugzilla   : 19566
 Description: Prevent inconsistences between linux and lustre mount structures.
index 6d669af..02298d1 100644 (file)
@@ -753,7 +753,8 @@ static int ost_brw_read(struct ptlrpc_request *req, struct obd_trans_info *oti)
                                                         obd_evict_inprogress),
                                           &lwi);
                 }
                                                         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);
                         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);
 
         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);
                 rc = -ENOTCONN;
         else
                 rc = ptlrpc_start_bulk_transfer(desc);