diff mbox series

[iproute2] lib: suppress error msg when filling the cache

Message ID 20190524085910.16018-1-nicolas.dichtel@6wind.com
State Accepted
Delegated to: stephen hemminger
Headers show
Series [iproute2] lib: suppress error msg when filling the cache | expand

Commit Message

Nicolas Dichtel May 24, 2019, 8:59 a.m. UTC
Before the patch:
$ ip netns add foo
$ ip link add name veth1 address 2a:a5:5c:b9:52:89 type veth peer name veth2 address 2a:a5:5c:b9:53:90 netns foo
RTNETLINK answers: No such device
RTNETLINK answers: No such device

But the command was successful. This may break script. Let's remove those
error messages.

Fixes: 55870dfe7f8b ("Improve batch and dump times by caching link lookups")
Reported-by: Philippe Guibert <philippe.guibert@6wind.com>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
---
 lib/ll_map.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

David Ahern May 24, 2019, 4:08 p.m. UTC | #1
On 5/24/19 2:59 AM, Nicolas Dichtel wrote:
> Before the patch:
> $ ip netns add foo
> $ ip link add name veth1 address 2a:a5:5c:b9:52:89 type veth peer name veth2 address 2a:a5:5c:b9:53:90 netns foo
> RTNETLINK answers: No such device
> RTNETLINK answers: No such device
> 
> But the command was successful. This may break script. Let's remove those
> error messages.
> 
> Fixes: 55870dfe7f8b ("Improve batch and dump times by caching link lookups")
> Reported-by: Philippe Guibert <philippe.guibert@6wind.com>
> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
> ---
>  lib/ll_map.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/ll_map.c b/lib/ll_map.c
> index 2d7b65dcb8f7..e0ed54bf77c9 100644
> --- a/lib/ll_map.c
> +++ b/lib/ll_map.c
> @@ -177,7 +177,7 @@ static int ll_link_get(const char *name, int index)
>  		addattr_l(&req.n, sizeof(req), IFLA_IFNAME, name,
>  			  strlen(name) + 1);
>  
> -	if (rtnl_talk(&rth, &req.n, &answer) < 0)
> +	if (rtnl_talk_suppress_rtnl_errmsg(&rth, &req.n, &answer) < 0)
>  		goto out;
>  
>  	/* add entry to cache */
> 

In general, ll_link_get suppressing the error message seems like the
right thing to do.

For the example above, seems like nl_get_ll_addr_len is the cause of the
error messages, and it should not be called for this use case (NEWLINK
with NLM_F_CREATE set)
Stephen Hemminger May 28, 2019, 7:25 p.m. UTC | #2
On Fri, 24 May 2019 10:08:28 -0600
David Ahern <dsahern@gmail.com> wrote:

> On 5/24/19 2:59 AM, Nicolas Dichtel wrote:
> > Before the patch:
> > $ ip netns add foo
> > $ ip link add name veth1 address 2a:a5:5c:b9:52:89 type veth peer name veth2 address 2a:a5:5c:b9:53:90 netns foo
> > RTNETLINK answers: No such device
> > RTNETLINK answers: No such device
> > 
> > But the command was successful. This may break script. Let's remove those
> > error messages.
> > 
> > Fixes: 55870dfe7f8b ("Improve batch and dump times by caching link lookups")
> > Reported-by: Philippe Guibert <philippe.guibert@6wind.com>
> > Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
> > ---
> >  lib/ll_map.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/lib/ll_map.c b/lib/ll_map.c
> > index 2d7b65dcb8f7..e0ed54bf77c9 100644
> > --- a/lib/ll_map.c
> > +++ b/lib/ll_map.c
> > @@ -177,7 +177,7 @@ static int ll_link_get(const char *name, int index)
> >  		addattr_l(&req.n, sizeof(req), IFLA_IFNAME, name,
> >  			  strlen(name) + 1);
> >  
> > -	if (rtnl_talk(&rth, &req.n, &answer) < 0)
> > +	if (rtnl_talk_suppress_rtnl_errmsg(&rth, &req.n, &answer) < 0)
> >  		goto out;
> >  
> >  	/* add entry to cache */
> >   
> 
> In general, ll_link_get suppressing the error message seems like the
> right thing to do.
> 
> For the example above, seems like nl_get_ll_addr_len is the cause of the
> error messages, and it should not be called for this use case (NEWLINK
> with NLM_F_CREATE set)

Agree. I merged the patch to ll_link_get but send another to avoid
the cause of unnecessary query.
diff mbox series

Patch

diff --git a/lib/ll_map.c b/lib/ll_map.c
index 2d7b65dcb8f7..e0ed54bf77c9 100644
--- a/lib/ll_map.c
+++ b/lib/ll_map.c
@@ -177,7 +177,7 @@  static int ll_link_get(const char *name, int index)
 		addattr_l(&req.n, sizeof(req), IFLA_IFNAME, name,
 			  strlen(name) + 1);
 
-	if (rtnl_talk(&rth, &req.n, &answer) < 0)
+	if (rtnl_talk_suppress_rtnl_errmsg(&rth, &req.n, &answer) < 0)
 		goto out;
 
 	/* add entry to cache */