projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Print usage if no arguments are given
[fio.git]
/
fio.c
diff --git
a/fio.c
b/fio.c
index 762303e5793447808efe36dc0553043b17d6b3af..3e4dbb749fd97d9a7af718d27a22d5cc15cb749c 100644
(file)
--- a/
fio.c
+++ b/
fio.c
@@
-75,7
+75,6
@@
unsigned long arch_flags = 0;
struct io_log *agg_io_log[2];
struct io_log *agg_io_log[2];
-#define TERMINATE_ALL (-1)
#define JOB_START_TIMEOUT (5 * 1000)
void td_set_runstate(struct thread_data *td, int runstate)
#define JOB_START_TIMEOUT (5 * 1000)
void td_set_runstate(struct thread_data *td, int runstate)
@@
-88,7
+87,7
@@
void td_set_runstate(struct thread_data *td, int runstate)
td->runstate = runstate;
}
td->runstate = runstate;
}
-
static void
terminate_threads(int group_id)
+
void fio_
terminate_threads(int group_id)
{
struct thread_data *td;
int i;
{
struct thread_data *td;
int i;
@@
-126,7
+125,7
@@
static void sig_int(int sig)
exit_backend = 1;
fflush(stdout);
exit_value = 128;
exit_backend = 1;
fflush(stdout);
exit_value = 128;
- terminate_threads(TERMINATE_ALL);
+
fio_
terminate_threads(TERMINATE_ALL);
}
}
}
}
@@
-139,7
+138,11
@@
static void *disk_thread_main(void *data)
if (!threads)
break;
update_io_ticks();
if (!threads)
break;
update_io_ticks();
- print_thread_status();
+
+ if (is_backend)
+ fio_server_send_status();
+ else
+ print_thread_status();
}
return NULL;
}
return NULL;
@@
-180,6
+183,13
@@
static void set_sig_handlers(void)
act.sa_handler = sig_int;
act.sa_flags = SA_RESTART;
sigaction(SIGTERM, &act, NULL);
act.sa_handler = sig_int;
act.sa_flags = SA_RESTART;
sigaction(SIGTERM, &act, NULL);
+
+ if (is_backend) {
+ memset(&act, 0, sizeof(act));
+ act.sa_handler = sig_int;
+ act.sa_flags = SA_RESTART;
+ sigaction(SIGPIPE, &act, NULL);
+ }
}
/*
}
/*
@@
-746,7
+756,7
@@
sync_done:
if (!in_ramp_time(td) && should_check_rate(td, bytes_done)) {
if (check_min_rate(td, &comp_time, bytes_done)) {
if (exitall_on_terminate)
if (!in_ramp_time(td) && should_check_rate(td, bytes_done)) {
if (check_min_rate(td, &comp_time, bytes_done)) {
if (exitall_on_terminate)
- terminate_threads(td->groupid);
+
fio_
terminate_threads(td->groupid);
td_verror(td, EIO, "check_min_rate");
break;
}
td_verror(td, EIO, "check_min_rate");
break;
}
@@
-974,7
+984,7
@@
static int keep_running(struct thread_data *td)
static void reset_io_counters(struct thread_data *td)
{
static void reset_io_counters(struct thread_data *td)
{
- td->
ts.stat_io_bytes[0] = td->ts.
stat_io_bytes[1] = 0;
+ td->
stat_io_bytes[0] = td->
stat_io_bytes[1] = 0;
td->this_io_bytes[0] = td->this_io_bytes[1] = 0;
td->zone_bytes = 0;
td->rate_bytes[0] = td->rate_bytes[1] = 0;
td->this_io_bytes[0] = td->this_io_bytes[1] = 0;
td->zone_bytes = 0;
td->rate_bytes[0] = td->rate_bytes[1] = 0;
@@
-1169,19
+1179,17
@@
static void *thread_main(void *data)
}
fio_gettime(&td->epoch, NULL);
}
fio_gettime(&td->epoch, NULL);
- getrusage(RUSAGE_SELF, &td->
ts.
ru_start);
+ getrusage(RUSAGE_SELF, &td->ru_start);
clear_state = 0;
while (keep_running(td)) {
fio_gettime(&td->start, NULL);
clear_state = 0;
while (keep_running(td)) {
fio_gettime(&td->start, NULL);
- memcpy(&td->ts.stat_sample_time[0], &td->start,
- sizeof(td->start));
- memcpy(&td->ts.stat_sample_time[1], &td->start,
- sizeof(td->start));
+ memcpy(&td->stat_sample_time[0], &td->start, sizeof(td->start));
+ memcpy(&td->stat_sample_time[1], &td->start, sizeof(td->start));
memcpy(&td->tv_cache, &td->start, sizeof(td->start));
if (td->o.ratemin[0] || td->o.ratemin[1])
memcpy(&td->tv_cache, &td->start, sizeof(td->start));
if (td->o.ratemin[0] || td->o.ratemin[1])
- memcpy(&td->lastrate, &td->
ts.
stat_sample_time,
+ memcpy(&td->lastrate, &td->stat_sample_time,
sizeof(td->lastrate));
if (clear_state)
sizeof(td->lastrate));
if (clear_state)
@@
-1263,7
+1271,7
@@
static void *thread_main(void *data)
exec_string(td->o.exec_postrun);
if (exitall_on_terminate)
exec_string(td->o.exec_postrun);
if (exitall_on_terminate)
- terminate_threads(td->groupid);
+
fio_
terminate_threads(td->groupid);
err:
if (td->error)
err:
if (td->error)
@@
-1417,7
+1425,7
@@
reaped:
}
if (*nr_running == cputhreads && !pending && realthreads)
}
if (*nr_running == cputhreads && !pending && realthreads)
- terminate_threads(TERMINATE_ALL);
+
fio_
terminate_threads(TERMINATE_ALL);
}
static void *gtod_thread_main(void *data)
}
static void *gtod_thread_main(void *data)
@@
-1479,6
+1487,8
@@
static void run_threads(void)
if (fio_gtod_offload && fio_start_gtod_thread())
return;
if (fio_gtod_offload && fio_start_gtod_thread())
return;
+ set_sig_handlers();
+
if (!terse_output) {
log_info("Starting ");
if (nr_thread)
if (!terse_output) {
log_info("Starting ");
if (nr_thread)
@@
-1494,8
+1504,6
@@
static void run_threads(void)
fflush(stdout);
}
fflush(stdout);
}
- set_sig_handlers();
-
todo = thread_number;
nr_running = 0;
nr_started = 0;
todo = thread_number;
nr_running = 0;
nr_started = 0;
@@
-1611,7
+1619,7
@@
static void run_threads(void)
dprint(FD_MUTEX, "wait on startup_mutex\n");
if (fio_mutex_down_timeout(startup_mutex, 10)) {
log_err("fio: job startup hung? exiting.\n");
dprint(FD_MUTEX, "wait on startup_mutex\n");
if (fio_mutex_down_timeout(startup_mutex, 10)) {
log_err("fio: job startup hung? exiting.\n");
- terminate_threads(TERMINATE_ALL);
+
fio_
terminate_threads(TERMINATE_ALL);
fio_abort = 1;
nr_started--;
break;
fio_abort = 1;
nr_started--;
break;
@@
-1685,7
+1693,11
@@
static void run_threads(void)
while (nr_running) {
reap_threads(&nr_running, &t_rate, &m_rate);
while (nr_running) {
reap_threads(&nr_running, &t_rate, &m_rate);
- usleep(10000);
+
+ if (is_backend)
+ fio_server_idle_loop();
+ else
+ usleep(10000);
}
update_io_ticks();
}
update_io_ticks();