t/nvmept_pi: add support for xNVMe ioengine
authorVincent Fu <vincent.fu@samsung.com>
Thu, 7 Mar 2024 18:55:22 +0000 (18:55 +0000)
committerVincent Fu <vincent.fu@samsung.com>
Thu, 7 Mar 2024 19:36:30 +0000 (19:36 +0000)
Add a command-line option to run this script using the xNVMe ioengine
with the async io_uring_cmd backend. The default remains to use the
io_uring_cmd ioengine.

Example:

python3 t/nvmept_pi.py --dut /dev/ng1n1 --lbaf 6 --ioengine xnvme --fio ./fio

Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
t/nvmept_pi.py

index 01fe705b4068cff83668758201ca79577f764160..df7c0b9fd8dfb7ed2be247c2597f9773f2bdc3a7 100755 (executable)
@@ -43,8 +43,7 @@ class DifDixTest(FioJobCmdTest):
 
         fio_args = [
             "--name=nvmept_pi",
-            "--ioengine=io_uring_cmd",
-            "--cmd_type=nvme",
+            f"--ioengine={self.fio_opts['ioengine']}",
             f"--filename={self.fio_opts['filename']}",
             f"--rw={self.fio_opts['rw']}",
             f"--bsrange={self.fio_opts['bsrange']}",
@@ -63,6 +62,12 @@ class DifDixTest(FioJobCmdTest):
                 option = f"--{opt}={self.fio_opts[opt]}"
                 fio_args.append(option)
 
+        if self.fio_opts['ioengine'] == 'io_uring_cmd':
+            fio_args.append('--cmd_type=nvme')
+        elif self.fio_opts['ioengine'] == 'xnvme':
+            fio_args.append('--thread=1')
+            fio_args.append('--xnvme_async=io_uring_cmd')
+
         super().setup(fio_args)
 
 
@@ -686,6 +691,7 @@ def parse_args():
                         '(e.g., /dev/ng0n1). WARNING: THIS IS A DESTRUCTIVE TEST', required=True)
     parser.add_argument('-l', '--lbaf', nargs='+', type=int,
                         help='list of lba formats to test')
+    parser.add_argument('-i', '--ioengine', default='io_uring_cmd')
     args = parser.parse_args()
 
     return args
@@ -906,6 +912,7 @@ def main():
 
     for test in TEST_LIST:
         test['fio_opts']['filename'] = args.dut
+        test['fio_opts']['ioengine'] = args.ioengine
 
     test_env = {
               'fio_path': fio_path,