Commit Graph

35 Commits

Author SHA1 Message Date
lguohan
63a044a87c [build]: fix dpkg admindir corruption issue in parallel build (#6408)
Fix #119

when parallel build is enable, multiple dpkg-buildpackage
instances are running at the same time. /var/lib/dpkg is shared
by all instances and the /var/lib/dpkg/updates could be corrupted
and cause the build failure.

the fix is to use overlay fs to mount separate /var/lib/dpkg
for each dpkg-buildpackage instance so that they are not affecting
each other.

Signed-off-by: Guohan Lu <lguohan@gmail.com>
2021-01-20 23:06:13 -08:00
pavel-shirshov
6c2801b846 teamd: fix possible race in master ifname callback (#4109)
- What I did
Ported a fix from libteam master to our master.
Fixes #4070
Fixes #3649

- How I did it
Applied patch jpirko/libteam@c723737 from upstream.

- How to verify it
Build image for your DUT and warm-reboot your DUT 10 times. Check that all PortChannels are up and no error messages in teamd.log
2020-10-09 15:59:56 +00:00
pavel-shirshov
560aceba27
[libteam]: Disregard current state when considering port enablement (#4210) 2020-02-29 04:38:32 -08:00
pavel-shirshov
975fb1c488 [libteam]: Keep member ports parts of a team when teamd quits in FR and WR (#3544) 2019-10-02 22:35:46 +00:00
pavel-shirshov
467851e24e Regular quit needs to clean the ports two (#3531) 2019-09-27 22:18:06 +00:00
pavel-shirshov
301c69b098 Flush port in both worm-reboot and fast-reboot mode on exit. Otherwise teamd will stuck (#3512) 2019-09-25 23:09:16 +00:00
pavel-shirshov
2fc617fcd9 [libteam]: Add Fast-Reboot mode for teamd (#3490)
* [libteam]: add special Fast-Reboot teamd stop mode

* Fix last packet sending

* Update sonic-utilities module
2019-09-23 17:36:47 +00:00
pavel-shirshov
6b43650245 [libteam]: timerfd read() could return 0 fix (#3393)
* Update sonic-quagga submodule

* [libteam]: timerfd read() could return 0
2019-08-29 21:16:08 +00:00
Shuotian Cheng
db209067f6 [libteam]: Move libteam from 1.26 to 1.28 (#3332)
Sync 201811 branch libteam with master's latest version

Signed-off-by: Shu0T1an ChenG <shuche@microsoft.com>
2019-08-13 21:35:08 -07:00
Shuotian Cheng
3cdfb4341d [libteam]: Fix libteam race condition when interface is created and enslaved (#3250)
The race condition could happen like this:
When an interface is enslaved into the port channel immediately after
it is created, the order of creating the ifinfo and linking the ifinfo to
the port is not guaranteed.

Please check the patch commit message to get full details.

Signed-off-by: Shu0T1an ChenG <shuche@microsoft.com>
2019-07-31 23:53:52 +00:00
pavel-shirshov
f71c665705
[libteam]: Reimplement Warm-Reboot procedure (#2999)
* [libteam]: Reimplement Warm-Reboot procedure

* Address internal comments
2019-06-14 13:56:16 -07:00
pavel-shirshov
3954e0821c [libteam] Send updates as soon as we need to update the LACP partner about changes (#2955) 2019-05-30 21:15:12 +00:00
Phanindra TV
abc25df612 [teamd]: Administratively shutdown port channel has member ports in deselected state and traffic is not forwarded. #1771 (#2882) 2019-05-30 21:15:05 +00:00
Ying Xie
e4a663a606 [teamd] do not process lacpdu before the port ifinfo is set (#2815)
Port libteam patch which fixes the race condition we observed during
warm reboot.

Remove early patches: 0006, 0008, 0009.

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2019-04-30 19:07:39 +00:00
pavel-shirshov
525ee59165 Downport the netlink patch to libteam1.26. Increase netlink buffers (#2822) 2019-04-26 15:27:22 +00:00
pavel-shirshov
f082cff528 teamd: lacp: update port state according to partner's sync bit (#2793)
Backport of
54f137c105

According to 6.4.15 of IEEE 802.1AX-2014, Figure 6-22, the state that the
port is selected moves MUX state from DETACHED to ATTACHED.

But ATTACHED state does not mean that the port can send and receive user
frames. COLLECTING_DISTRIBUTION state is the state that the port can send
and receive user frames. To move MUX state from ATTACHED to
COLLECTING_DISTRIBUTION, the partner state should be sync as well as the
port selected.

In function lacp_port_actor_update(), only INFO_STATE_SYNCHRONIZATION
should be set to the actor.state when the port is selected.
INFO_STATE_COLLECTING and INFO_STATE_DISTRIBUTING should be set to false
with ATTACHED mode and set to true when INFO_STATE_SYNCHRONIZATION of
partner.state is set.

In function lacp_port_should_be_{enabled, disabled}(), we also need to
check the INFO_STATE_SYNCHRONIZATION bit of partner.state.

Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
2019-04-18 16:56:20 +00:00
Ying Xie
bc98f9fe64 [teamd] prevent re-entrance of port priv change handler (#2723)
When adding a lag member dynamically after system boots up, teamd
port priv change handler could re-entrant itself and causing adding
operation to fail.

While handling PORT_CHANGE event, teamd_per_port.c port priv change
handler was called, it will then call runner_lacp to add port to lag,
the later causes IFINFO_CHANGE to be notified and calls the priv change
handler again, this re-entrance would cause runner_lacp port_added to
be called again and messes up with the previous adding sequence. Then
fails the lag member adding operation.

Prevent per port priv change handler re-entrance solves the problem.

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2019-04-01 23:52:31 +00:00
Ying Xie
378fa08da6 [teamd] retry creating team_port after interface info changed (#2699)
Race condition has been noticed after warm reboot: sometimes when
port_changed notification was received, the link message didn't
have the device name. Without device name, creating team port
would fail.

Registering to the interface information change notification, so
later when device name becomes available, retry creating team port.

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2019-03-28 17:26:43 +00:00
Jipan Yang
dc2317a697 [libteam]: Skip setting the same hwaddr to lag port to avoid disrupting neighbor… (#2602)
* Skip setting the same hwaddr to lag port to avoid disrupting neighbor entries

Signed-off-by: Jipan Yang <jipan.yang@alibaba-inc.com>
2019-03-28 17:25:58 +00:00
Ying Xie
00081c5f61 [make file] managing teamd patches with stg (#2689)
Just so that the folder will be clean and make working on new patches
much easier.

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2019-03-22 15:53:58 +00:00
Shuotian Cheng
0213dd45bd [libteam]: Fix libteam race condition when interface is created and enslaved (#2449)
The race condition could happen like this:
When an interface is enslaved into the port channel immediately after
it is created, the order of creating the ifinfo and linking the ifinfo to
the port is not guaranteed.

Please check the patch commit message to get full details.

Signed-off-by: Shu0T1an ChenG <shuche@microsoft.com>
2019-01-16 22:41:29 +00:00
Ying Xie
bff316562e [teamd] avoid using actor port number 0 in teamd config (#2327)
When using actor port number 0 in lag configuration, IO cannot be sent to
peer. Increase actor port number by 1 to keep uniqueness and at the same
time, avoid using actor port number 0.

Ref. 802.1AX 6.3.4 Port identification

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2018-12-01 02:11:41 -08:00
pavel-shirshov
c7d18f1edc [teamd]: Fix teamd patch issues, which prevented system WR (#2321)
- What I did

Fixed vanilla teamd bug, which prevented teamd to have a correct view of kernel state. Check bug #2 from the message
Changed schema for LACP port id.
Changed severity of an error message.
Removed logic to disable warm_start_read mode, when teamd started. It didn't work in system restart mode, because interfaces were added one by one, and it's impossible to say when everything is added.

- How I did it

I've added team_refresh() on every port addition
I extract port id from the port name. Currently I support only "EthernetX" scheme. We need to add more schemes if we change port scheme.
_err -> _info
...

- How to verify it
Build the image, install on your DUT, reboot it once, then reboot it on WR mode checking LACP state on remote side. The state shouldn't flip.
2018-11-29 19:19:26 -08:00
pavel-shirshov
f6f8880ae7
Don't put down LAG interface when it starts in WR mode (#2257)
* Don't put down LAG interface when it starts in WR mode

* Change logic. Don't touch carrier in WR mode. Until it could be in UP mode

* Change control plane restore logic in WR mode
2018-11-19 18:29:26 -08:00
pavel-shirshov
cc6e6b5ea3 [teamd]: Update hwaddr_orig unconditionally. (#2254)
SONiC uses same mac address for both phy ports and LAGs
2018-11-14 01:14:05 -08:00
pavel-shirshov
c61c1d5695 Fix teamd behavior for Warm-reboot mode (#2241)
* Fix teamd behavior for Warm-reboot mode

* Don't save 'read' state into the struct. Try to read a lacp file everytime when a port starts.

* Fix filename for access()
2018-11-13 10:53:20 -08:00
pavel-shirshov
4157f1d230
[teamd] Add Warm-reboot startup and shutdown mode for teamd (#2173)
* Add Warm-reboot startup and shutdown mode for teamd

* Address comments, fix some bugs

* Use tab instead of 8 spaces
2018-11-05 16:37:57 -08:00
Qi Luo
a6d2d777c4
Fix links of debian git server (#1755) 2018-05-31 18:38:12 -07:00
Haiyang Zheng
2abdf8dc58 [libteam] Add fallback support for single-member-port LAG (#1118)
* [libteam] Add fallback support for single-member-port LAG

* Allow the port to be selected if the LAG is configured
with fallback and port is in defaulted state due to missing
LACP PDUs from remote end
* Only enable port if LAG is admin up and the member port
is link up

* [team] Add lacp fallback config to teamd.j2 template

* [teamd] Resolve config conflict between fallback and minlink

* Remove min_link config if fallback is configured
* Add support for fallback config in minigraph

* [teamd] Only enable fallback if it is single-member-port LAG

Signed-off-by: Haiyang Zheng <haiyang.z@alibaba-inc.com>

* [teamd] Removing the admin status check in lacp_port_link_update

Will submit another pull request to fix this issue.

Signed-off-by: Haiyang Zheng <haiyang.z@alibaba-inc.com>
2017-12-16 11:28:18 -08:00
pavel-shirshov
e0513d213b lacp runner will send lacp update right after it received SIGINT (#969) 2017-09-21 09:17:29 -07:00
Marian Pritsak
51cab5d4ed [config]: Add SONIC_CONFIG_MAKE_JOBS (#784)
* [config]: Add SONIC_CONFIG_MAKE_JOBS

This config option allows user to specify -j value that will be passed
to each package build.

Signed-off-by: marian-pritsak <marianp@mellanox.com>
2017-07-07 15:32:50 +03:00
Shuotian Cheng
667ef1d766 [libteam]: Add 0002-libteam-Temporarily-remove-redundant-debug-mes.patch (#357)
Signed-off-by: Shuotian Cheng <shuche@microsoft.com>
2017-03-02 13:34:37 -08:00
Shuotian Cheng
09f61a4894 [libteam]: Add patch 0001-libteam-Add-team_get_port_enabled-function.patch (#205) 2017-01-22 22:19:43 -08:00
Marian Pritsak
e9098b99fb Build improvements (#80)
* Build improvements

Fix dependencies
Add configuration options
Automatically build sonic-slave

* Set default number of jobs to 1

* Auto generate target/debs directory

Signed-off-by: marian-pritsak <marianp@mellanox.com>

* Automatically remove sonic-slave container after exit

* Silence clean-logs

* Add SONIC_CLEAN_TARGETS to clean

* Use second expansion for clean dependencies

* Avoid creating empty log files

Remove log file on flush instead of writing empty string

* Put dpkg install inside lock

Use same lock as debian install targets do to avoid
race condition in dpkg installation

* Remove redirect to log from docker save

* Add .platform dependency to all and clean targets

* Remove header and footer from clean targets

* Disable messages for SONIC_CLEAN_TARGETS

* Exit with error if dpkg-buildpackage fails

* Set new location for debs in build_debian.sh

* Add recipe for docker-database

* Update redis version to 3.2.4

* Add support for p4 platform

* Add recipe for snmpd

* Add slave targets to phony and make all target default

* Remove build.sh from thrift

* Add versioning to team, nl, hiredis and initramfs

* Change sonic-slave to support snmpd build from sources

* Remove src/tenjin

* Add recipe for lldpd

* Add recipe for mpdecimal

* Remove hiredis directory on rebuild

* Add recipe for Mellanox hw management

* Remove generic image from all targets for Mellanox

* Add support for python wheels

* Add lldp and snmp dockers

* Sync docker-database to include libjemalloc

* Fix asyncsnmp variable name

* Change default build configuration

Redirect output to log files by default
Set number of jobs to nproc value
Do not print dependencies
Fix logging to print log of failed job into console

* Use docker inspect to check if sonic-slave image exists

* Use config in slave.mk directly

* Disable color output by default

* Remove sswsdk dependency from lldp and snmp dockers

* Fix comment in py wheels install targets

* Add dependency between two versions of sswsdk

* Add containers to mellanox platform

lldp, snmp and database containers

* Add recipe for team docker

* Add team docker to mellanox platform

* Encrypt password passed to build_debian.sh

* Update mellanox SAI version

Make version and revision setting only in main recipe

* Fix error handling in makefiles

As makefiles use .ONESHELL we should add -e
option to shell options in order to exit after any command fails

* Add recipe for platform monitor image

* Add platfotm monitor to mellanox targets

* Ignore submodules when building base image
2016-12-05 11:12:19 -08:00
Shuotian Cheng
4373c518cf libteam: Adding build.sh script and docker-team (#18) 2016-10-07 10:41:44 -07:00