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 */
|
/* ... and that we didn't leave the update list for the tree */
|
||||||
if (MT_LIST_INLIST(&ts->upd)) {
|
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)) {
|
if (HA_ATOMIC_LOAD(&ts->ref_cnt)) {
|
||||||
mt_list_unlock_full(&ts->upd, link);
|
mt_list_unlock_full(&ts->upd, link);
|
||||||
goto out;
|
goto out;
|
||||||
@ -385,7 +387,9 @@ int stktable_trash_oldest(struct stktable *t)
|
|||||||
MT_LIST_DELETE(&ts->pend_updts);
|
MT_LIST_DELETE(&ts->pend_updts);
|
||||||
|
|
||||||
if (MT_LIST_INLIST(&ts->upd)) {
|
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)) {
|
if (HA_ATOMIC_LOAD(&ts->ref_cnt)) {
|
||||||
mt_list_unlock_full(&ts->upd, link);
|
mt_list_unlock_full(&ts->upd, link);
|
||||||
goto requeue;
|
goto requeue;
|
||||||
@ -1001,7 +1005,9 @@ struct task *process_table_expire(struct task *task, void *context, unsigned int
|
|||||||
*/
|
*/
|
||||||
MT_LIST_DELETE(&ts->pend_updts);
|
MT_LIST_DELETE(&ts->pend_updts);
|
||||||
if (MT_LIST_INLIST(&ts->upd)) {
|
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)) {
|
if (HA_ATOMIC_LOAD(&ts->ref_cnt)) {
|
||||||
mt_list_unlock_full(&ts->upd, link);
|
mt_list_unlock_full(&ts->upd, link);
|
||||||
goto requeue;
|
goto requeue;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user