From: Jens Axboe Date: Thu, 13 Dec 2018 05:02:16 +0000 (-0700) Subject: engines/libaio: remove features deprecated from old interface X-Git-Tag: fio-3.13~77 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=702906e9e3e03e9836421d5e5b5eaae3cd99d398 engines/libaio: remove features deprecated from old interface Signed-off-by: Jens Axboe --- diff --git a/engines/libaio.c b/engines/libaio.c index 03335094..8844ac8b 100644 --- a/engines/libaio.c +++ b/engines/libaio.c @@ -20,14 +20,8 @@ #define IOCB_FLAG_HIPRI (1 << 2) #endif -#ifndef IOCTX_FLAG_USERIOCB -#define IOCTX_FLAG_USERIOCB (1 << 0) -#endif #ifndef IOCTX_FLAG_IOPOLL -#define IOCTX_FLAG_IOPOLL (1 << 1) -#endif -#ifndef IOCTX_FLAG_FIXEDBUFS -#define IOCTX_FLAG_FIXEDBUFS (1 << 2) +#define IOCTX_FLAG_IOPOLL (1 << 0) #endif static int fio_libaio_commit(struct thread_data *td); @@ -38,7 +32,6 @@ struct libaio_data { struct iocb **iocbs; struct io_u **io_us; - struct iocb *user_iocbs; struct io_u **io_u_index; /* @@ -60,8 +53,6 @@ struct libaio_options { void *pad; unsigned int userspace_reap; unsigned int hipri; - unsigned int useriocb; - unsigned int fixedbufs; }; static struct fio_option options[] = { @@ -83,24 +74,6 @@ static struct fio_option options[] = { .category = FIO_OPT_C_ENGINE, .group = FIO_OPT_G_LIBAIO, }, - { - .name = "useriocb", - .lname = "User IOCBs", - .type = FIO_OPT_STR_SET, - .off1 = offsetof(struct libaio_options, useriocb), - .help = "Use user mapped IOCBs", - .category = FIO_OPT_C_ENGINE, - .group = FIO_OPT_G_LIBAIO, - }, - { - .name = "fixedbufs", - .lname = "Fixed (pre-mapped) IO buffers", - .type = FIO_OPT_STR_SET, - .off1 = offsetof(struct libaio_options, fixedbufs), - .help = "Pre map IO buffers", - .category = FIO_OPT_C_ENGINE, - .group = FIO_OPT_G_LIBAIO, - }, { .name = NULL, }, @@ -117,36 +90,20 @@ static inline void ring_inc(struct libaio_data *ld, unsigned int *val, static int fio_libaio_prep(struct thread_data fio_unused *td, struct io_u *io_u) { - struct libaio_data *ld = td->io_ops_data; struct fio_file *f = io_u->file; struct libaio_options *o = td->eo; struct iocb *iocb; - if (o->useriocb) - iocb = &ld->user_iocbs[io_u->index]; - else - iocb = &io_u->iocb; + iocb = &io_u->iocb; if (io_u->ddir == DDIR_READ) { - if (o->fixedbufs) { - iocb->aio_fildes = f->fd; - iocb->aio_lio_opcode = IO_CMD_PREAD; - iocb->u.c.offset = io_u->offset; - } else { - io_prep_pread(iocb, f->fd, io_u->xfer_buf, io_u->xfer_buflen, io_u->offset); - if (o->hipri) - iocb->u.c.flags |= IOCB_FLAG_HIPRI; - } + io_prep_pread(iocb, f->fd, io_u->xfer_buf, io_u->xfer_buflen, io_u->offset); + if (o->hipri) + iocb->u.c.flags |= IOCB_FLAG_HIPRI; } else if (io_u->ddir == DDIR_WRITE) { - if (o->fixedbufs) { - iocb->aio_fildes = f->fd; - iocb->aio_lio_opcode = IO_CMD_PWRITE; - iocb->u.c.offset = io_u->offset; - } else { - io_prep_pwrite(iocb, f->fd, io_u->xfer_buf, io_u->xfer_buflen, io_u->offset); - if (o->hipri) - iocb->u.c.flags |= IOCB_FLAG_HIPRI; - } + io_prep_pwrite(iocb, f->fd, io_u->xfer_buf, io_u->xfer_buflen, io_u->offset); + if (o->hipri) + iocb->u.c.flags |= IOCB_FLAG_HIPRI; } else if (ddir_sync(io_u->ddir)) io_prep_fsync(iocb, f->fd); @@ -156,16 +113,11 @@ static int fio_libaio_prep(struct thread_data fio_unused *td, struct io_u *io_u) static struct io_u *fio_libaio_event(struct thread_data *td, int event) { struct libaio_data *ld = td->io_ops_data; - struct libaio_options *o = td->eo; struct io_event *ev; struct io_u *io_u; ev = ld->aio_events + event; - if (o->useriocb) { - int index = (int) (uintptr_t) ev->obj; - io_u = ld->io_u_index[index]; - } else - io_u = container_of(ev->obj, struct io_u, iocb); + io_u = container_of(ev->obj, struct io_u, iocb); if (ev->res != io_u->xfer_buflen) { if (ev->res > io_u->xfer_buflen) @@ -261,7 +213,6 @@ static enum fio_q_status fio_libaio_queue(struct thread_data *td, struct io_u *io_u) { struct libaio_data *ld = td->io_ops_data; - struct libaio_options *o = td->eo; fio_ro_check(td, io_u); @@ -292,11 +243,7 @@ static enum fio_q_status fio_libaio_queue(struct thread_data *td, return FIO_Q_COMPLETED; } - if (o->useriocb) - ld->iocbs[ld->head] = (struct iocb *) (uintptr_t) io_u->index; - else - ld->iocbs[ld->head] = &io_u->iocb; - + ld->iocbs[ld->head] = &io_u->iocb; ld->io_us[ld->head] = io_u; ring_inc(ld, &ld->head, 1); ld->queued++; @@ -415,87 +362,46 @@ static void fio_libaio_cleanup(struct thread_data *td) free(ld->aio_events); free(ld->iocbs); free(ld->io_us); - if (ld->user_iocbs) { - size_t size = td->o.iodepth * sizeof(struct iocb); - fio_memfree(ld->user_iocbs, size, false); - } free(ld); } } static int fio_libaio_old_queue_init(struct libaio_data *ld, unsigned int depth, - bool hipri, bool useriocb, bool fixedbufs) + bool hipri) { if (hipri) { log_err("fio: polled aio not available on your platform\n"); return 1; } - if (useriocb) { - log_err("fio: user mapped iocbs not available on your platform\n"); - return 1; - } - if (fixedbufs) { - log_err("fio: fixed buffers not available on your platform\n"); - return 1; - } return io_queue_init(depth, &ld->aio_ctx); } static int fio_libaio_queue_init(struct libaio_data *ld, unsigned int depth, - bool hipri, bool useriocb, bool fixedbufs) + bool hipri) { #ifdef __NR_sys_io_setup2 int ret, flags = 0; if (hipri) flags |= IOCTX_FLAG_IOPOLL; - if (useriocb) - flags |= IOCTX_FLAG_USERIOCB; - if (fixedbufs) { - struct rlimit rlim = { - .rlim_cur = RLIM_INFINITY, - .rlim_max = RLIM_INFINITY, - }; - - setrlimit(RLIMIT_MEMLOCK, &rlim); - flags |= IOCTX_FLAG_FIXEDBUFS; - } - ret = syscall(__NR_sys_io_setup2, depth, flags, ld->user_iocbs, - NULL, NULL, &ld->aio_ctx); + ret = syscall(__NR_sys_io_setup2, depth, flags, NULL, NULL, + &ld->aio_ctx); if (!ret) return 0; /* fall through to old syscall */ #endif - return fio_libaio_old_queue_init(ld, depth, hipri, useriocb, fixedbufs); + return fio_libaio_old_queue_init(ld, depth, hipri); } static int fio_libaio_post_init(struct thread_data *td) { struct libaio_data *ld = td->io_ops_data; struct libaio_options *o = td->eo; - struct io_u *io_u; - struct iocb *iocb; int err = 0; - if (o->fixedbufs) { - int i; - - for (i = 0; i < td->o.iodepth; i++) { - io_u = ld->io_u_index[i]; - iocb = &ld->user_iocbs[i]; - iocb->u.c.buf = io_u->buf; - iocb->u.c.nbytes = td_max_bs(td); - - iocb->u.c.flags = 0; - if (o->hipri) - iocb->u.c.flags |= IOCB_FLAG_HIPRI; - } - } - - err = fio_libaio_queue_init(ld, td->o.iodepth, o->hipri, o->useriocb, - o->fixedbufs); + err = fio_libaio_queue_init(ld, td->o.iodepth, o->hipri); if (err) { td_verror(td, -err, "io_queue_init"); return 1; @@ -506,20 +412,10 @@ static int fio_libaio_post_init(struct thread_data *td) static int fio_libaio_init(struct thread_data *td) { - struct libaio_options *o = td->eo; struct libaio_data *ld; ld = calloc(1, sizeof(*ld)); - if (o->useriocb) { - size_t size; - - ld->io_u_index = calloc(td->o.iodepth, sizeof(struct io_u *)); - size = td->o.iodepth * sizeof(struct iocb); - ld->user_iocbs = fio_memalign(page_size, size, false); - memset(ld->user_iocbs, 0, size); - } - ld->entries = td->o.iodepth; ld->is_pow2 = is_power_of_2(ld->entries); ld->aio_events = calloc(ld->entries, sizeof(struct io_event)); @@ -530,25 +426,11 @@ static int fio_libaio_init(struct thread_data *td) return 0; } -static int fio_libaio_io_u_init(struct thread_data *td, struct io_u *io_u) -{ - struct libaio_options *o = td->eo; - - if (o->useriocb) { - struct libaio_data *ld = td->io_ops_data; - - ld->io_u_index[io_u->index] = io_u; - } - - return 0; -} - static struct ioengine_ops ioengine = { .name = "libaio", .version = FIO_IOOPS_VERSION, .init = fio_libaio_init, .post_init = fio_libaio_post_init, - .io_u_init = fio_libaio_io_u_init, .prep = fio_libaio_prep, .queue = fio_libaio_queue, .commit = fio_libaio_commit,