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