Go to main content
Oracle® Solaris 11.3 デバイスドライバの記述

印刷ビューの終了

更新: 2016 年 11 月
 
 

SCSI HBA ドライバに固有の問題

このセクションでは、SCSI HBA ドライバに固有の問題について説明します。

HBA ドライバのインストール

SCSI HBA ドライバはリーフドライバと同様の方法でインストールされます。ドライバのコンパイル、ロード、パッケージ化、およびテストを参照してください。相違点は、次の例に示すとおり、add_drv(1M) コマンドではドライバクラスを SCSI として指定する必要があることです。

# add_drv -m" * 0666 root root" -i'"pci1077,1020"' -c scsi isp

HBA の構成プロパティー

HBA デバイスのインスタンスへの接続時に、scsi_hba_attach_setup(9F) はその HBA インスタンス用の SCSI 構成プロパティーをいくつか作成します。特定のプロパティーが作成されるのは、HBA インスタンスにすでに接続されている同じ名前の既存のプロパティーがない場合のみです。この制限により、HBA 構成ファイル内のデフォルトのプロパティー値が上書きされなくなります。

HBA ドライバは、ddi_prop_get_int(9F) を使用して各プロパティーを取得します。次に、HBA ドライバはプロパティーのデフォルト値の変更または受け入れを行って、HBA ドライバに固有の操作を構成します。

scsi-reset-delay プロパティー

scsi-reset-delay プロパティーは、SCSI バスまたは SCSI デバイスによるリセット遅延の回復時間をミリ秒単位で指定する整数です。

scsi-options プロパティー

scsi-options プロパティーは、個別に定義されたビットを通じていくつかのオプションを指定する整数です。

  • SCSI_OPTIONS_DR (0x008) – 設定しない場合、HBA はターゲットデバイスに切り離しの特権を与えません。

  • SCSI_OPTIONS_LINK (0x010) – 設定しない場合、HBA はリンクされたコマンドを有効にしません。

  • SCSI_OPTIONS_SYNC (0x020) – 設定しない場合、HBA ドライバは同期データ転送のネゴシエーションを行いません。ドライバは、ターゲットによって開始された同期データ転送のネゴシエーションの試みを拒否します。

  • SCSI_OPTIONS_PARITY (0x040) – 設定しない場合、HBA はパリティーなしで SCSI バスを実行します。

  • SCSI_OPTIONS_TAG (0x080) – 設定しない場合、HBA はタグ付きコマンドキューイングモードで動作しません。

  • SCSI_OPTIONS_FAST (0x100) – 設定しない場合、HBA はバスを FAST SCSI モードで操作してはいけません。

  • SCSI_OPTIONS_WIDE (0x200) – 設定しない場合、HBA はバスを WIDE SCSI モードで操作してはいけません。

ターゲットごとの scsi-options

HBA ドライバは、次の形式でターゲットごとの scsi-options 機能をサポートできます。

target<n>-scsi-options=<hex value>

この例では、< n> がターゲット ID です。ターゲットごとの scsi-options プロパティーが定義されている場合、HBA ドライバは HBA ドライバインスタンスごとの scsi-options プロパティーではなく、この値を使用します。この方法では、特定のターゲットデバイス 1 つだけに対して同期データ転送を無効にする必要がある場合など、より厳密な制御を行うことができます。ターゲットごとの scsi-options プロパティーは、driver.conf(4) ファイルで定義できます。

次の例は、ターゲットデバイス 3 の同期データ転送を無効にするためのターゲットごとの scsi-options プロパティー定義を示しています。

target3-scsi-options=0x2d8

x86 ターゲットドライバの構成プロパティー

cmdk ディスク用のドライバなど、一部の x86 SCSI ターゲットドライバは、次の構成プロパティーを使用します。

  • disk

  • queue

  • flow_control

cmdk サンプルドライバを使用して x86 プラットフォーム用の HBA ドライバを作成する場合は、適切なプロパティーをすべて driver.conf(4) ファイルで定義する必要があります。


注 - これらのプロパティー定義は、HBA ドライバの driver.conf(4) ファイルにしか表示されません。HBA ドライバ自身は、これらのプロパティーを調べたり、解釈しようとしたりすることは決してありません。これらのプロパティーは助言にすぎず、cmdk ドライバの付属物として機能します。これらのプロパティーは決して信頼できるものではありません。これらのプロパティー定義は、将来のリリースで使用できない可能性があります。

disk プロパティーは、cmdk によってサポートされるディスクの種類を定義するために使用できます。SCSI HBA の場合、disk プロパティーに指定できるのは次の値のみです。

  • disk="scdk" – ディスクの種類は SCSI ディスクです

queue プロパティーは、strategy(9E) の実行中にディスクドライバが受信要求のキューをソートする方法を定義します。指定できる値は、次の 2 つがあります。

  • queue="qsort" - disksort(9F) が提供する、一方向のエレベータキューイングモデルです

  • queue="qfifo" – FIFO、つまり先入れ先出しのキューイングモデルです

flow_control プロパティーは、コマンドが HBA ドライバにトランスポートされる方法を定義します。指定できる値は、次の 3 つがあります。

  • flow_control="dsngl" – 1 つの HBA ドライバにつき 1 つのコマンド

  • flow_control="dmult" – 1 つの HBA ドライバにつき複数のコマンド。HBA キューが満杯になると、ドライバは TRAN_BUSY を返します

  • flow_control="duplx" – HBA はキューごとに複数のコマンドを収容できる個別の読み取りキューと書き込みキューをサポートできます。書き込みキューには FIFO の順序付けが使用されます。読み取りキューに使用されるキューイングモデルは、queue プロパティーによって記述されます。HBA キューが満杯になると、ドライバは TRAN_BUSY を返します

次の例は、cmdk サンプルドライバ用に設計された x86 HBA PCI デバイスで使用するdriver.conf(4) ファイルを示しています。

#
# config file for ISP 1020 SCSI HBA driver     
#
       flow_control="dsngl" queue="qsort" disk="scdk"
       scsi-initiator-id=7;