On Tue, Mar 6, 2018 at 1:49 PM, Verma, Vishal L
<vishal.l.ve...@intel.com> wrote:
>
> On Tue, 2018-03-06 at 13:47 -0800, Dan Williams wrote:
>> On Tue, Mar 6, 2018 at 1:41 PM, Verma, Vishal L
>> <vishal.l.ve...@intel.com> wrote:
>> >
>> > On Tue, 2018-03-06 at 13:34 -0800, Dan Williams wrote:
>> > > On Mon, Mar 5, 2018 at 3:56 PM, Vishal Verma <vishal.l.verma@inte
>> > > l.co
>> > > m> 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?
>> >
>> > So do you mean, for example, if a kernel version check fails, don't
>> > skip immediately. Instead continue to run the test, and if
>> > something
>> > actually fails, then return with a SKIP.
>> >
>> > And conversely, for a kernel version that passes the included
>> > check, no
>> > other condition can return a SKIP?  (What about something like
>> > missing
>> > packages?)
>>
>> Yeah, how about an unmet dependency whether it is kernel version or
>> support package results in a SKIP / PASS result, but if all
>> dependencies are met the test becomes FAIL / PASS?
>
> Yeah that makes sense to me.

I also think it's past time that we made check_min_kver() a function
in separate source file that all the shell tests import by sourcing.
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

Reply via email to