From b7f7bbd16b542727fc06fb5131a25b88007ac30a Mon Sep 17 00:00:00 2001 From: Liu Xiaodong Date: Wed, 11 Nov 2020 05:43:15 -0500 Subject: [PATCH] sock/uring: reap if some sock has data in pipe Since spdk_sock_group_poll should do level trigger to the callback func registered in spdk_sock_group_add_sock, if there is data in pipe, but not event occurs, poll func should still reap sock who has data in pipe. Change-Id: If3a983f80fd04708e45ad0398c7d34018ec52bc7 Signed-off-by: Liu Xiaodong Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5072 Tested-by: SPDK CI Jenkins Reviewed-by: Ziye Yang Reviewed-by: Shuhei Matsumoto Reviewed-by: Aleksey Marchuk Reviewed-by: Changpeng Liu --- module/sock/uring/uring.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/sock/uring/uring.c b/module/sock/uring/uring.c index 0386f757b..d9a8e207f 100644 --- a/module/sock/uring/uring.c +++ b/module/sock/uring/uring.c @@ -1248,7 +1248,7 @@ uring_sock_group_impl_poll(struct spdk_sock_group_impl *_group, int max_events, count = 0; to_complete = group->io_inflight; - if (to_complete > 0) { + if (to_complete > 0 || !TAILQ_EMPTY(&group->pending_recv)) { count = sock_uring_group_reap(group, to_complete, max_events, socks); }