X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=engines%2Fglusterfs_async.c;h=9e1c4bf038f3b3ce2fbe27f3ddb19cffbd6f3dd2;hp=95ca84ef2def417aefb31ce70ce39d44503271af;hb=d3b07186b1d4;hpb=1baee6efc1428150ef674db583d9ff9522ce0e52 diff --git a/engines/glusterfs_async.c b/engines/glusterfs_async.c index 95ca84ef..9e1c4bf0 100644 --- a/engines/glusterfs_async.c +++ b/engines/glusterfs_async.c @@ -13,7 +13,7 @@ struct fio_gf_iou { static struct io_u *fio_gf_event(struct thread_data *td, int event) { - struct gf_data *gf_data = td->io_ops->data; + struct gf_data *gf_data = td->io_ops_data; dprint(FD_IO, "%s\n", __FUNCTION__); return gf_data->aio_events[event]; @@ -22,7 +22,7 @@ static struct io_u *fio_gf_event(struct thread_data *td, int event) static int fio_gf_getevents(struct thread_data *td, unsigned int min, unsigned int max, const struct timespec *t) { - struct gf_data *g = td->io_ops->data; + struct gf_data *g = td->io_ops_data; unsigned int events = 0; struct io_u *io_u; int i; @@ -70,20 +70,17 @@ static void fio_gf_io_u_free(struct thread_data *td, struct io_u *io_u) static int fio_gf_io_u_init(struct thread_data *td, struct io_u *io_u) { + struct fio_gf_iou *io; dprint(FD_FILE, "%s\n", __FUNCTION__); - - if (!io_u->engine_data) { - struct fio_gf_iou *io; - - io = malloc(sizeof(struct fio_gf_iou)); - if (!io) { - td_verror(td, errno, "malloc"); - return 1; - } - io->io_complete = 0; - io->io_u = io_u; - io_u->engine_data = io; - } + + io = malloc(sizeof(struct fio_gf_iou)); + if (!io) { + td_verror(td, errno, "malloc"); + return 1; + } + io->io_complete = 0; + io->io_u = io_u; + io_u->engine_data = io; return 0; } @@ -92,14 +89,14 @@ static void gf_async_cb(glfs_fd_t * fd, ssize_t ret, void *data) struct io_u *io_u = data; struct fio_gf_iou *iou = io_u->engine_data; - dprint(FD_IO, "%s ret %lu\n", __FUNCTION__, ret); + dprint(FD_IO, "%s ret %zd\n", __FUNCTION__, ret); iou->io_complete = 1; } -static int fio_gf_async_queue(struct thread_data fio_unused * td, - struct io_u *io_u) +static enum fio_q_status fio_gf_async_queue(struct thread_data fio_unused * td, + struct io_u *io_u) { - struct gf_data *g = td->io_ops->data; + struct gf_data *g = td->io_ops_data; int r; dprint(FD_IO, "%s op %s\n", __FUNCTION__, io_ddir_name(io_u->ddir)); @@ -117,10 +114,12 @@ static int fio_gf_async_queue(struct thread_data fio_unused * td, r = glfs_discard_async(g->fd, io_u->offset, io_u->xfer_buflen, gf_async_cb, io_u); #endif + else if (io_u->ddir == DDIR_DATASYNC) + r = glfs_fdatasync_async(g->fd, gf_async_cb, io_u); else if (io_u->ddir == DDIR_SYNC) r = glfs_fsync_async(g->fd, gf_async_cb, io_u); else - r = -EINVAL; + r = EINVAL; if (r) { log_err("glfs queue failed.\n"); @@ -135,7 +134,7 @@ failed: return FIO_Q_COMPLETED; } -int fio_gf_async_setup(struct thread_data *td) +static int fio_gf_async_setup(struct thread_data *td) { struct gf_data *g; int r; @@ -148,7 +147,7 @@ int fio_gf_async_setup(struct thread_data *td) return r; td->o.use_thread = 1; - g = td->io_ops->data; + g = td->io_ops_data; g->aio_events = calloc(td->o.iodepth, sizeof(struct io_u *)); if (!g->aio_events) { r = -ENOMEM;