[PATCH blktests 2/2] nvme/{041,042,043,044,045}: require kernel config NVME_HOST_AUTH

Daniel Wagner dwagner at suse.de
Wed Nov 15 06:18:32 PST 2023


On Wed, Nov 15, 2023 at 09:20:28AM +0100, Hannes Reinecke wrote:
> > I agree that kernel version dependency is not the best. As another solution,
> > I considered introducing a helper function _kernel_option_exists() which
> > checks if one of strings "# CONFIG_NVME_HOST_AUTH is not set" or
> > "# CONFIG_NVME_HOST_AUTH=[ym]" exists in kernel config files. With this, we
> > can do as follows:
> > 
> >    _kernel_option_exists NVME_HOST_AUTH && _have_kernel_option NVME_HOST_AUTH
> > 
> > This assumes that one of the strings always exists in kernel configs. I was not
> > sure about the assumption, then chose the way to check kernel version. (Any
> > advice on this assumption will be appreciated...)
> 
> None of this is really a good solution. Probably we should strive to make
> nvme-cli handling this situation correctly; after all, it would know if the
> fabrics option is supported or not.

nvme-cli is detecting if a feature is present by reading
/dev/nvme-fabrics. I think we should do something similar in blktest
but not by calling nvme-cli in the _require() block. Though we don't
have to rely on nvme-cli. We can do something like this:


diff --git a/tests/nvme/045 b/tests/nvme/045
index 1eb1032a3b93..954f96bedd5a 100755
--- a/tests/nvme/045
+++ b/tests/nvme/045
@@ -17,6 +17,7 @@ requires() {
        _have_kernel_option NVME_TARGET_AUTH
        _require_nvme_trtype_is_fabrics
        _require_nvme_cli_auth
+       _require_kernel_nvme_feature dhchap_ctrl_secret
        _have_driver dh_generic
 }

diff --git a/tests/nvme/rc b/tests/nvme/rc
index 1cff522d8543..67b812cf0c66 100644
--- a/tests/nvme/rc
+++ b/tests/nvme/rc
@@ -155,6 +155,17 @@ _require_nvme_cli_auth() {
        return 0
 }

+_require_kernel_nvme_feature() {
+       local feature="$1"
+
+       if ! [ -f /dev/nvme-fabrics ]; then
+               return 1;
+       fi
+
+       grep "${feature}" /dev/nvme-fabrics
+       return $?
+}
+
 _test_dev_nvme_ctrl() {
        echo "/dev/char/$(cat "${TEST_DEV_SYSFS}/device/dev")"
 }



More information about the Linux-nvme mailing list