[PATCH blktests v1 0/5] fc transport cleanups

Daniel Wagner dwagner at suse.de
Tue Feb 6 05:16:50 PST 2024


After the nvmet-fc fixes have been merged into kernel, it's time to get the
tests work smoothly with the fc transport. These fixes here are not necessary IF
the auto connect udev rule is disabled.

If the auto connect is enabled, discovery controllers are created and destroyed
which are not under control of blktests. This only a problem when we iterate
over the sysfs resources to find the device. As these operations are not atomic,
we have to make the lookups a bit less noisy.

Also the cleanup path needs the same treatment. With a small fix for libnvme
which turns an error message into a debug message[1][2], we get (Linux v6.8-rc3)


  nvme/002 (create many subsystems and test discovery)         [not run]
      nvme_trtype=fc is not supported in this test
  nvme/003 (test if we're sending keep-alives to a discovery controller)
      runtime  11.460s  ...
  nvme/003 (test if we're sending keep-alives to a discovery controller) [passed]
      runtime  11.460s  ...  11.439s
  nvme/004 (test nvme and nvmet UUID NS descriptors)          
      runtime  0.580s  ...
  nvme/004 (test nvme and nvmet UUID NS descriptors)           [passed]
      runtime  0.580s  ...  0.577s
  nvme/005 (reset local loopback target)                       [passed]
      runtime  0.691s  ...  0.663s
  nvme/006 (create an NVMeOF target with a block device-backed ns) [passed]
      runtime    ...  0.177s
  nvme/007 (create an NVMeOF target with a file-backed ns)     [passed]
      runtime  0.161s  ...  0.133s
  nvme/008 (create an NVMeOF host with a block device-backed ns) [passed]
      runtime  0.590s  ...  0.547s
  nvme/009 (create an NVMeOF host with a file-backed ns)       [passed]
      runtime  0.516s  ...  0.515s
  nvme/010 (run data verification fio job on NVMeOF block device-backed ns) [passed]
      runtime  9.348s  ...  8.376s
  nvme/011 (run data verification fio job on NVMeOF file-backed ns) [passed]
      runtime  26.887s  ...  25.305s
  nvme/012 (run mkfs and data verification fio job on NVMeOF block device-backed ns) [passed]
      runtime  16.937s  ...  15.540s
  nvme/013 (run mkfs and data verification fio job on NVMeOF file-backed ns) [passed]
      runtime  28.198s  ...  26.436s
  nvme/014 (flush a NVMeOF block device-backed ns)             [passed]
      runtime  3.013s  ...  3.036s
  nvme/015 (unit test for NVMe flush for file backed ns)       [passed]
      runtime  2.855s  ...  2.721s
  nvme/016 (create/delete many NVMeOF block device-backed ns and test discovery) [not run]
      nvme_trtype=fc is not supported in this test
  nvme/017 (create/delete many file-ns and test discovery)     [not run]
      nvme_trtype=fc is not supported in this test
  nvme/018 (unit test NVMe-oF out of range access on a file backend) [passed]
      runtime  0.535s  ...  0.556s
  nvme/019 (test NVMe DSM Discard command on NVMeOF block-device ns) [passed]
      runtime  0.540s  ...  0.584s
  nvme/020 (test NVMe DSM Discard command on NVMeOF file-backed ns) [passed]
      runtime  0.619s  ...  0.557s
  nvme/021 (test NVMe list command on NVMeOF file-backed ns)   [passed]
      runtime  0.543s  ...  0.576s
  nvme/022 (test NVMe reset command on NVMeOF file-backed ns)  [passed]
      runtime  0.639s  ...  0.699s
  nvme/023 (test NVMe smart-log command on NVMeOF block-device ns) [passed]
      runtime  0.638s  ...  0.511s
  nvme/024 (test NVMe smart-log command on NVMeOF file-backed ns) [passed]
      runtime  0.539s  ...  0.602s
  nvme/025 (test NVMe effects-log command on NVMeOF file-backed ns) [passed]
      runtime  0.527s  ...  0.521s
  nvme/026 (test NVMe ns-descs command on NVMeOF file-backed ns) [passed]
      runtime  0.566s  ...  0.569s
  nvme/027 (test NVMe ns-rescan command on NVMeOF file-backed ns) [passed]
      runtime  0.580s  ...  0.607s
  nvme/028 (test NVMe list-subsys command on NVMeOF file-backed ns) [passed]
      runtime  0.541s  ...  0.521s
  nvme/029 (test userspace IO via nvme-cli read/write interface) [passed]
      runtime  0.809s  ...  0.768s
  nvme/030 (ensure the discovery generation counter is updated appropriately) [passed]
      runtime  0.514s  ...  0.521s
  nvme/031 (test deletion of NVMeOF controllers immediately after setup) [passed]
      runtime  3.434s  ...  3.318s
  nvme/038 (test deletion of NVMeOF subsystem without enabling) [passed]
      runtime  0.047s  ...  0.048s
  nvme/040 (test nvme fabrics controller reset/disconnect operation during I/O) [passed]
      runtime  6.698s  ...  6.639s
  nvme/041 (Create authenticated connections)                  [failed]
      runtime  2.553s  ...  2.543s
      --- tests/nvme/041.out      2023-11-28 12:59:52.708172235 +0100
      +++ /home/wagi/work/blktests/results/nodev/nvme/041.out.bad 2024-02-06 13:40:30.159988590 +0100
      @@ -2,5 +2,5 @@
       Test unauthenticated connection (should fail)
       disconnected 0 controller(s)
       Test authenticated connection
      -disconnected 1 controller(s)
      +disconnected 0 controller(s)
       Test complete
  nvme/042 (Test dhchap key types for authenticated connections) [passed]
      runtime  2.629s  ...  2.710s
  nvme/043 (Test hash and DH group variations for authenticated connections) [passed]
      runtime  4.014s  ...  3.912s
  nvme/044 (Test bi-directional authentication)                [failed]
      runtime  4.019s  ...  4.029s
      --- tests/nvme/044.out      2023-11-28 12:59:52.711505550 +0100
      +++ /home/wagi/work/blktests/results/nodev/nvme/044.out.bad 2024-02-06 13:40:43.653233959 +0100
      @@ -4,7 +4,7 @@
       Test invalid ctrl authentication (should fail)
       disconnected 0 controller(s)
       Test valid ctrl authentication
      -disconnected 1 controller(s)
      +disconnected 0 controller(s)
       Test invalid ctrl key (should fail)
       disconnected 0 controller(s)
      ...
      (Run 'diff -u tests/nvme/044.out /home/wagi/work/blktests/results/nodev/nvme/044.out.bad' to see the entire diff)
  nvme/045 (Test re-authentication)                            [passed]
      runtime  1.534s  ...  1.531s
  nvme/047 (test different queue types for fabric transports)  [not run]
      nvme_trtype=fc is not supported in this test
  nvme/048 (Test queue count changes on reconnect)             [failed]
      runtime  0.484s  ...  0.506s
      --- tests/nvme/048.out      2023-11-28 12:59:52.711505550 +0100
      +++ /home/wagi/work/blktests/results/nodev/nvme/048.out.bad 2024-02-06 13:40:48.339870090 +0100
      @@ -1,3 +1,7 @@
       Running nvme/048
      +expected queue count 2 not set
      +FAIL
      +expected queue count 3 not set
      +FAIL
       disconnected 1 controller(s)
       Test complete

The auth tests and queue count tests fail and I think from a quick look these
failures are real. I did run these tests in a loop and didn't see any sporadic
failures anymore. So I am confident that we finally have some progress in this
area.

[1] https://lore.kernel.org/linux-nvme/i4bmvgd3u7shgizqgtdtssdz5v3wc76l6bcce6fcbvoft32gzk@rztzeut4azvj/
[2] https://github.com/linux-nvme/libnvme/pull/778

Daniel Wagner (5):
  nvme/029: fix local variable declarations
  nvme/rc: filter out errors from cat when reading files
  nvme/rc: do not issue warnings on cleanup when using fc transport
  nvme/rc: do not issue errors when disconnecting when using fc
    transport
  nvme/rc: revert nvme-cli context tracking

 tests/nvme/029 |  2 +-
 tests/nvme/rc  | 73 +++++---------------------------------------------
 2 files changed, 8 insertions(+), 67 deletions(-)

-- 
2.43.0




More information about the Linux-nvme mailing list