On Mon, Apr 22, 2024 at 12:16:12PM -0600, Jens Axboe wrote: > On 4/7/24 7:03 PM, Ming Lei wrote: > > sqe->flags is u8, and now we have used 7 bits, so take the last one for > > extending purpose. > > > > If bit7(IOSQE_HAS_EXT_FLAGS_BIT) is 1, it means this sqe carries ext flags > > from the last byte(.ext_flags), or bit23~bit16 of sqe->uring_cmd_flags for > > IORING_OP_URING_CMD. > > > > io_slot_flags() return value is converted to `ULL` because the affected bits > > are beyond 32bit now. > > If we're extending flags, which is something we arguably need to do at > some point, I think we should have them be generic and not spread out. Sorry, maybe I don't get your idea, and the ext_flag itself is always initialized in io_init_req(), like normal sqe->flags, same with its usage. > If uring_cmd needs specific flags and don't have them, then we should > add it just for that. The only difference is that bit23~bit16 of sqe->uring_cmd_flags is borrowed for uring_cmd's ext flags, because sqe byte0~47 have been taken, and can't be reused for generic flag. If we want to use byte48~63, it has to be overlapped with uring_cmd's payload, and it is one generic sqe flag, which is applied on uring_cmd too. That is the only way I thought of, or any other suggestion for extending sqe flags generically? Thanks, Ming