projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add client references
[fio.git]
/
backend.c
diff --git
a/backend.c
b/backend.c
index 821e978a98b0152b2e4c099c5af6eb6d8e0b1abc..52791040ff21384d283b2a09de3ff9718e19d866 100644
(file)
--- a/
backend.c
+++ b/
backend.c
@@
-30,6
+30,7
@@
#include <locale.h>
#include <assert.h>
#include <time.h>
#include <locale.h>
#include <assert.h>
#include <time.h>
+#include <inttypes.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/ipc.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/ipc.h>
@@
-58,8
+59,16
@@
static volatile int fio_abort;
struct io_log *agg_io_log[2];
struct io_log *agg_io_log[2];
+int groupid = 0;
+unsigned int thread_number = 0;
+unsigned int nr_process = 0;
+unsigned int nr_thread = 0;
+int shm_id = 0;
+int temp_stall_ts;
+unsigned long done_secs = 0;
+
#define PAGE_ALIGN(buf) \
#define PAGE_ALIGN(buf) \
- (char *) (((u
nsigned long
) (buf) + page_mask) & ~page_mask)
+ (char *) (((u
intptr_t
) (buf) + page_mask) & ~page_mask)
#define JOB_START_TIMEOUT (5 * 1000)
#define JOB_START_TIMEOUT (5 * 1000)
@@
-285,6
+294,7
@@
requeue:
return 0;
}
return 0;
}
+
static inline void __update_tv_cache(struct thread_data *td)
{
fio_gettime(&td->tv_cache, NULL);
static inline void __update_tv_cache(struct thread_data *td)
{
fio_gettime(&td->tv_cache, NULL);
@@
-354,8
+364,6
@@
static int break_on_this_error(struct thread_data *td, enum fio_ddir ddir,
return 0;
}
return 0;
}
-
-
/*
* The main verify engine. Runs over the writes we previously submitted,
* reads the blocks back in, and checks the crc/md5 of the data.
/*
* The main verify engine. Runs over the writes we previously submitted,
* reads the blocks back in, and checks the crc/md5 of the data.
@@
-401,6
+409,9
@@
static void do_verify(struct thread_data *td)
}
}
}
}
+ if (flow_threshold_exceeded(td))
+ continue;
+
io_u = __get_io_u(td);
if (!io_u)
break;
io_u = __get_io_u(td);
if (!io_u)
break;
@@
-552,6
+563,9
@@
static void do_io(struct thread_data *td)
}
}
}
}
+ if (flow_threshold_exceeded(td))
+ continue;
+
io_u = get_io_u(td);
if (!io_u)
break;
io_u = get_io_u(td);
if (!io_u)
break;
@@
-1012,7
+1026,8
@@
static void *thread_main(void *data)
if (td->o.cgroup_weight && cgroup_setup(td, cgroup_list, &cgroup_mnt))
goto err;
if (td->o.cgroup_weight && cgroup_setup(td, cgroup_list, &cgroup_mnt))
goto err;
- if (nice(td->o.nice) == -1) {
+ errno = 0;
+ if (nice(td->o.nice) == -1 && errno != 0) {
td_verror(td, errno, "nice");
goto err;
}
td_verror(td, errno, "nice");
goto err;
}
@@
-1171,7
+1186,7
@@
err:
write_iolog_close(td);
td_set_runstate(td, TD_EXITED);
write_iolog_close(td);
td_set_runstate(td, TD_EXITED);
- return (void *) (u
nsigned long
) td->error;
+ return (void *) (u
intptr_t
) td->error;
}
}
@@
-1202,7
+1217,7
@@
static int fork_main(int shmid, int offset)
td = data + offset * sizeof(struct thread_data);
ret = thread_main(td);
shmdt(data);
td = data + offset * sizeof(struct thread_data);
ret = thread_main(td);
shmdt(data);
- return (int) (u
nsigned long
) ret;
+ return (int) (u
intptr_t
) ret;
}
/*
}
/*
@@
-1302,8
+1317,6
@@
reaped:
fio_terminate_threads(TERMINATE_ALL);
}
fio_terminate_threads(TERMINATE_ALL);
}
-
-
/*
* Main function for kicking off and reaping jobs, as needed.
*/
/*
* Main function for kicking off and reaping jobs, as needed.
*/
@@
-1488,7
+1501,8
@@
static void run_threads(void)
}
if (left) {
}
if (left) {
- log_err("fio: %d jobs failed to start\n", left);
+ log_err("fio: %d job%s failed to start\n", left,
+ left > 1 ? "s" : "");
for (i = 0; i < this_jobs; i++) {
td = map[i];
if (!td)
for (i = 0; i < this_jobs; i++) {
td = map[i];
if (!td)
@@
-1579,7
+1593,6
@@
static int create_disk_util_thread(void)
return 0;
}
return 0;
}
-
int fio_backend(void)
{
struct thread_data *td;
int fio_backend(void)
{
struct thread_data *td;
@@
-1634,5
+1647,3
@@
int fio_backend(void)
fio_mutex_remove(writeout_mutex);
return exit_value;
}
fio_mutex_remove(writeout_mutex);
return exit_value;
}
-
-