Re: [RFC][PATCHSET] iov_iter work

From: Linus Torvalds
Date: Sun Jun 06 2021 - 18:47:15 EST


On Sun, Jun 6, 2021 at 3:05 PM Linus Torvalds
<torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> So I think iov_iter_init() would actually be better off just being
>
> *i = (struct iov_iter) {
> .iter_type = uaccess_kernel() ? ITER_KVEC : ITER_IOVEC,
> .data_source = direction,
> .iov = iov,
> .nr_segs = nr_segs,
> .iov_offset = 0,
> .count = count
> };
>
> with possibly a big comment about that ".opv = iov" thing being a
> union member assignment, and being either a iovec or a kvec.

I don't know what kind of mini-stroke I had, but ".opv" is obviously
supposed to be ".iov". Fingers just off by a small amount.

And yes, I realize that 'uaccess_kernel()' is hopefully always false
on any architectures we care about and so the compiler would just pick
one at compile time rather than actually having both those
initializers.

But I think that "the uaccess_kernel() KVEC case is legacy for
architectures that haven't converted to the new world order yet" thing
is just even more of an argument for not duplicating and writing the
code out in full on a source level (and making that normal case be
".iov = iov").

Linus