Message ID | 20220824054744.77812-4-ZiyangZhang@linux.alibaba.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ublk_drv: add USER_RECOVERY support | expand |
On Wed, Aug 24, 2022 at 01:47:38PM +0800, ZiyangZhang wrote: > We store pointer of task_work in pdu. And we should get ioucmd from pdu > since we prepare to only pass ioucmd to task_work function. > > Signed-off-by: ZiyangZhang <ZiyangZhang@linux.alibaba.com> > --- > drivers/block/ublk_drv.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c > index e08f636b0b9d..8add6e3ae15f 100644 > --- a/drivers/block/ublk_drv.c > +++ b/drivers/block/ublk_drv.c > @@ -555,6 +555,12 @@ static inline struct ublk_uring_cmd_pdu *ublk_get_uring_cmd_pdu( > return (struct ublk_uring_cmd_pdu *)&ioucmd->pdu; > } > > +static inline struct io_uring_cmd *ublk_uring_cmd_from_pdu( > + struct ublk_uring_cmd_pdu *pdu) > +{ > + return container_of((u8 *)pdu, struct io_uring_cmd, pdu[0]); > +} > + Patch isn't supposed to be written in this way, it is one helper, either change its caller in this patch, or merge this one wth the patch which applies it. Also looks this change belong to include/linux/io_uring.h if you think it is useful. thanks, Ming
On 2022/8/29 11:06, Ming Lei wrote: > On Wed, Aug 24, 2022 at 01:47:38PM +0800, ZiyangZhang wrote: >> We store pointer of task_work in pdu. And we should get ioucmd from pdu >> since we prepare to only pass ioucmd to task_work function. >> >> Signed-off-by: ZiyangZhang <ZiyangZhang@linux.alibaba.com> >> --- >> drivers/block/ublk_drv.c | 6 ++++++ >> 1 file changed, 6 insertions(+) >> >> diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c >> index e08f636b0b9d..8add6e3ae15f 100644 >> --- a/drivers/block/ublk_drv.c >> +++ b/drivers/block/ublk_drv.c >> @@ -555,6 +555,12 @@ static inline struct ublk_uring_cmd_pdu *ublk_get_uring_cmd_pdu( >> return (struct ublk_uring_cmd_pdu *)&ioucmd->pdu; >> } >> >> +static inline struct io_uring_cmd *ublk_uring_cmd_from_pdu( >> + struct ublk_uring_cmd_pdu *pdu) >> +{ >> + return container_of((u8 *)pdu, struct io_uring_cmd, pdu[0]); >> +} >> + > > Patch isn't supposed to be written in this way, it is one helper, either > change its caller in this patch, or merge this one wth the patch which > applies it. > > Also looks this change belong to include/linux/io_uring.h if you think > it is useful. Maybe add a helper in include/linux/io_uring.h is good since ioucmd and pdu is only used by NVMe and ublk_drv. NVMe does not need to transform pdu to ioucmd. But in ublk_drv if we want to get ioucmd in task work, this transformation is needed: struct callback_head *work --> struct ublk_uring_cmd_pdu *pdu --> struct io_uring_cmd *cmd Regards, Zhang
diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index e08f636b0b9d..8add6e3ae15f 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -555,6 +555,12 @@ static inline struct ublk_uring_cmd_pdu *ublk_get_uring_cmd_pdu( return (struct ublk_uring_cmd_pdu *)&ioucmd->pdu; } +static inline struct io_uring_cmd *ublk_uring_cmd_from_pdu( + struct ublk_uring_cmd_pdu *pdu) +{ + return container_of((u8 *)pdu, struct io_uring_cmd, pdu[0]); +} + static inline bool ubq_daemon_is_dying(struct ublk_queue *ubq) { return ubq->ubq_daemon->flags & PF_EXITING;
We store pointer of task_work in pdu. And we should get ioucmd from pdu since we prepare to only pass ioucmd to task_work function. Signed-off-by: ZiyangZhang <ZiyangZhang@linux.alibaba.com> --- drivers/block/ublk_drv.c | 6 ++++++ 1 file changed, 6 insertions(+)