net engine: accept both upper and lowercase tcp/udp.
[fio.git] / fio.c
diff --git a/fio.c b/fio.c
index a58effcf3394816b20d04937de81f77f1a0c179f..0ef039ddb03feef70c7976cf4438200a0c5f4ca3 100644 (file)
--- a/fio.c
+++ b/fio.c
@@ -673,7 +673,7 @@ sync_done:
                                int left;
 
                                if (td->o.thinktime_spin)
-                                       __usec_sleep(td->o.thinktime_spin);
+                                       usec_spin(td->o.thinktime_spin);
 
                                left = td->o.thinktime - td->o.thinktime_spin;
                                if (left)
@@ -941,8 +941,11 @@ static void *thread_main(void *data)
        td->io_hist_tree = RB_ROOT;
 
        td_set_runstate(td, TD_INITIALIZED);
+       dprint(FD_MUTEX, "up startup_mutex\n");
        fio_mutex_up(startup_mutex);
+       dprint(FD_MUTEX, "wait on td->mutex\n");
        fio_mutex_down(td->mutex);
+       dprint(FD_MUTEX, "done waiting on td->mutex\n");
 
        /*
         * the ->mutex mutex is now no longer used, close it to avoid
@@ -965,11 +968,11 @@ static void *thread_main(void *data)
                goto err;
        }
 
+       /*
+        * If we have a gettimeofday() thread, make sure we exclude that
+        * thread from this job
+        */
        if (td->o.gtod_cpu) {
-               if (fio_getaffinity(td->pid, &td->o.cpumask) == -1) {
-                       td_verror(td, errno, "cpu_get_affinity");
-                       goto err;
-               }
                fio_cpu_clear(&td->o.cpumask, td->o.gtod_cpu);
                if (fio_setaffinity(td) == -1) {
                        td_verror(td, errno, "cpu_set_affinity");
@@ -1080,21 +1083,24 @@ static void *thread_main(void *data)
        td->ts.io_bytes[1] = td->io_bytes[1];
 
        if (td->ts.bw_log) {
-               if (td->o.bw_log_file)
-                       finish_log_named(td, td->ts.bw_log, td->o.bw_log_file, "bw");
-               else
+               if (td->o.bw_log_file) {
+                       finish_log_named(td, td->ts.bw_log,
+                                               td->o.bw_log_file, "bw");
+               } else
                        finish_log(td, td->ts.bw_log, "bw");
        }
        if (td->ts.slat_log) {
-               if (td->o.lat_log_file)
-                       finish_log_named(td, td->ts.slat_log, td->o.lat_log_file, "clat");
-               else
+               if (td->o.lat_log_file) {
+                       finish_log_named(td, td->ts.slat_log,
+                                               td->o.lat_log_file, "clat");
+               } else
                        finish_log(td, td->ts.slat_log, "slat");
        }
        if (td->ts.clat_log) {
-               if (td->o.lat_log_file)
-                       finish_log_named(td, td->ts.clat_log, td->o.lat_log_file, "clat");
-               else
+               if (td->o.lat_log_file) {
+                       finish_log_named(td, td->ts.clat_log,
+                                               td->o.lat_log_file, "clat");
+               } else
                        finish_log(td, td->ts.clat_log, "clat");
        }
        if (td->o.exec_postrun) {
@@ -1113,6 +1119,12 @@ err:
        close_ioengine(td);
        cleanup_io_u(td);
 
+       if (td->o.cpumask_set) {
+               int ret = fio_cpuset_exit(&td->o.cpumask);
+
+               td_verror(td, ret, "fio_cpuset_exit");
+       }
+
        /*
         * do this very late, it will log file closing as well
         */
@@ -1262,16 +1274,23 @@ static void *gtod_thread_main(void *data)
 
 static int fio_start_gtod_thread(void)
 {
-       if (pthread_create(&gtod_thread, NULL, gtod_thread_main, NULL)) {
-               perror("Can't create gtod thread");
+       int ret;
+
+       ret = pthread_create(&gtod_thread, NULL, gtod_thread_main, NULL);
+       if (ret) {
+               log_err("Can't create gtod thread: %s\n", strerror(ret));
                return 1;
        }
-       if (pthread_detach(gtod_thread) < 0) {
-               perror("Can't detatch gtod thread");
+
+       ret = pthread_detach(gtod_thread);
+       if (ret) {
+               log_err("Can't detatch gtod thread: %s\n", strerror(ret));
                return 1;
        }
 
+       dprint(FD_MUTEX, "wait on startup_mutex\n");
        fio_mutex_down(startup_mutex);
+       dprint(FD_MUTEX, "done waiting on startup_mutex\n");
        return 0;
 }
 
@@ -1393,15 +1412,21 @@ static void run_threads(void)
                        nr_started++;
 
                        if (td->o.use_thread) {
+                               int ret;
+
                                dprint(FD_PROCESS, "will pthread_create\n");
-                               if (pthread_create(&td->thread, NULL,
-                                                  thread_main, td)) {
-                                       perror("pthread_create");
+                               ret = pthread_create(&td->thread, NULL,
+                                                       thread_main, td);
+                               if (ret) {
+                                       log_err("pthread_create: %s\n",
+                                                       strerror(ret));
                                        nr_started--;
                                        break;
                                }
-                               if (pthread_detach(td->thread) < 0)
-                                       perror("pthread_detach");
+                               ret = pthread_detach(td->thread);
+                               if (ret)
+                                       log_err("pthread_detach: %s",
+                                                       strerror(ret));
                        } else {
                                pid_t pid;
                                dprint(FD_PROCESS, "will fork\n");
@@ -1413,7 +1438,9 @@ static void run_threads(void)
                                } else if (i == fio_debug_jobno)
                                        *fio_debug_jobp = pid;
                        }
+                       dprint(FD_MUTEX, "wait on startup_mutex\n");
                        fio_mutex_down(startup_mutex);
+                       dprint(FD_MUTEX, "done waiting on startup_mutex\n");
                }
 
                /*