BUFSIZ = 1024, still ?

Andriy Gapon avg at FreeBSD.org
Tue Aug 21 09:39:54 UTC 2012


on 21/08/2012 04:59 Scott Long said the following:
> This gets brought up from time to time, and I honestly thought that I swept
> most of the problems up a few years ago.  The mistake that I made in the mlx
> driver that was recently corrected was evidence of a previous sweep.
> 
> If anyone wants to do another sweep, the thing to grep for is any drivers
> that use MAXPHYS to size their i/o's.  For the drivers that do that, you then
> have to see if they can actually handle an arbitrary number of scatter-gather
> elements.  If they can't then they need to stop using MAXPHYS and start using
> a constant that applies to the driver.  My quick scan shows the following
> would need to be investigated:
> 
> sys/dev/ata (legacy ata) /sys/dev/isp /sys/dev/mmcsd /sys/dev/mvs
> 
> The only other problem is that struct but contains an element sized on
> MAXPHYS for doing swapper I/O.  Increasing MAXPHYS will increase this, and at
> one point I think that Alan Cox might have wanted to find a better way to
> hold swap info.  Otherwise, increasing MAXPHYS causes no problems and is
> something that has run in production for quite some time at places like Yahoo
> and Netflix.

I would like to use this opportunity to remind about another abuse in drivers:
MAXBSIZE.  This constant should be private to buffer cache / FS drivers layer,
but some drivers abuse it for things related to physical I/O (mostly [only?] as
bus_dma_tag_create parameter).

-- 
Andriy Gapon


More information about the freebsd-current mailing list