> Yes, but the updates need to be done for all links and I'm not sure adding > this is a good thing. > I'm now having 64 links on the switch and I need the failure detection in > networkd to be quite fast because however even now it's probably slower due > to evaluating dynamically the BindCarrier strings when comparing this with > the previous solution with an UFD group monitoring some interfaces and with > some internal counters knowing exactly when to issue "link_down" for an > interface. So adding "bound_by" and "bound_to" makes the solution even slower.
> How many times per second will you be avaluating this? Each time an event happens: a link appears, disappears, changes flags or names. > Besides this, having only one function "sd_network_link_get_carrier_bound_to" > makes also sense because only the behavior of "bond_to" links is controlled > by this feature. "bound_by" means almost nothing for an interface. A tool > like "networkctl" may take into account to display only the "bound_to" links > because that's what's relevant. The fact that "networkctl" displays both > "bound_to" and "bound_by" it's a good thing, but it doesn't mean each tool > should do that. > If a link goes down, isn't the "bound_by" list useful to look at links which > need to be checked and potentiallly brought down? It can be useful, that's why "networkctl" has the updates, but are talking about the showing functionality or about the run-time "up-down" game between interfaces ? /Alin -----Original Message----- From: Zbigniew Jędrzejewski-Szmek [mailto:zbys...@in.waw.pl] Sent: Thursday, February 12, 2015 11:49 AM To: Rauta, Alin Cc: Lennart Poettering; t...@jklm.no; systemd-devel@lists.freedesktop.org; Kinsella, Ray Subject: Re: [PATCH v3] Added support for Uplink Failure Detection using BindCarrier On Thu, Feb 12, 2015 at 08:56:00AM +0000, Rauta, Alin wrote: > > Well, one option could be to keep a set of bound_by and bound_to > > links around for each link, and then just update that each time an > > interface comes, goes, or changes names. > > Yes, but the updates need to be done for all links and I'm not sure adding > this is a good thing. > I'm now having 64 links on the switch and I need the failure detection in > networkd to be quite fast because however even now it's probably slower due > to evaluating dynamically the BindCarrier strings when comparing this with > the previous solution with an UFD group monitoring some interfaces and with > some internal counters knowing exactly when to issue "link_down" for an > interface. So adding "bound_by" and "bound_to" makes the solution even slower. How many times per second will you be avaluating this? > Besides this, having only one function "sd_network_link_get_carrier_bound_to" > makes also sense because only the behavior of "bond_to" links is controlled > by this feature. "bound_by" means almost nothing for an interface. A tool > like "networkctl" may take into account to display only the "bound_to" links > because that's what's relevant. The fact that "networkctl" displays both > "bound_to" and "bound_by" it's a good thing, but it doesn't mean each tool > should do that. If a link goes down, isn't the "bound_by" list useful to look at links which need to be checked and potentiallly brought down? Zbyszek > > /Alin > > -----Original Message----- > From: Lennart Poettering [mailto:lenn...@poettering.net] > Sent: Wednesday, February 11, 2015 6:03 PM > To: Rauta, Alin > Cc: zbys...@in.waw.pl; t...@jklm.no; > systemd-devel@lists.freedesktop.org; Kinsella, Ray > Subject: Re: [PATCH v3] Added support for Uplink Failure Detection > using BindCarrier > > On Wed, 11.02.15 17:44, Rauta, Alin (alin.ra...@intel.com) wrote: > > > Hi Lennart, > > > > > +_public_ int sd_network_link_get_carriers(int ifindex, char ***ret) { > > > + return network_get_link_strv("CARRIERS", ifindex, ret); } > > > + > > > > > I think it would be better to have two calls here: > > > > > > int sd_network_link_get_carrier_bound_to(int ifindex, int **others); > > > int sd_network_link_get_carrier_bound_by(int ifindex, int > > > **others); > > > > In terms of functionality, " sd_network_link_get_carriers " is > > actually " sd_network_link_get_carrier_bound_to" and is applicable > > to "bound to" links just like "BindCarrier=" is available only for > > "bound to" links. I wanted to save to systemd "run" files just minimum info. > > > > If I add "sd_network_link_get_carrier_bound_by", then each time > > "link_save" is called for a link I should query "BindCarrier="s for > > all interfaces to print each link that bounds the current interface. > > Then, if I rename a link I should call "link_save" for all available > > links because the "BindCarrier=" can be interpreted in another way > > due to wildcards. > > Well, one option could be to keep a set of bound_by and bound_to links around > for each link, and then just update that each time an interface comes, goes, > or changes names. That way you always have direct access to the bound links, > and don't have to resolve the globs each time you need them, but only when > they actually change? > > The reason why I figured having two calls for this would be useful is simply > to make it easy to write tools like networkctl, which wants to show this > information in both directions for each interface... > > > > +/* get the links that are bound to this port. */ static int > > > +get_downlinks(const char *name, > > > + sd_rtnl_message *m, > > > + LinkInfo **downlinks, > > > + int *down_count) { > > > > Regarding "get_uplinks" and "get_downlinks" I can rename them to > > "get_links_bound_to" and "get_links_bound_by". Would this be fine ? > > Sure! > > But before you rework any of this, let's see what Tom has to say, he's the > networkd maintainer... > > Lennart > > -- > Lennart Poettering, Red Hat > _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel