Description of problem: Failure when glusterd is configured to bind specific IPv6 address. If bind-address is IPv6, *addr_len will be non-zero and it goes to ret = -1 branch, which will cause listen failure eventually Version-Release number of selected component (if applicable): How reproducible: Configure glusterd with pure IPv6 Steps to Reproduce: 1. 2. 3. Actual results: log: [2019-05-21 06:07:28.121877] T [MSGID: 0] [xlator.c:369:xlator_dynload] 0-xlator: attempt to load file /usr/lib64/glusterfs/6.1/xlator/mgmt/glusterd.so [2019-05-21 06:07:28.123042] T [MSGID: 0] [xlator.c:286:xlator_dynload_apis] 0-xlator: management: method missing (reconfigure) [2019-05-21 06:07:28.123061] T [MSGID: 0] [xlator.c:290:xlator_dynload_apis] 0-xlator: management: method missing (notify) [2019-05-21 06:07:28.123069] T [MSGID: 0] [xlator.c:294:xlator_dynload_apis] 0-xlator: management: method missing (dumpops) [2019-05-21 06:07:28.123075] T [MSGID: 0] [xlator.c:305:xlator_dynload_apis] 0-xlator: management: method missing (dump_metrics) [2019-05-21 06:07:28.123081] T [MSGID: 0] [xlator.c:313:xlator_dynload_apis] 0-xlator: management: method missing (pass_through_fops), falling back to default [2019-05-21 06:07:28.123100] T [MSGID: 0] [graph.y:218:volume_type] 0-parser: Type:management:mgmt/glusterd [2019-05-21 06:07:28.123115] T [MSGID: 0] [graph.y:253:volume_option] 0-parser: Option:management:working-directory:/var/lib/glusterd [2019-05-21 06:07:28.123124] T [MSGID: 0] [graph.y:253:volume_option] 0-parser: Option:management:transport-type:socket,rdma [2019-05-21 06:07:28.123134] T [MSGID: 0] [graph.y:253:volume_option] 0-parser: Option:management:transport.socket.keepalive-time:10 [2019-05-21 06:07:28.123142] T [MSGID: 0] [graph.y:253:volume_option] 0-parser: Option:management:transport.socket.keepalive-interval:2 [2019-05-21 06:07:28.123153] T [MSGID: 0] [graph.y:253:volume_option] 0-parser: Option:management:transport.socket.read-fail-log:off [2019-05-21 06:07:28.123160] T [MSGID: 0] [graph.y:253:volume_option] 0-parser: Option:management:transport.socket.listen-port:24007 [2019-05-21 06:07:28.123167] T [MSGID: 0] [graph.y:253:volume_option] 0-parser: Option:management:transport.rdma.listen-port:24008 [2019-05-21 06:07:28.123175] T [MSGID: 0] [graph.y:253:volume_option] 0-parser: Option:management:transport.address-family:inet6 [2019-05-21 06:07:28.123182] T [MSGID: 0] [graph.y:253:volume_option] 0-parser: Option:management:ping-timeout:0 [2019-05-21 06:07:28.123191] T [MSGID: 0] [graph.y:253:volume_option] 0-parser: Option:management:event-threads:1 [2019-05-21 06:07:28.123199] T [MSGID: 0] [graph.y:253:volume_option] 0-parser: Option:management:transport.socket.bind-address:2001:db81234:e [2019-05-21 06:07:28.123206] T [MSGID: 0] [graph.y:253:volume_option] 0-parser: Option:management:transport.tcp.bind-address:2001:db81234:e [2019-05-21 06:07:28.123223] T [MSGID: 0] [graph.y:253:volume_option] 0-parser: Option:management:transport.rdma.bind-address:2001:db81234:e [2019-05-21 06:07:28.123233] T [MSGID: 0] [graph.y:324:volume_end] 0-parser: end:management [2019-05-21 06:07:28.123482] I [MSGID: 106478] [glusterd.c:1422:init] 0-management: Maximum allowed open file descriptors set to 65536 [2019-05-21 06:07:28.123541] I [MSGID: 106479] [glusterd.c:1478:init] 0-management: Using /var/lib/glusterd as working directory [2019-05-21 06:07:28.123557] I [MSGID: 106479] [glusterd.c:1484:init] 0-management: Using /var/run/gluster as pid file working directory [2019-05-21 06:07:28.123678] D [MSGID: 0] [glusterd.c:458:glusterd_rpcsvc_options_build] 0-glusterd: listen-backlog value: 1024 [2019-05-21 06:07:28.123710] T [rpcsvc.c:2815:rpcsvc_init] 0-rpc-service: rx pool: 64 [2019-05-21 06:07:28.123739] T [rpcsvc-auth.c:124:rpcsvc_auth_init_auth] 0-rpc-service: Authentication enabled: AUTH_GLUSTERFS [2019-05-21 06:07:28.123746] T [rpcsvc-auth.c:124:rpcsvc_auth_init_auth] 0-rpc-service: Authentication enabled: AUTH_GLUSTERFS-v2 [2019-05-21 06:07:28.123750] T [rpcsvc-auth.c:124:rpcsvc_auth_init_auth] 0-rpc-service: Authentication enabled: AUTH_GLUSTERFS-v3 [2019-05-21 06:07:28.123765] T [rpcsvc-auth.c:124:rpcsvc_auth_init_auth] 0-rpc-service: Authentication enabled: AUTH_UNIX [2019-05-21 06:07:28.123772] T [rpcsvc-auth.c:124:rpcsvc_auth_init_auth] 0-rpc-service: Authentication enabled: AUTH_NULL [2019-05-21 06:07:28.123777] D [rpcsvc.c:2835:rpcsvc_init] 0-rpc-service: RPC service inited. [2019-05-21 06:07:28.123959] D [rpcsvc.c:2337:rpcsvc_program_register] 0-rpc-service: New program registered: GF-DUMP, Num: 123451501, Ver: 1, Port: 0 [2019-05-21 06:07:28.123983] D [rpc-transport.c:293:rpc_transport_load] 0-rpc-transport: attempt to load file /usr/lib64/glusterfs/6.1/rpc-transport/socket.so [2019-05-21 06:07:28.127261] T [MSGID: 0] [options.c:141:xlator_option_validate_sizet] 0-management: no range check required for 'option transport.listen-backlog 1024' [2019-05-21 06:07:28.127422] T [MSGID: 0] [options.c:79:xlator_option_validate_int] 0-management: no range check required for 'option transport.socket.listen-port 24007' [2019-05-21 06:07:28.127487] T [MSGID: 0] [options.c:79:xlator_option_validate_int] 0-management: no range check required for 'option transport.socket.keepalive-interval 2' [2019-05-21 06:07:28.127513] T [MSGID: 0] [options.c:79:xlator_option_validate_int] 0-management: no range check required for 'option transport.socket.keepalive-time 10' [2019-05-21 06:07:28.129213] D [socket.c:4505:socket_init] 0-socket.management: Configued transport.tcp-user-timeout=42 [2019-05-21 06:07:28.129231] D [socket.c:4523:socket_init] 0-socket.management: Reconfigued transport.keepalivecnt=9 [2019-05-21 06:07:28.129239] D [socket.c:4209:ssl_setup_connection_params] 0-socket.management: SSL support on the I/O path is NOT enabled [2019-05-21 06:07:28.129244] D [socket.c:4212:ssl_setup_connection_params] 0-socket.management: SSL support for glusterd is NOT enabled [2019-05-21 06:07:28.129268] W [rpcsvc.c:1991:rpcsvc_create_listener] 0-rpc-service: listening on transport failed Expected results: Expected not to fail Additional info: The bug is in below snippet. If bind-address is IPv6, *addr_len will be non-zero and it goes to ret = -1 branch, which will cause listen failure eventually. rpc/rpc-transport/socket/src/name.c /* IPV6 server can handle both ipv4 and ipv6 clients */ for (rp = res; rp != NULL; rp = rp->ai_next) { if (rp->ai_addr == NULL) continue; if (rp->ai_family == AF_INET6) { ==============1 memcpy(addr, rp->ai_addr, rp->ai_addrlen); *addr_len = rp->ai_addrlen; } } if (!(*addr_len) && res && res->ai_addr) { memcpy(addr, res->ai_addr, res->ai_addrlen); *addr_len = res->ai_addrlen; } else { ==================2 ret = -1; } freeaddrinfo(res); Issue#667 was opened and a fix was submitted. This is to tag the Gerrit patch with bugzilla ID
Issue should be #677 and PR is #678
You used the wrong Product type. Fixing it now.
Let me know if any action on my side for code submission!
https://review.gluster.org/#/c/glusterfs/+/22769/
REVIEW: https://review.gluster.org/22769 (If bind-address is IPv6 return it successfully) merged (#6) on master by Amar Tumballi
REVIEW: https://review.gluster.org/22786 (If bind-address is IPv6 return it successfully) posted (#1) for review on release-6 by hari gowtham