On Wed, Sep 25, 2024 at 12:01:01AM -0600, Jens Axboe wrote: > The normal policy is that anything that is read-only should remain > stable after ->prep() has been called, so that ->issue() can use it. > That means the application can keep it on-stack as long as it's valid > until io_uring_submit() returns. For structs/buffers that are copied to > after IO, those the application obviously need to keep around until they > see a completion for that request. So yes, for the xattr cases where the > struct is copied to at completion time, those do not need to be stable > after ->prep(), could be handled purely on the ->issue() side. Hmm... Nothing in xattr is copied in both directions, actually. AFAICS, the only copy-in you leave to ->issue() is the data for write and sendmsg and ->msg_control for sendmsg. Wait, there's that ioctl-like mess you've got, so anything that feels like doing (seems to include at least setsockopt)... Oh, well...