diff mbox series

[iproute2] devlink: load ifname map on demand from ifname_map_rev_lookup() as well

Message ID 20221109124851.975716-1-jiri@resnulli.us (mailing list archive)
State New, archived
Delegated to: Stephen Hemminger
Headers show
Series [iproute2] devlink: load ifname map on demand from ifname_map_rev_lookup() as well | expand

Checks

Context Check Description
netdev/tree_selection success Not a local patch

Commit Message

Jiri Pirko Nov. 9, 2022, 12:48 p.m. UTC
From: Jiri Pirko <jiri@nvidia.com>

Commit 5cddbb274eab ("devlink: load port-ifname map on demand") changed
the ifname map to be loaded on demand from ifname_map_lookup(). However,
it didn't put this on-demand loading into ifname_map_rev_lookup() which
causes ifname_map_rev_lookup() to return -ENOENT all the time.

Fix this by triggering on-demand ifname map load
from ifname_map_rev_lookup() as well.

Fixes: 5cddbb274eab ("devlink: load port-ifname map on demand")
Signed-off-by: Jiri Pirko <jiri@nvidia.com>
---
 devlink/devlink.c | 35 +++++++++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 8 deletions(-)

Comments

Jiri Pirko Nov. 21, 2022, 8:52 a.m. UTC | #1
Wed, Nov 09, 2022 at 01:48:51PM CET, jiri@resnulli.us wrote:
>From: Jiri Pirko <jiri@nvidia.com>
>
>Commit 5cddbb274eab ("devlink: load port-ifname map on demand") changed
>the ifname map to be loaded on demand from ifname_map_lookup(). However,
>it didn't put this on-demand loading into ifname_map_rev_lookup() which
>causes ifname_map_rev_lookup() to return -ENOENT all the time.
>
>Fix this by triggering on-demand ifname map load
>from ifname_map_rev_lookup() as well.
>
>Fixes: 5cddbb274eab ("devlink: load port-ifname map on demand")
>Signed-off-by: Jiri Pirko <jiri@nvidia.com>

Stephen, its' almost 3 weeks since I sent this. Could you please check
this out? I would like to follow-up with couple of patches to -next
branch which are based on top of this fix.

Thanks!
Stephen Hemminger Nov. 21, 2022, 6:34 p.m. UTC | #2
On Mon, 21 Nov 2022 09:52:13 +0100
Jiri Pirko <jiri@resnulli.us> wrote:

> Wed, Nov 09, 2022 at 01:48:51PM CET, jiri@resnulli.us wrote:
> >From: Jiri Pirko <jiri@nvidia.com>
> >
> >Commit 5cddbb274eab ("devlink: load port-ifname map on demand") changed
> >the ifname map to be loaded on demand from ifname_map_lookup(). However,
> >it didn't put this on-demand loading into ifname_map_rev_lookup() which
> >causes ifname_map_rev_lookup() to return -ENOENT all the time.
> >
> >Fix this by triggering on-demand ifname map load
> >from ifname_map_rev_lookup() as well.
> >
> >Fixes: 5cddbb274eab ("devlink: load port-ifname map on demand")
> >Signed-off-by: Jiri Pirko <jiri@nvidia.com>  
> 
> Stephen, its' almost 3 weeks since I sent this. Could you please check
> this out? I would like to follow-up with couple of patches to -next
> branch which are based on top of this fix.
> 
> Thanks!

David applied it to iproute2-next branch already
Jiri Pirko Nov. 22, 2022, 12:37 p.m. UTC | #3
Mon, Nov 21, 2022 at 07:34:37PM CET, stephen@networkplumber.org wrote:
>On Mon, 21 Nov 2022 09:52:13 +0100
>Jiri Pirko <jiri@resnulli.us> wrote:
>
>> Wed, Nov 09, 2022 at 01:48:51PM CET, jiri@resnulli.us wrote:
>> >From: Jiri Pirko <jiri@nvidia.com>
>> >
>> >Commit 5cddbb274eab ("devlink: load port-ifname map on demand") changed
>> >the ifname map to be loaded on demand from ifname_map_lookup(). However,
>> >it didn't put this on-demand loading into ifname_map_rev_lookup() which
>> >causes ifname_map_rev_lookup() to return -ENOENT all the time.
>> >
>> >Fix this by triggering on-demand ifname map load
>> >from ifname_map_rev_lookup() as well.
>> >
>> >Fixes: 5cddbb274eab ("devlink: load port-ifname map on demand")
>> >Signed-off-by: Jiri Pirko <jiri@nvidia.com>  
>> 
>> Stephen, its' almost 3 weeks since I sent this. Could you please check
>> this out? I would like to follow-up with couple of patches to -next
>> branch which are based on top of this fix.
>> 
>> Thanks!
>
>David applied it to iproute2-next branch already

Ah. Okay. Thanks!
Jiri Pirko Nov. 24, 2022, 8:28 a.m. UTC | #4
Mon, Nov 21, 2022 at 07:34:37PM CET, stephen@networkplumber.org wrote:
>On Mon, 21 Nov 2022 09:52:13 +0100
>Jiri Pirko <jiri@resnulli.us> wrote:
>
>> Wed, Nov 09, 2022 at 01:48:51PM CET, jiri@resnulli.us wrote:
>> >From: Jiri Pirko <jiri@nvidia.com>
>> >
>> >Commit 5cddbb274eab ("devlink: load port-ifname map on demand") changed
>> >the ifname map to be loaded on demand from ifname_map_lookup(). However,
>> >it didn't put this on-demand loading into ifname_map_rev_lookup() which
>> >causes ifname_map_rev_lookup() to return -ENOENT all the time.
>> >
>> >Fix this by triggering on-demand ifname map load
>> >from ifname_map_rev_lookup() as well.
>> >
>> >Fixes: 5cddbb274eab ("devlink: load port-ifname map on demand")
>> >Signed-off-by: Jiri Pirko <jiri@nvidia.com>  
>> 
>> Stephen, its' almost 3 weeks since I sent this. Could you please check
>> this out? I would like to follow-up with couple of patches to -next
>> branch which are based on top of this fix.
>> 
>> Thanks!
>
>David applied it to iproute2-next branch already

Actually, I don't see it in iproute2-next. Am I missing something?
https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/log/

Thanks!
David Ahern Nov. 25, 2022, 4:02 a.m. UTC | #5
On 11/24/22 1:28 AM, Jiri Pirko wrote:
> Mon, Nov 21, 2022 at 07:34:37PM CET, stephen@networkplumber.org wrote:
>> On Mon, 21 Nov 2022 09:52:13 +0100
>> Jiri Pirko <jiri@resnulli.us> wrote:
>>
>>> Wed, Nov 09, 2022 at 01:48:51PM CET, jiri@resnulli.us wrote:
>>>> From: Jiri Pirko <jiri@nvidia.com>
>>>>
>>>> Commit 5cddbb274eab ("devlink: load port-ifname map on demand") changed
>>>> the ifname map to be loaded on demand from ifname_map_lookup(). However,
>>>> it didn't put this on-demand loading into ifname_map_rev_lookup() which
>>>> causes ifname_map_rev_lookup() to return -ENOENT all the time.
>>>>
>>>> Fix this by triggering on-demand ifname map load
>>> >from ifname_map_rev_lookup() as well.
>>>>
>>>> Fixes: 5cddbb274eab ("devlink: load port-ifname map on demand")
>>>> Signed-off-by: Jiri Pirko <jiri@nvidia.com>  
>>>
>>> Stephen, its' almost 3 weeks since I sent this. Could you please check
>>> this out? I would like to follow-up with couple of patches to -next
>>> branch which are based on top of this fix.
>>>
>>> Thanks!
>>
>> David applied it to iproute2-next branch already
> 
> Actually, I don't see it in iproute2-next. Am I missing something?
> https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/log/
> 
> Thanks!
> 

please resend.
Jiri Pirko Nov. 25, 2022, 8:21 a.m. UTC | #6
Fri, Nov 25, 2022 at 05:02:40AM CET, dsahern@gmail.com wrote:
>On 11/24/22 1:28 AM, Jiri Pirko wrote:
>> Mon, Nov 21, 2022 at 07:34:37PM CET, stephen@networkplumber.org wrote:
>>> On Mon, 21 Nov 2022 09:52:13 +0100
>>> Jiri Pirko <jiri@resnulli.us> wrote:
>>>
>>>> Wed, Nov 09, 2022 at 01:48:51PM CET, jiri@resnulli.us wrote:
>>>>> From: Jiri Pirko <jiri@nvidia.com>
>>>>>
>>>>> Commit 5cddbb274eab ("devlink: load port-ifname map on demand") changed
>>>>> the ifname map to be loaded on demand from ifname_map_lookup(). However,
>>>>> it didn't put this on-demand loading into ifname_map_rev_lookup() which
>>>>> causes ifname_map_rev_lookup() to return -ENOENT all the time.
>>>>>
>>>>> Fix this by triggering on-demand ifname map load
>>>> >from ifname_map_rev_lookup() as well.
>>>>>
>>>>> Fixes: 5cddbb274eab ("devlink: load port-ifname map on demand")
>>>>> Signed-off-by: Jiri Pirko <jiri@nvidia.com>  
>>>>
>>>> Stephen, its' almost 3 weeks since I sent this. Could you please check
>>>> this out? I would like to follow-up with couple of patches to -next
>>>> branch which are based on top of this fix.
>>>>
>>>> Thanks!
>>>
>>> David applied it to iproute2-next branch already
>> 
>> Actually, I don't see it in iproute2-next. Am I missing something?
>> https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/log/
>> 
>> Thanks!
>> 
>
>please resend.

Well, it is a fix, it should be put into iproute branch, not next. I'm
confused to be honest :/
Stephen Hemminger Nov. 25, 2022, 6:58 p.m. UTC | #7
On Thu, 24 Nov 2022 09:28:48 +0100
Jiri Pirko <jiri@resnulli.us> wrote:

> Mon, Nov 21, 2022 at 07:34:37PM CET, stephen@networkplumber.org wrote:
> >On Mon, 21 Nov 2022 09:52:13 +0100
> >Jiri Pirko <jiri@resnulli.us> wrote:
> >  
> >> Wed, Nov 09, 2022 at 01:48:51PM CET, jiri@resnulli.us wrote:  
> >> >From: Jiri Pirko <jiri@nvidia.com>
> >> >
> >> >Commit 5cddbb274eab ("devlink: load port-ifname map on demand") changed
> >> >the ifname map to be loaded on demand from ifname_map_lookup(). However,
> >> >it didn't put this on-demand loading into ifname_map_rev_lookup() which
> >> >causes ifname_map_rev_lookup() to return -ENOENT all the time.
> >> >
> >> >Fix this by triggering on-demand ifname map load
> >> >from ifname_map_rev_lookup() as well.
> >> >
> >> >Fixes: 5cddbb274eab ("devlink: load port-ifname map on demand")
> >> >Signed-off-by: Jiri Pirko <jiri@nvidia.com>    
> >> 
> >> Stephen, its' almost 3 weeks since I sent this. Could you please check
> >> this out? I would like to follow-up with couple of patches to -next
> >> branch which are based on top of this fix.
> >> 
> >> Thanks!  
> >
> >David applied it to iproute2-next branch already  
> 
> Actually, I don't see it in iproute2-next. Am I missing something?
> https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/log/
> 
> Thanks!
> 

It got confused with something else. Applied to iproute2 now.
Jiri Pirko Nov. 28, 2022, 9:07 a.m. UTC | #8
Fri, Nov 25, 2022 at 07:58:40PM CET, stephen@networkplumber.org wrote:
>On Thu, 24 Nov 2022 09:28:48 +0100
>Jiri Pirko <jiri@resnulli.us> wrote:
>
>> Mon, Nov 21, 2022 at 07:34:37PM CET, stephen@networkplumber.org wrote:
>> >On Mon, 21 Nov 2022 09:52:13 +0100
>> >Jiri Pirko <jiri@resnulli.us> wrote:
>> >  
>> >> Wed, Nov 09, 2022 at 01:48:51PM CET, jiri@resnulli.us wrote:  
>> >> >From: Jiri Pirko <jiri@nvidia.com>
>> >> >
>> >> >Commit 5cddbb274eab ("devlink: load port-ifname map on demand") changed
>> >> >the ifname map to be loaded on demand from ifname_map_lookup(). However,
>> >> >it didn't put this on-demand loading into ifname_map_rev_lookup() which
>> >> >causes ifname_map_rev_lookup() to return -ENOENT all the time.
>> >> >
>> >> >Fix this by triggering on-demand ifname map load
>> >> >from ifname_map_rev_lookup() as well.
>> >> >
>> >> >Fixes: 5cddbb274eab ("devlink: load port-ifname map on demand")
>> >> >Signed-off-by: Jiri Pirko <jiri@nvidia.com>    
>> >> 
>> >> Stephen, its' almost 3 weeks since I sent this. Could you please check
>> >> this out? I would like to follow-up with couple of patches to -next
>> >> branch which are based on top of this fix.
>> >> 
>> >> Thanks!  
>> >
>> >David applied it to iproute2-next branch already  
>> 
>> Actually, I don't see it in iproute2-next. Am I missing something?
>> https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/log/
>> 
>> Thanks!
>> 
>
>It got confused with something else. Applied to iproute2 now.

Okay, fine now. Thanks!
diff mbox series

Patch

diff --git a/devlink/devlink.c b/devlink/devlink.c
index 8aefa101b2f8..150b4e63ead1 100644
--- a/devlink/devlink.c
+++ b/devlink/devlink.c
@@ -838,6 +838,23 @@  static int ifname_map_load(struct dl *dl)
 	return 0;
 }
 
+static int ifname_map_check_load(struct dl *dl)
+{
+	int err;
+
+	if (dl->map_loaded)
+		return 0;
+
+	err = ifname_map_load(dl);
+	if (err) {
+		pr_err("Failed to create index map\n");
+		return err;
+	}
+	dl->map_loaded = true;
+	return 0;
+}
+
+
 static int ifname_map_lookup(struct dl *dl, const char *ifname,
 			     char **p_bus_name, char **p_dev_name,
 			     uint32_t *p_port_index)
@@ -845,14 +862,10 @@  static int ifname_map_lookup(struct dl *dl, const char *ifname,
 	struct ifname_map *ifname_map;
 	int err;
 
-	if (!dl->map_loaded) {
-		err = ifname_map_load(dl);
-		if (err) {
-			pr_err("Failed to create index map\n");
-			return err;
-		}
-		dl->map_loaded = true;
-	}
+	err = ifname_map_check_load(dl);
+	if (err)
+		return err;
+
 	list_for_each_entry(ifname_map, &dl->ifname_map_list, list) {
 		if (strcmp(ifname, ifname_map->ifname) == 0) {
 			*p_bus_name = ifname_map->bus_name;
@@ -870,6 +883,12 @@  static int ifname_map_rev_lookup(struct dl *dl, const char *bus_name,
 {
 	struct ifname_map *ifname_map;
 
+	int err;
+
+	err = ifname_map_check_load(dl);
+	if (err)
+		return err;
+
 	list_for_each_entry(ifname_map, &dl->ifname_map_list, list) {
 		if (strcmp(bus_name, ifname_map->bus_name) == 0 &&
 		    strcmp(dev_name, ifname_map->dev_name) == 0 &&