Skip to content

Commit 668aeba

Browse files
committed
examples/zcrx: check for submission errors
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
1 parent c02fcba commit 668aeba

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

examples/zcrx.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,8 @@ static void return_buffer(struct io_uring_zcrx_rq *rq_ring,
350350
io_uring_smp_store_release(rq_ring->ktail, ++rq_ring->rq_tail);
351351
}
352352

353-
static void process_recvzc_error(struct zc_conn *conn, int ret)
353+
static void process_recvzc_error(struct io_uring *ring,
354+
struct zc_conn *conn, int ret)
354355
{
355356
if (ret == -ENOSPC) {
356357
size_t left = 0;
@@ -379,7 +380,7 @@ static void process_recvzc_error(struct zc_conn *conn, int ret)
379380
stop = true;
380381
}
381382

382-
static void process_recvzc(struct io_uring __attribute__((unused)) *ring,
383+
static void process_recvzc(struct io_uring *ring,
383384
struct io_uring_cqe *cqe)
384385
{
385386
struct zc_conn *conn = get_connection(cqe->user_data);
@@ -390,7 +391,7 @@ static void process_recvzc(struct io_uring __attribute__((unused)) *ring,
390391
conn->stat_nr_cqes++;
391392

392393
if (!(cqe->flags & IORING_CQE_F_MORE)) {
393-
process_recvzc_error(conn, cqe->res);
394+
process_recvzc_error(ring, conn, cqe->res);
394395
return;
395396
}
396397
if (cqe->res < 0)
@@ -409,8 +410,11 @@ static void server_loop(struct io_uring *ring)
409410
{
410411
struct io_uring_cqe *cqe;
411412
unsigned int head, count = 0;
413+
int ret;
412414

413-
io_uring_submit_and_wait(ring, 1);
415+
ret = io_uring_submit_and_wait(ring, 1);
416+
if (ret < 0 && ret != -ETIME)
417+
t_error(1, ret, "io_uring_submit_and_wait failed\n");
414418

415419
io_uring_for_each_cqe(ring, head, cqe) {
416420
switch (cqe->user_data & REQ_TYPE_MASK) {

0 commit comments

Comments
 (0)