On Mon, Mar 5, 2018 at 3:56 PM, Vishal Verma <vishal.l.ve...@intel.com> wrote:
> pre-4.16 kernels had a bug where BTT partitions wouldn't come up on
> driver probe because we were adding a zero-sized disk. Add a unit test
> that creates partitions, and cycles the namespace to ensure the
> partitions are automatically brought up. This performs the test for raw,
> memory, and sector modes.
>
> Reported-by: Dariusz Dokupil <dariusz.doku...@intel.com>
> Cc: Dan Williams <dan.j.willi...@intel.com>
> Signed-off-by: Vishal Verma <vishal.l.ve...@intel.com>
> ---
>  test/Makefile.am          |   3 +-
>  test/rescan-partitions.sh | 106 
> ++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 108 insertions(+), 1 deletion(-)
>  create mode 100755 test/rescan-partitions.sh
>
> diff --git a/test/Makefile.am b/test/Makefile.am
> index 749055c..496a663 100644
> --- a/test/Makefile.am
> +++ b/test/Makefile.am
> @@ -20,7 +20,8 @@ TESTS =\
>         hugetlb \
>         btt-pad-compat.sh \
>         firmware-update.sh \
> -       ack-shutdown-count-set
> +       ack-shutdown-count-set \
> +       rescan-partitions.sh
>
>  check_PROGRAMS =\
>         libndctl \
> diff --git a/test/rescan-partitions.sh b/test/rescan-partitions.sh
> new file mode 100755
> index 0000000..6dd289b
> --- /dev/null
> +++ b/test/rescan-partitions.sh
> @@ -0,0 +1,106 @@
> +#!/bin/bash -Ex
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright(c) 2018 Intel Corporation. All rights reserved.
> +
> +[ -f "../ndctl/ndctl" ] && [ -x "../ndctl/ndctl" ] && ndctl="../ndctl/ndctl"
> +[ -f "./ndctl/ndctl" ] && [ -x "./ndctl/ndctl" ] && ndctl="./ndctl/ndctl"
> +[ -z "$ndctl" ] && echo "Couldn't find an ndctl binary" && exit 1
> +bus="nfit_test.0"
> +json2var="s/[{}\",]//g; s/:/=/g"
> +dev=""
> +size=""
> +blockdev=""
> +rc=77
> +
> +trap 'err $LINENO' ERR
> +
> +# sample json:
> +#{
> +#  "dev":"namespace5.0",
> +#  "mode":"sector",
> +#  "size":"60.00 MiB (62.92 MB)",
> +#  "uuid":"f1baa71a-d165-4da4-bb6a-083a2b0e6469",
> +#  "blockdev":"pmem5s",
> +#}
> +
> +# $1: Line number
> +# $2: exit code
> +err()
> +{
> +       [ -n "$2" ] && rc="$2"
> +       echo "test/rescan-partitions.sh: failed at line $1"
> +       exit "$rc"
> +}
> +
> +check_min_kver()
> +{
> +       local ver="$1"
> +       : "${KVER:=$(uname -r)}"
> +
> +       [ -n "$ver" ] || return 1
> +       [[ "$ver" == "$(echo -e "$ver\n$KVER" | sort -V | head -1)" ]]
> +}
> +check_min_kver "4.16" || { echo "kernel $KVER may not contain fixes for 
> partition rescanning"; exit "$rc"; }

I have a proposal for kernel version checks going forward. How about
tests that fail the kernel version check return SKIP / PASS, and
kernels that pass the kernel version check return FAIL / PASS for the
test. This way we don't bail out early on backport kernels that could
otherwise pass the test.

Thoughts?
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

Reply via email to