projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
zbd: Fix max_open_zones checks
[fio.git]
/
backend.c
diff --git
a/backend.c
b/backend.c
index cb15b0e626ea1264f39f16532dfde454706248eb..0075a733ffca7b2c5fd727f53d56d95e69592c17 100644
(file)
--- a/
backend.c
+++ b/
backend.c
@@
-81,7
+81,7
@@
static void sig_int(int sig)
exit_value = 128;
}
exit_value = 128;
}
- fio_terminate_threads(TERMINATE_ALL);
+ fio_terminate_threads(TERMINATE_ALL
, TERMINATE_ALL
);
}
}
}
}
@@
-134,8
+134,8
@@
static bool __check_min_rate(struct thread_data *td, struct timespec *now,
unsigned long long bytes = 0;
unsigned long iops = 0;
unsigned long spent;
unsigned long long bytes = 0;
unsigned long iops = 0;
unsigned long spent;
- unsigned long rate;
- unsigned
int
ratemin = 0;
+ unsigned long
long
rate;
+ unsigned
long long
ratemin = 0;
unsigned int rate_iops = 0;
unsigned int rate_iops_min = 0;
unsigned int rate_iops = 0;
unsigned int rate_iops_min = 0;
@@
-169,7
+169,7
@@
static bool __check_min_rate(struct thread_data *td, struct timespec *now,
* check bandwidth specified rate
*/
if (bytes < td->rate_bytes[ddir]) {
* check bandwidth specified rate
*/
if (bytes < td->rate_bytes[ddir]) {
- log_err("%s: rate_min=%uB/s not met, only transferred %lluB\n",
+ log_err("%s: rate_min=%
ll
uB/s not met, only transferred %lluB\n",
td->o.name, ratemin, bytes);
return true;
} else {
td->o.name, ratemin, bytes);
return true;
} else {
@@
-180,7
+180,7
@@
static bool __check_min_rate(struct thread_data *td, struct timespec *now,
if (rate < ratemin ||
bytes < td->rate_bytes[ddir]) {
if (rate < ratemin ||
bytes < td->rate_bytes[ddir]) {
- log_err("%s: rate_min=%
uB/s not met, got %
luB/s\n",
+ log_err("%s: rate_min=%
lluB/s not met, got %l
luB/s\n",
td->o.name, ratemin, rate);
return true;
}
td->o.name, ratemin, rate);
return true;
}
@@
-201,7
+201,7
@@
static bool __check_min_rate(struct thread_data *td, struct timespec *now,
if (rate < rate_iops_min ||
iops < td->rate_blocks[ddir]) {
if (rate < rate_iops_min ||
iops < td->rate_blocks[ddir]) {
- log_err("%s: rate_iops_min=%u not met, got %lu IOPS\n",
+ log_err("%s: rate_iops_min=%u not met, got %l
l
u IOPS\n",
td->o.name, rate_iops_min, rate);
return true;
}
td->o.name, rate_iops_min, rate);
return true;
}
@@
-237,15
+237,10
@@
static void cleanup_pending_aio(struct thread_data *td)
{
int r;
{
int r;
- if (td->error)
- return;
-
/*
* get immediately available events, if any
*/
r = io_u_queued_complete(td, 0);
/*
* get immediately available events, if any
*/
r = io_u_queued_complete(td, 0);
- if (r < 0)
- return;
/*
* now cancel remaining active events
/*
* now cancel remaining active events
@@
-1011,12
+1006,6
@@
static void do_io(struct thread_data *td, uint64_t *bytes_done)
if (td->o.verify != VERIFY_NONE && io_u->ddir == DDIR_READ &&
((io_u->flags & IO_U_F_VER_LIST) || !td_rw(td))) {
if (td->o.verify != VERIFY_NONE && io_u->ddir == DDIR_READ &&
((io_u->flags & IO_U_F_VER_LIST) || !td_rw(td))) {
- if (!td->o.verify_pattern_bytes) {
- io_u->rand_seed = __rand(&td->verify_state);
- if (sizeof(int) != sizeof(long *))
- io_u->rand_seed *= __rand(&td->verify_state);
- }
-
if (verify_state_should_stop(td, io_u)) {
put_io_u(td, io_u);
break;
if (verify_state_should_stop(td, io_u)) {
put_io_u(td, io_u);
break;
@@
-1091,7
+1080,7
@@
reap:
if (!in_ramp_time(td) && should_check_rate(td)) {
if (check_min_rate(td, &comp_time)) {
if (exitall_on_terminate || td->o.exitall_error)
if (!in_ramp_time(td) && should_check_rate(td)) {
if (check_min_rate(td, &comp_time)) {
if (exitall_on_terminate || td->o.exitall_error)
- fio_terminate_threads(td->groupid);
+ fio_terminate_threads(td->groupid
, td->o.exit_what
);
td_verror(td, EIO, "check_min_rate");
break;
}
td_verror(td, EIO, "check_min_rate");
break;
}
@@
-1469,12
+1458,12
@@
static bool keep_running(struct thread_data *td)
static int exec_string(struct thread_options *o, const char *string, const char *mode)
{
static int exec_string(struct thread_options *o, const char *string, const char *mode)
{
- size_t newlen = strlen(string) + strlen(o->name) + strlen(mode) +
9
+ 1;
+ size_t newlen = strlen(string) + strlen(o->name) + strlen(mode) +
13
+ 1;
int ret;
char *str;
str = malloc(newlen);
int ret;
char *str;
str = malloc(newlen);
- sprintf(str, "%s
&> %s.%s.txt
", string, o->name, mode);
+ sprintf(str, "%s
> %s.%s.txt 2>&1
", string, o->name, mode);
log_info("%s : Saving output of %s in %s.%s.txt\n",o->name, mode, o->name, mode);
ret = system(str);
log_info("%s : Saving output of %s in %s.%s.txt\n",o->name, mode, o->name, mode);
ret = system(str);
@@
-1898,7
+1887,7
@@
static void *thread_main(void *data)
exec_string(o, o->exec_postrun, (const char *)"postrun");
if (exitall_on_terminate || (o->exitall_error && td->error))
exec_string(o, o->exec_postrun, (const char *)"postrun");
if (exitall_on_terminate || (o->exitall_error && td->error))
- fio_terminate_threads(td->groupid);
+ fio_terminate_threads(td->groupid
, td->o.exit_what
);
err:
if (td->error)
err:
if (td->error)
@@
-2050,7
+2039,7
@@
reaped:
}
if (*nr_running == cputhreads && !pending && realthreads)
}
if (*nr_running == cputhreads && !pending && realthreads)
- fio_terminate_threads(TERMINATE_ALL);
+ fio_terminate_threads(TERMINATE_ALL
, TERMINATE_ALL
);
}
static bool __check_trigger_file(void)
}
static bool __check_trigger_file(void)
@@
-2100,7
+2089,7
@@
void check_trigger_file(void)
fio_clients_send_trigger(trigger_remote_cmd);
else {
verify_save_state(IO_LIST_ALL);
fio_clients_send_trigger(trigger_remote_cmd);
else {
verify_save_state(IO_LIST_ALL);
- fio_terminate_threads(TERMINATE_ALL);
+ fio_terminate_threads(TERMINATE_ALL
, TERMINATE_ALL
);
exec_trigger(trigger_cmd);
}
}
exec_trigger(trigger_cmd);
}
}
@@
-2120,8
+2109,16
@@
static int fio_verify_load_state(struct thread_data *td)
td->thread_number - 1, &data);
if (!ret)
verify_assign_state(td, data);
td->thread_number - 1, &data);
if (!ret)
verify_assign_state(td, data);
- } else
- ret = verify_load_state(td, "local");
+ } else {
+ char prefix[PATH_MAX];
+
+ if (aux_path)
+ sprintf(prefix, "%s%clocal", aux_path,
+ FIO_OS_PATH_SEPARATOR);
+ else
+ strcpy(prefix, "local");
+ ret = verify_load_state(td, prefix);
+ }
return ret;
}
return ret;
}
@@
-2373,7
+2370,7
@@
reap:
dprint(FD_MUTEX, "wait on startup_sem\n");
if (fio_sem_down_timeout(startup_sem, 10000)) {
log_err("fio: job startup hung? exiting.\n");
dprint(FD_MUTEX, "wait on startup_sem\n");
if (fio_sem_down_timeout(startup_sem, 10000)) {
log_err("fio: job startup hung? exiting.\n");
- fio_terminate_threads(TERMINATE_ALL);
+ fio_terminate_threads(TERMINATE_ALL
, TERMINATE_ALL
);
fio_abort = true;
nr_started--;
free(fd);
fio_abort = true;
nr_started--;
free(fd);
@@
-2495,7
+2492,8
@@
int fio_backend(struct sk_out *sk_out)
set_genesis_time();
stat_init();
set_genesis_time();
stat_init();
- helper_thread_create(startup_sem, sk_out);
+ if (helper_thread_create(startup_sem, sk_out))
+ log_err("fio: failed to create helper thread\n");
cgroup_list = smalloc(sizeof(*cgroup_list));
if (cgroup_list)
cgroup_list = smalloc(sizeof(*cgroup_list));
if (cgroup_list)