]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MEDIUM: cache: Use dedicated cache tree lock alongside shctx lock
authorRemi Tricot-Le Breton <rlebreton@haproxy.com>
Thu, 16 Nov 2023 16:38:15 +0000 (17:38 +0100)
committerWilliam Lallemand <wlallemand@haproxy.com>
Thu, 16 Nov 2023 18:35:10 +0000 (19:35 +0100)
commitac9c49b40d229686d13d74414429d5ec8071067a
tree602f0342db79e207d89ee3dbe04ade970e481f7f
parent81d8014af851dd0d0802e106df9ba0a5772fabc0
MEDIUM: cache: Use dedicated cache tree lock alongside shctx lock

Every use of the cache tree was covered by the shctx lock even when no
operations were performed on the shared_context lists (avail and hot).
This patch adds a dedicated RW lock for the cache so that blocks of code
that work on the cache tree only can use this lock instead of the
superseding shctx one. This is useful for operations during which the
concerned blocks are already in the hot list.
When the two locks need to be taken at the same time, in
http_action_req_cache_use and in shctx_row_reserve_hot, the shctx one
must be taken first.
A new parameter needed to be added to the shared_context's free_block
callback prototype so that cache_free_block can take the cache lock and
release it afterwards.
include/haproxy/shctx-t.h
include/haproxy/thread.h
src/cache.c
src/shctx.c
src/ssl_sock.c
src/thread.c