First stab at adding job options to json output
[fio.git] / server.c
index 3d155326c286caa8e496951e9f969058589bc49e..ca17f9a301ab87ef5116c210363f727122f8d37a 100644 (file)
--- a/server.c
+++ b/server.c
@@ -1256,7 +1256,7 @@ static int get_my_addr_str(int sk)
        return 0;
 }
 
-static int accept_loop(struct sk_out *sk_out, int listen_sk)
+static int accept_loop(int listen_sk)
 {
        struct sockaddr_in addr;
        struct sockaddr_in6 addr6;
@@ -1270,6 +1270,7 @@ static int accept_loop(struct sk_out *sk_out, int listen_sk)
        fio_set_fd_nonblocking(listen_sk, "server");
 
        while (!exit_backend) {
+               struct sk_out *sk_out;
                const char *from;
                char buf[64];
                pid_t pid;
@@ -1888,7 +1889,7 @@ static int fio_init_server_connection(void)
 
        log_info("fio: server listening on %s\n", bind_str);
 
-       if (listen(sk, 0) < 0) {
+       if (listen(sk, 4) < 0) {
                log_err("fio: listen: %s\n", strerror(errno));
                close(sk);
                return -1;
@@ -2081,9 +2082,15 @@ static void set_sig_handlers(void)
 
 static int fio_server(void)
 {
-       struct sk_out *sk_out;
        int sk, ret;
 
+       if (pthread_key_create(&sk_out_key, NULL)) {
+               log_err("fio: can't create sk_out backend key\n");
+               return -1;
+       }
+
+       pthread_setspecific(sk_out_key, NULL);
+
        dprint(FD_NET, "starting server\n");
 
        if (fio_handle_server_arg())
@@ -2095,10 +2102,7 @@ static int fio_server(void)
 
        set_sig_handlers();
 
-       if (pthread_key_create(&sk_out_key, NULL))
-               log_err("fio: can't create sk_out backend key\n");
-
-       ret = accept_loop(sk_out, sk);
+       ret = accept_loop(sk);
 
        close(sk);