On Tue, 2018-03-06 at 14:04 -0800, Dan Williams wrote: > On Tue, Mar 6, 2018 at 1:49 PM, Verma, Vishal L > <[email protected]> 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 > > > <[email protected]> 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 <[email protected]> > > > > > > Cc: Dan Williams <[email protected]> > > > > > > Signed-off-by: Vishal Verma <[email protected]> > > > > > > --- > > > > > > 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.
There are definitely a fair number of boilerplate things that we've been copying around from test to test. I can take a shot at a cleanup. _______________________________________________ Linux-nvdimm mailing list [email protected] https://lists.01.org/mailman/listinfo/linux-nvdimm
