Hi,
On 09/04/18 06:02, Gang He wrote:
Hello David,
If the user sets "protocol=tcp" in the configuration file /etc/dlm/dlm.conf
under two-rings cluster environment,
DLM kernel module will not work with the below error message,
[ 43.696924] DLM installed
[ 149.552039] ocfs2: Registered cluster interface user
[ 149.559579] dlm: TCP protocol can't handle multi-homed hosts, try SCTP <<==
here, failed
[ 149.559589] dlm: cannot start dlm lowcomms -22
[ 149.559612] (mount.ocfs2,2593,3):ocfs2_dlm_init:3120 ERROR: status = -22
[ 149.559629] (mount.ocfs2,2593,3):ocfs2_mount_volume:1845 ERROR: status = -22
Then, could we modify the code, let this case still work via only using one
ring address? or the code is written by purpose.
in lowcomms.c
1358 static int tcp_listen_for_all(void)
1359 {
1360 struct socket *sock = NULL;
1361 struct connection *con = nodeid2con(0, GFP_NOFS);
1362 int result = -EINVAL;
1363
1364 if (!con)
1365 return -ENOMEM;
1366
1367 /* We don't support multi-homed hosts */
1368 if (dlm_local_addr[1] != NULL) { <<== here, could we get ride of
this limitation?
1369 log_print("TCP protocol can't handle multi-homed hosts, "
1370 "try SCTP");
1371 return -EINVAL;
1372 }
1373
1374 log_print("Using TCP for communications");
1375
1376 sock = tcp_create_listen_sock(con, dlm_local_addr[0]);
1377 if (sock) {
1378 add_sock(sock, con);
1379 result = 0;
1380 }
1381 else {
1382 result = -EADDRINUSE;
1383 }
Thanks
Gang
There is already a patch set to allow multi-homing for TCP. Mark and
Dave can comment on the current status and how far from merging it
currently is,
Steve.