aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/cluster/tcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ocfs2/cluster/tcp.c')
-rw-r--r--fs/ocfs2/cluster/tcp.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c
index aa75ca3f78da..9aa426e42123 100644
--- a/fs/ocfs2/cluster/tcp.c
+++ b/fs/ocfs2/cluster/tcp.c
@@ -977,7 +977,7 @@ static int o2net_tx_can_proceed(struct o2net_node *nn,
977int o2net_send_message_vec(u32 msg_type, u32 key, struct kvec *caller_vec, 977int o2net_send_message_vec(u32 msg_type, u32 key, struct kvec *caller_vec,
978 size_t caller_veclen, u8 target_node, int *status) 978 size_t caller_veclen, u8 target_node, int *status)
979{ 979{
980 int ret; 980 int ret = 0;
981 struct o2net_msg *msg = NULL; 981 struct o2net_msg *msg = NULL;
982 size_t veclen, caller_bytes = 0; 982 size_t veclen, caller_bytes = 0;
983 struct kvec *vec = NULL; 983 struct kvec *vec = NULL;
@@ -1696,6 +1696,9 @@ static void o2net_hb_node_down_cb(struct o2nm_node *node, int node_num,
1696{ 1696{
1697 o2quo_hb_down(node_num); 1697 o2quo_hb_down(node_num);
1698 1698
1699 if (!node)
1700 return;
1701
1699 if (node_num != o2nm_this_node()) 1702 if (node_num != o2nm_this_node())
1700 o2net_disconnect_node(node); 1703 o2net_disconnect_node(node);
1701 1704
@@ -1709,6 +1712,8 @@ static void o2net_hb_node_up_cb(struct o2nm_node *node, int node_num,
1709 1712
1710 o2quo_hb_up(node_num); 1713 o2quo_hb_up(node_num);
1711 1714
1715 BUG_ON(!node);
1716
1712 /* ensure an immediate connect attempt */ 1717 /* ensure an immediate connect attempt */
1713 nn->nn_last_connect_attempt = jiffies - 1718 nn->nn_last_connect_attempt = jiffies -
1714 (msecs_to_jiffies(o2net_reconnect_delay()) + 1); 1719 (msecs_to_jiffies(o2net_reconnect_delay()) + 1);
@@ -1759,6 +1764,7 @@ static int o2net_accept_one(struct socket *sock)
1759 struct sockaddr_in sin; 1764 struct sockaddr_in sin;
1760 struct socket *new_sock = NULL; 1765 struct socket *new_sock = NULL;
1761 struct o2nm_node *node = NULL; 1766 struct o2nm_node *node = NULL;
1767 struct o2nm_node *local_node = NULL;
1762 struct o2net_sock_container *sc = NULL; 1768 struct o2net_sock_container *sc = NULL;
1763 struct o2net_node *nn; 1769 struct o2net_node *nn;
1764 1770
@@ -1796,11 +1802,15 @@ static int o2net_accept_one(struct socket *sock)
1796 goto out; 1802 goto out;
1797 } 1803 }
1798 1804
1799 if (o2nm_this_node() > node->nd_num) { 1805 if (o2nm_this_node() >= node->nd_num) {
1800 mlog(ML_NOTICE, "unexpected connect attempted from a lower " 1806 local_node = o2nm_get_node_by_num(o2nm_this_node());
1801 "numbered node '%s' at " "%pI4:%d with num %u\n", 1807 mlog(ML_NOTICE, "unexpected connect attempt seen at node '%s' ("
1802 node->nd_name, &sin.sin_addr.s_addr, 1808 "%u, %pI4:%d) from node '%s' (%u, %pI4:%d)\n",
1803 ntohs(sin.sin_port), node->nd_num); 1809 local_node->nd_name, local_node->nd_num,
1810 &(local_node->nd_ipv4_address),
1811 ntohs(local_node->nd_ipv4_port),
1812 node->nd_name, node->nd_num, &sin.sin_addr.s_addr,
1813 ntohs(sin.sin_port));
1804 ret = -EINVAL; 1814 ret = -EINVAL;
1805 goto out; 1815 goto out;
1806 } 1816 }
@@ -1857,6 +1867,8 @@ out:
1857 sock_release(new_sock); 1867 sock_release(new_sock);
1858 if (node) 1868 if (node)
1859 o2nm_node_put(node); 1869 o2nm_node_put(node);
1870 if (local_node)
1871 o2nm_node_put(local_node);
1860 if (sc) 1872 if (sc)
1861 sc_put(sc); 1873 sc_put(sc);
1862 return ret; 1874 return ret;