This was introduced with the message ring opcode, but isn't strictly required for the request itself. The sender can encode what is needed in user_data, which is passed to the receiver. It's unclear if having a separate flag that essentially says "This CQE did not originate from an SQE on this ring" provides any real utility to applications. While we can always re-introduce a flag to provide this information, we cannot take it away at a later point in time. Remove the flag while we still can, before it's in a released kernel.
Showing the changes to include/uapi/linux (1 of 2 files). Show all
Unified · Split
| @@ -201,11 +201,9 @@ struct io_uring_cqe { · 200 unmodified lines | |||
| 201 | * | 201 | * |
| 202 | * IORING_CQE_F_BUFFER If set, the upper 16 bits are the buffer ID | 202 | * IORING_CQE_F_BUFFER If set, the upper 16 bits are the buffer ID |
| 203 | * IORING_CQE_F_MORE If set, parent SQE will generate more CQE entries | 203 | * IORING_CQE_F_MORE If set, parent SQE will generate more CQE entries |
| 204 | * IORING_CQE_F_MSG If set, CQE was generated with IORING_OP_MSG_RING | ||
| 205 | */ | 204 | */ |
| 206 | #define IORING_CQE_F_BUFFER (1U << 0) | 205 | #define IORING_CQE_F_BUFFER (1U << 0) |
| 207 | #define IORING_CQE_F_MORE (1U << 1) | 206 | #define IORING_CQE_F_MORE (1U << 1) |
| 208 | #define IORING_CQE_F_MSG (1U << 2) | ||
| 209 | 207 | ||
| 210 | enum { | 208 | enum { |
| 211 | IORING_CQE_BUFFER_SHIFT = 16, | 209 | IORING_CQE_BUFFER_SHIFT = 16, |