On 5/9/24 7:14 PM, Ming Lei wrote: > Support to inject result for NOP so that we can inject failure from > userspace. It is very helpful for covering failure handling code in > io_uring core change. > > With nop flags, it could be possible to add more test feature for NOP in > future, but the NOP behavior of direct completion has to be kept. > > Cleared NOP SQE is required, look both liburing and Rust io-uring crate > clears SQE, and it shouldn't be one big deal for raw, especially it is > just NOP. I think this implementation looks fine, but probably would be best if you first had a prep patch that adds nop_flags to io_uring_sqe, and checks it in io_nop_prep() and fails if it's non-zero. Then we can mark that for stable, rather than need to do the whole thing. Then patch 2 adds the actual meat of this patch, and now adds the proper check in io_nop_prep() for whether any unknown flags are set. > diff --git a/include/uapi/linux/io_uring.h b/include/uapi/linux/io_uring.h > index 922f29b07ccc..5db3a209b302 100644 > --- a/include/uapi/linux/io_uring.h > +++ b/include/uapi/linux/io_uring.h > @@ -48,7 +48,10 @@ struct io_uring_sqe { > __u32 optname; > }; > }; > - __u32 len; /* buffer size or number of iovecs */ > + union { > + __u32 len; /* buffer size or number of iovecs */ > + __s32 result; /* for NOP to inject result only */ > + }; > union { And I'd drop that, just use 'len' throughout. Rest of the patch looks fine as-is. -- Jens Axboe