According to the comment in nvmet_passthru_override_id_ns() in the kernel code drivers/nvme/target/passthru.c, "Presently the NVMEof target code does not support sending metadata, so we must disable it here". Because of this limitation, when TEST_DEV namespace has the format with metadata, the passthru target namespaces created in the test cases nvme/034 and nvme/035 have zero capacity. This makes I/Os fail and the test cases fail. To avoid the failures, skip the test cases when TEST_DEV has metadata. For that purpose, introduce the function _test_dev_has_no_metadata(), which checks the sysfs attribute metadata_bytes. Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx> Cc: Logan Gunthorpe <logang@xxxxxxxxxxxx> --- tests/nvme/034 | 1 + tests/nvme/035 | 1 + tests/nvme/rc | 8 ++++++++ 3 files changed, 10 insertions(+) diff --git a/tests/nvme/034 b/tests/nvme/034 index a4c5e97..aa6fda3 100755 --- a/tests/nvme/034 +++ b/tests/nvme/034 @@ -16,6 +16,7 @@ requires() { device_requires() { _require_test_dev_is_not_nvme_multipath + _test_dev_has_no_metadata } set_conditions() { diff --git a/tests/nvme/035 b/tests/nvme/035 index 71039ad..9eef0d7 100755 --- a/tests/nvme/035 +++ b/tests/nvme/035 @@ -20,6 +20,7 @@ device_requires() { _require_test_dev_is_not_nvme_multipath _require_test_dev_size "${NVME_IMG_SIZE}" _test_dev_suits_xfs + _test_dev_has_no_metadata } set_conditions() { diff --git a/tests/nvme/rc b/tests/nvme/rc index 215a10a..bca28ba 100644 --- a/tests/nvme/rc +++ b/tests/nvme/rc @@ -161,6 +161,14 @@ _test_dev_has_metadata() { return 0 } +_test_dev_has_no_metadata() { + if (( $(<"${TEST_DEV_SYSFS}/metadata_bytes") )); then + SKIP_REASONS+=("$TEST_DEV has metadata") + return 1 + fi + return 0 +} + _test_dev_disables_extended_lba() { local flbas -- 2.49.0