On Fri, Jul 07, 2023 at 08:50:01AM +0900, Damien Le Moal wrote: > On 7/6/23 22:09, Andreas Hindborg wrote: > > From: Andreas Hindborg <a.hindborg@xxxxxxxxxxx> > > > > Ublk zoned storage support relies on DRV_IN handling for zone report. > > Prepare for this change by adding offsets for the DRV_IN/DRV_OUT commands. > > > > Also add parenthesis to existing opcodes for better macro hygiene. > > > > Signed-off-by: Andreas Hindborg <a.hindborg@xxxxxxxxxxx> > > --- > > include/uapi/linux/ublk_cmd.h | 18 ++++++++++++++---- > > 1 file changed, 14 insertions(+), 4 deletions(-) > > > > diff --git a/include/uapi/linux/ublk_cmd.h b/include/uapi/linux/ublk_cmd.h > > index 4b8558db90e1..2ebb8d5d827a 100644 > > --- a/include/uapi/linux/ublk_cmd.h > > +++ b/include/uapi/linux/ublk_cmd.h > > @@ -229,12 +229,22 @@ struct ublksrv_ctrl_dev_info { > > __u64 reserved2; > > }; > > > > -#define UBLK_IO_OP_READ 0 > > +#define UBLK_IO_OP_READ 0 > > #define UBLK_IO_OP_WRITE 1 > > #define UBLK_IO_OP_FLUSH 2 > > -#define UBLK_IO_OP_DISCARD 3 > > -#define UBLK_IO_OP_WRITE_SAME 4 > > -#define UBLK_IO_OP_WRITE_ZEROES 5 > > +#define UBLK_IO_OP_DISCARD 3 > > +#define UBLK_IO_OP_WRITE_SAME 4 > > +#define UBLK_IO_OP_WRITE_ZEROES 5 > > +/* > > + * Passthrough (driver private) operation codes range between > > This is unclear... Here, what does "driver" refer to ? If it is the ublk > kernel driver, than these commands should not be defined in the uapi > header file, they should be defined in drivers/block/ublk.h. However, if > these are for the user space driver, like all the other operations, then Like normal IO, these passthrough requests needs userspace to handle too, usually they just belong to specific ublk target, such as report zones., so here it is part of UAPI. But yes, we should document it clearly, maybe something below? Ublk passthrough operation code ranges, and each passthrough operation provides generic interface between ublk kernel driver and ublk userspace, and this interface is usually used for handling generic block layer request, such as command of zoned report zones. Passthrough operation is only needed iff ublk kernel driver has to be involved for handling this operation. > let's clearly state so. But then, I still not understand why these need > a different naming pattern using the "__UBLK" prefix... I think __UBLK just meant we don't suggest userspace to use it directly, since the added macros are just for making ranges for DRV_IN and DRV_OUT, so we can check command direction easily be using this start/end info in both sides. Thanks, Ming