Skip site navigation (1)Skip section navigation (2)
Date:      05 Feb 2001 12:30:50 -0500
From:      Randell Jesup <rjesup@wgate.com>
To:        Matt Dillon <dillon@earth.backplane.com>
Cc:        Matthew Jacob <mjacob@feral.com>, "Justin T. Gibbs" <gibbs@scsiguy.com>, Mike Smith <msmith@FreeBSD.ORG>, Dag-Erling Smorgrav <des@ofug.org>, Dan Nelson <dnelson@emsphone.com>, Seigo Tanimura <tanimura@r.dl.itc.u-tokyo.ac.jp>, arch@FreeBSD.ORG
Subject:   Re: Bumping up {MAX,DFLT}*PHYS (was Re: Bumping up {MAX,DFL}*SIZ in i386)
Message-ID:  <ybuelxdnik5.fsf@jesup.eng.tvol.net.jesup.eng.tvol.net>
In-Reply-To: Matt Dillon's message of "Sat, 3 Feb 2001 16:26:56 -0800 (PST)"
References:  <Pine.LNX.4.21.0102031323080.27128-100000@zeppo.feral.com> <200102040026.f140QuD12547@earth.backplane.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Matt Dillon <dillon@earth.backplane.com> writes:
>    This is a reasonable criticism, but putting aside the issue of bloating
>    kernel stack useage from huge struct buf structures there is also the 
>    issue of whether any static limit is 'reasonable'.

        Good point.

>    The device driver API supports arbitrary raw read and raw write
>    sizes, but nearly all the device drivers convert read() and write()
>    calls to physio() calls, and those then convert the parameters 
>    to struct buf / VOP_STRATEGY() calls.
>
>    There are only two solutions that I can see:
>
>    (1) have the SCSI tape device code not convert raw reads and writes
>	to VOP_STRATEGY calls and instead manage the KVA for the I/O via some
>	other mechanism.

        This seems rather painful and makes support for large IO's very
driver-dependant and confusing.

>    (2) Modify the 'struct buf' b_pages[] array to instead be a pointer
>	to an array.  Include the original static array under another name
>	for compatibility purposes and have the init code default to 
>	assigning b_pages to the original embedded static array.
>
>	Then the physio code could be adjusted to dynamically MALLOC the
>	necessary pages array if the static one in the supplied buffer is
>	insufficient.

        So, how reasonable is this?  It seems like a pretty good solution,
but I'm far from up-to-speed on the internals here.

-- 
Randell Jesup, Worldgate Communications, ex-Scala, ex-Amiga OS team ('88-94)
rjesup@wgate.com



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ybuelxdnik5.fsf>