Merge branch 'nvme/support-sync-fua-for-iouring-v2' of https://github.com/minwooim/fio master
authorVincent Fu <vincent.fu@samsung.com>
Fri, 24 May 2024 16:44:44 +0000 (12:44 -0400)
committerVincent Fu <vincent.fu@samsung.com>
Fri, 24 May 2024 16:44:44 +0000 (12:44 -0400)
* 'nvme/support-sync-fua-for-iouring-v2' of https://github.com/minwooim/fio:
  io_uring: Add 'readfua' and 'writefua' options

1  2 
HOWTO.rst
fio.1

diff --combined HOWTO.rst
index 3b262faeae7a7d340c816aaef21b97e129241cc0,56951f13075d45498186588e18942d2b2e3b719d..0b39a89231fc099d4c7e5bcac1fcd4667db15b6f
+++ b/HOWTO.rst
@@@ -2529,12 -2529,8 +2529,12 @@@ with the caveat that when used on the c
                        Round robin over available placement IDs. This is the
                        default.
  
 -      The available placement ID (indices) are defined by the option
 -      :option:`plids`.
 +              **scheme**
 +                      Choose a placement ID (index) based on the scheme file defined by
 +                      the option :option:`dp_scheme`.
 +
 +      The available placement ID (indices) are defined by the option :option:`fdp_pli`
 +      or :option:`plids` except for the case of **scheme**.
  
  .. option:: plids=str, fdp_pli=str : [io_uring_cmd] [xnvme]
  
          identifiers only at indices 0, 2 and 5 specify ``plids=0,2,5``. For
          streams this should be a comma-separated list of Stream IDs.
  
 +.. option:: dp_scheme=str : [io_uring_cmd] [xnvme]
 +
 +      Defines which placement ID (index) to be selected based on offset(LBA) range.
 +      The file should contains one or more scheme entries in the following format:
 +
 +              0, 10737418240, 0
 +              10737418240, 21474836480, 1
 +              21474836480, 32212254720, 2
 +              ...
 +
 +      Each line, a scheme entry, contains start offset, end offset, and placement ID
 +      (index) separated by comma(,). If the write offset is within the range of a certain
 +      scheme entry(start offset ≤ offset < end offset), the corresponding placement ID
 +      (index) will be selected. If the write offset belongs to multiple scheme entries,
 +      the first matched scheme entry will be applied. If the offset is not within any range
 +      of scheme entry, dspec field will be set to 0, default RUH. (Caution: In case of
 +      multiple devices in a job, all devices of the job will be affected by the scheme. If
 +      this option is specified, the option :option:`plids` or :option:`fdp_pli` will be
 +      ignored.)
 +
  .. option:: md_per_io_size=int : [io_uring_cmd] [xnvme]
  
        Size in bytes for separate metadata buffer per IO. Default: 0.
        Specify stat system call type to measure lookup/getattr performance.
        Default is **stat** for :manpage:`stat(2)`.
  
- .. option:: readfua=bool : [sg]
+ .. option:: readfua=bool : [sg] [io_uring_cmd]
  
        With readfua option set to 1, read operations include
        the force unit access (fua) flag. Default is 0.
  
- .. option:: writefua=bool : [sg]
+ .. option:: writefua=bool : [sg] [io_uring_cmd]
  
        With writefua option set to 1, write operations include
        the force unit access (fua) flag. Default is 0.
diff --combined fio.1
index 1c8e3a56707e3e3700e3267bd1747786cd2540d0,4201132844333c766fdea595a032c93ce13eced3..9a965cb0903f4337de4c37d5f86a1fb80e29087f
--- 1/fio.1
--- 2/fio.1
+++ b/fio.1
@@@ -2294,14 -2294,9 +2294,14 @@@ Choose a placement ID at random (unifor
  .TP
  .B roundrobin
  Round robin over available placement IDs. This is the default.
 +.TP
 +.B scheme
 +Choose a placement ID (index) based on the scheme file defined by
 +the option \fBdp_scheme\fP.
  .RE
  .P
 -The available placement ID (indices) are defined by the \fBplids\fR option.
 +The available placement ID (indices) are defined by \fBplids\fR or
 +\fBfdp_pli\fR option except for the case of \fBscheme\fP.
  .RE
  .TP
  .BI (io_uring_cmd,xnvme)plids=str, fdp_pli \fR=\fPstr
@@@ -2312,31 -2307,6 +2312,31 @@@ jobs. If you want fio to use placement 
  specify, you would set `plids=0,2,5`. For streams this should be a
  comma-separated list of Stream IDs.
  .TP
 +.BI (io_uring_cmd,xnvme)\fR\fBdp_scheme\fP=str
 +Defines which placement ID (index) to be selected based on offset(LBA) range.
 +The file should contains one or more scheme entries in the following format:
 +.sp
 +.RS
 +.RS
 +0, 10737418240, 0
 +.br
 +10737418240, 21474836480, 1
 +.br
 +21474836480, 32212254720, 2
 +.br
 +\&...
 +.RE
 +.sp
 +Each line, a scheme entry, contains start offset, end offset, and placement ID
 +(index) separated by comma(,). If the write offset is within the range of a certain
 +scheme entry(start offset ≤ offset < end offset), the corresponding placement ID
 +(index) will be selected. If the write offset belongs to multiple scheme entries,
 +the first matched scheme entry will be applied. If the offset is not within any range
 +of scheme entry, dspec field will be set to 0, default RUH. (Caution: In case of
 +multiple devices in a job, all devices of the job will be affected by the scheme. If
 +this option is specified, the option \fBplids\fP or \fBfdp_pli\fP will be ignored.)
 +.RE
 +.TP
  .BI (io_uring_cmd,xnvme)md_per_io_size \fR=\fPint
  Size in bytes for separate metadata buffer per IO. Default: 0.
  .TP
@@@ -2632,11 -2602,11 +2632,11 @@@ that "owns" the device also needs to su
  and mq_poll). The MegaRAID driver is an example of a SCSI LLD.
  Default: clear (0) which does normal (interrupted based) IO.
  .TP
- .BI (sg)readfua \fR=\fPbool
+ .BI (sg, io_uring_cmd)readfua \fR=\fPbool
  With readfua option set to 1, read operations include the force
  unit access (fua) flag. Default: 0.
  .TP
- .BI (sg)writefua \fR=\fPbool
+ .BI (sg, io_uring_cmd)writefua \fR=\fPbool
  With writefua option set to 1, write operations include the force
  unit access (fua) flag. Default: 0.
  .TP