man: sync "PARAMETER TYPES" section with HOWTO
[fio.git] / engines / e4defrag.c
index c599c9868ee6f40baaa61422e4daad60a6c4751e..4b444888aa9bb51c5a660aee67f385dd6f20c021 100644 (file)
@@ -45,6 +45,7 @@ struct e4defrag_options {
 static struct fio_option options[] = {
        {
                .name   = "donorname",
+               .lname  = "Donor Name",
                .type   = FIO_OPT_STR_STORE,
                .off1   = offsetof(struct e4defrag_options, donor_name),
                .help   = "File used as a block donor",
@@ -53,6 +54,7 @@ static struct fio_option options[] = {
        },
        {
                .name   = "inplace",
+               .lname  = "In Place",
                .type   = FIO_OPT_INT,
                .off1   = offsetof(struct e4defrag_options, inplace),
                .minval = 0,
@@ -93,7 +95,7 @@ static int fio_e4defrag_init(struct thread_data *td)
        ed->donor_fd = open(donor_name, O_CREAT|O_WRONLY, 0644);
        if (ed->donor_fd < 0) {
                td_verror(td, errno, "io_queue_init");
-               log_err("Can't open donor file %s err:%d", donor_name, ed->donor_fd);
+               log_err("Can't open donor file %s err:%d\n", donor_name, ed->donor_fd);
                free(ed);
                return 1;
        }
@@ -170,8 +172,13 @@ static int fio_e4defrag_queue(struct thread_data *td, struct io_u *io_u)
                len = io_u->xfer_buflen;
 
        if (len != io_u->xfer_buflen) {
-               io_u->resid = io_u->xfer_buflen - len;
-               io_u->error = 0;
+               if (len) {
+                       io_u->resid = io_u->xfer_buflen - len;
+                       io_u->error = 0;
+               } else {
+                       /* access beyond i_size */
+                       io_u->error = EINVAL;
+               }
        }
        if (ret)
                io_u->error = errno;