Skip to contentSkip to conversation

ocfs2/dlm: modify DLM_QUERY_NODEINFO message to adapt IPv6 node

PATCH New piaojun 1 participant 1 message Oct 25, 2018 OCFS2

lore
Share & tools
lore

piaojun

author
#0 lore raw

PATCH 4/5 ocfs2/dlm: modify DLM_QUERY_NODEINFO message to adapt IPv6 node

Add IPv6 node info to dlm_query_nodeinfo, and distinguish with IPv4 by qn_ipnet_type. DLM_QUERY_NODEINFO message is compitibile with the old version.

---
 fs/ocfs2/cluster/tcp.c   |  6 ++--
 fs/ocfs2/cluster/tcp.h   |  2 +-
 fs/ocfs2/dlm/dlmcommon.h | 12 +++++--
 fs/ocfs2/dlm/dlmdomain.c | 93 ++++++++++++++++++++++++++++++++++--------------
 4 files changed, 80 insertions(+), 33 deletions(-)
fs/ocfs2/cluster/tcp.c +3 -3
index 82fa8da..31157a8 100644
@@ -409,7 +409,7 @@ static void sc_kref_release(struct kref *kref)
 	o2net_debug_del_sc(sc);
 
 	if (sc->sc_page)
-		__free_page(sc->sc_page);
+		__free_pages(sc->sc_page, 1);
 	kfree(sc);
 }
 
@@ -429,7 +429,7 @@ static struct o2net_sock_container *sc_alloc(struct o2nm_node *node)
 	struct page *page = NULL;
 	int status = 0;
 
-	page = alloc_page(GFP_NOFS);
+	page = alloc_pages(GFP_NOFS, 1);
 	sc = kzalloc(sizeof(*sc), GFP_NOFS);
 	if (sc == NULL || page == NULL)
 		goto out;
@@ -462,7 +462,7 @@ static struct o2net_sock_container *sc_alloc(struct o2nm_node *node)
 
 out:
 	if (page)
-		__free_page(page);
+		__free_pages(page, 1);
 	kfree(sc);
 
 	return ret;
fs/ocfs2/cluster/tcp.h +1 -1
index c571e84..002b267 100644
@@ -55,7 +55,7 @@ typedef int (o2net_msg_handler_func)(struct o2net_msg *msg, u32 len, void *data,
 typedef void (o2net_post_msg_handler_func)(int status, void *data,
 					   void *ret_data);
 
-#define O2NET_MAX_PAYLOAD_BYTES  (4096 - sizeof(struct o2net_msg))
+#define O2NET_MAX_PAYLOAD_BYTES  (4096 * 2 - sizeof(struct o2net_msg))
 
 /* same as hb delay, we're waiting for another node to recognize our hb */
 #define O2NET_RECONNECT_DELAY_MS_DEFAULT	2000
fs/ocfs2/dlm/dlmcommon.h +9 -3
index d06e27e..ba391ec 100644
@@ -747,15 +747,21 @@ struct dlm_query_region {
 struct dlm_node_info {
 	u8 ni_nodenum;
 	u8 pad1;
-	__be16 ni_ipv4_port;
-	__be32 ni_ipv4_address;
+	union {
+		__be16 ni_ipv4_port;
+		__be16 ni_ipv6_port;
+	} ip_port;
+	union {
+		__be32 ni_ipv4_address;
+		u8 ni_ipv6_address[16];
+	} ip_addr;
 };
 
 struct dlm_query_nodeinfo {
 	u8 qn_nodenum;
 	u8 qn_numnodes;
 	u8 qn_namelen;
-	u8 pad1;
+	u8 qn_ipnet_type;  /* 0-IPv4, 1-IPv6 */
 	u8 qn_domain[O2NM_MAX_NAME_LEN];
 	struct dlm_node_info qn_nodes[O2NM_MAX_NODES];
 };
fs/ocfs2/dlm/dlmdomain.c +67 -26

115 lines not on this page · raw message