NVMe ストレージ (hdisk) デバイス・ドライバー
目的
Peripheral Component Interconnect Express (PCIe) およびファイバー・チャネル (FC) 接続の Non-Volatile Memory Express (NVMe) ストレージ・デバイスをサポートします。
構文
<#include /usr/include/sys/nvme.h>
<#include /usr/include/sys/devinfo.h>
説明
/dev/hdiskn スペシャル・ファイルは、NVMe ストレージ・デバイス・ドライバーへのインターフェースを提供します。
装置依存のサブルーチン
NVMe ストレージ・デバイス・ドライバーは、 open、 close、 read、 write、および ioctl の各サブルーチンをサポートします。
ioctl サブルーチン
IOCINFO 操作とともに、NVMe ストレージ・デバイス・ドライバーは NVMe ストレージ・デバイスの操作を定義します。
IOCINFO 操作は、以下のように、 ioctl サブルーチンを使用するすべてのデバイス・ドライバーに対して定義されます。
IOCINFO 操作は、 devinfo 構造体を戻します。 devinfo 構造体は、 /usr/include/sys/devinfo.h ヘッダー・ファイルで定義されます。 この構造体の装置タイプは DD_SCDISKで、サブタイプは DS_PVです。 フラグ・フィールドは、値 DF_SSD および DF_NVMEを示すために使用されます。 DF_4B_ALINGED フラグが事前設定されている場合、このフラグは、すべてのホスト・データ・バッファー・アドレスを 4 バイト・アドレスに位置合わせする必要があることを示します。
NVMe ストレージ ioctl 操作
ioctl 操作がサポートされます。- NVME パスSTHRU
- passthru コマンドを NVMe ストレージ・デバイスに送信するためのオプションを提供します。
NVME_PASSTHRU操作の arg パラメーターは、 /usr/include/sys/nvme.h ヘッダー・ファイルに定義されているNVME_PASSTHRU構造体のアドレスです。注: admin コマンドはアダプター・デバイスにのみ送信でき、 NVM コマンドはストレージ (hdisk) デバイスにのみ送信できます。 そうしないと、コマンドの結果として、データ破損などの未定義の動作が発生する可能性があります。 すべての NVMe コマンドの命令コードは、コマンド・セット内でのみ固有であり、命令コード値は、異なるコマンド・セット内の異なる操作に使用できます。NVMe ストレージ・デバイスに対して NVMe passthru コマンドを発行する場合、特定の
path_idを指定できます。 passthru コマンドに特定のpath_idを使用する場合は、flagsフィールドの NVME_PASS_PASSTHRU フラグとpath_idフィールドで使用するpath_idの両方を構成する必要があります。ホストによって使用されるエンディアン形式で
dword_10をdword_15データに書き込むことができます。この形式では、(左端の) ビット 31 が最上位ビットになり、(右端の) ビット 0 が NVMe 仕様に従って最下位ビットになります。 例えば、 0xAC ブロックを読み取って FUA を設定するには、passthru構造内のdword_10を 0x400000ABに設定します。passthru コマンドを使用して転送されるデータ内の 2 つのフィールドは、 バイト反転 する必要があります。 例えば、Identify Namespace によって返されるデータから名前空間サイズ (NSZE) を読み取るには、データ・バッファーのバイト 0 から 7 が バイト反転でなければなりません。
のpassthruコマンドが失敗した場合、
ioctlサブルーチンの戻り-1 。 戻り値-1ドライバーがコントローラーにコマンドを送信できなかったか、タイムアウトが発生する前にコントローラーが応答しなかったことを示します。errnoフラグがEINVAL値に設定されている場合、 resp.status パラメーターには、無効なフィールドを示すコードが含まれます。passthru コマンドが正常に実行されるのは、
ioctlサブルーチンが 0 を戻し、 resp.status パラメーターが 0 を含んでいる場合です。 passthru コマンドは、読み取り操作または書き込み操作を実行することによって別のユーザーによって開始されたコマンドと並行して実行されます。