From: Mateusz Nowicki When run repeatedly, nvme/039 fails intermittently with a regular block read error instead of the expected passthru line, e.g.: nvme0n1: Read(0x2) @ LBA 0, 8 blocks, Invalid Command Opcode (sct 0x0 / sc 0x1) DNR inject_write_fault_on_write() writes LBA 0 of the whole-disk device, whose release emits a change uevent that makes udev run blkid, reading LBA 0 asynchronously. The following passthru injection arms a one-shot fault (times=1); if the stray blkid read races in first it consumes the fault and is logged via nvme_log_error() (no cdw fields), so the expected passthru line is never emitted and the test fails. Drain the pending uevent with udevadm settle before the passthru section. Signed-off-by: Mateusz Nowicki --- tests/nvme/039 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/nvme/039 b/tests/nvme/039 index 7ca48ec..8c70c5c 100755 --- a/tests/nvme/039 +++ b/tests/nvme/039 @@ -206,6 +206,8 @@ test_device() { inject_invalid_status_on_read "${ns_dev}" inject_write_fault_on_write "${ns_dev}" + udevadm settle + if [ -e "$TEST_DEV_SYSFS/passthru_err_log_enabled" ]; then _nvme_passthru_logging_setup "${ns_dev}" "${ctrl_dev}" -- 2.53.0