X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=engines%2Fe4defrag.c;h=c0667feced3f6609bf6efaf320225c5150662da5;hb=8348daf915d4b2c3ec95a16ad803e9e42eb2bfda;hp=e10cf36a146c333cddddacb9df0b4f43b2d26ae1;hpb=1e5324e723116a5faf9da686993cc79c14d62d4b;p=fio.git diff --git a/engines/e4defrag.c b/engines/e4defrag.c index e10cf36a..c0667fec 100644 --- a/engines/e4defrag.c +++ b/engines/e4defrag.c @@ -17,6 +17,7 @@ #include #include "../fio.h" +#include "../optgroup.h" #ifndef EXT4_IOC_MOVE_EXT #define EXT4_IOC_MOVE_EXT _IOWR('f', 15, struct move_extent) @@ -36,7 +37,7 @@ struct e4defrag_data { }; struct e4defrag_options { - struct thread_data *td; + void *pad; unsigned int inplace; char * donor_name; }; @@ -47,6 +48,8 @@ static struct fio_option options[] = { .type = FIO_OPT_STR_STORE, .off1 = offsetof(struct e4defrag_options, donor_name), .help = "File used as a block donor", + .category = FIO_OPT_C_ENGINE, + .group = FIO_OPT_G_E4DEFRAG, }, { .name = "inplace", @@ -55,6 +58,8 @@ static struct fio_option options[] = { .minval = 0, .maxval = 1, .help = "Alloc and free space inside defrag event", + .category = FIO_OPT_C_ENGINE, + .group = FIO_OPT_G_E4DEFRAG, }, { .name = NULL, @@ -76,7 +81,7 @@ static int fio_e4defrag_init(struct thread_data *td) ed = malloc(sizeof(*ed)); if (!ed) { - td_verror(td, -ENOMEM, "io_queue_init"); + td_verror(td, ENOMEM, "io_queue_init"); return 1; } memset(ed, 0 ,sizeof(*ed)); @@ -87,15 +92,15 @@ 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, ed->donor_fd, "io_queue_init"); - log_err("Can't open donor file %s err:%d", ed->donor_fd); + td_verror(td, errno, "io_queue_init"); + log_err("Can't open donor file %s err:%d", donor_name, ed->donor_fd); free(ed); return 1; } if (!o->inplace) { - long long len = td->o.file_size_high - td->o.start_offset; - r = fallocate(ed->donor_fd, 0, td->o.start_offset, len); + long long __len = td->o.file_size_high - td->o.start_offset; + r = fallocate(ed->donor_fd, 0, td->o.start_offset, __len); if (r) goto err; } @@ -161,9 +166,6 @@ static int fio_e4defrag_queue(struct thread_data *td, struct io_u *io_u) ret = ioctl(f->fd, EXT4_IOC_MOVE_EXT, &me); len = me.moved_len * ed->bsz; - if (io_u->file && len && ddir_rw(io_u->ddir)) - io_u->file->file_pos = io_u->offset + len; - if (len > io_u->xfer_buflen) len = io_u->xfer_buflen;