On 10/08/2014 07:52 AM, Andrey Kuzmin wrote:
> Recent libaio fix could be further strengthened with the following
> addition that addresses a latent tight loop bug on zero events being
> returned:
>
> index 7c3a42a..7760fb8 100644
> --- a/engines/libaio.c
> +++ b/engines/libaio.c
> @@ -165,9 +165,9 @@ static int fio_libaio_getevents(struct thread_data
> *td, unsigned int min,
> r = io_getevents(ld->aio_ctx, actual_min,
> max, ld->aio_events + events, lt);
> }
> - if (r >= 0)
> + if (r > 0)
> events += r;
> - else if (r == -EAGAIN) {
> + else if (r == 0 || r == -EAGAIN) {
> fio_libaio_commit(td);
> usleep(100);
> } else if (r != -EINTR)
This will break min == 0 being passed in, for the opportunistic check.
We don't want to commit/sleep for that case.
--
Jens Axboe
--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html