X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=engines%2Ffio-engine-splice.c;h=fa4a6ee1db21ff192d811f1a95dfacc05de35483;hp=3553d646c0a1f15a4a6e1540a214febf328d0abd;hb=5f350952eff89948bfbf1eb6ac4d3d08a9109581;hpb=87dc1ab1b4df7b977f60e3d43533a896e2ee665b diff --git a/engines/fio-engine-splice.c b/engines/fio-engine-splice.c index 3553d646..fa4a6ee1 100644 --- a/engines/fio-engine-splice.c +++ b/engines/fio-engine-splice.c @@ -8,8 +8,11 @@ #include #include #include -#include "fio.h" -#include "os.h" + +#include "../fio.h" +#include "../os.h" + +#ifdef FIO_HAVE_SPLICE struct spliceio_data { struct io_u *last_io_u; @@ -129,7 +132,7 @@ static int fio_splice_write(struct thread_data *td, struct io_u *io_u) static int fio_spliceio_queue(struct thread_data *td, struct io_u *io_u) { struct spliceio_data *sd = td->io_ops->data; - int ret; + unsigned int ret; if (io_u->ddir == DDIR_READ) ret = fio_splice_read(td, io_u); @@ -138,7 +141,7 @@ static int fio_spliceio_queue(struct thread_data *td, struct io_u *io_u) else ret = fsync(io_u->file->fd); - if ((unsigned int) ret != io_u->buflen) { + if (ret != io_u->buflen) { if (ret > 0) { io_u->resid = io_u->buflen - ret; io_u->error = ENODATA; @@ -179,7 +182,7 @@ static int fio_spliceio_init(struct thread_data *td) return 0; } -struct ioengine_ops ioengine = { +static struct ioengine_ops ioengine = { .name = "splice", .version = FIO_IOOPS_VERSION, .init = fio_spliceio_init, @@ -189,3 +192,34 @@ struct ioengine_ops ioengine = { .cleanup = fio_spliceio_cleanup, .flags = FIO_SYNCIO, }; + +#else /* FIO_HAVE_SPLICE */ + +/* + * When we have a proper configure system in place, we simply wont build + * and install this io engine. For now install a crippled version that + * just complains and fails to load. + */ +static int fio_spliceio_init(struct thread_data fio_unused *td) +{ + fprintf(stderr, "fio: splice not available\n"); + return 1; +} + +static struct ioengine_ops ioengine = { + .name = "splice", + .version = FIO_IOOPS_VERSION, + .init = fio_spliceio_init, +}; + +#endif + +static void fio_init fio_spliceio_register(void) +{ + register_ioengine(&ioengine); +} + +static void fio_exit fio_spliceio_unregister(void) +{ + unregister_ioengine(&ioengine); +}