]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
RDS: Move connection along with IP when failing over/back.
authorBang Nguyen <bang.nguyen@oracle.com>
Fri, 7 Jun 2013 00:15:07 +0000 (17:15 -0700)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Wed, 8 Jul 2015 20:37:58 +0000 (13:37 -0700)
Orabug: 16916648

Signed-off-by: Bang Nguyen <bang.nguyen@oracle.com>
Acked-by: Zheng Li <zheng.x.li@oracle.com>
Signed-off-by: Jerry Snitselaar <jerry.snitselaar@oracle.com>
(cherry picked from commit 78b7d86911046c3a10ffa52d90f4f1a4523d7ac3)

net/rds/ib.c

index 9051b003fa6fde6a0b22b2fc01783aa2bdece17e..a547962030f711fe74d0e3c5c799a838d662e669 100644 (file)
@@ -525,6 +525,9 @@ static int rds_ib_move_ip(char                      *from_dev,
        int                     ret = 0;
        u8                      active_port;
        struct in_device        *in_dev;
+       unsigned long flags;
+       struct rds_ib_connection *ic;
+       struct rds_ib_device *rds_ibdev;
 
        page = alloc_page(GFP_HIGHUSER);
        if (!page) {
@@ -622,29 +625,23 @@ static int rds_ib_move_ip(char                    *from_dev,
                        "RDS/IB: IP %u.%u.%u.%u migrated from %s to %s\n",
                                NIPQUAD(addr), from_dev2, to_dev2);
 
-               if (event_type == RDS_IB_PORT_EVENT_NET) {
-                       unsigned long flags;
-                       struct rds_ib_connection *ic;
-                       struct rds_ib_device *rds_ibdev;
-
-                       rds_ibdev = ip_config[to_port].rds_ibdev;
-                       spin_lock_irqsave(&rds_ibdev->spinlock, flags);
-                       list_for_each_entry(ic, &rds_ibdev->conn_list, ib_node)
-                               if (ic->conn->c_laddr == addr) {
+               rds_ibdev = ip_config[from_port].rds_ibdev;
+               spin_lock_irqsave(&rds_ibdev->spinlock, flags);
+               list_for_each_entry(ic, &rds_ibdev->conn_list, ib_node)
+                       if (ic->conn->c_laddr == addr) {
 #if RDMA_RDS_APM_SUPPORTED
-                                       if (rds_ib_apm_enabled) {
-                                               if (!memcmp(
-                                                       &ic->i_cur_path.p_sgid,
-                                                       &ip_config[to_port].gid,
-                                                       sizeof(union ib_gid))) {
-                                                       continue;
-                                               }
+                               if (rds_ib_apm_enabled) {
+                                       if (!memcmp(
+                                               &ic->i_cur_path.p_sgid,
+                                               &ip_config[to_port].gid,
+                                               sizeof(union ib_gid))) {
+                                               continue;
                                        }
-#endif
-                                       rds_conn_drop(ic->conn);
                                }
-                       spin_unlock_irqrestore(&rds_ibdev->spinlock, flags);
-               }
+#endif
+                               rds_conn_drop(ic->conn);
+                       }
+               spin_unlock_irqrestore(&rds_ibdev->spinlock, flags);
        }
 
 out: