Subject: Re: New device buffer queue strategy
To: Jason R Thorpe <thorpej@wasabisystems.com>
From: Manuel Bouyer <bouyer@antioche.lip6.fr>
List: tech-perform
Date: 09/05/2002 11:01:15
On Wed, Sep 04, 2002 at 01:57:52PM -0700, Jason R Thorpe wrote:
> On Wed, Sep 04, 2002 at 10:50:17PM +0200, Manuel Bouyer wrote:
>
> > But in this case wouldn't they already be adjacent at the upper level ?
> > What we say here is that MAXPHYS for a raid-0 raid is the sum of the MAXPHYSs
> > of the underlying devices.
>
> Why would they already be adjacent at the upper level? The RAID driver
> simply chunks up the larger transfer into smaller ones at the correct
> offsets and fires them off. (For a simpler version, look at ccd.c)
Hum, yes you're right. They may not be adjacent, just at offsets multiples of
the strip size.
>
> > Hum, I didn't consider the case when the stripe unit size is smaller
> > than the underlying MAXPHYS. Really raidframe's MAXPHYS is n*stripe unit size.
>
> Right, RAIDframe (or ccd) is going to get at most a MAXPHYS-sized transfer
> in the current scheme. Maybe it gets several of those. It fires them off,
> and when it does so essentially guarantees that the request for each component
> device is going to be < MAXPHYS (for simple RAID-0, the best you can hope for
> is min(interleave_size, MAXPHYS/num_components), right?)
Yes. This is why going to a variable, per-disk MAXPHYS can help here:
raidframe could use a much larger MAXPHYS than the underlying disks in
some cases.
As you explained, it won't cover all cases where requests could be merged at
the underlying device. But still I think it's worth it :)
--
Manuel Bouyer, LIP6, Universite Paris VI. Manuel.Bouyer@lip6.fr
--