[dm-devel] [PATCH] Correctly ignore empty prio names

Benjamin Marzinski bmarzins at redhat.com
Wed May 8 16:28:04 UTC 2013


On Wed, May 08, 2013 at 11:13:43AM +0200, Hannes Reinecke wrote:
> This is a partial revert of commit
> 'Stop annoying prio_lookup warning messages',
> as that patch would only fix the 'prio_put' case.
> However, as the prio name might be empty even in
> in prio_get() we should rather fix this in
> prio_lookup() and handle both cases.

My feeling was that you would want to get that warning message if you
failed to get the prioritizer in prio_get() because the name was empty.
With this change it will silently fail unless you have the verbosity set
to 3, in which case you'll get a message like

sdb: prio =  (config file default)

Which doesn't really look that much like an error.

On the other hand, if you never got a prioritizer at all, you don't want
a warning message when you try to free it in prio_put() since that's
only happening because there is nothing to free.

What you you think?

-Ben

> 
> Signed-off-by: Hannes Reinecke <hare at suse.de>
> 
> diff --git a/libmultipath/prio.c b/libmultipath/prio.c
> index 186cc4d..05a8cf1 100644
> --- a/libmultipath/prio.c
> +++ b/libmultipath/prio.c
> @@ -64,6 +64,9 @@ struct prio * prio_lookup (char * name)
>  {
>  	struct prio * p;
>  
> +	if (!name || !strlen(name))
> +		return NULL;
> +
>  	list_for_each_entry(p, &prioritizers, node) {
>  		if (!strncmp(name, p->name, PRIO_NAME_LEN))
>  			return p;
> @@ -162,10 +165,7 @@ void prio_put (struct prio * dst)
>  	if (!dst)
>  		return;
>  
> -	if (!strlen(dst->name))
> -		src = NULL;
> -	else
> -		src = prio_lookup(dst->name);
> +	src = prio_lookup(dst->name);
>  	memset(dst, 0x0, sizeof(struct prio));
>  	free_prio(src);
>  }




More information about the dm-devel mailing list