diff mbox

[ndctl] ndctl, test: Update tests for capacity vs namespace-label locking

Message ID 20180620045923.GA31546@vverma7-mobl4.lm.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Verma, Vishal L June 20, 2018, 4:59 a.m. UTC
On 06/18, Dan Williams wrote:
> On Mon, Jun 18, 2018 at 2:35 PM, Vishal Verma <vishal.l.verma@intel.com> wrote:
> > On 06/14, Dan Williams wrote:
> >> Check that namespaces can be enumerated, but are disabled if the labels
> >> are readable while the DIMM is locked. Alternatively, if the namespace
> >> label area is locked, validate that regions with the affected DIMM fail
> >> to enable.
> >>
> >> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
> >> ---
> >>  test/Makefile.am |   10 +-
> >>  test/dsm-fail.c  |  305 ++++++++++++++++++++++++++++++++++++++++++++----------
> >>  2 files changed, 257 insertions(+), 58 deletions(-)
> >>
> >> diff --git a/test/Makefile.am b/test/Makefile.am
> >> index 92cf29d6065e..f6483910af45 100644
> >> --- a/test/Makefile.am
> >> +++ b/test/Makefile.am
> >> @@ -69,9 +69,15 @@ libndctl_LDADD = $(LIBNDCTL_LIB) $(UUID_LIBS) $(KMOD_LIBS)
> >>
> >>  dsm_fail_SOURCES =\
> >>       dsm-fail.c \
> >> -     $(testcore)
> >> +     $(testcore) \
> >> +     ../ndctl/namespace.c \
> >> +     ../ndctl/check.c \
> >> +     ../util/json.c
> >>
> >> -dsm_fail_LDADD = $(LIBNDCTL_LIB) $(KMOD_LIBS)
> >> +dsm_fail_LDADD = $(LIBNDCTL_LIB) \
> >> +             $(KMOD_LIBS) \
> >> +             $(JSON_LIBS) \
> >> +             ../libutil.a
> >>
> >>  ack_shutdown_count_set_SOURCES =\
> >>       ack-shutdown-count-set.c \
> >> diff --git a/test/dsm-fail.c b/test/dsm-fail.c
> >> index 90d3e074f12b..b0df9da8ffab 100644
> >> --- a/test/dsm-fail.c
> >> +++ b/test/dsm-fail.c
> >> @@ -24,6 +24,7 @@
> >>
> >>  #include <ccan/array_size/array_size.h>
> >>  #include <ndctl/libndctl.h>
> >> +#include <builtin.h>
> >>  #include <ndctl.h>
> >>  #include <test.h>
> >>
> >> @@ -38,20 +39,153 @@ static void reset_bus(struct ndctl_bus *bus)
> >>       ndctl_region_foreach(bus, region)
> >>               ndctl_region_disable_invalidate(region);
> >>
> >> -     ndctl_dimm_foreach(bus, dimm)
> >> -             ndctl_dimm_zero_labels(dimm);
> >> +     ndctl_dimm_foreach(bus, dimm) {
> >> +             struct ndctl_cmd *cmd_read = ndctl_dimm_read_labels(dimm);
> >
> > This results in an unused variable warning for cmd_read. Perhaps if we
> > just want tp perform the read but not do anything with the cmd struct,
> > we can call it without storing the return anywhere?
> 
> Oh, whoops. If cmd_read is NULL we should fail the test. I'll spin a
> new version.

How does this incremental patch look  for fixing the above:

From edbb972166fb5807096e352ae29bb5187701d95f Mon Sep 17 00:00:00 2001
From: Vishal Verma <vishal.l.verma@intel.com>
Date: Tue, 19 Jun 2018 22:57:11 -0600
Subject: [ndctl PATCH] fixup! ndctl, test: Update tests for capacity vs
 namespace-label locking

---
 test/dsm-fail.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

Comments

Dan Williams June 20, 2018, 5:05 a.m. UTC | #1
On Tue, Jun 19, 2018 at 9:59 PM, Vishal Verma <vishal.l.verma@intel.com> wrote:
> On 06/18, Dan Williams wrote:
>> On Mon, Jun 18, 2018 at 2:35 PM, Vishal Verma <vishal.l.verma@intel.com> wrote:
>> > On 06/14, Dan Williams wrote:
>> >> Check that namespaces can be enumerated, but are disabled if the labels
>> >> are readable while the DIMM is locked. Alternatively, if the namespace
>> >> label area is locked, validate that regions with the affected DIMM fail
>> >> to enable.
>> >>
>> >> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
>> >> ---
>> >>  test/Makefile.am |   10 +-
>> >>  test/dsm-fail.c  |  305 ++++++++++++++++++++++++++++++++++++++++++++----------
>> >>  2 files changed, 257 insertions(+), 58 deletions(-)
>> >>
>> >> diff --git a/test/Makefile.am b/test/Makefile.am
>> >> index 92cf29d6065e..f6483910af45 100644
>> >> --- a/test/Makefile.am
>> >> +++ b/test/Makefile.am
>> >> @@ -69,9 +69,15 @@ libndctl_LDADD = $(LIBNDCTL_LIB) $(UUID_LIBS) $(KMOD_LIBS)
>> >>
>> >>  dsm_fail_SOURCES =\
>> >>       dsm-fail.c \
>> >> -     $(testcore)
>> >> +     $(testcore) \
>> >> +     ../ndctl/namespace.c \
>> >> +     ../ndctl/check.c \
>> >> +     ../util/json.c
>> >>
>> >> -dsm_fail_LDADD = $(LIBNDCTL_LIB) $(KMOD_LIBS)
>> >> +dsm_fail_LDADD = $(LIBNDCTL_LIB) \
>> >> +             $(KMOD_LIBS) \
>> >> +             $(JSON_LIBS) \
>> >> +             ../libutil.a
>> >>
>> >>  ack_shutdown_count_set_SOURCES =\
>> >>       ack-shutdown-count-set.c \
>> >> diff --git a/test/dsm-fail.c b/test/dsm-fail.c
>> >> index 90d3e074f12b..b0df9da8ffab 100644
>> >> --- a/test/dsm-fail.c
>> >> +++ b/test/dsm-fail.c
>> >> @@ -24,6 +24,7 @@
>> >>
>> >>  #include <ccan/array_size/array_size.h>
>> >>  #include <ndctl/libndctl.h>
>> >> +#include <builtin.h>
>> >>  #include <ndctl.h>
>> >>  #include <test.h>
>> >>
>> >> @@ -38,20 +39,153 @@ static void reset_bus(struct ndctl_bus *bus)
>> >>       ndctl_region_foreach(bus, region)
>> >>               ndctl_region_disable_invalidate(region);
>> >>
>> >> -     ndctl_dimm_foreach(bus, dimm)
>> >> -             ndctl_dimm_zero_labels(dimm);
>> >> +     ndctl_dimm_foreach(bus, dimm) {
>> >> +             struct ndctl_cmd *cmd_read = ndctl_dimm_read_labels(dimm);
>> >
>> > This results in an unused variable warning for cmd_read. Perhaps if we
>> > just want tp perform the read but not do anything with the cmd struct,
>> > we can call it without storing the return anywhere?
>>
>> Oh, whoops. If cmd_read is NULL we should fail the test. I'll spin a
>> new version.
>
> How does this incremental patch look  for fixing the above:
>
> From edbb972166fb5807096e352ae29bb5187701d95f Mon Sep 17 00:00:00 2001
> From: Vishal Verma <vishal.l.verma@intel.com>
> Date: Tue, 19 Jun 2018 22:57:11 -0600
> Subject: [ndctl PATCH] fixup! ndctl, test: Update tests for capacity vs
>  namespace-label locking
>
> ---
>  test/dsm-fail.c | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/test/dsm-fail.c b/test/dsm-fail.c
> index b0df9da..45a6c4f 100644
> --- a/test/dsm-fail.c
> +++ b/test/dsm-fail.c
> @@ -30,7 +30,7 @@
>
>  #define DIMM_PATH "/sys/devices/platform/nfit_test.0/nfit_test_dimm/test_dimm0"
>
> -static void reset_bus(struct ndctl_bus *bus)
> +static int reset_bus(struct ndctl_bus *bus)
>  {
>         struct ndctl_region *region;
>         struct ndctl_dimm *dimm;
> @@ -40,8 +40,8 @@ static void reset_bus(struct ndctl_bus *bus)
>                 ndctl_region_disable_invalidate(region);
>
>         ndctl_dimm_foreach(bus, dimm) {
> -               struct ndctl_cmd *cmd_read = ndctl_dimm_read_labels(dimm);
> -
> +               if (!ndctl_dimm_read_labels(dimm))
> +                       return -ENXIO;
>                 ndctl_dimm_disable(dimm);
>                 ndctl_dimm_init_labels(dimm, NDCTL_NS_VERSION_1_2);
>                 ndctl_dimm_enable(dimm);
> @@ -50,6 +50,7 @@ static void reset_bus(struct ndctl_bus *bus)
>         /* set regions back to their default state */
>         ndctl_region_foreach(bus, region)
>                 ndctl_region_enable(region);
> +       return 0;
>  }
>
>  static int set_dimm_response(const char *dimm_path, int cmd, int error_code,
> @@ -198,7 +199,10 @@ static int do_test(struct ndctl_ctx *ctx, struct ndctl_test *test)
>
>         log_init(&log_ctx, "test/dsm-fail", "NDCTL_TEST");
>
> -       reset_bus(bus);
> +       if (reset_bus(bus)) {
> +               fprintf(stderr, "failed to read labels\n");
> +               return -ENXIO;
> +       }
>
>         sprintf(path, "%s/handle", DIMM_PATH);
>         rc = __sysfs_read_attr(&log_ctx, path, buf);

Looks good to me.
diff mbox

Patch

diff --git a/test/dsm-fail.c b/test/dsm-fail.c
index b0df9da..45a6c4f 100644
--- a/test/dsm-fail.c
+++ b/test/dsm-fail.c
@@ -30,7 +30,7 @@ 
 
 #define DIMM_PATH "/sys/devices/platform/nfit_test.0/nfit_test_dimm/test_dimm0"
 
-static void reset_bus(struct ndctl_bus *bus)
+static int reset_bus(struct ndctl_bus *bus)
 {
 	struct ndctl_region *region;
 	struct ndctl_dimm *dimm;
@@ -40,8 +40,8 @@  static void reset_bus(struct ndctl_bus *bus)
 		ndctl_region_disable_invalidate(region);
 
 	ndctl_dimm_foreach(bus, dimm) {
-		struct ndctl_cmd *cmd_read = ndctl_dimm_read_labels(dimm);
-
+		if (!ndctl_dimm_read_labels(dimm))
+			return -ENXIO;
 		ndctl_dimm_disable(dimm);
 		ndctl_dimm_init_labels(dimm, NDCTL_NS_VERSION_1_2);
 		ndctl_dimm_enable(dimm);
@@ -50,6 +50,7 @@  static void reset_bus(struct ndctl_bus *bus)
 	/* set regions back to their default state */
 	ndctl_region_foreach(bus, region)
 		ndctl_region_enable(region);
+	return 0;
 }
 
 static int set_dimm_response(const char *dimm_path, int cmd, int error_code,
@@ -198,7 +199,10 @@  static int do_test(struct ndctl_ctx *ctx, struct ndctl_test *test)
 
 	log_init(&log_ctx, "test/dsm-fail", "NDCTL_TEST");
 
-	reset_bus(bus);
+	if (reset_bus(bus)) {
+		fprintf(stderr, "failed to read labels\n");
+		return -ENXIO;
+	}
 
 	sprintf(path, "%s/handle", DIMM_PATH);
 	rc = __sysfs_read_attr(&log_ctx, path, buf);