engine: fix error handling for e4defrag/falloc
authorDmitry Monakhov <dmonakhov@openvz.org>
Sun, 23 Sep 2012 17:49:53 +0000 (21:49 +0400)
committerJens Axboe <axboe@kernel.dk>
Sun, 23 Sep 2012 18:33:27 +0000 (20:33 +0200)
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>
engines/e4defrag.c
engines/falloc.c

index 5affaa0..cc88493 100644 (file)
@@ -141,16 +141,14 @@ static int fio_e4defrag_queue(struct thread_data *td, struct io_u *io_u)
         * 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));
@@ -175,16 +173,12 @@ static int fio_e4defrag_queue(struct thread_data *td, struct io_u *io_u)
        }
        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;
 }
index 4977d9e..bc5ebd7 100644 (file)
@@ -86,11 +86,8 @@ static int fio_fallocate_queue(struct thread_data *td, struct io_u *io_u)
 
        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;