Compartir a través de


Administración de colas de Storport

Para aprovechar las funcionalidades de los adaptadores de almacenamiento de alto rendimiento, los controladores de minipuerto deben ejercer el control sobre sus colas de dispositivos, pausar y reanudar estas colas de maneras que maximizarán la eficacia.

En el modelo de cola de puertos SCSI, la administración de colas es el dominio exclusivo del controlador de puerto. En el modelo de cola de Storport, el controlador de puerto proporciona varias rutinas de soporte técnico de administración de colas que proporcionan al controlador de miniporte una cantidad significativa de control de administración de colas.

En el modelo de cola de Storport, todas las solicitudes se ponen en cola en el controlador de puerto en colas por unidad lógica. Sin compatibilidad extendida con SRB, cada unidad lógica puede tener un máximo de 255 solicitudes pendientes. De lo contrario, la profundidad de la cola solo está limitada por los recursos del sistema disponibles o las funcionalidades del adaptador. Cuando se alcanza el límite establecido para la profundidad de la cola, Storport mantiene más solicitudes a esa unidad lógica hasta que el número de solicitudes pendientes a la unidad cae por debajo del máximo de cola.

No hay límites predefinidos de Storport en el número de solicitudes pendientes que puede tener un adaptador. Por ejemplo, un adaptador con 55 unidades lógicas conectadas con una profundidad de cola de 255 podría publicar hasta un máximo de 14 025 (55 x 255) solicitudes a la vez. Consulte el diagrama siguiente para obtener una descripción del modelo de puesta en cola del controlador de puerto.

diagrama que ilustra el modelo de puesta en cola del controlador de puerto.

Modelo de cola del controlador de puertos

Si el adaptador y una unidad lógica están listos para recibir una solicitud, el sistema llama a las rutinas HwStorBuildIo y HwStorStartIo del controlador de miniporte en ese orden.

A diferencia del puerto SCSI, Storport permite que los controladores de miniporte notifiquen al controlador de puerto las condiciones de disponibilidad. Estas comunicaciones se controlan mediante las siguientes ocho rutinas, lo que permite que el controlador de miniporte señale cuando la unidad lógica o el adaptador está en pausa o ocupado.

Rutina storport Acción realizada

StorPortPauseDevice

Pausar un dispositivo durante un período de tiempo especificado.

StorPortResumeDevice

Reanude un dispositivo en pausa.

StorPortPause

Pausar un adaptador durante un período de tiempo especificado.

StorPortResume

Reanude un adaptador en pausa.

StorPortDeviceBusy

Haga que un dispositivo esté ocupado hasta que la cola de dispositivos haya completado un número especificado de solicitudes de E/S.

StorPortDeviceReady

Vuelva a preparar un dispositivo ocupado para recibir solicitudes.

StorPortBusy

Haga que un adaptador esté ocupado hasta que haya completado un número especificado de solicitudes de E/S.

StorPortReady

Vuelva a preparar un adaptador ocupado para recibir solicitudes.

Mientras un dispositivo está en pausa o ocupado, el controlador de puerto no envía ninguna solicitud al dispositivo. Si un controlador de minipuerto completa una solicitud con un estado ocupado (SRB_STATUS_BUSY o SCSISTAT_BUSY), el controlador de puerto reintentará la solicitud un número indefinido de veces, hasta que se produzca un error en la solicitud o se complete.

Además de proporcionar un conjunto de rutinas de administración de colas explícitas que no están disponibles en el modelo de cola de puertos SCSI, el modelo de cola de Storport no usa las rutinas implícitas de administración de colas que emplea el puerto SCSI. En concreto, se omiten las notificaciones NextRequest y NextLuRequest .