server: dump where we attempted to bind in case of failure
authorJens Axboe <axboe@fb.com>
Tue, 25 Mar 2014 17:50:55 +0000 (10:50 -0700)
committerJens Axboe <axboe@fb.com>
Tue, 25 Mar 2014 17:50:55 +0000 (10:50 -0700)
Helps locate what the issue is, instead of having to use
strace and similar tools.

Signed-off-by: Jens Axboe <axboe@fb.com>
server.c

index 32d69140da20cdb4a8f48c7dcdf72f668b260690..0954d4c3d7c81c7bfe1aa2a839b92645dc3863db 100644 (file)
--- a/server.c
+++ b/server.c
@@ -1267,6 +1267,8 @@ static int fio_init_server_ip(void)
 {
        struct sockaddr *addr;
        socklen_t socklen;
 {
        struct sockaddr *addr;
        socklen_t socklen;
+       char buf[80];
+       const char *str;
        int sk, opt;
 
        if (use_ipv6)
        int sk, opt;
 
        if (use_ipv6)
@@ -1294,17 +1296,24 @@ static int fio_init_server_ip(void)
 #endif
 
        if (use_ipv6) {
 #endif
 
        if (use_ipv6) {
+               const void *src = &saddr_in6.sin6_addr;
+
                addr = (struct sockaddr *) &saddr_in6;
                socklen = sizeof(saddr_in6);
                saddr_in6.sin6_family = AF_INET6;
                addr = (struct sockaddr *) &saddr_in6;
                socklen = sizeof(saddr_in6);
                saddr_in6.sin6_family = AF_INET6;
+               str = inet_ntop(AF_INET6, src, buf, sizeof(buf));
        } else {
        } else {
+               const void *src = &saddr_in.sin_addr;
+
                addr = (struct sockaddr *) &saddr_in;
                socklen = sizeof(saddr_in);
                saddr_in.sin_family = AF_INET;
                addr = (struct sockaddr *) &saddr_in;
                socklen = sizeof(saddr_in);
                saddr_in.sin_family = AF_INET;
+               str = inet_ntop(AF_INET, src, buf, sizeof(buf));
        }
 
        if (bind(sk, addr, socklen) < 0) {
                log_err("fio: bind: %s\n", strerror(errno));
        }
 
        if (bind(sk, addr, socklen) < 0) {
                log_err("fio: bind: %s\n", strerror(errno));
+               log_info("fio: failed with IPv%c %s\n", use_ipv6 ? '6' : '4', str);
                close(sk);
                return -1;
        }
                close(sk);
                return -1;
        }