diff mbox

[ndctl] ndctl: add an api for getting ars_status flags

Message ID 20180606000034.12161-1-vishal.l.verma@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Verma, Vishal L June 6, 2018, midnight UTC
The ARS status command defines a 'flags' field that wasn't being exposed
via an API yet. Add a new ndctl_cmd_ars_get_flags() helper to retrieve
this field.

Reported-by: Jacek Zloch <jacek.zloch@intel.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
---
 ndctl/lib/ars.c        | 10 ++++++++++
 ndctl/lib/libndctl.sym |  1 +
 ndctl/libndctl.h       |  1 +
 3 files changed, 12 insertions(+)

Comments

Dan Williams June 6, 2018, 2:07 a.m. UTC | #1
On Tue, Jun 5, 2018 at 5:00 PM, Vishal Verma <vishal.l.verma@intel.com> wrote:
> The ARS status command defines a 'flags' field that wasn't being exposed
> via an API yet. Add a new ndctl_cmd_ars_get_flags() helper to retrieve
> this field.
>
> Reported-by: Jacek Zloch <jacek.zloch@intel.com>
> Cc: Dan Williams <dan.j.williams@intel.com>
> Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>

I'm wondering if we should add a 'get' routine for each flag value as
to not expose the binary representation of the flags in case they ever
change. The hope is that if some other platform added their own
ARS-like facility that we would be able to reuse these routines and
translate between ACPI and a theoretical Open Firmware implementation,
for example.
Verma, Vishal L June 6, 2018, 5:09 a.m. UTC | #2
On Tue, 2018-06-05 at 19:07 -0700, Dan Williams wrote:
> On Tue, Jun 5, 2018 at 5:00 PM, Vishal Verma <vishal.l.verma@intel.com>
> wrote:
> > The ARS status command defines a 'flags' field that wasn't being
> > exposed
> > via an API yet. Add a new ndctl_cmd_ars_get_flags() helper to retrieve
> > this field.
> > 
> > Reported-by: Jacek Zloch <jacek.zloch@intel.com>
> > Cc: Dan Williams <dan.j.williams@intel.com>
> > Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
> 
> I'm wondering if we should add a 'get' routine for each flag value as
> to not expose the binary representation of the flags in case they ever
> change. The hope is that if some other platform added their own
> ARS-like facility that we would be able to reuse these routines and
> translate between ACPI and a theoretical Open Firmware implementation,
> for example.

Yes that makes sense, I'll routines for all the flags we have today.
diff mbox

Patch

diff --git a/ndctl/lib/ars.c b/ndctl/lib/ars.c
index e04b51e..b0a7ae6 100644
--- a/ndctl/lib/ars.c
+++ b/ndctl/lib/ars.c
@@ -269,6 +269,16 @@  NDCTL_EXPORT unsigned long long ndctl_cmd_ars_get_record_len(
 	return ars_stat->ars_status->records[rec_index].length;
 }
 
+NDCTL_EXPORT unsigned int ndctl_cmd_ars_get_flags(struct ndctl_cmd *ars_stat)
+{
+	struct ndctl_ctx *ctx = ndctl_bus_get_ctx(cmd_to_bus(ars_stat));
+
+	if (!validate_ars_stat(ctx, ars_stat))
+		return 0;
+
+	return ars_stat->ars_status->flags;
+}
+
 NDCTL_EXPORT struct ndctl_cmd *ndctl_bus_cmd_new_clear_error(
 		unsigned long long address, unsigned long long len,
 		struct ndctl_cmd *ars_cap)
diff --git a/ndctl/lib/libndctl.sym b/ndctl/lib/libndctl.sym
index c1228e5..9940c7a 100644
--- a/ndctl/lib/libndctl.sym
+++ b/ndctl/lib/libndctl.sym
@@ -365,4 +365,5 @@  global:
 	ndctl_cmd_ars_cap_get_clear_unit;
 	ndctl_namespace_inject_error2;
 	ndctl_namespace_uninject_error2;
+	ndctl_cmd_ars_get_flags;
 } LIBNDCTL_15;
diff --git a/ndctl/libndctl.h b/ndctl/libndctl.h
index be997ac..99218e6 100644
--- a/ndctl/libndctl.h
+++ b/ndctl/libndctl.h
@@ -210,6 +210,7 @@  struct ndctl_cmd *ndctl_bus_cmd_new_clear_error(unsigned long long address,
 unsigned long long ndctl_cmd_clear_error_get_cleared(
 		struct ndctl_cmd *clear_err);
 unsigned int ndctl_cmd_ars_cap_get_clear_unit(struct ndctl_cmd *ars_cap);
+unsigned int ndctl_cmd_ars_get_flags(struct ndctl_cmd *ars_stat);
 
 /*
  * Note: ndctl_cmd_smart_get_temperature is an alias for