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 |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
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!
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
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!
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!
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.
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 :/
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.
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 --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 &&