projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] Fix hugetlb problems
[fio.git]
/
fio.c
diff --git
a/fio.c
b/fio.c
index 28864bdf72ebf8c6f5d610e5e068c0d0cab5d506..41b602020b9c93a68a13a0b02bbcf945102f3dcc 100644
(file)
--- a/
fio.c
+++ b/
fio.c
@@
-105,7
+105,7
@@
static int check_min_rate(struct thread_data *td, struct timeval *now)
rate = (td->this_io_bytes[ddir] - td->rate_bytes) / spent;
if (rate < td->ratemin) {
rate = (td->this_io_bytes[ddir] - td->rate_bytes) / spent;
if (rate < td->ratemin) {
- fprintf(f_out, "%s: min rate %
d not met, got %ld
KiB/sec\n", td->name, td->ratemin, rate);
+ fprintf(f_out, "%s: min rate %
u not met, got %lu
KiB/sec\n", td->name, td->ratemin, rate);
return 1;
}
}
return 1;
}
}
@@
-242,7
+242,7
@@
static int fio_io_sync(struct thread_data *td, struct fio_file *f)
* The main verify engine. Runs over the writes we previusly submitted,
* reads the blocks back in, and checks the crc/md5 of the data.
*/
* The main verify engine. Runs over the writes we previusly submitted,
* reads the blocks back in, and checks the crc/md5 of the data.
*/
-void do_verify(struct thread_data *td)
+
static
void do_verify(struct thread_data *td)
{
struct io_u *io_u, *v_io_u = NULL;
struct io_completion_data icd;
{
struct io_u *io_u, *v_io_u = NULL;
struct io_completion_data icd;
@@
-507,7
+507,12
@@
static int init_io_u(struct thread_data *td)
max_units = td->iodepth;
max_bs = max(td->max_bs[DDIR_READ], td->max_bs[DDIR_WRITE]);
max_units = td->iodepth;
max_bs = max(td->max_bs[DDIR_READ], td->max_bs[DDIR_WRITE]);
- td->orig_buffer_size = max_bs * max_units + MASK;
+ td->orig_buffer_size = max_bs * max_units;
+
+ if (td->mem_type == MEM_SHMHUGE)
+ td->orig_buffer_size = (td->orig_buffer_size + FIO_HUGE_PAGE - 1) & ~(FIO_HUGE_PAGE - 1);
+ else
+ td->orig_buffer_size += MASK;
if (allocate_io_mem(td))
return 1;
if (allocate_io_mem(td))
return 1;
@@
-663,10
+668,10
@@
static void *thread_main(void *data)
system(td->exec_prerun);
fio_gettime(&td->epoch, NULL);
system(td->exec_prerun);
fio_gettime(&td->epoch, NULL);
+ getrusage(RUSAGE_SELF, &td->ru_start);
runtime[0] = runtime[1] = 0;
while (td->loops--) {
runtime[0] = runtime[1] = 0;
while (td->loops--) {
- getrusage(RUSAGE_SELF, &td->ru_start);
fio_gettime(&td->start, NULL);
memcpy(&td->stat_sample_time, &td->start, sizeof(td->start));
fio_gettime(&td->start, NULL);
memcpy(&td->stat_sample_time, &td->start, sizeof(td->start));
@@
-685,8
+690,6
@@
static void *thread_main(void *data)
if (td_rw(td) && td->io_bytes[td->ddir ^ 1])
runtime[td->ddir ^ 1] = runtime[td->ddir];
if (td_rw(td) && td->io_bytes[td->ddir ^ 1])
runtime[td->ddir ^ 1] = runtime[td->ddir];
- update_rusage_stat(td);
-
if (td->error || td->terminate)
break;
if (td->error || td->terminate)
break;
@@
-704,6
+707,7
@@
static void *thread_main(void *data)
break;
}
break;
}
+ update_rusage_stat(td);
fio_gettime(&td->end_time, NULL);
td->runtime[0] = runtime[0] / 1000;
td->runtime[1] = runtime[1] / 1000;
fio_gettime(&td->end_time, NULL);
td->runtime[0] = runtime[0] / 1000;
td->runtime[1] = runtime[1] / 1000;