| #!/bin/bash |
| # SPDX-License-Identifier: GPL-2.0+ |
| # Copyright (c) 2017-2018 Western Digital Corporation or its affiliates. |
| # |
| # Test mkfs with data verification for block device backed ns. |
| |
| . tests/nvme/rc |
| |
| DESCRIPTION="run mkfs and data verification fio job on NVMeOF block device-backed ns" |
| TIMED=1 |
| |
| requires() { |
| _have_program nvme && _have_program mkfs.xfs && _have_program fio && \ |
| _have_modules loop nvme-loop nvmet && _have_configfs |
| } |
| |
| test() { |
| echo "Running ${TEST_NAME}" |
| |
| modprobe nvmet |
| modprobe nvme-loop |
| |
| local port |
| local nvmedev |
| local loop_dev |
| local mount_dir="/mnt/blktests" |
| local file_path="${TMPDIR}/img" |
| local subsys_name="blktests-subsystem-1" |
| |
| mkdir -p "${mount_dir}" > /dev/null 2>&1 |
| |
| truncate -s 1G "${file_path}" |
| |
| loop_dev="$(losetup -f --show "${file_path}")" |
| |
| _create_nvmet_subsystem "${subsys_name}" "${loop_dev}" \ |
| "91fdba0d-f87b-4c25-b80f-db7be1418b9e" |
| port="$(_create_nvmet_port "loop")" |
| _add_nvmet_subsys_to_port "${port}" "${subsys_name}" |
| |
| nvme connect -t loop -n "${subsys_name}" |
| |
| nvmedev="$(_find_nvme_loop_dev)" |
| cat "/sys/block/${nvmedev}n1/uuid" |
| cat "/sys/block/${nvmedev}n1/wwid" |
| |
| umount ${mount_dir} > /dev/null 2>&1 |
| |
| mkfs.xfs -l size=32m -f /dev/"${nvmedev}n1" > /dev/null 2>&1 |
| |
| mount /dev/"${nvmedev}n1" "${mount_dir}" |
| |
| _run_fio_verify_io --size=950m --directory="${mount_dir}/" |
| |
| umount "${mount_dir}" > /dev/null 2>&1 |
| |
| nvme disconnect -n "${subsys_name}" |
| |
| _remove_nvmet_subsystem_from_port "${port}" "${subsys_name}" |
| _remove_nvmet_subsystem "${subsys_name}" |
| _remove_nvmet_port "${port}" |
| |
| losetup -d "${loop_dev}" |
| |
| rm -f local*verify*state |
| rm "${file_path}" |
| rm -fr "${mount_dir}" |
| |
| modprobe -r nvme_loop |
| modprobe -r nvmet |
| |
| echo "Test complete" |
| } |