server: add a few more debug logging statements
[fio.git] / server.c
index d9aff01c978a3a8701d51d429d48189f46f6d653..6a228ce205263ede7cf718bab51ecec61a903127 100644 (file)
--- a/server.c
+++ b/server.c
@@ -269,7 +269,7 @@ int fio_net_send_simple_cmd(int sk, uint16_t opcode, uint64_t serial)
        return fio_send_data(sk, &cmd, sizeof(cmd));
 }
 
-static int send_quit_command(void)
+static int fio_server_send_quit_cmd(void)
 {
        dprint(FD_NET, "server: sending quit\n");
        return fio_net_send_simple_cmd(server_fd, FIO_NET_CMD_QUIT, 0);
@@ -286,7 +286,7 @@ static int handle_job_cmd(struct fio_net_cmd *cmd)
        fio_net_send_simple_cmd(server_fd, FIO_NET_CMD_START, 0);
 
        ret = exec_run();
-       send_quit_command();
+       fio_server_send_quit_cmd();
        reset_fio_state();
        return ret;
 }
@@ -308,7 +308,7 @@ static int handle_jobline_cmd(struct fio_net_cmd *cmd)
        fio_net_send_simple_cmd(server_fd, FIO_NET_CMD_START, 0);
 
        ret = exec_run();
-       send_quit_command();
+       fio_server_send_quit_cmd();
        reset_fio_state();
        return ret;
 }
@@ -396,6 +396,8 @@ static int accept_loop(int listen_sk)
        struct pollfd pfd;
        int ret, sk, flags, exitval = 0;
 
+       dprint(FD_NET, "server enter accept loop\n");
+
        flags = fcntl(listen_sk, F_GETFL);
        flags |= O_NONBLOCK;
        fcntl(listen_sk, F_SETFL, flags);
@@ -485,6 +487,8 @@ void fio_server_send_ts(struct thread_stat *ts, struct group_run_stats *rs)
        struct cmd_ts_pdu p;
        int i, j;
 
+       dprint(FD_NET, "server sending end stats\n");
+
        memset(&p, 0, sizeof(p));
 
        strcpy(p.ts.name, ts->name);
@@ -554,6 +558,8 @@ void fio_server_send_gs(struct group_run_stats *rs)
 {
        struct group_run_stats gs;
 
+       dprint(FD_NET, "server sending group run stats\n");
+
        convert_gs(&gs, rs);
        fio_net_send_cmd(server_fd, FIO_NET_CMD_GS, &gs, sizeof(gs));
 }
@@ -575,6 +581,8 @@ void fio_server_send_status(void)
                return;
        }
 
+       dprint(FD_NET, "server sending status\n");
+
        je->nr_running          = cpu_to_le32(je->nr_running);
        je->nr_ramp             = cpu_to_le32(je->nr_ramp);
        je->nr_pending          = cpu_to_le32(je->nr_pending);
@@ -602,6 +610,8 @@ int fio_server_log(const char *format, ...)
        va_list args;
        size_t len;
 
+       dprint(FD_NET, "server log\n");
+
        va_start(args, format);
        len = vsnprintf(buffer, sizeof(buffer), format, args);
        va_end(args);
@@ -661,10 +671,33 @@ static int fio_server(void)
        return ret;
 }
 
+static void sig_int(int sig)
+{
+       fio_terminate_threads(TERMINATE_ALL);
+       exit_backend = 1;
+}
+
+static void server_signal_handler(void)
+{
+       struct sigaction act;
+
+       memset(&act, 0, sizeof(act));
+       act.sa_handler = sig_int;
+       act.sa_flags = SA_RESTART;
+       sigaction(SIGINT, &act, NULL);
+
+       memset(&act, 0, sizeof(act));
+       act.sa_handler = sig_int;
+       act.sa_flags = SA_RESTART;
+       sigaction(SIGTERM, &act, NULL);
+}
+
 int fio_start_server(int daemonize)
 {
        pid_t pid;
 
+       server_signal_handler();
+
        if (!daemonize)
                return fio_server();