On 03/30/2017 04:18 PM, Jiri Pirko wrote:
Tue, Mar 28, 2017 at 06:51:09PM CEST, gwilkie(a)brocade.com wrote:
> Hi, like to get your thoughts on this issue we are running into.
>
> Initially, running the lacp runner in teamd. This sends carrier changes to
> the kernel. Kernel sets "user_carrier_enabled" which blocks its normal
> carrier checks.
>
> Then change teamd runner from lacp to loadbalance. When lacp runner exits,
Hmm. What exactly are you doing, could you send a list of commands?
I suspect some oddities :)
1. start off in LACP mode - NO-CARRIER expected as no LACP on other side.
root@debian9:~# teamd --team-dev team0 --daemon --no-quit-destroy
--take-over --config='{"runner":{"name":"lacp"}}'
This program is not intended to be run as root.
root@debian9:~# ip link set dev ens9 master team0
root@debian9:~# ip link set dev ens10 master team0
root@debian9:~# ip link set dev team0 up
root@debian9:~# ip link show team0
8: team0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
state DOWN mode DEFAULT group default qlen 1000
link/ether 52:54:00:8b:12:a5 brd ff:ff:ff:ff:ff:ff
root@debian9:~#
2. change to balanced mode - still NO-CARRIER
root@debian9:~# ip link set dev team0 down
root@debian9:~# ip link set dev ens9 nomaster
root@debian9:~# ip link set dev ens10 nomaster
root@debian9:~# teamd --team-dev team0 --kill
root@debian9:~# teamd --team-dev team0 --daemon --no-quit-destroy
--take-over
--config='{"runner":{"name":"loadbalance"}}'
This program is not intended to be run as root.
root@debian9:~# ip link set dev ens9 master team0
root@debian9:~# ip link set dev ens10 master team0
root@debian9:~# ip link set dev team0 up
root@debian9:~# ip link show team0
8: team0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
state DOWN mode DEFAULT group default qlen 1000
link/ether 52:54:00:8b:12:a5 brd ff:ff:ff:ff:ff:ff
root@debian9:~#
3. have to switch to different kernel mode first to clear NO-CARRIER
root@debian9:~# ip link set dev team0 down
root@debian9:~# ip link set dev ens9 nomaster
root@debian9:~# ip link set dev ens10 nomaster
root@debian9:~# teamd --team-dev team0 --kill
root@debian9:~# teamd --team-dev team0 --daemon --no-quit-destroy
--take-over
--config='{"runner":{"name":"roundrobin"}}'
This program is not intended to be run as root.
root@debian9:~# teamd --team-dev team0 --kill
root@debian9:~# teamd --team-dev team0 --daemon --no-quit-destroy
--take-over
--config='{"runner":{"name":"loadbalance"}}'
This program is not intended to be run as root.
root@debian9:~# ip link set dev ens9 master team0
root@debian9:~# ip link set dev ens10 master team0
root@debian9:~# ip link set dev team0 up
root@debian9:~# ip link show team0
8: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state
UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:8b:12:a5 brd ff:ff:ff:ff:ff:ff
root@debian9:~#
This is with debian9, teamd version 1.26-1+b1, kernel 4.9.13-1
> carrier is set to down in kernel. lacp and loadbalance runners
both use same
> kernel mode "loadbalance", so starting loadbalance runner does not change
> kernel mode. Kernel still has "user_carrier_enabled" and team interface
stays
> down due to NO_CARRIER.
Hmm. I think that the correct solution is to teach the runners not to
depend on kernel defaults. So in this care the loadbalance runner would
set user_carrier_enabled to false during init (not during takeover)
ok, thanks.
> It seems the only way to clear kernel "user_carrier_enabled" is to change
the
> mode. Should there be a new option that teamd can use to tell kernel to clear
> "user_carrier_enabled" when lacp runner terminates? Or any other
suggestion?
>
> Thanks.
> _______________________________________________
> libteam mailing list -- libteam(a)lists.fedorahosted.org
> To unsubscribe send an email to libteam-leave(a)lists.fedorahosted.org