Partager via


IOCTL_STORAGE_BREAK_RESERVATION IOCTL (ntddstor.h)

Interrompt une réservation de disque. Dans un système multi-initiateur (« clustered »), un seul ordinateur peut réserver une ressource de disque, afin qu’aucun autre ordinateur ne puisse accéder au disque. Si l’ordinateur ne libère pas ou ne peut pas libérer la ressource en temps voulu, un moyen est nécessaire pour supprimer la réservation du disque par force.

Un moyen de forcer le système à libérer une ressource de disque réservé consiste à réinitialiser le bus. En fait, pour les périphériques de stockage dont les adaptateurs de bus sont gérés par le pilote de port SCSI, la requête IOCTL_STORAGE_BREAK_RESERVATION équivaut à IOCTL_STORAGE_RESET_BUS, qui effectue simplement une réinitialisation du bus, libérant toutes ses ressources réservées.

Pour les périphériques de stockage dont les adaptateurs de bus sont gérés par le pilote de port STOR, ce code de contrôle d’E/S offre une meilleure technique de rupture d’une réservation de disque. Cette technique est appelée « réinitialisation hiérarchique ». Lors de la réception d’une demande de IOCTL_STORAGE_BREAK_RESERVATION, le pilote de port STOR tente d’abord de supprimer la réserve sur l’unité logique en réinitialisant l’unité logique elle-même. En cas d’échec, le pilote de port STOR tente de réinitialiser l’appareil cible qui est le parent de l’unité logique. Uniquement lorsque la réinitialisation de l’appareil cible échoue, le pilote de port réinitialise le bus.

La réinitialisation du bus efface toutes les réservations d’appareils et les paramètres de vitesse de transfert, qui doivent ensuite être négociés à nouveau. Étant donné qu’il s’agit d’une opération fastidieuse, IOCTL_STORAGE_BREAK_RESERVATION est toujours préférable à une réinitialisation de bus simple.

L’appelant requiert uniquement l’accès en lecture pour émettre une réinitialisation de bus.

L’indicateur SrbStatus des SRB en attente est défini sur SRB_STATUS_BUS_RESET.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d’entrée

La mémoire tampon à Irp->AssociatedIrp.SystemBuffer contient une structure STORAGE_BREAK_RESERVATION_REQUEST qui identifie le bus à réinitialiser.

Longueur de la mémoire tampon d’entrée

Longueur d’une structure STORAGE_BREAK_RESERVATION_REQUEST.

Mémoire tampon de sortie

Aucun.

Longueur de la mémoire tampon de sortie

Aucun.

Bloc d’état

Le champ Informations est défini sur zéro. Le champ Status est défini sur STATUS_SUCCESS, ou éventuellement sur STATUS_INSUFFICIENT_RESOURCES, STATUS_NOT_IMPLEMENTED ou STATUS_INVALID_DEVICE_REQUEST.

Exigences

Exigence Valeur
d’en-tête ntddstor.h (include Ntddstor.h)

Voir aussi

IOCTL_STORAGE_RESET_BUS

STORAGE_BREAK_RESERVATION_REQUEST