On Wed, 2023-02-15 at 11:49 -0500, Alexander Motin wrote:
> There is no NDN_MSFT_CMD_SMART command. There are 3 relevant ones,
> reporting different aspects of the module health. Define those and
> use NDN_MSFT_CMD_NHEALTH, while making the code more universal to
> allow use of others later.
>
> Signed-off-by: Alexander Motin <[email protected]>
> ---
> ndctl/lib/msft.c | 41 +++++++++++++++++++++++++++++++++--------
> ndctl/lib/msft.h | 8 ++++----
> 2 files changed, 37 insertions(+), 12 deletions(-)
Just one question below, the rest looks good. Thanks for the re-spin.
<..>
>
> +
> static int msft_smart_valid(struct ndctl_cmd *cmd)
> {
> if (cmd->type != ND_CMD_CALL ||
> - cmd->size != sizeof(*cmd) + sizeof(struct ndn_pkg_msft) ||
Why is this size check dropped?
> CMD_MSFT(cmd)->gen.nd_family != NVDIMM_FAMILY_MSFT ||
> - CMD_MSFT(cmd)->gen.nd_command != NDN_MSFT_CMD_SMART ||
> + CMD_MSFT(cmd)->gen.nd_command != NDN_MSFT_CMD_NHEALTH ||
> cmd->status != 0)
> return cmd->status < 0 ? cmd->status : -EINVAL;
> return 0;
> @@ -170,6 +194,7 @@ static int msft_cmd_xlat_firmware_status(struct ndctl_cmd
> *cmd)
> }
>
> struct ndctl_dimm_ops * const msft_dimm_ops = &(struct ndctl_dimm_ops) {
> + .cmd_desc = msft_cmd_desc,
> .new_smart = msft_dimm_cmd_new_smart,
> .smart_get_flags = msft_cmd_smart_get_flags,
> .smart_get_health = msft_cmd_smart_get_health,
> diff --git a/ndctl/lib/msft.h b/ndctl/lib/msft.h
> index c462612..8d246a5 100644
> --- a/ndctl/lib/msft.h
> +++ b/ndctl/lib/msft.h
> @@ -2,14 +2,14 @@
> /* Copyright (C) 2016-2017 Dell, Inc. */
> /* Copyright (C) 2016 Hewlett Packard Enterprise Development LP */
> /* Copyright (C) 2014-2020, Intel Corporation. */
> +/* Copyright (C) 2022 iXsystems, Inc. */
> #ifndef __NDCTL_MSFT_H__
> #define __NDCTL_MSFT_H__
>
> enum {
> - NDN_MSFT_CMD_QUERY = 0,
> -
> - /* non-root commands */
> - NDN_MSFT_CMD_SMART = 11,
> + NDN_MSFT_CMD_CHEALTH = 10,
> + NDN_MSFT_CMD_NHEALTH = 11,
> + NDN_MSFT_CMD_EHEALTH = 12,
> };
>
> /*