Merge branch 'master' into gfio
[fio.git] / server.c
index 5f005500e7cb35fc3853ea259d4840be6c787d5f..27356c67d70f742110a0932a9fbb35486179e352 100644 (file)
--- a/server.c
+++ b/server.c
@@ -23,8 +23,6 @@
 #include "crc/crc16.h"
 #include "lib/ieee754.h"
 
-#include "fio_version.h"
-
 int fio_net_port = FIO_NET_PORT;
 
 int exit_backend = 0;
@@ -550,6 +548,7 @@ static int handle_run_cmd(struct fio_net_cmd *cmd)
        }
 
        ret = fio_backend();
+       free_threads_shm();
        _exit(ret);
 }
 
@@ -623,14 +622,13 @@ static int handle_probe_cmd(struct fio_net_cmd *cmd)
 #ifdef FIO_BIG_ENDIAN
        probe.bigendian = 1;
 #endif
-       probe.fio_major = FIO_MAJOR;
-       probe.fio_minor = FIO_MINOR;
-       probe.fio_patch = FIO_PATCH;
+       strncpy((char *) probe.fio_version, fio_version_string, sizeof(probe.fio_version));
 
        probe.os        = FIO_OS;
        probe.arch      = FIO_ARCH;
-
        probe.bpp       = sizeof(void *);
+       probe.cpus      = __cpu_to_le32(cpus_online());
+       probe.flags     = 0;
 
        return fio_net_send_cmd(server_fd, FIO_NET_CMD_PROBE, &probe, sizeof(probe), &tag, NULL);
 }
@@ -673,6 +671,7 @@ static int handle_send_eta_cmd(struct fio_net_cmd *cmd)
        je->elapsed_sec         = cpu_to_le64(je->elapsed_sec);
        je->eta_sec             = cpu_to_le64(je->eta_sec);
        je->nr_threads          = cpu_to_le32(je->nr_threads);
+       je->is_pow2             = cpu_to_le32(je->is_pow2);
 
        fio_net_send_cmd(server_fd, FIO_NET_CMD_ETA, je, size, &tag, NULL);
        free(je);
@@ -698,12 +697,12 @@ static int handle_update_job_cmd(struct fio_net_cmd *cmd)
 
        dprint(FD_NET, "server: updating options for job %u\n", tnumber);
 
-       if (tnumber >= thread_number) {
+       if (!tnumber || tnumber > thread_number) {
                send_update_job_reply(server_fd, cmd->tag, ENODEV);
                return 0;
        }
 
-       td = &threads[tnumber];
+       td = &threads[tnumber - 1];
        convert_thread_options_to_cpu(&td->o, &pdu->top);
        send_update_job_reply(server_fd, cmd->tag, 0);
        return 0;