Multipfad-E/A unterstützt jetzt erweiterte Speicheranforderungsblöcke.
Plattformen
Server – Windows Server 2012
BESCHREIBUNG
In Windows Server 2012-Struktur ersetzt STORAGE REQUEST _ _ BLOCK (erweiterter SRB) den SCSI _ REQUEST BLOCK _ (Legacy-SRB) im Kernspeicherstapel. Erweiterte SRBs replizieren die Funktionalität der Legacy-SRBs, sind aber auch erweiterbar und skalierbar.
Multipfad-E/A (MPIO) unterstützt erweiterte SRBs und ermöglicht es Gerätespezifischen Modulen (DSMs), auch erweiterte SRB-Unterstützung anzugeben. Damit der Speicherstapel eines Multipfadgeräts erweiterte SRBs verwenden kann, müssen jedoch alle Komponenten im Stapel erweiterte SRBs unterstützen, einschließlich DSM. Beachten Sie, dass das microsoft-in-box-DSM MSDSM erweiterte SRBs unterstützt.
Die SCSI PASS THROUGH EX-Struktur ist nicht Teil der erweiterten _ _ MPIO-Pass-Through-Struktur, da der erweiterte SCSI-Pass-Through je nach Befehlszeilendebugger (CDB) eine variable Größe _ haben kann. Stattdessen verfügt der erweiterte MPIO-Pass-Through über ein Feld, das den Offset vom Anfang der erweiterten MPIO-Pass-Through-Struktur zur _ SCSI-PASS _ THROUGH _ EX-Struktur beschreibt. Der Aufrufer muss sicherstellen, dass er einen Puffer der entsprechenden Größe zuteilen und den SCSI-Pass-Through-Offset ordnungsgemäß festlegen. Solange der Aufrufer die Regeln für erweiterte SCSI-Pass-Throughs einfing, sollte es keine zusätzlichen Arbeit für ihn geben, um den erweiterten MPIO-Pass-Through zu verwenden.
Hinweis
Wenn das DSM erweiterte SRBs nicht unterstützt, führt MPIO zu einem Fehler bei erweiterten MPIO-Pass-Through-Anforderungen, für die das _ MPIO-IOCTL-FLAG _ _ INVOLVE _ DSM festgelegt ist.
Manifestation
Wenn ein Teil des Speicherstapels des Geräts, einschließlich DSM, keine erweiterten SRBs unterstützt, verwendet der Speicherstapel wieder ältere SRBs.
Lösung
Es gibt nur zwei MPIO-Anforderungen für ein DSM zur Unterstützung von STORAGE _ REQUEST _ BLOCKS:
- Das DSM muss seinen Typ als DsmType6 melden.
- Das DSM muss die DSM-Funktion _ ADDRESS _ TYPE SUPPORTED _ bereitstellen.
Wenn das DSM DsmType6 nicht meldet oder DsmType6 meldet, aber nicht die DSM ADDRESS TYPE SUPPORTED-Funktion zur Verfügung stellt, geht MPIO davon aus, dass _ _ das DSM erweiterte SRBs nicht _ unterstützt.
Die DSM _ ADDRESS _ TYPE _ SUPPORTED-Funktion akzeptiert zwei Parameter, von denen einer ein Adresstyp ist. Dieser Adresstyp muss einer der in srb.h definierten STORAGE _ ADDRESS _ _ * TYPE-Werte sein. Das DSM muss TRUE zurückgeben, wenn es den angegebenen Adresstyp unterstützt, ander nicht FALSE. Die Definition von "Unterstützung" hängt letztendlich vom DSM ab. MPIO verwendet diese Funktion, um sicherzustellen, dass sich das DSM nicht falsch verhält, wenn ihm ein erweiterter SRB mit einer STOR ADDRESS-Struktur des angegebenen Typs _ übergeben wird. Daher ruft MPIO diese Funktion im Allgemeinen auf, wenn ein Multipfadgerät aufzählt, aber die Funktion kann jederzeit aufgerufen werden.
Wenn ein DSM nie die STOR-ADRESSE eines erweiterten SRB berührt, kann es TRUE für jeden gültigen _ _ SPEICHERADRESSENTYP-Wert _ _ * zurückgeben. Sehen Sie sich das Beispiel-DSM im WDK an.
Weitere wichtige Hinweise
- DSMs, die erweiterte SRBs unterstützen, müssen sowohl SCSI REQUEST BLOCK-Strukturen als auch _ _ STORAGE REQUEST _ _ BLOCK-Strukturen verarbeiten können. Nur weil ein DSM meldet, dass es erweiterte SRBs unterstützt, bedeutet dies nicht, dass es ausschließlich erweiterte SRBs erhält. Sie kann zusätzlich zu erweiterten SRBs weiterhin eine beliebige Anzahl von Legacy-SRBs empfangen und muss daher in der Lage sein, beides zu verarbeiten.
- Wir haben im WDK eine Headerdatei namens srbhelper.h bereitgestellt, die Inlinefunktionen enthält, die Treiber unterstützen, die sowohl erweiterte als auch ältere SRBs verarbeiten müssen. Unser Beispiel-DSM verwendet diesen Header, damit Sie ihn als Beispiel für die Verwendung dieser Funktionen verwenden können.
- Ein DSM, das erweiterte SRBs nicht unterstützt, muss nie erweiterte SRBs verarbeiten.
- Es ist möglich, dass ein MPIO dazu führt, dass der Speicherstapel auf ältere SRBs zurückfallt, wenn das DSM keinen bestimmten SPEICHERADRESSENTYP unterstützt (aber andernfalls erweiterte _ _ _ * SRBs unterstützt).
- "BTL8" ist der einzige _ _ SPEICHERADRESSENTYP, _ * der derzeit für die Windows Server 2012.