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

Andriy Gapon avg at freebsd.org
Fri Dec 10 14:48:27 UTC 2010


on 10/12/2010 15:22 Lev Serebryakov said the following:
> Hello, Freebsd-geom.
> 
>    I'm  digging  thought  GEOM/IO  code  and  can not find place, where
>  requests  from  userland to read more than MAXPHYS bytes, is splitted
>  into  several "struct bio"?

Check out g_disk_start().
The split is done based on disk-specific d_maxsize, not hardcoded MAXPHYS, of course.

>       It seems, that these children request are issued one-by-one, not in
>  parallel,   am  I  right?  Why?  It  breaks  down  parallelism,  when
>  underlying GEOM can process several requests simoltaneously?

How do you *issue* the child requests in parallel?
Of course, they can *run* in parallel if system configuration permits that and
request run time is sufficient for an overlap to happen.
Besides, there are no geoms under disk geom, it works on peripheral drivers.

But maybe I misunderstood your question and you talked about a different I/O layer
or different I/O path.

-- 
Andriy Gapon


More information about the freebsd-geom mailing list