Destroy sk_out server key when we are done
authorJens Axboe <axboe@fb.com>
Wed, 13 Jan 2016 16:40:51 +0000 (09:40 -0700)
committerJens Axboe <axboe@fb.com>
Wed, 13 Jan 2016 16:40:51 +0000 (09:40 -0700)
Signed-off-by: Jens Axboe <axboe@fb.com>
fio.c
server.c
server.h

diff --git a/fio.c b/fio.c
index 44354e289ee873dc52eeffca2385ee76a1d5db85..69014ddbb14b2c8d631755337010b50f73684dc2 100644 (file)
--- a/fio.c
+++ b/fio.c
@@ -43,7 +43,7 @@ int main(int argc, char *argv[], char *envp[])
                goto done;
 
        if (parse_options(argc, argv))
-               goto done;
+               goto done_key;
 
        /*
         * line buffer stdout to avoid output lines from multiple
@@ -57,11 +57,13 @@ int main(int argc, char *argv[], char *envp[])
                set_genesis_time();
 
                if (fio_start_all_clients())
-                       goto done;
+                       goto done_key;
                ret = fio_handle_clients(&fio_client_ops);
        } else
                ret = fio_backend(NULL);
 
+done_key:
+       fio_server_destroy_sk_key();
 done:
        deinitialize_fio();
        return ret;
index 120400f919e5fd08988b09466d9f1f5025e318aa..a593a73f436de6a13634238948e6f7e7bfda5f2d 100644 (file)
--- a/server.c
+++ b/server.c
@@ -2186,6 +2186,11 @@ static void set_sig_handlers(void)
        sigaction(SIGINT, &act, NULL);
 }
 
+void fio_server_destroy_sk_key(void)
+{
+       pthread_key_delete(sk_out_key);
+}
+
 int fio_server_create_sk_key(void)
 {
        if (pthread_key_create(&sk_out_key, NULL)) {
index 0e60750f8d0a6c847056be333229ab4c47b9840d..12c72759605e7fb0f14602b12bfd3e1230f887ba 100644 (file)
--- a/server.h
+++ b/server.h
@@ -221,6 +221,7 @@ extern void fio_server_send_start(struct thread_data *);
 extern int fio_net_send_quit(int sk);
 
 extern int fio_server_create_sk_key(void);
+extern void fio_server_destroy_sk_key(void);
 
 extern int exit_backend;
 extern int fio_net_port;