projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
engines/io_uring: Handle EINTR.
[fio.git]
/
io_u.c
diff --git
a/io_u.c
b/io_u.c
index 1604ff84b94edc14dea508589e683dfecdd95baa..94899552c5b2daa1deeb956c18aa31e2c8a5068d 100644
(file)
--- a/
io_u.c
+++ b/
io_u.c
@@
-557,10
+557,10
@@
static unsigned long long get_next_buflen(struct thread_data *td, struct io_u *i
for (i = 0; i < td->o.bssplit_nr[ddir]; i++) {
struct bssplit *bsp = &td->o.bssplit[ddir][i];
for (i = 0; i < td->o.bssplit_nr[ddir]; i++) {
struct bssplit *bsp = &td->o.bssplit[ddir][i];
+ if (!bsp->perc)
+ continue;
buflen = bsp->bs;
perc += bsp->perc;
buflen = bsp->bs;
perc += bsp->perc;
- if (!perc)
- break;
if ((r / perc <= frand_max / 100ULL) &&
io_u_fits(td, io_u, buflen))
break;
if ((r / perc <= frand_max / 100ULL) &&
io_u_fits(td, io_u, buflen))
break;
@@
-570,8
+570,10
@@
static unsigned long long get_next_buflen(struct thread_data *td, struct io_u *i
power_2 = is_power_of_2(minbs);
if (!td->o.bs_unaligned && power_2)
buflen &= ~(minbs - 1);
power_2 = is_power_of_2(minbs);
if (!td->o.bs_unaligned && power_2)
buflen &= ~(minbs - 1);
- else if (!td->o.bs_unaligned && !power_2)
- buflen -= buflen % minbs;
+ else if (!td->o.bs_unaligned && !power_2)
+ buflen -= buflen % minbs;
+ if (buflen > maxbs)
+ buflen = maxbs;
} while (!io_u_fits(td, io_u, buflen));
return buflen;
} while (!io_u_fits(td, io_u, buflen));
return buflen;
@@
-773,10
+775,7
@@
void put_io_u(struct thread_data *td, struct io_u *io_u)
{
const bool needs_lock = td_async_processing(td);
{
const bool needs_lock = td_async_processing(td);
- if (io_u->post_submit) {
- io_u->post_submit(io_u, io_u->error == 0);
- io_u->post_submit = NULL;
- }
+ zbd_put_io_u(io_u);
if (td->parent)
td = td->parent;
if (td->parent)
td = td->parent;
@@
-902,6
+901,8
@@
static int fill_io_u(struct thread_data *td, struct io_u *io_u)
if (td->o.zone_mode == ZONE_MODE_STRIDED)
setup_strided_zone_mode(td, io_u);
if (td->o.zone_mode == ZONE_MODE_STRIDED)
setup_strided_zone_mode(td, io_u);
+ else if (td->o.zone_mode == ZONE_MODE_ZBD)
+ setup_zbd_zone_mode(td, io_u);
/*
* No log, let the seq/rand engine retrieve the next buflen and
/*
* No log, let the seq/rand engine retrieve the next buflen and
@@
-1338,10
+1339,7
@@
static long set_io_u_file(struct thread_data *td, struct io_u *io_u)
if (!fill_io_u(td, io_u))
break;
if (!fill_io_u(td, io_u))
break;
- if (io_u->post_submit) {
- io_u->post_submit(io_u, false);
- io_u->post_submit = NULL;
- }
+ zbd_put_io_u(io_u);
put_file_log(td, f);
td_io_close_file(td, f);
put_file_log(td, f);
td_io_close_file(td, f);