Where userland read/write requests, whcih is larger than MAXPHYS, are splitted?

Andriy Gapon avg at freebsd.org
Fri Dec 10 15:03:31 UTC 2010


on 10/12/2010 16:48 Andriy Gapon said the following:
> But maybe I misunderstood your question and you talked about a different I/O layer
> or different I/O path.
> 

Oh, probably you talk about physread/physwrite == physio.
Indeed, it issues bio-s with max size of si_iosize_max and runs them sequentially.
 Besides, if uio is really "vectored", then each uio sub-buffer is processed
sequentially too.
This is probably less fast than running the requests in parallel; plus side could
be that less KVA is required for mapping user space buffer (UIO_USERSPACE case)
into kernel.  Not sure if the latter is much of concern though.  The sequential
code is simpler too :-)

-- 
Andriy Gapon


More information about the freebsd-geom mailing list