At the time I've wrote this code i don't quite understand difference
between td->error and io_u->error. It is appeared that engine should
not have to explicitly assign td->error. Just initialize io_u->error and
backed will do proper handling.
Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
* in order to satisfy strict read only access pattern
*/
if (io_u->ddir != DDIR_WRITE) {
- io_u->error = errno;
+ io_u->error = EINVAL;
return FIO_Q_COMPLETED;
}
if (o->inplace) {
ret = fallocate(ed->donor_fd, 0, io_u->offset, io_u->xfer_buflen);
- if (ret) {
- io_u->error = errno;
+ if (ret)
goto out;
- }
}
memset(&me, 0, sizeof(me));
}
if (ret)
io_u->error = errno;
-
- if (o->inplace) {
+
+ if (o->inplace)
ret = ftruncate(ed->donor_fd, 0);
- if (ret)
- io_u->error = errno;
- }
out:
- if (io_u->error)
- td_verror(td, errno, "xfer");
-
+ if (ret && !io_u->error)
+ io_u->error = errno;
return FIO_Q_COMPLETED;
}
ret = fallocate(f->fd, flags, io_u->offset, io_u->xfer_buflen);
- if (ret) {
+ if (ret)
io_u->error = errno;
- if (io_u->error)
- td_verror(td, io_u->error, "xfer");
- }
if (io_u->file && ret == 0 && ddir_rw(io_u->ddir))
io_u->file->file_pos = io_u->offset + ret;