On Wed, Feb 26, 2020 at 07:24:06AM -0700, Jens Axboe wrote: > On 2/26/20 1:37 AM, Bob Liu wrote: > > diff --git a/include/uapi/linux/io_uring.h b/include/uapi/linux/io_uring.h > > index a3300e1..98fa3f1 100644 > > --- a/include/uapi/linux/io_uring.h > > +++ b/include/uapi/linux/io_uring.h > > @@ -62,6 +62,8 @@ enum { > > IORING_OP_NOP, > > IORING_OP_READV, > > IORING_OP_WRITEV, > > + IORING_OP_READV_PI, > > + IORING_OP_WRITEV_PI, > > IORING_OP_FSYNC, > > IORING_OP_READ_FIXED, > > IORING_OP_WRITE_FIXED, > > So this one renumbers everything past IORING_OP_WRITEV, breaking the > ABI in a very bad way. I'm guessing that was entirely unintentional? > Any new command must go at the end of the list. > > You're also not updating io_op_defs[] with the two new commands, > which means it won't compile at all. I'm guessing you tested this on > an older version of the kernel which didn't have io_op_defs[]? And the real question is why we need ops insted of just a flag and using previously reserved fields for the PI pointer.