From: Willy Tarreau Date: Wed, 12 Oct 2022 10:04:01 +0000 (+0000) Subject: MEDIUM: stick-table: requeue the wakeup task out of the write lock X-Git-Tag: v2.7-dev8~35 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cbdb528a7635be502949651016aeea938feb4479;p=thirdparty%2Fhaproxy.git MEDIUM: stick-table: requeue the wakeup task out of the write lock We don't need to call stktable_requeue_exp() with the table's lock held anymore, so let's move it out. It should slightly reduce the contention on the write lock, though it is now already quite low. --- diff --git a/src/stick_table.c b/src/stick_table.c index 57c1b17757..c9f1fda3a9 100644 --- a/src/stick_table.c +++ b/src/stick_table.c @@ -566,10 +566,10 @@ struct stksess *stktable_get_entry(struct stktable *table, struct stktable_key * ts = ts2; } - stktable_requeue_exp(table, ts); HA_ATOMIC_INC(&ts->ref_cnt); HA_RWLOCK_WRUNLOCK(STK_TABLE_LOCK, &table->lock); + stktable_requeue_exp(table, ts); return ts; } @@ -604,8 +604,9 @@ struct stksess *stktable_set_entry(struct stktable *table, struct stksess *nts) /* now we're write-locked */ __stktable_store(table, ts); - stktable_requeue_exp(table, ts); HA_RWLOCK_WRUNLOCK(STK_TABLE_LOCK, &table->lock); + + stktable_requeue_exp(table, ts); return ts; }