mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-12-03 16:51:01 +01:00
WIP/MEDIUM: stktables: Use a try-lock on the updates list when removing a stksess
This commit is contained in:
parent
7600b2dba4
commit
e29863934e
@ -138,7 +138,9 @@ int __stksess_kill(struct stktable *t, struct stksess *ts)
|
||||
|
||||
/* ... and that we didn't leave the update list for the tree */
|
||||
if (MT_LIST_INLIST(&ts->upd)) {
|
||||
link = mt_list_lock_full(&ts->upd);
|
||||
link = mt_list_try_lock_full(&ts->upd);
|
||||
if (link.next == NULL)
|
||||
goto out;
|
||||
if (HA_ATOMIC_LOAD(&ts->ref_cnt)) {
|
||||
mt_list_unlock_full(&ts->upd, link);
|
||||
goto out;
|
||||
@ -385,7 +387,9 @@ int stktable_trash_oldest(struct stktable *t)
|
||||
MT_LIST_DELETE(&ts->pend_updts);
|
||||
|
||||
if (MT_LIST_INLIST(&ts->upd)) {
|
||||
link = mt_list_lock_full(&ts->upd);
|
||||
link = mt_list_try_lock_full(&ts->upd);
|
||||
if (link.next == NULL)
|
||||
goto requeue;
|
||||
if (HA_ATOMIC_LOAD(&ts->ref_cnt)) {
|
||||
mt_list_unlock_full(&ts->upd, link);
|
||||
goto requeue;
|
||||
@ -1001,7 +1005,9 @@ struct task *process_table_expire(struct task *task, void *context, unsigned int
|
||||
*/
|
||||
MT_LIST_DELETE(&ts->pend_updts);
|
||||
if (MT_LIST_INLIST(&ts->upd)) {
|
||||
link = mt_list_lock_full(&ts->upd);
|
||||
link = mt_list_try_lock_full(&ts->upd);
|
||||
if (link.next == NULL)
|
||||
goto requeue;
|
||||
if (HA_ATOMIC_LOAD(&ts->ref_cnt)) {
|
||||
mt_list_unlock_full(&ts->upd, link);
|
||||
goto requeue;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user