Linux-NVDIMM Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Verma, Vishal L" <vishal.l.verma@intel.com>
To: "Williams, Dan J" <dan.j.williams@intel.com>
Cc: "Dokupil, Dariusz" <dariusz.dokupil@intel.com>,
	"linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org>
Subject: Re: [ndctl PATCH] ndctl, test: add a unit test for partition rescanning
Date: Tue, 6 Mar 2018 22:07:25 +0000	[thread overview]
Message-ID: <1520374044.24924.84.camel@intel.com> (raw)
In-Reply-To: <CAPcyv4iLarigni-Koa9fFiTQtKwYtmR4qrFrouMBiNMdOSWWmA@mail.gmail.com>


On Tue, 2018-03-06 at 14:04 -0800, Dan Williams wrote:
> On Tue, Mar 6, 2018 at 1:49 PM, Verma, Vishal L
> <vishal.l.verma@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.verma@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.dokupil@intel.com>
> > > > > > Cc: Dan Williams <dan.j.williams@intel.com>
> > > > > > Signed-off-by: Vishal Verma <vishal.l.verma@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.

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
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

      reply	other threads:[~2018-03-06 22:01 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-05 23:56 [ndctl PATCH] ndctl, test: add a unit test for partition rescanning Vishal Verma
2018-03-06 21:34 ` Dan Williams
2018-03-06 21:41   ` Verma, Vishal L
2018-03-06 21:47     ` Dan Williams
2018-03-06 21:49       ` Verma, Vishal L
2018-03-06 22:04         ` Dan Williams
2018-03-06 22:07           ` Verma, Vishal L [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1520374044.24924.84.camel@intel.com \
    --to=vishal.l.verma@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=dariusz.dokupil@intel.com \
    --cc=linux-nvdimm@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox