break;
} while (1);
- if (r < 0)
- r = -r;
-
- return (int) r;
+ return r;
}
static int fio_libaio_queue(struct thread_data *td, struct io_u *io_u)
* requests to flush first.
*/
if (fsync(io_u->file->fd) < 0)
- ret = errno;
+ ret = -errno;
else
ret = FIO_Q_COMPLETED;
break;
ret = 0; /* must be a SYNC */
if (ret != (int) io_u->xfer_buflen) {
- if (ret > 0) {
+ if (ret >= 0) {
io_u->resid = io_u->xfer_buflen - ret;
io_u->error = 0;
return FIO_Q_COMPLETED;
ret = poll(sd->pfds, td->nr_files, -1);
if (ret < 0) {
- td_verror(td, errno);
if (!r)
- r = -1;
+ r = -errno;
+ td_verror(td, errno);
break;
} else if (!ret)
continue;
if (ret < 0) {
if (errno == EAGAIN)
continue;
+ r = -errno;
td_verror(td, errno);
- r = -1;
break;
} else if (ret) {
p += ret;
ret = ioctl(f->fd, SG_IO, hdr);
if (ret < 0)
- return ret;
+ return -errno;
return FIO_Q_COMPLETED;
}
if (sync) {
ret = read(f->fd, hdr, sizeof(*hdr));
if (ret < 0)
- return errno;
+ return -errno;
return FIO_Q_COMPLETED;
}
ret = fsync(io_u->file->fd);
if (ret != (int) io_u->xfer_buflen) {
- if (ret > 0) {
+ if (ret >= 0) {
io_u->resid = io_u->xfer_buflen - ret;
io_u->error = 0;
return FIO_Q_COMPLETED;
ret = fsync(f->fd);
if (ret != (int) io_u->xfer_buflen) {
- if (ret > 0) {
+ if (ret >= 0) {
io_u->resid = io_u->xfer_buflen - ret;
io_u->error = 0;
return FIO_Q_COMPLETED;
} else if (ret == FIO_Q_QUEUED) {
ret = td_io_getevents(td, 1, td->cur_depth, NULL);
if (ret < 0) {
- td_verror(td, ret);
+ td_verror(td, -ret);
return 1;
}
switch (ret) {
case FIO_Q_COMPLETED:
if (io_u->error)
- ret = io_u->error;
+ ret = -io_u->error;
if (io_u->xfer_buflen != io_u->resid && io_u->resid) {
int bytes = io_u->xfer_buflen - io_u->resid;
break;
default:
assert(ret < 0);
- td_verror(td, ret);
+ td_verror(td, -ret);
break;
}
* verification on them through the callback handler
*/
ret = td_io_getevents(td, min_events, td->cur_depth, timeout);
- if (ret < 0)
+ if (ret < 0) {
+ td_verror(td, -ret);
break;
- else if (!ret)
+ } else if (!ret)
continue;
init_icd(&icd, verify_io_u, ret);
ret = td_io_getevents(td, min_evts, td->cur_depth, timeout);
if (ret < 0) {
- td_verror(td, ret);
+ td_verror(td, -ret);
break;
} else if (!ret)
continue;