Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

io_uring/net: add generic multishot retry helper

This is just moving io_recv_prep_retry() higher up so it can get used
for sends as well, and rename it to be generically useful for both
sends and receives.

Signed-off-by: Jens Axboe <axboe@kernel.dk>

+12 -12
+12 -12
io_uring/net.c
··· 185 185 return 0; 186 186 } 187 187 188 + static inline void io_mshot_prep_retry(struct io_kiocb *req, 189 + struct io_async_msghdr *kmsg) 190 + { 191 + struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); 192 + 193 + req->flags &= ~REQ_F_BL_EMPTY; 194 + sr->done_io = 0; 195 + sr->len = 0; /* get from the provided buffer */ 196 + req->buf_index = sr->buf_group; 197 + } 198 + 188 199 #ifdef CONFIG_COMPAT 189 200 static int io_compat_msg_copy_hdr(struct io_kiocb *req, 190 201 struct io_async_msghdr *iomsg, ··· 669 658 return io_recvmsg_prep_setup(req); 670 659 } 671 660 672 - static inline void io_recv_prep_retry(struct io_kiocb *req, 673 - struct io_async_msghdr *kmsg) 674 - { 675 - struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); 676 - 677 - req->flags &= ~REQ_F_BL_EMPTY; 678 - sr->done_io = 0; 679 - sr->len = 0; /* get from the provided buffer */ 680 - req->buf_index = sr->buf_group; 681 - } 682 - 683 661 /* 684 662 * Finishes io_recv and io_recvmsg. 685 663 * ··· 694 694 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); 695 695 int mshot_retry_ret = IOU_ISSUE_SKIP_COMPLETE; 696 696 697 - io_recv_prep_retry(req, kmsg); 697 + io_mshot_prep_retry(req, kmsg); 698 698 /* Known not-empty or unknown state, retry */ 699 699 if (cflags & IORING_CQE_F_SOCK_NONEMPTY || kmsg->msg.msg_inq < 0) { 700 700 if (sr->nr_multishot_loops++ < MULTISHOT_MAX_RETRY)