Whamcloud - gitweb
b=18674
authordzogin <dzogin>
Sun, 9 Aug 2009 17:01:39 +0000 (17:01 +0000)
committerdzogin <dzogin>
Sun, 9 Aug 2009 17:01:39 +0000 (17:01 +0000)
i=alexey.lyashkov
i=dmitry.zogin
Modified Files:
Tag: b1_8
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 4951e09..3936805 100644 (file)
@@ -15,6 +15,13 @@ tbd Sun Microsystems, Inc.
          more information, please refer to bugzilla 17630.
 
 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   : 20321 
 Description: Deadlock between filter_destroy() and filter_commitrw_write().
 Details    : filter_destroy() does not hold the DLM lock over the whole
index 835af1f..f3dcf72 100644 (file)
@@ -781,7 +781,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 = ptlrpc_start_bulk_transfer(desc);
@@ -1009,9 +1010,10 @@ static int ost_brw_write(struct ptlrpc_request *req, struct obd_trans_info *oti)
                                       local_nb[i].offset & ~CFS_PAGE_MASK,
                                       local_nb[i].len);
 
-        /* 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);