[PATCH 2/2] blktests: add test for ANA state transition
From: osandov@osandov.com (Omar Sandoval)
Date: 2018-08-14 21:56:24
On Thu, Aug 02, 2018@12:34:55PM +0200, Hannes Reinecke wrote:
quoted hunk ↗ jump to hunk
Add a simple test for ANA state transition handling. Signed-off-by: Hannes Reinecke <hare at suse.com> --- tests/nvme/018 | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/nvme/018.out | 18 +++++++ 2 files changed, 171 insertions(+) create mode 100755 tests/nvme/018 create mode 100644 tests/nvme/018.outdiff --git a/tests/nvme/018 b/tests/nvme/018 new file mode 100755 index 0000000..b7f9e00 --- /dev/null +++ b/tests/nvme/018@@ -0,0 +1,153 @@ +#!/bin/bash +# +# Regression test for ANA base support +# +# Copyright (C) 2018 Hannes Reinecke +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. tests/nvme/rc + +DESCRIPTION="test ANA optimized/transitioning/inaccessible support" +QUICK=1 + +switch_nvmet_anagroup() { + local port1="$1" + local port2="$2" + local mode="$3" + + echo "ANA state ${mode}" + + if [ "${mode}" = "change" ] ; then + _set_nvmet_anagroup_state "${port1}" "1" "change" + _set_nvmet_anagroup_state "${port1}" "2" "change" + _set_nvmet_anagroup_state "${port2}" "1" "change" + _set_nvmet_anagroup_state "${port2}" "2" "change" + elif [ "${mode}" = "failover" ] ; then + _set_nvmet_anagroup_state "${port1}" "1" "inaccessible" + _set_nvmet_anagroup_state "${port1}" "2" "optimized" + _set_nvmet_anagroup_state "${port2}" "1" "optimized" + _set_nvmet_anagroup_state "${port2}" "2" "inaccessible" + else + _set_nvmet_anagroup_state "${port1}" "1" "optimized" + _set_nvmet_anagroup_state "${port1}" "2" "inaccessible" + _set_nvmet_anagroup_state "${port2}" "1" "inaccessible" + _set_nvmet_anagroup_state "${port2}" "2" "optimized" + fi +} + +requires() { + _have_program nvme && _have_module nvme-loop && _have_module loop && \ + _have_configfs && _have_fio
Sorry for the delay. This needs _have_program mkfs.xfs. Is there any way to detect if the kernel supports ANA? This fails miserably on 4.18, obviously. Thanks!