From efbafe2a0934924f139a2fb4b07eda4560cdf7d0 Mon Sep 17 00:00:00 2001 From: Ankit Kumar Date: Thu, 22 Dec 2022 10:09:50 +0530 Subject: [PATCH] engines/xnvme: add subnqn to fio-options For fio to utilize a fabrics target with multiple systems, it needs a way for the user to specify which subsystem to use. This is done by providing 'subnqn' as fio-option. Signed-off-by: Simon A. F. Lund Signed-off-by: Ankit Kumar Signed-off-by: Vincent Fu --- HOWTO.rst | 5 +++++ engines/xnvme.c | 11 +++++++++++ fio.1 | 4 ++++ 3 files changed, 20 insertions(+) diff --git a/HOWTO.rst b/HOWTO.rst index aba6c9b3..0fec38a7 100644 --- a/HOWTO.rst +++ b/HOWTO.rst @@ -2880,6 +2880,11 @@ with the caveat that when used on the command line, they must come after the xnvme namespace identifier for userspace NVMe driver, SPDK or vfio. +.. option:: xnvme_dev_subnqn=str : [xnvme] + + Sets the subsystem NQN for fabrics. This is for xNVMe to utilize a + fabrics target with multiple systems. + .. option:: xnvme_iovec=int : [xnvme] If this option is set. xnvme will use vectored read/write commands. diff --git a/engines/xnvme.c b/engines/xnvme.c index ee6b67c1..208d917d 100644 --- a/engines/xnvme.c +++ b/engines/xnvme.c @@ -78,6 +78,7 @@ struct xnvme_fioe_options { char *xnvme_async; char *xnvme_sync; char *xnvme_admin; + char *xnvme_dev_subnqn; }; static struct fio_option options[] = { @@ -145,6 +146,15 @@ static struct fio_option options[] = { .category = FIO_OPT_C_ENGINE, .group = FIO_OPT_G_XNVME, }, + { + .name = "xnvme_dev_subnqn", + .lname = "Subsystem nqn for Fabrics", + .type = FIO_OPT_STR_STORE, + .off1 = offsetof(struct xnvme_fioe_options, xnvme_dev_subnqn), + .help = "Subsystem NQN for Fabrics", + .category = FIO_OPT_C_ENGINE, + .group = FIO_OPT_G_XNVME, + }, { .name = "xnvme_iovec", .lname = "Vectored IOs", @@ -181,6 +191,7 @@ static struct xnvme_opts xnvme_opts_from_fioe(struct thread_data *td) struct xnvme_opts opts = xnvme_opts_default(); opts.nsid = o->xnvme_dev_nsid; + opts.subnqn = o->xnvme_dev_subnqn; opts.be = o->xnvme_be; opts.async = o->xnvme_async; opts.sync = o->xnvme_sync; diff --git a/fio.1 b/fio.1 index 004d3ba0..134aed54 100644 --- a/fio.1 +++ b/fio.1 @@ -2627,6 +2627,10 @@ Use Linux Block Layer ioctl() and sysfs for admin commands. .BI (xnvme)xnvme_dev_nsid\fR=\fPint xnvme namespace identifier for userspace NVMe driver SPDK or vfio. .TP +.BI (xnvme)xnvme_dev_subnqn\fR=\fPstr +Sets the subsystem NQN for fabrics. This is for xNVMe to utilize a fabrics +target with multiple systems. +.TP .BI (xnvme)xnvme_iovec If this option is set, xnvme will use vectored read/write commands. .TP -- 2.25.1