X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=backend.c;h=e248117f20624846dbfac614abe7204ca3259807;hp=5304ddc0ae1df0245405d2f6136c1b45755473d2;hb=f2aedb171c4feaae028645bd0ddb2d8cd25bfaa5;hpb=1aa39b0ce447f228460e6d0af601fee88fd5f4b4 diff --git a/backend.c b/backend.c index 5304ddc0..e248117f 100644 --- a/backend.c +++ b/backend.c @@ -898,8 +898,15 @@ static void handle_thinktime(struct thread_data *td, enum fio_ddir ddir) * start issuing immediately after the sleep. */ if (total && td->rate_bps[ddir] && td->o.rate_ign_think) { - td->rate_io_issue_bytes[ddir] += (td->rate_bps[ddir] * 1000000) / total; - td->rate_io_issue_bytes[ddir] -= td->o.min_bs[ddir]; + uint64_t missed = (td->rate_bps[ddir] * total) / 1000000ULL; + uint64_t over; + + if (total >= 1000000) + over = td->o.min_bs[ddir]; + else + over = (td->o.min_bs[ddir] * total) / 1000000ULL; + + td->rate_io_issue_bytes[ddir] += (missed - over); } }