Hi Steven and David,
>>> > 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, Thanks for your update on this problem, hopefully we can the related patches in the Linus git tree soon. Thanks Gang > > Steve.