mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-01-15 05:41:16 +01:00
Commit 04f5fe87d3d introduced an rwlock in the pools to deal with the risk that pool_flush() dereferences an area being freed, and commit 899fb8abdcd turned it into a spinlock. The pools already contain a spinlock in case of locked pools, so let's use the same and simplify the code by removing ifdefs. At this point I'm really suspecting that if pool_flush() would instead rely on __pool_get_first() to pick entries from the pool, the concurrency problem could never happen since only one user would get a given entry at once, thus it could not be freed by another user. It's not certain this would be faster however because of the number of atomic ops to retrieve one entry compared to a locked batch.