Whamcloud - gitweb
Branch HEAD
authorbobijam <bobijam>
Thu, 6 Aug 2009 01:40:48 +0000 (01:40 +0000)
committerbobijam <bobijam>
Thu, 6 Aug 2009 01:40:48 +0000 (01:40 +0000)
b=19854
o=johann
i=oleg.drokin (green)
i=robert.read
o=oleg.drokin(green)
i=johann
i=zhenyu.xu (bobijam)

Description: enable client interface failover
Details    : When a child reconnects from another NID, properly update export
             nid hash position and ldlm reverse import.

lustre/ChangeLog
lustre/ldlm/ldlm_lib.c

index 8a803eb..c285689 100644 (file)
@@ -13,6 +13,12 @@ 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   : 19854
+Description: enable client interface failover
+Details    : When a child reconnects from another NID, properly update export
+             nid hash position and ldlm reverse import.
+
 Severity   : enhancement
 Bugzilla   : 18539
 Description: Communicate OST degraded/readonly state via statfs to MDS
@@ -23,13 +29,13 @@ Details    : Flags in the statfs returned from OSTs indicate whether the
 Severity   : normal
 Bugzilla   : 20122
 Frequency  : rare
-Description: don't panic if EPROTO was hit when reading symlink 
+Description: don't panic if EPROTO was hit when reading symlink
 Details    : correctly handling request reference in error cases.
 
 Severity   : enhancement
 Bugzilla   : 19856
 Description: Add LustreNetLink, a kernel-userspace communcation path.
-       
+
 Severity   : enhancement
 Bugzilla   : 19847
 Description: Update kernel to SLES10 SP2 2.6.16.60-0.39.3.
@@ -69,12 +75,12 @@ Bugzilla   : 19507
 Description: Temporarily disable grant shrink.
 Details    : Disable the feature for debugging.
 
-Severity   : normal 
+Severity   : normal
 Frequency  : only when formatting test filesystems
-Bugzilla   : 18624 
+Bugzilla   : 18624
 Description: Unable to run several mkfs.lustre on loop devices at the same time
 Details    : mkfs.lustre returns error 256 on the concurrent loop devices
-            formatting. The solution is to proper handle the error.   
+            formatting. The solution is to proper handle the error.
 
 Severity   : enhancement
 Bugzilla   : 19024
index bb6e297..23ef86e 100644 (file)
@@ -760,7 +760,9 @@ int target_handle_connect(struct ptlrpc_request *req)
                 export = NULL;
                 rc = 0;
         } else if (export->exp_connection != NULL &&
-                   req->rq_peer.nid != export->exp_connection->c_peer.nid) {
+                   req->rq_peer.nid != export->exp_connection->c_peer.nid &&
+                   (lustre_msg_get_op_flags(req->rq_reqmsg) &
+                    MSG_CONNECT_INITIAL)) {
                 /* in mds failover we have static uuid but nid can be
                  * changed*/
                 CWARN("%s: cookie %s seen on new NID %s when "
@@ -930,8 +932,17 @@ dont_check_exports:
                 spin_unlock(&export->exp_lock);
         }
 
-        if (export->exp_connection != NULL)
+        if (export->exp_connection != NULL) {
+                /* Check to see if connection came from another NID */
+                if ((export->exp_connection->c_peer.nid != req->rq_peer.nid) &&
+                    !hlist_unhashed(&export->exp_nid_hash))
+                        lustre_hash_del(export->exp_obd->obd_nid_hash,
+                                        &export->exp_connection->c_peer.nid,
+                                        &export->exp_nid_hash);
+
                 ptlrpc_connection_put(export->exp_connection);
+        }
+
         export->exp_connection = ptlrpc_connection_get(req->rq_peer,
                                                        req->rq_self,
                                                        &remote_uuid);