X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=engines%2Fposixaio.c;h=b454aa01e2b50495db4bbcfa1bd6a632dafb6b93;hb=825f818eab0cef7683b8ef359642a45ddef8ea8e;hp=3ffdcb6bccc8d062b1be302b27c3cb004bd57d11;hpb=df9c26b10275a631e83e7cc92d5f7384998b2c49;p=fio.git diff --git a/engines/posixaio.c b/engines/posixaio.c index 3ffdcb6b..b454aa01 100644 --- a/engines/posixaio.c +++ b/engines/posixaio.c @@ -56,7 +56,7 @@ static int fio_posixaio_cancel(struct thread_data fio_unused *td, struct fio_file *f = io_u->file; int r = aio_cancel(f->fd, &io_u->aiocb); - if (r == 1 || r == AIO_CANCELED) + if (r == AIO_ALLDONE || r == AIO_CANCELED) return 0; return 1; @@ -124,9 +124,6 @@ restart: io_u->resid = io_u->xfer_buflen - retval; } else io_u->error = err; - - if (r >= max) - break; } if (r >= min) @@ -168,16 +165,20 @@ static int fio_posixaio_queue(struct thread_data fio_unused *td, ret = aio_read(aiocb); else if (io_u->ddir == DDIR_WRITE) ret = aio_write(aiocb); - else { + else if (io_u->ddir == DDIR_TRIM) { + if (pd->queued) + return FIO_Q_BUSY; + + do_io_u_trim(td, io_u); + return FIO_Q_COMPLETED; + } else { #ifdef FIO_HAVE_POSIXAIO_FSYNC ret = aio_fsync(O_SYNC, aiocb); #else if (pd->queued) return FIO_Q_BUSY; - if (fsync(io_u->file->fd) < 0) - io_u->error = errno; - + do_io_u_sync(td, io_u); return FIO_Q_COMPLETED; #endif }