Whamcloud - gitweb
When the failover node is the primary node, it is possible
authordeen <deen>
Wed, 5 Mar 2008 18:09:51 +0000 (18:09 +0000)
committerdeen <deen>
Wed, 5 Mar 2008 18:09:51 +0000 (18:09 +0000)
to have two identical connections in imp_conn_list. We must
compare not conn's pointers but NIDs, otherwise we can defeat
connection throttling.

b=14774
i=adilger
i=johann

lustre/ChangeLog
lustre/ptlrpc/import.c

index 424e4b7..71deebe 100644 (file)
@@ -389,6 +389,14 @@ Details    : When processing waiting list for read extent lock and meeting read
             status of conflictness, since we are guaranteed there are no
             conflicting locks in the rest of the list.
 
+Severity   : normal
+Bugzilla   : 14774
+Description: Time out and refuse to reconnect
+Details    : When the failover node is the primary node, it is possible
+             to have two identical connections in imp_conn_list. We must
+             compare not conn's pointers but NIDs, otherwise we
+            can defeat connection throttling.
+
 --------------------------------------------------------------------------------
 
 2007-12-07         Cluster File Systems, Inc. <info@clusterfs.com>
index efae267..ca48d55 100644 (file)
@@ -566,7 +566,12 @@ static void ptlrpc_maybe_ping_import_soon(struct obd_import *imp)
                               struct obd_import_conn,
                               oic_item);
 
-        if (imp->imp_conn_current != imp_conn) {
+        /* XXX: When the failover node is the primary node, it is possible
+         * to have two identical connections in imp_conn_list. We must 
+         * compare not conn's pointers but NIDs, otherwise we can defeat
+         * connection throttling. (See bug 14774.) */
+        if (imp->imp_conn_current->oic_conn->c_self != 
+                                imp_conn->oic_conn->c_self) {
                 ptlrpc_ping_import_soon(imp);
                 wake_pinger = 1;
         }