From c1cb2dc31c26154fc616607b767f3f20c6efe25b Mon Sep 17 00:00:00 2001 From: Maria Matejka Date: Tue, 11 Oct 2022 11:08:49 +0200 Subject: TES_HUNGRY doesn't inhibit export cleanup any more --- nest/rt-table.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'nest/rt-table.c') diff --git a/nest/rt-table.c b/nest/rt-table.c index 37d0307b..dad5d0cc 100644 --- a/nest/rt-table.c +++ b/nest/rt-table.c @@ -3061,10 +3061,19 @@ rt_export_cleanup(struct rtable_private *tab) { switch (atomic_load_explicit(&eh->h.export_state, memory_order_acquire)) { - case TES_DOWN: - case TES_HUNGRY: + /* Export cleanup while feeding isn't implemented */ + case TES_FEEDING: + goto done; + + /* States not interfering with export cleanup */ + case TES_DOWN: /* This should not happen at all */ + log(L_WARN "%s: Export cleanup found hook %s in explicit state TES_DOWN", tab->name, eh->h.req->name); + /* fall through */ + case TES_HUNGRY: /* Feeding waiting for uncork */ + case TES_STOP: /* No more export will happen on this hook */ continue; + /* Regular export */ case TES_READY: { struct rt_pending_export *last = atomic_load_explicit(&eh->last_export, memory_order_acquire); @@ -3081,8 +3090,7 @@ rt_export_cleanup(struct rtable_private *tab) } default: - /* It's only safe to cleanup when the export state is idle or regular. No feeding or stopping allowed. */ - goto done; + bug("%s: Strange export state of hook %s: %d", tab->name, eh->h.req->name, atomic_load_explicit(&eh->h.export_state, memory_order_relaxed)); } } -- cgit v1.2.3