Message ID | 20180606000034.12161-1-vishal.l.verma@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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.
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 --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
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(+)