DISKSORT(9F)            Kernel Functions for Drivers            DISKSORT(9F)
NAME
       disksort - single direction elevator seek sort for buffers
SYNOPSIS
       #include <sys/conf.h>
       #include <sys/ddi.h>
       #include <sys/sunddi.h>
       void       
disksort(
struct diskhd *dp, 
struct buf *bp);
INTERFACE LEVEL
       illumos DDI specific (illumos DDI).
PARAMETERS
       dp             A pointer to a 
diskhd structure. A 
diskhd structure is
             essentially identical to head of a buffer structure (see             
buf(9S)). The only defined items of interest for this structure
             are the 
av_forw and 
av_back structure elements which are used
             to maintain the front and tail pointers of the forward linked             
I/O request queue.       
bp             A pointer to a buffer structure. Typically this is the 
I/O             request that the driver receives in its strategy routine (see             
strategy(9E)). The driver is responsible for initializing the             
b_resid structure element to a meaningful sort key value prior
             to calling 
disksort().
DESCRIPTION
       The function 
disksort() sorts a pointer to a buffer into a single
       forward linked list headed by the 
av_forw element of the argument       
*dp.
       It uses a one-way elevator algorithm that sorts buffers into the
       queue in ascending order based upon a key value held in the argument
       buffer structure element 
b_resid.
       This value can either be the driver calculated cylinder number for
       the 
I/O request described by the buffer argument, or simply the
       absolute logical block for the 
I/O request, depending on how fine
       grained the sort is desired to be or how applicable either quantity
       is to the device in question.
       The head of the linked list is found by use of the 
av_forw structure
       element of the argument 
*dp. The tail of the linked list is found by
       use of the 
av_back structure element of the argument 
*dp. The 
av_forw       element of the 
*bp argument is used by 
disksort() to maintain the
       forward linkage. The value at the head of the list presumably
       indicates the currently active disk area.
CONTEXT
       This function can be called from user, interrupt, or kernel context.
SEE ALSO
       strategy(9E), 
buf(9S)       Writing Device DriversWARNINGS
       The 
disksort() function does no locking. Therefore, any locking is
       completely the responsibility of the caller.
                              January 16, 2006                  DISKSORT(9F)