simplify disksort, please review.

Antoine Brodin antoine.brodin at laposte.net
Mon Jun 13 11:26:32 GMT 2005


Jeff Roberson <jroberson at chesapeake.net> wrote:
> http://www.chesapeake.net/~jroberson/disksort.diff
> 
> Our disksort algorithm used to be complicated by the BIO_ORDERED flag,
> which could cause us to make some exceptions in the sorting.  When the
> ordered support was removed we never simplified the algorithm.  The patch
> above gets rid of the switch point and associated logic.  It's now a
> simple hinted insertion sort with a one way scan.  Since it's a fairly
> central algorithm, I'd appreciate a review.

Sorry for the late review, but there's perhaps a problem:

If you have this situation:

queue:------------ 5 - 6 - 7
last_offset: 4     |
insert_point:------+

And you bioq_disksort a bio with an offset of 1:

queue:------------ 5 - 1 - 6 - 7
last_offset: 4     |
insert_point:------+

It looks weirdly sorted.

IIRC, the previous algorithm gave:

queue:------------ 5 - 6 - 7 - 1

Looking at revision 1.83, it looks like insert_point was useless, not
switch_point.

I can't test this change since disksort doesn't seem to be used by 
ata(4) anymore (is there any reason ?).

Cheers,

Antoine


More information about the freebsd-arch mailing list