On Fri, Jul 10, 2020 at 02:49:32PM +0100, Christoph Hellwig wrote: > On Fri, Jul 10, 2020 at 02:48:24PM +0100, Matthew Wilcox wrote: > > If we're going to go the route of changing the CQE, how about: > > > > struct io_uring_cqe { > > __u64 user_data; /* sqe->data submission passed back */ > > - __s32 res; /* result code for this event */ > > - __u32 flags; > > + union { > > + struct { > > + __s32 res; /* result code for this event */ > > + __u32 flags; > > + }; > > + __s64 res64; > > + }; > > }; > > > > then we don't need to change the CQE size and it just depends on the SQE > > whether the CQE for it uses res+flags or res64. > > How do you return a status code or short write when you just have > a u64 that is needed for the offset? it's an s64 not a u64 so you can return a negative errno. i didn't think we allowed short writes for objects-which-have-a-pos.