diff mbox

ndctl, monitor: fix monitor can be started though no dimm event to monitor

Message ID 20180719085427.17836-1-qi.fuli@jp.fujitsu.com (mailing list archive)
State New, archived
Headers show

Commit Message

QI Fuli July 19, 2018, 8:54 a.m. UTC
Currently, the monitor still can be started though there is no dimm event
to be monitored, which is caused by the typo of uses. In this case,
no smart event message can be logged.
This patch is used to fix this bug. When user starts the monitor with
invalid dimm event in [--dimm-event] option, the monitor will stop and
output error message.

Signed-off-by: QI Fuli <qi.fuli@jp.fujitsu.com>
---
 ndctl/monitor.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

Comments

Verma, Vishal L July 19, 2018, 6:07 p.m. UTC | #1
On Thu, 2018-07-19 at 17:54 +0900, QI Fuli wrote:
> Currently, the monitor still can be started though there is no dimm event
> to be monitored, which is caused by the typo of uses. In this case,
> no smart event message can be logged.
> This patch is used to fix this bug. When user starts the monitor with
> invalid dimm event in [--dimm-event] option, the monitor will stop and
> output error message.
> 
> Signed-off-by: QI Fuli <qi.fuli@jp.fujitsu.com>
> ---
>  ndctl/monitor.c | 16 ++++++++++------
>  1 file changed, 10 insertions(+), 6 deletions(-)

Looks good, applied.

> 
> diff --git a/ndctl/monitor.c b/ndctl/monitor.c
> index 8300250..abab45f 100644
> --- a/ndctl/monitor.c
> +++ b/ndctl/monitor.c
> @@ -413,7 +413,7 @@ static int monitor_event(struct ndctl_ctx *ctx,
>  	return 0;
>  }
>  
> -static int parse_monitor_event(struct monitor *_monitor)
> +static int parse_monitor_event(struct monitor *_monitor, struct ndctl_ctx *ctx)
>  {
>  	char *dimm_event, *save;
>  	const char *event;
> @@ -432,14 +432,18 @@ static int parse_monitor_event(struct monitor *_monitor)
>  		}
>  		if (strcmp(event, "dimm-spares-remaining") == 0)
>  			_monitor->event_flags |= ND_EVENT_SPARES_REMAINING;
> -		if (strcmp(event, "dimm-media-temperature") == 0)
> +		else if (strcmp(event, "dimm-media-temperature") == 0)
>  			_monitor->event_flags |= ND_EVENT_MEDIA_TEMPERATURE;
> -		if (strcmp(event, "dimm-controller-temperature") == 0)
> +		else if (strcmp(event, "dimm-controller-temperature") == 0)
>  			_monitor->event_flags |= ND_EVENT_CTRL_TEMPERATURE;
> -		if (strcmp(event, "dimm-health-state") == 0)
> +		else if (strcmp(event, "dimm-health-state") == 0)
>  			_monitor->event_flags |= ND_EVENT_HEALTH_STATE;
> -		if (strcmp(event, "dimm-unclean-shutdown") == 0)
> +		else if (strcmp(event, "dimm-unclean-shutdown") == 0)
>  			_monitor->event_flags |= ND_EVENT_UNCLEAN_SHUTDOWN;
> +		else {
> +			err(ctx, "no dimm-event named %s\n", event);
> +			return 1;
> +		}
>  	}
>  
>  	free(dimm_event);
> @@ -620,7 +624,7 @@ int cmd_monitor(int argc, const char **argv, void *ctx)
>  		notice((struct ndctl_ctx *)ctx, "ndctl monitor daemon started\n");
>  	}
>  
> -	if (parse_monitor_event(&monitor))
> +	if (parse_monitor_event(&monitor, (struct ndctl_ctx *)ctx))
>  		goto out;
>  
>  	fctx.filter_bus = filter_bus;
diff mbox

Patch

diff --git a/ndctl/monitor.c b/ndctl/monitor.c
index 8300250..abab45f 100644
--- a/ndctl/monitor.c
+++ b/ndctl/monitor.c
@@ -413,7 +413,7 @@  static int monitor_event(struct ndctl_ctx *ctx,
 	return 0;
 }
 
-static int parse_monitor_event(struct monitor *_monitor)
+static int parse_monitor_event(struct monitor *_monitor, struct ndctl_ctx *ctx)
 {
 	char *dimm_event, *save;
 	const char *event;
@@ -432,14 +432,18 @@  static int parse_monitor_event(struct monitor *_monitor)
 		}
 		if (strcmp(event, "dimm-spares-remaining") == 0)
 			_monitor->event_flags |= ND_EVENT_SPARES_REMAINING;
-		if (strcmp(event, "dimm-media-temperature") == 0)
+		else if (strcmp(event, "dimm-media-temperature") == 0)
 			_monitor->event_flags |= ND_EVENT_MEDIA_TEMPERATURE;
-		if (strcmp(event, "dimm-controller-temperature") == 0)
+		else if (strcmp(event, "dimm-controller-temperature") == 0)
 			_monitor->event_flags |= ND_EVENT_CTRL_TEMPERATURE;
-		if (strcmp(event, "dimm-health-state") == 0)
+		else if (strcmp(event, "dimm-health-state") == 0)
 			_monitor->event_flags |= ND_EVENT_HEALTH_STATE;
-		if (strcmp(event, "dimm-unclean-shutdown") == 0)
+		else if (strcmp(event, "dimm-unclean-shutdown") == 0)
 			_monitor->event_flags |= ND_EVENT_UNCLEAN_SHUTDOWN;
+		else {
+			err(ctx, "no dimm-event named %s\n", event);
+			return 1;
+		}
 	}
 
 	free(dimm_event);
@@ -620,7 +624,7 @@  int cmd_monitor(int argc, const char **argv, void *ctx)
 		notice((struct ndctl_ctx *)ctx, "ndctl monitor daemon started\n");
 	}
 
-	if (parse_monitor_event(&monitor))
+	if (parse_monitor_event(&monitor, (struct ndctl_ctx *)ctx))
 		goto out;
 
 	fctx.filter_bus = filter_bus;