Error handling in fio_libaio_event()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Andrey,

In looking further at fio_libaio_event(), I am wondering if it is possible to get the errno value if one of the events have an error (i.e. if ev->res != io_u->xfer_buflen).

I see that io_u->error is set to –ev->res if ev->res is greater than io_u->xfer_buflen.  But since my io_u->xfer_buflen is a large value, I am guessing that this is not the errno value that caused the error.  Is that true?
	
Also, if ev->res is less than io_u->xfer_buflen, then io_u->resid is set to (io_u->xfer_buflen - ev->res).  Does that mean that there will be another attempt to write out the io_u->resid bytes?

Again, thanks to you and the others on the fio mailing list for any guidance you can give.

Sincerely,
Scott


From: Andrey Kuzmin <andrey.v.kuzmin@xxxxxxxxx>
Date: Tuesday, March 28, 2017 at 11:22 AM
To: "Scott Forman (scforman)" <scforman@xxxxxxxxx>, "fio@xxxxxxxxxxxxxxx" <fio@xxxxxxxxxxxxxxx>
Subject: Re: How does FIO detect write errors when ioengine is libaio


On Tue, Mar 28, 2017, 21:13 Scott Forman (scforman) <scforman@xxxxxxxxx> wrote:
Hi,

I am trying to determine how fio detects write errors when the ioengine is set to libaio.

>From a code example on stack overflow, linux-kernel-aio-functionality, it appears that they can be detected by examining the events returned from io_getevents().

But I do not see any code in libaio.c that examines the events returned from io_getevents().

static struct io_u *fio_libaio_event(struct thread_data *td, int event)
{
struct libaio_data *ld = td->io_ops_data;
struct io_event *ev;
struct io_u *io_u;

ev = ld->aio_events + event;
io_u = container_of(ev->obj, struct io_u, iocb);

if (ev->res != io_u->xfer_buflen) {
if (ev->res > io_u->xfer_buflen)
io_u->error = -ev->res;
else
io_u->resid = io_u->xfer_buflen - ev->res;
} else
io_u->error = 0;
Regards,
Andrey

Can you verify that fio does check for write errors for engine libaio, and if so, where that error checking is done?

Thanks in advance!

Sincerely,

Scott Forman


-- 
Regards,
Andrey




��.n��������+%������w��{.n�������^n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�

[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux