RFC: Does allocuio() need the UIO_MAXIOV KASSERT?

Rick Macklem <[email protected]>
Newsgroups gmane.os.freebsd.current
Message-ID <CAM5tNy4NuApQqXH05e9AjHGxVdidpBXKZaYR45pkzSc6b8XVmw@mail.gmail.com>
Hi,

There has been a push in the NFSv4 world to support
I/O RPCs even larger than 1Mbyte, which is currently
the limit in FreeBSD.

But increasing this, there is a glitch..
ZFS calls cloneuio(), which calls allocuio() that
triggers this KASSERT().

KASSERT(iovcnt <= UIO_MAXIOV,
    ("Requested %u iovecs exceed UIO_MAXIOV", iovcnt));

For a large write RPC, the server handles a list of
mbuf clusters as the iov. A 4Mbyte write will be in more
than 2K clusters.

Note that copyinuio() and copyoutuio() check for the
length exceeding UIO_MAXIOV, so I don't see any
reason for allocuio() needing this KASSERT()?

Can I get rid of it? rick
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.