Age | Commit message (Collapse) | Author | |
---|---|---|---|
2023-05-11 | Fix use-after free in thread stopping code | Maria Matejka | |
2023-05-11 | Threads take loops faster | Maria Matejka | |
2023-05-07 | IO Loop / Thread Groups Lock moved to level -attrs- to allow for page ↵ | Maria Matejka | |
allocation while locked | |||
2023-05-07 | Fixed loop movement to not collide on LTT_MOVE | Maria Matejka | |
2023-05-07 | Fix loop dropping routines | Maria Matejka | |
2023-05-06 | Fixed a bug in hot page global storage | Maria Matejka | |
The original algorithm was suffering from an ABA race condition: A: fp = page_stack B: completely allocates the same page and writes into it some data A: unsuspecting, loads (invalid) next = fp->next B: finishes working with the page and returns it back to page_stack A: compare-exchange page_stack: fp => next succeeds and writes garbage to page_stack Fixed this by using an implicit spinlock in hot page allocator. | |||
2023-05-06 | Debug: keep a circular log of memory page operations | Maria Matejka | |
2023-05-06 | Fixed cold page cache leak | Maria Matejka | |
The empty_pages pointer wasn't being propagated into the ->next pointer when more empty_pages were to be stored | |||
2023-05-06 | Debug: Explicit mprotect() on freed pages to better locate use-after-free bugs | Maria Matejka | |
2023-05-06 | Page allocator: indentation of messy ifdef blocks | Maria Matejka | |
2023-05-06 | First try of loop balancing | Maria Matejka | |
If a thread encounters timeout == 0 for poll, it considers itself "busy" and with some hysteresis it tries to drop loops for others to pick and thus better distribute work between threads. | |||
2023-05-03 | Show threads: Fixed problems with CLI buffer reallocation | Maria Matejka | |
... by allocating all the output locally and then sending it out at once. | |||
2023-05-03 | Explicitly counting loops and threads | Maria Matejka | |
2023-05-03 | Loop spent time refactored to separate structures and functions | Maria Matejka | |
2023-04-26 | Loops track also locking time | Maria Matejka | |
2023-04-26 | IO loops now actually measuring their time (show threads all works) | Maria Matejka | |
2023-04-25 | Refactoring of domains connected to pools | Maria Matejka | |
2023-04-24 | Fix of failing show threads command | Maria Matejka | |
2023-04-24 | Merge commit 'd61505b039bf0aa6697e28b2a4e07907c89ba1fb' into thread-next | Maria Matejka | |
2023-04-24 | Resource pools are now bound with domains. | Maria Matejka | |
Memory allocation is a fragile part of BIRD and we need checking that everybody is using the resource pools in an appropriate way. To assure this, all the resource pools are associated with locking domains and every resource manipulation is thoroughly checked whether the appropriate locking domain is locked. With transitive resource manipulation like resource dumping or mass free operations, domains are locked and unlocked on the go, thus we require pool domains to have higher order than their parent to allow for this transitive operations. Adding pool locking revealed some cases of insecure memory manipulation and this commit fixes that as well. | |||
2023-04-22 | Protocols and tables now use the birdloop pools as primary | Maria Matejka | |
2023-04-22 | Resource pool closing has its dedicated function | Maria Matejka | |
2023-04-22 | Socket closing has its dedicated function | Maria Matejka | |
2023-04-21 | BSD: IPv4 over IPv6 nexthop support on FreeBSD | Luiz Amaral | |
The support for IPv4 routes with IPv6 nexthops was implemented in FreeBSD 13.1, this patch allows to import and export such routes from/to kernel. Minor change from committer. | |||
2023-04-18 | Updated the version number to not include dash (breaks RPM) | Maria Matejka | |
2023-04-18 | NEWS and version update | Maria Matejka | |
2023-04-17 | IO: added a specific loop pickup group for BFD; to be done better in future | Maria Matejka | |
2023-04-14 | Merge commit '231c6385' into thread-next-iface | Maria Matejka | |
2023-04-06 | Loop: keep running the same loop for some time if there is work to do | Maria Matejka | |
2023-04-04 | Sockets: Unified API for main and other loops | Maria Matejka | |
Now sk_open() requires an explicit IO loop to open the socket in. Also specific functions for socket RX pause / resume are added to allow for BGP corking. And last but not least, socket reloop is now synchronous to resolve weird cases of the target loop stopping before actually picking up the relooped socket. Now the caller must ensure that both loops are locked while relooping, and this way all sockets always have their respective loop. | |||
2023-04-04 | More efficient IO loop event execution to avoid long loops | Maria Matejka | |
If there are lots of loops in a single thread and only some of the loops are actually active, the other loops are now kept aside and not checked until they actually get some timers, events or active sockets. This should help with extreme loads like 100k tables and protocols. Also ping and loop pickup mechanism was allowing subtle race conditions. Now properly handling collisions between loop ping and pickup. | |||
2023-04-04 | Resource dumps also write out block addresses | Maria Matejka | |
2023-04-04 | Misc allocator fixes | Maria Matejka | |
2023-04-04 | Allocator fix: thread local kept pages counter must be thread local | Maria Matejka | |
2023-04-04 | Propagated const through route feed routines | Maria Matejka | |
2023-04-04 | Temporarily switching off time annotations of debug log | Maria Matejka | |
The "dump *" commands are totally garbled by the time annotations. | |||
2023-04-04 | Interface subsystem locking | Maria Matejka | |
2023-03-06 | Net: Replace runtime checks with STATIC_ASSERT() | Ondrej Zajicek | |
2023-02-07 | Merge commit '0bb04d5390f21b0c96fc4894ba5d5510c541f0ef' into HEAD | Maria Matejka | |
2023-02-02 | Interface updates are asynchronous | Maria Matejka | |
Instead of propagating interface updates as they are loaded from kernel, they are enqueued and all the notifications are called from a protocol-specific event. This change allows to break the locking loop between protocols and interfaces. Anyway, this change is based on v2 branch to keep the changes between v2 and v3 smaller. | |||
2023-02-02 | Moved interface list flush to device protocol cleanup hook. | Maria Matejka | |
The interface list must be flushed when device protocol is stopped. This was done in a hardcoded specific hook inside generic protocol routines. The cleanup hook was originally used for table reference counting late cleanup, yet it can be also simply used for prettier interface list flush. | |||
2023-01-24 | Merge v2.0.12 into thread-next | Maria Matejka | |
2023-01-24 | Merge commit '3186ffe79714a48542d5ad61a94c81216b522fd0' into thread-next | Maria Matejka | |
2023-01-24 | Merge commit '6bb992cb04926895be57dc97e7d569ea15a07db1' into thread-next | Maria Matejka | |
2023-01-23 | Merge commit '928a1cb034e6f9e8edcdd1dc07264cd703e00827' into thread-next | Maria Matejka | |
2023-01-23 | Merge commit '7fb23041a52d01754c53ba963e2282e524813364' into thread-next | Maria Matejka | |
2023-01-23 | NEWS and version updatev2.0.12 | Ondrej Zajicek | |
2023-01-22 | Merge commit '2b7643e1f8ecb0bd4cf9af4183b4fd53b655d19c' into thread-next | Maria Matejka | |
2023-01-21 | Merge commit '1e47b9f203aaaad0fb658d40a1670f1d0437f1f8' into thread-next | Maria Matejka | |
2023-01-21 | Merge commit 'a80cd4707464cedb526eb72e7704b097af20beb7' into thread-next | Maria Matejka | |