Re: [PATCH v4 4/5] nvme: wire-up uring-cmd support for io-passthru on char-device.

Christoph Hellwig
2022-05-07T05:03:36Z

Getting back to this after a good night's worth of sleep:

On Fri, May 06, 2022 at 08:57:53AM -0600, Jens Axboe wrote:
> > Just add this:
> >
> > "Add a small helper to act as the counterpart to nvme_add_user_metadata."
> >
> > with my signoff:
> >
> > Signed-off-by: Christoph Hellwig <hch@lst.de>
>
> Both done, thanks.

I think we're much better of folding "nvme: add nvme_finish_user_metadata
helper" into "nvme: refactor nvme_submit_user_cmd()" as the first basically
just redos the split done in the first patch in a more fine grained way
to allow sharing some of the metadata end I/O code with the uring path,
and basically only touches code changes in the first patch again.

> >> I did not do your async_size changes, I think you're jetlagged eyes
> >> missed that this isn't a sizeof thing on a flexible array, it's just the
> >> offset of it. Hence for non-sqe128, the the async size is io_uring_sqe -
> >> offsetof where pdu starts, and so forth.
> >
> > Hmm, this still seems a bit odd to me. So without sqe128 you don't even
> > get the cmd data that would fit into the 64-bit SQE?
>
> You do. Without sqe128, you get sizeof(sqe) - offsetof(cmd) == 16 bytes.
> With, you get 16 + 64, 80.

Can we please get a little documented helper that does this instead of
the two open coded places?