[ndctl,2/3] ndctl, inject-smart: switch to ndctl_cmd_submit_xlat
diff mbox series

Message ID 20190111225339.6939-3-vishal.l.verma@intel.com
State Superseded
Headers show
Series
  • Add missing firmware_status checks
Related show

Commit Message

Vishal Verma Jan. 11, 2019, 10:53 p.m. UTC
The ndctl inject-smart command was neglecting to check the
'firmware_status' field that is set by the platform firmware to indicate
failure. Use the new ndctl_cmd_submit_xlat facility to include the
firmware_status check as part of the command submission.

Reported-by: Ami Pathak <ami.g.pathak@intel.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
---
 ndctl/inject-smart.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Dan Williams Jan. 12, 2019, 12:31 a.m. UTC | #1
On Fri, Jan 11, 2019 at 2:53 PM Vishal Verma <vishal.l.verma@intel.com> wrote:
>
> The ndctl inject-smart command was neglecting to check the
> 'firmware_status' field that is set by the platform firmware to indicate
> failure. Use the new ndctl_cmd_submit_xlat facility to include the
> firmware_status check as part of the command submission.
>
> Reported-by: Ami Pathak <ami.g.pathak@intel.com>
> Cc: Dan Williams <dan.j.williams@intel.com>
> Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
> ---
>  ndctl/inject-smart.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/ndctl/inject-smart.c b/ndctl/inject-smart.c
> index eaa137a..12f3474 100644
> --- a/ndctl/inject-smart.c
> +++ b/ndctl/inject-smart.c
> @@ -280,7 +280,7 @@ static int smart_set_thresh(struct ndctl_dimm *dimm)
>                 goto out;
>         }
>
> -       rc = ndctl_cmd_submit(st_cmd);
> +       rc = ndctl_cmd_submit_xlat(st_cmd);
>         if (rc) {
>                 error("%s: smart threshold command failed: %s (%d)\n",
>                         name, strerror(abs(rc)), rc);
> @@ -320,7 +320,7 @@ static int smart_set_thresh(struct ndctl_dimm *dimm)
>                 ndctl_cmd_smart_threshold_set_alarm_control(sst_cmd, alarm);
>         }
>
> -       rc = ndctl_cmd_submit(sst_cmd);
> +       rc = ndctl_cmd_submit_xlat(sst_cmd);
>         if (rc)
>                 error("%s: smart set threshold command failed: %s (%d)\n",
>                         name, strerror(abs(rc)), rc);
> @@ -351,7 +351,7 @@ out:
>                         if (sctx.err_continue == false) \
>                                 goto out; \
>                 } \
> -               rc = ndctl_cmd_submit(si_cmd); \
> +               rc = ndctl_cmd_submit_xlat(si_cmd); \
>                 if (rc) { \
>                         error("%s: smart inject %s command failed: %s (%d)\n", \
>                                 name, #arg, strerror(abs(rc)), rc); \
> @@ -382,7 +382,7 @@ out:
>                         if (sctx.err_continue == false) \
>                                 goto out; \
>                 } \
> -               rc = ndctl_cmd_submit(si_cmd); \
> +               rc = ndctl_cmd_submit_xlat(si_cmd); \
>                 if (rc) { \
>                         error("%s: smart inject %s command failed: %s (%d)\n", \
>                                 name, #arg, strerror(abs(rc)), rc); \

These need to become if (rc < 0) just to be compatible with the
calling convention. Maybe that's a lead in cleanup patch.
Vishal Verma Jan. 12, 2019, 12:36 a.m. UTC | #2
On Fri, 2019-01-11 at 16:31 -0800, Dan Williams wrote:
> On Fri, Jan 11, 2019 at 2:53 PM Vishal Verma <vishal.l.verma@intel.com> wrote:
> > 
> > The ndctl inject-smart command was neglecting to check the
> > 'firmware_status' field that is set by the platform firmware to indicate
> > failure. Use the new ndctl_cmd_submit_xlat facility to include the
> > firmware_status check as part of the command submission.
> > 
> > Reported-by: Ami Pathak <ami.g.pathak@intel.com>
> > Cc: Dan Williams <dan.j.williams@intel.com>
> > Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
> > ---
> >  ndctl/inject-smart.c | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> > 
> > diff --git a/ndctl/inject-smart.c b/ndctl/inject-smart.c
> > index eaa137a..12f3474 100644
> > --- a/ndctl/inject-smart.c
> > +++ b/ndctl/inject-smart.c
> > @@ -280,7 +280,7 @@ static int smart_set_thresh(struct ndctl_dimm *dimm)
> >                 goto out;
> >         }
> > 
> > -       rc = ndctl_cmd_submit(st_cmd);
> > +       rc = ndctl_cmd_submit_xlat(st_cmd);
> >         if (rc) {
> >                 error("%s: smart threshold command failed: %s (%d)\n",
> >                         name, strerror(abs(rc)), rc);
> > @@ -320,7 +320,7 @@ static int smart_set_thresh(struct ndctl_dimm *dimm)
> >                 ndctl_cmd_smart_threshold_set_alarm_control(sst_cmd, alarm);
> >         }
> > 
> > -       rc = ndctl_cmd_submit(sst_cmd);
> > +       rc = ndctl_cmd_submit_xlat(sst_cmd);
> >         if (rc)
> >                 error("%s: smart set threshold command failed: %s (%d)\n",
> >                         name, strerror(abs(rc)), rc);
> > @@ -351,7 +351,7 @@ out:
> >                         if (sctx.err_continue == false) \
> >                                 goto out; \
> >                 } \
> > -               rc = ndctl_cmd_submit(si_cmd); \
> > +               rc = ndctl_cmd_submit_xlat(si_cmd); \
> >                 if (rc) { \
> >                         error("%s: smart inject %s command failed: %s (%d)\n", \
> >                                 name, #arg, strerror(abs(rc)), rc); \
> > @@ -382,7 +382,7 @@ out:
> >                         if (sctx.err_continue == false) \
> >                                 goto out; \
> >                 } \
> > -               rc = ndctl_cmd_submit(si_cmd); \
> > +               rc = ndctl_cmd_submit_xlat(si_cmd); \
> >                 if (rc) { \
> >                         error("%s: smart inject %s command failed: %s (%d)\n", \
> >                                 name, #arg, strerror(abs(rc)), rc); \
> 
> These need to become if (rc < 0) just to be compatible with the
> calling convention. Maybe that's a lead in cleanup patch.

Hm, I think there may be several other lurkers that fail on positive.
I'll fix these two patches up and add a follow on patch for any others
in v2.

Patch
diff mbox series

diff --git a/ndctl/inject-smart.c b/ndctl/inject-smart.c
index eaa137a..12f3474 100644
--- a/ndctl/inject-smart.c
+++ b/ndctl/inject-smart.c
@@ -280,7 +280,7 @@  static int smart_set_thresh(struct ndctl_dimm *dimm)
 		goto out;
 	}
 
-	rc = ndctl_cmd_submit(st_cmd);
+	rc = ndctl_cmd_submit_xlat(st_cmd);
 	if (rc) {
 		error("%s: smart threshold command failed: %s (%d)\n",
 			name, strerror(abs(rc)), rc);
@@ -320,7 +320,7 @@  static int smart_set_thresh(struct ndctl_dimm *dimm)
 		ndctl_cmd_smart_threshold_set_alarm_control(sst_cmd, alarm);
 	}
 
-	rc = ndctl_cmd_submit(sst_cmd);
+	rc = ndctl_cmd_submit_xlat(sst_cmd);
 	if (rc)
 		error("%s: smart set threshold command failed: %s (%d)\n",
 			name, strerror(abs(rc)), rc);
@@ -351,7 +351,7 @@  out:
 			if (sctx.err_continue == false) \
 				goto out; \
 		} \
-		rc = ndctl_cmd_submit(si_cmd); \
+		rc = ndctl_cmd_submit_xlat(si_cmd); \
 		if (rc) { \
 			error("%s: smart inject %s command failed: %s (%d)\n", \
 				name, #arg, strerror(abs(rc)), rc); \
@@ -382,7 +382,7 @@  out:
 			if (sctx.err_continue == false) \
 				goto out; \
 		} \
-		rc = ndctl_cmd_submit(si_cmd); \
+		rc = ndctl_cmd_submit_xlat(si_cmd); \
 		if (rc) { \
 			error("%s: smart inject %s command failed: %s (%d)\n", \
 				name, #arg, strerror(abs(rc)), rc); \