Delen via


Interne wachtrij van stuurprogramma voor SCSI-poort blokkeren

Het stuurprogramma voor de SCSI-poort blokkeert de interne wachtrij wanneer er een foutsituatie optreedt waarvoor arbitrage van het klassestuurprogramma is vereist. Door de wachtrij te blokkeren, kan de SCSI-poort de foutvoorwaarde rapporteren aan het klassestuurprogramma en het klassestuurprogramma de mogelijkheid geven om de fout te analyseren voordat de verwerking van de aanvragen die in de wachtrij blijven, wordt hervat. Als het medium bijvoorbeeld wordt gewijzigd, moet een aanvraag in de wachtrij mogelijk worden geannuleerd, maar is bemiddeling door het klasse-stuurprogramma vereist. Alleen het klassestuurprogramma heeft voldoende contextuele informatie om te bepalen of het verwijderen van een bepaald type media van invloed is op een bepaalde aanvraag.

Als een stuurprogramma van de opslagklasse de SrbFlags van een bepaalde aanvraag combineert met een logische OF-operatie met SRB_FLAGS_NO_QUEUE_FREEZE, zal de SCSI-poort de wachtrij niet bevriezen als gevolg van problemen met die specifieke aanvraag. Anders blokkeert de SCSI-poort de wachtrij onder een van de volgende voorwaarden:

  • Het apparaat voldoet niet aan de aanvraag en geeft een status terug van SCSISTAT_CHECK_CONDITION of SCSISTAT_COMMAND_TERMINATED

  • De aanvraag verloopt.

  • Tijdens het uitvoeren van een verzoek treedt er een bus-reset op in het apparaat.

  • Een aanvraag wordt beĆ«indigd door een busberichtopdracht, zoals SCSIMESS_ABORT

SCSI-poort geeft aan dat de wachtrij is geblokkeerd door de aanvraag te retourneren die de blokkering heeft veroorzaakt met de SRB_STATUS_QUEUE_FROZEN vlag die is ingesteld in de SrbStatus lid van de SRB. SCSI Port plaatst nieuwe aanvragen van het klassestuurprogramma in de wachtrij, maar zolang de wachtrij bevroren is, zal SCSI Port geen aanvragen doorsturen naar het apparaat anders dan autosense- en stroomaanvragen.

Als de vlag SRB_FLAGS_BYPASS_FROZEN_QUEUE is ingesteld in het SrbFlags-lid van een verzoek, omzeilt de SCSI-poort de bevroren wachtrij en wordt het verzoek direct uitgevoerd. Elke volgende aanvraag waarin SrbFlags is ORed met SRB_FLAGS_BYPASS_FROZEN_QUEUE zorgt ervoor dat de SCSI-poort de wachtrij leegt.

Stuurprogramma's op een hoger niveau kunnen SCSI Port dwingen om de blokkering van de wachtrij op te heffen met behulp van een SRB_FUNCTION_RELEASE_QUEUE release-wachtrijaanvraag. SRB_FUNCTION_FLUSH_QUEUE de blokkering van de wachtrij ook opheffen nadat alle aanvragen in de wachtrij zijn geannuleerd.