On Mon, Jun 25, 2012 at 05:06:58AM -0400, Christoph Hellwig wrote:
> On Sat, Jun 23, 2012 at 09:39:55AM +1000, Dave Chinner wrote:
> > Hmmmm. How often do we get real io completion occurring before we
> > call _xfs_buf_ioend() here? I can't see that it is common, so this
> > is probably fine, but perhaps a few numbers might help here? If it
> > is rare as we think it is, then yeah, that would work....
> The only case where I can see it ever hapen is when sending tons
> of separate I/Os in one go to a reall fast device, e.g. a very
> fragmented large directory to superfast battery backed dram device.
> And even then I don't think it matters very much - for reads we
> generally do not have an b_iodone handler attached, so for these
> the change does not make any different.
We will very soon - CRC checks after reading for disk will be done
after reads. The patch series I'm working on at the moment
introduces sanity checks of buffers on read completion - it doesn't
do CRC checks yet, but it moves all the checks we do on read
completion into iodone callbacks, and when CRCs are introduced they
will simply be slotted into those functions....
> For delayed writes the
> additional context switch also doesn't have a major impact on
> performance, so the only thing where we could see a difference
> is synchronous writes, of which we don't have a lot left, and
> essentially none unless the shrinkers kick in and need to do
> synchronous reclaims.