From c1f49bedb10496646d95dc88906e628044e07803 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Tue, 27 Jun 2017 14:21:07 -0700 Subject: [PATCH] fio_plugin: allow specifying a shared memory ID While here, change the recently added mem_size_mb to also use the automatic option parsing for integer values provided by fio. Signed-off-by: Jim Harris Change-Id: I889073b3b3b01c7003b21d8ace61e71b672ff2df Reviewed-on: https://review.gerrithub.io/367284 Reviewed-by: Daniel Verkamp Tested-by: SPDK Automated Test System Reviewed-by: Ben Walker --- examples/nvme/fio_plugin/fio_plugin.c | 36 ++++++++++++++++----------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/examples/nvme/fio_plugin/fio_plugin.c b/examples/nvme/fio_plugin/fio_plugin.c index ac510bb93..2dc4d32a0 100644 --- a/examples/nvme/fio_plugin/fio_plugin.c +++ b/examples/nvme/fio_plugin/fio_plugin.c @@ -45,7 +45,12 @@ #define NVME_IO_ALIGN 4096 static bool spdk_env_initialized; -static int g_mem_size = 512; + +struct spdk_fio_options { + void *pad; /* off1 used in option descriptions may not be 0 */ + int mem_size; + int shm_id; +}; struct spdk_fio_request { struct io_u *io; @@ -186,6 +191,7 @@ attach_cb(void *cb_ctx, const struct spdk_nvme_transport_id *trid, static int spdk_fio_setup(struct thread_data *td) { struct spdk_fio_thread *fio_thread; + struct spdk_fio_options *fio_options = td->eo; struct spdk_env_opts opts; struct fio_file *f; char *p; @@ -215,7 +221,8 @@ static int spdk_fio_setup(struct thread_data *td) if (!spdk_env_initialized) { spdk_env_opts_init(&opts); opts.name = "fio"; - opts.mem_size = g_mem_size; + opts.mem_size = fio_options->mem_size; + opts.shm_id = fio_options->shm_id; spdk_env_init(&opts); spdk_env_initialized = true; spdk_unaffinitize_thread(); @@ -473,15 +480,6 @@ static void spdk_fio_cleanup(struct thread_data *td) pthread_mutex_unlock(&mutex); } -static int -str_mem_size_cb(void *data, const char *input) -{ - g_mem_size = atoi(input); - if (!g_mem_size) - g_mem_size = 512; - return 0; -} - /* This function enables addition of SPDK parameters to the fio config * Adding new parameters by defining them here and defining a callback * function to read the parameter value. */ @@ -489,8 +487,18 @@ static struct fio_option options[] = { { .name = "mem_size_mb", .lname = "Memory size in MB", - .type = FIO_OPT_STR_STORE, - .cb = str_mem_size_cb, + .type = FIO_OPT_INT, + .off1 = offsetof(struct spdk_fio_options, mem_size), + .def = "512", + .category = FIO_OPT_C_ENGINE, + .group = FIO_OPT_G_INVALID, + }, + { + .name = "shm_id", + .lname = "shared memory ID", + .type = FIO_OPT_INT, + .off1 = offsetof(struct spdk_fio_options, shm_id), + .def = "-1", .category = FIO_OPT_C_ENGINE, .group = FIO_OPT_G_INVALID, }, @@ -517,7 +525,7 @@ struct ioengine_ops ioengine = { .io_u_free = spdk_fio_io_u_free, .flags = FIO_RAWIO | FIO_NOEXTEND | FIO_NODISKUTIL | FIO_MEMALIGN, .options = options, - .option_struct_size = 1, + .option_struct_size = sizeof(struct spdk_fio_options), }; static void fio_init fio_spdk_register(void)