/* ... 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;
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;
*/
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;