static unsigned int get_next_buflen(struct thread_data *td, struct io_u *io_u)
{
const int ddir = io_u->ddir;
unsigned int buflen = buflen; /* silence dumb gcc warning */
static unsigned int get_next_buflen(struct thread_data *td, struct io_u *io_u)
{
const int ddir = io_u->ddir;
unsigned int buflen = buflen; /* silence dumb gcc warning */
- buflen = (unsigned int)
- (1 + (double) (td->o.max_bs[ddir] - 1)
- * r / (OS_RAND_MAX + 1.0));
+ buflen = 1 + (unsigned int) ((double) maxbs *
+ (r / (OS_RAND_MAX + 1.0)));
+ if (buflen < minbs)
+ buflen = minbs;
- if (!td->o.bs_unaligned) {
- buflen = (buflen + td->o.min_bs[ddir] - 1)
- & ~(td->o.min_bs[ddir] - 1);
- }
+ if (!td->o.bs_unaligned && is_power_of_2(minbs))
+ buflen = (buflen + minbs - 1) & ~(minbs - 1);
}
if (io_u->offset + buflen > io_u->file->real_file_size) {
dprint(FD_IO, "lower buflen %u -> %u (ddir=%d)\n", buflen,
}
if (io_u->offset + buflen > io_u->file->real_file_size) {
dprint(FD_IO, "lower buflen %u -> %u (ddir=%d)\n", buflen,
{
struct io_completion_data icd;
struct timespec *tvp = NULL;
int ret;
struct timespec ts = { .tv_sec = 0, .tv_nsec = 0, };
{
struct io_completion_data icd;
struct timespec *tvp = NULL;
int ret;
struct timespec ts = { .tv_sec = 0, .tv_nsec = 0, };
- ret = td_io_getevents(td, min_events, td->cur_depth, tvp);
+ ret = td_io_getevents(td, min_evts, td->o.iodepth_batch_complete, tvp);