On Thu, May 09, 2024 at 08:19:40PM -0600, Jens Axboe wrote: > 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. OK, will do both two in V2. Thanks, Ming