By default, io_uring will stop submitting a batch of requests if we run into an error submitting a request. This isn't strictly necessary, as the error result is passed out-of-band via a CQE anyway. And it can be a bit confusing for some applications. Provide a way to setup a ring that will continue submitting on error, when the error CQE has been posted. There's still one case that will break out of submission. If we fail allocating a request, then we'll still return -ENOMEM. We could in theory post a CQE for that condition too even if we never got a request. Leave that for a potential followup.
Showing the changes to include/uapi (1 of 2 files). Show all
Unified · Split
| @@ -101,6 +101,7 @@ enum { · 100 unmodified lines | |||
| 101 | #define IORING_SETUP_CLAMP (1U << 4) /* clamp SQ/CQ ring sizes */ | 101 | #define IORING_SETUP_CLAMP (1U << 4) /* clamp SQ/CQ ring sizes */ |
| 102 | #define IORING_SETUP_ATTACH_WQ (1U << 5) /* attach to existing wq */ | 102 | #define IORING_SETUP_ATTACH_WQ (1U << 5) /* attach to existing wq */ |
| 103 | #define IORING_SETUP_R_DISABLED (1U << 6) /* start with ring disabled */ | 103 | #define IORING_SETUP_R_DISABLED (1U << 6) /* start with ring disabled */ |
| 104 | #define IORING_SETUP_SUBMIT_ALL (1U << 7) /* continue submit on error */ | ||
| 104 | 105 | ||
| 105 | enum { | 106 | enum { |
| 106 | IORING_OP_NOP, | 107 | IORING_OP_NOP, |