engines/xnvme: add subnqn to fio-options
[fio.git] / HOWTO.rst
index e9602f59f648a3f095b1ee47c4f0f2d6822dff14..0fec38a76528145d20001ea369aa29124f986ce4 100644 (file)
--- a/HOWTO.rst
+++ b/HOWTO.rst
@@ -1052,16 +1052,29 @@ Target file/device
 
 .. option:: max_open_zones=int
 
-       When running a random write test across an entire drive many more
-       zones will be open than in a typical application workload. Hence this
-       command line option that allows one to limit the number of open zones. The
-       number of open zones is defined as the number of zones to which write
-       commands are issued.
+       A zone of a zoned block device is in the open state when it is partially
+       written (i.e. not all sectors of the zone have been written). Zoned
+       block devices may have a limit on the total number of zones that can
+       be simultaneously in the open state, that is, the number of zones that
+       can be written to simultaneously. The :option:`max_open_zones` parameter
+       limits the number of zones to which write commands are issued by all fio
+       jobs, that is, limits the number of zones that will be in the open
+       state. This parameter is relevant only if the :option:`zonemode` =zbd is
+       used. The default value is always equal to maximum number of open zones
+       of the target zoned block device and a value higher than this limit
+       cannot be specified by users unless the option
+       :option:`ignore_zone_limits` is specified. When
+       :option:`ignore_zone_limits` is specified or the target device has no
+       limit on the number of zones that can be in an open state,
+       :option:`max_open_zones` can specify 0 to disable any limit on the
+       number of zones that can be simultaneously written to by all jobs.
 
 .. option:: job_max_open_zones=int
 
-       Limit on the number of simultaneously opened zones per single
-       thread/process.
+       In the same manner as :option:`max_open_zones`, limit the number of open
+       zones per fio job, that is, the number of zones that a single job can
+       simultaneously write to. A value of zero indicates no limit.
+       Default: zero.
 
 .. option:: ignore_zone_limits=bool
 
@@ -2202,7 +2215,13 @@ I/O engine
                        :option:`libblkio_driver`. If
                        :option:`mem`/:option:`iomem` is not specified, memory
                        allocation is delegated to libblkio (and so is
-                       guaranteed to work with the selected *driver*).
+                       guaranteed to work with the selected *driver*). One
+                       libblkio instance is used per process, so all jobs
+                       setting option :option:`thread` will share a single
+                       instance (with one queue per thread) and must specify
+                       compatible options. Note that some drivers don't allow
+                       several instances to access the same device or file
+                       simultaneously, but allow it for threads.
 
 I/O engine specific parameters
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -2338,7 +2357,8 @@ with the caveat that when used on the command line, they must come after the
    [libblkio]
 
        Use poll queues. This is incompatible with
-       :option:`libblkio_wait_mode=eventfd <libblkio_wait_mode>`.
+       :option:`libblkio_wait_mode=eventfd <libblkio_wait_mode>` and
+       :option:`libblkio_force_enable_completion_eventfd`.
 
    [pvsync2]
 
@@ -2825,6 +2845,9 @@ with the caveat that when used on the command line, they must come after the
        **posix**
                Use the posix asynchronous I/O interface to perform one or
                more I/O operations asynchronously.
+       **vfio**
+               Use the user-space VFIO-based backend, implemented using
+               libvfn instead of SPDK.
        **nil**
                Do not transfer any data; just pretend to. This is mainly used
                for introspective performance evaluation.
@@ -2855,7 +2878,12 @@ with the caveat that when used on the command line, they must come after the
 
 .. option:: xnvme_dev_nsid=int : [xnvme]
 
-       xnvme namespace identifier for userspace NVMe driver, such as SPDK.
+       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]
 
@@ -2868,23 +2896,45 @@ with the caveat that when used on the command line, they must come after the
        libblkio version in use and are listed at
        https://libblkio.gitlab.io/libblkio/blkio.html#drivers
 
+.. option:: libblkio_path=str : [libblkio]
+
+       Sets the value of the driver-specific "path" property before connecting
+       the libblkio instance, which identifies the target device or file on
+       which to perform I/O. Its exact semantics are driver-dependent and not
+       all drivers may support it; see
+       https://libblkio.gitlab.io/libblkio/blkio.html#drivers
+
 .. option:: libblkio_pre_connect_props=str : [libblkio]
 
-       A colon-separated list of libblkio properties to be set after creating
-       but before connecting the libblkio instance. Each property must have the
-       format ``<name>=<value>``. Colons can be escaped as ``\:``. These are
-       set after the engine sets any other properties, so those can be
-       overriden. Available properties depend on the libblkio version in use
+       A colon-separated list of additional libblkio properties to be set after
+       creating but before connecting the libblkio instance. Each property must
+       have the format ``<name>=<value>``. Colons can be escaped as ``\:``.
+       These are set after the engine sets any other properties, so those can
+       be overriden. Available properties depend on the libblkio version in use
        and are listed at
        https://libblkio.gitlab.io/libblkio/blkio.html#properties
 
+.. option:: libblkio_num_entries=int : [libblkio]
+
+       Sets the value of the driver-specific "num-entries" property before
+       starting the libblkio instance. Its exact semantics are driver-dependent
+       and not all drivers may support it; see
+       https://libblkio.gitlab.io/libblkio/blkio.html#drivers
+
+.. option:: libblkio_queue_size=int : [libblkio]
+
+       Sets the value of the driver-specific "queue-size" property before
+       starting the libblkio instance. Its exact semantics are driver-dependent
+       and not all drivers may support it; see
+       https://libblkio.gitlab.io/libblkio/blkio.html#drivers
+
 .. option:: libblkio_pre_start_props=str : [libblkio]
 
-       A colon-separated list of libblkio properties to be set after connecting
-       but before starting the libblkio instance. Each property must have the
-       format ``<name>=<value>``. Colons can be escaped as ``\:``. These are
-       set after the engine sets any other properties, so those can be
-       overriden. Available properties depend on the libblkio version in use
+       A colon-separated list of additional libblkio properties to be set after
+       connecting but before starting the libblkio instance. Each property must
+       have the format ``<name>=<value>``. Colons can be escaped as ``\:``.
+       These are set after the engine sets any other properties, so those can
+       be overriden. Available properties depend on the libblkio version in use
        and are listed at
        https://libblkio.gitlab.io/libblkio/blkio.html#properties
 
@@ -2907,6 +2957,12 @@ with the caveat that when used on the command line, they must come after the
        **loop**
                Use a busy loop with a non-blocking call to ``blkioq_do_io()``.
 
+.. option:: libblkio_force_enable_completion_eventfd : [libblkio]
+
+       Enable the queue's completion eventfd even when unused. This may impact
+       performance. The default is to enable it only if
+       :option:`libblkio_wait_mode=eventfd <libblkio_wait_mode>`.
+
 I/O depth
 ~~~~~~~~~