Re: [PATCH 4/5] block: add support for vectored copies

Keith Busch
2025-05-22T16:38:30Z

On Thu, May 22, 2025 at 03:58:18PM +0200, Hannes Reinecke wrote:
> On 5/22/25 00:31, Keith Busch wrote:
> > ---
> > block/blk-lib.c | 50 ++++++++++++++++++++++++----------
> > block/ioctl.c | 59 +++++++++++++++++++++++++++++++++++++++++
> > include/linux/blkdev.h | 2 ++
> > include/uapi/linux/fs.h | 14 ++++++++++
> > 4 files changed, 111 insertions(+), 14 deletions(-)
> >
> Any specific reason why this is a different patch, and not folded into
> patch 2? It really feels odd to continuously updating interfaces which
> have been added with the same patchset...

Sure, I can do that if that's preferred. I just started this as simple
as possible, and added new capabilities from there. I thought having the
patch set show the journey might make it easier to review. If the
evolving interfaces are not helping, though, I don't mind squashing them.

> > case BLKCPY:
> > return blk_ioctl_copy(bdev, mode, argp);
> > + case BLKCPY_VEC:
> > + return blk_ioctl_copy_vec(bdev, mode, argp);
> > case BLKZEROOUT:
> > return blk_ioctl_zeroout(bdev, mode, arg);
> > case BLKGETDISKSEQ:
>
> And that makes it even worse; introducing two ioctls which basically do
> the same thing (or where one is actually a special case of the other)
> is probably not what we should be doing.

There are many interfaces that have a single vs vectored user input.
It's like read vs readv. The use cases I'm working with are in-kernel
though so I don't strongly need these user interfaces here, but it's
been great for testing. I developed some that would work well in
blktests, for example.