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)