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 <[email protected]>
Cc: Dan Williams <[email protected]>
Signed-off-by: Vishal Verma <[email protected]>
---
 ndctl/inject-smart.c    | 16 ++++++++--------
 ndctl/util/json-smart.c |  8 ++++----
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/ndctl/inject-smart.c b/ndctl/inject-smart.c
index eaa137a..00c81b8 100644
--- a/ndctl/inject-smart.c
+++ b/ndctl/inject-smart.c
@@ -280,8 +280,8 @@ static int smart_set_thresh(struct ndctl_dimm *dimm)
                goto out;
        }
 
-       rc = ndctl_cmd_submit(st_cmd);
-       if (rc) {
+       rc = ndctl_cmd_submit_xlat(st_cmd);
+       if (rc < 0) {
                error("%s: smart threshold command failed: %s (%d)\n",
                        name, strerror(abs(rc)), rc);
                goto out;
@@ -320,8 +320,8 @@ 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);
-       if (rc)
+       rc = ndctl_cmd_submit_xlat(sst_cmd);
+       if (rc < 0)
                error("%s: smart set threshold command failed: %s (%d)\n",
                        name, strerror(abs(rc)), rc);
 
@@ -351,8 +351,8 @@ out:
                        if (sctx.err_continue == false) \
                                goto out; \
                } \
-               rc = ndctl_cmd_submit(si_cmd); \
-               if (rc) { \
+               rc = ndctl_cmd_submit_xlat(si_cmd); \
+               if (rc < 0) { \
                        error("%s: smart inject %s command failed: %s (%d)\n", \
                                name, #arg, strerror(abs(rc)), rc); \
                        if (sctx.err_continue == false) \
@@ -382,8 +382,8 @@ out:
                        if (sctx.err_continue == false) \
                                goto out; \
                } \
-               rc = ndctl_cmd_submit(si_cmd); \
-               if (rc) { \
+               rc = ndctl_cmd_submit_xlat(si_cmd); \
+               if (rc < 0) { \
                        error("%s: smart inject %s command failed: %s (%d)\n", \
                                name, #arg, strerror(abs(rc)), rc); \
                        if (sctx.err_continue == false) \
diff --git a/ndctl/util/json-smart.c b/ndctl/util/json-smart.c
index 3c1b917..a9bd17b 100644
--- a/ndctl/util/json-smart.c
+++ b/ndctl/util/json-smart.c
@@ -30,8 +30,8 @@ static void smart_threshold_to_json(struct ndctl_dimm *dimm,
        if (!cmd)
                return;
 
-       rc = ndctl_cmd_submit(cmd);
-       if (rc || ndctl_cmd_get_firmware_status(cmd))
+       rc = ndctl_cmd_submit_xlat(cmd);
+       if (rc < 0)
                goto out;
 
        alarm_control = ndctl_cmd_smart_threshold_get_alarm_control(cmd);
@@ -115,8 +115,8 @@ struct json_object *util_dimm_health_to_json(struct 
ndctl_dimm *dimm)
        if (!cmd)
                goto err;
 
-       rc = ndctl_cmd_submit(cmd);
-       if (rc || ndctl_cmd_get_firmware_status(cmd)) {
+       rc = ndctl_cmd_submit_xlat(cmd);
+       if (rc < 0) {
                jobj = json_object_new_string("unknown");
                if (jobj)
                        json_object_object_add(jhealth, "health_state", jobj);
-- 
2.17.2

_______________________________________________
Linux-nvdimm mailing list
[email protected]
https://lists.01.org/mailman/listinfo/linux-nvdimm

Reply via email to