- 21 Jul, 2023 1 commit
-
-
Nils Goroll authored
-
- 20 Jul, 2023 2 commits
-
-
Nils Goroll authored
Implements most of #17, except that we would like to restore OA_VARY with the log read... This should be backwards and forwards compatible, because the default in both cases is 0, and varnish-cache will not use the bitfield if it is 0.
-
Nils Goroll authored
-
- 15 Jul, 2023 2 commits
-
-
Nils Goroll authored
Closes #16
-
Nils Goroll authored
Ref #16
-
- 09 Jul, 2023 8 commits
-
-
Nils Goroll authored
-
Nils Goroll authored
In stvfe_dskoc_fco() we change the oc's stevedore to memstv only _after_ we have taken a refernce via fellow_cache_obj_get() and thus potentially put the fco onto the lru list. This order is important, because other requests racing on stvfe_dskoc_fco() need to also go through fellow_cache_obj_get() until the memstv object has been established for real. Yet this opens a window for a window where an fco is on LRU with oc->stobj->stevedore still set to dskstv, even without dirty reads, and even more so with dirty reads. Because any additional synchronization here could kill performance, we handle this outdated read in stvfe_mutate by not touching the object (yet). It will be hit the next time we iterate the LRU list. Fixes #13, hopefully.
-
Nils Goroll authored
-
Nils Goroll authored
Flexelint does not approve of This reverts commit a1f5225e.
-
Nils Goroll authored
-
Nils Goroll authored
Because of #14 I would like to understand if #13 is really a genuine bug or some odd consequence
-
Nils Goroll authored
-
Nils Goroll authored
This bug was also present in varnish-cache (will document) and found its way into fellow through the api-definition-by-example paradigm of varnish-cache: In varnish-cache vbf_stp_error(), an existing storage object is freed to be replaced with a new one, potentially from a different storage (usually -sTransient). In this case, ObjBocDone is not called, because the boc is to be preserved - from the client's perspective, the backend transaction is still in progress, and the client is waiting for the busy object to finish. At the storage level, however, the process of creation of a new object _is_ finished, and any busy object state which the storage might keep needs to be finalized. So, if oc->boc is not NULL for an ObjFreeObj() call, the stevedore needs to finish any busy object transaction. Fixes #14
-
- 23 Jun, 2023 2 commits
-
-
Nils Goroll authored
-
Nils Goroll authored
-
- 19 Jun, 2023 1 commit
-
-
Nils Goroll authored
-
- 17 Jun, 2023 2 commits
-
-
Nils Goroll authored
-
Nils Goroll authored
-
- 17 Apr, 2023 3 commits
-
-
Nils Goroll authored
-
Nils Goroll authored
Ref b7ac17d9
-
Nils Goroll authored
-
- 10 Apr, 2023 2 commits
-
-
Nils Goroll authored
make distcheck works now
-
Nils Goroll authored
Ref aa35f2b3 Should fix #9
-
- 07 Apr, 2023 6 commits
-
-
Nils Goroll authored
-
Nils Goroll authored
-
Nils Goroll authored
and how they relate to cache usages. Closes #5
-
Nils Goroll authored
They also get updated during resurrection when the checkpoint logs are output. Implements #6
-
Nils Goroll authored
-
Nils Goroll authored
-
- 27 Mar, 2023 1 commit
-
-
Nils Goroll authored
closes #7
-
- 20 Mar, 2023 1 commit
-
-
Nils Goroll authored
Closes #4
-
- 02 Mar, 2023 5 commits
-
-
Nils Goroll authored
-
Nils Goroll authored
-
Nils Goroll authored
-
Nils Goroll authored
-
Nils Goroll authored
-
- 01 Mar, 2023 4 commits
-
-
Nils Goroll authored
-
Nils Goroll authored
-
Nils Goroll authored
-
Nils Goroll authored
It seems to have caused confusion regarding the relation between io_uring and the fellow memory cache, which exists only to the extent that io_uring manages IO in and out of it.
-