Solaris 7 のソフトウェア開発 (追補)

tran_quiesce()tran_unquiesce()

SCSI バスに対して、休止と休止解除のサポートを実装するように設定します。


#include <sys/scsi/scsi.h>

int prefix tran_quiesce(dev_info_t *hba_dip);

int prefix tran_unquiesce(dev_info_t *hba_dip);

ホットプラグをサポートするよう設定されていないバス上にある SCSI デバイスについて動的再構成 (DR) をサポートするには、HBA ドライバにより tran_quiesce(9E)tran_unquiesce(9E) を実装する必要があります。

scsi_hba_tran(9S) 構造体にある tran_quiesce()tran_unquiesce() ベクトルは、HBA ドライバに attach(9E) を実行して HBA エントリポイントを指すようにする際に初期化する必要があります。こうしておくと、ユーザーが休止および休止解除の操作を始めるときに呼び出されます。

tran_quiesce(9E) は SCSA フレームワークにより呼び出され、SCSI バスに接続されたデバイスの再構成が始まる前と再構成の間、SCSI バス上のすべての動作を休止させます。tran_unquiesce(9E) は、再構成操作が終了してから SCSA フレームワークによって呼び出され、SCSI バス上の動作を再開します。

HBA ドライバは、中断されていたコマンドがすべて終了して正常終了を示すメッセージが返されるまで、tran_quiesce(9E) を操作している必要があります。HBA はバスを休止させた後、SCSA フレームワークが対応する tran_unquiesce(9E) エントリポイントを呼び出すまで、ターゲットドライバからの新しい入出力要求を待ち行列に入れておかなければなりません。

HBA ドライバは、バスが静止している間に HBA が待ち行列に入れたターゲットドライバの入出力要求を起動することによって、tran_unquiesce(9E) の呼び出しを行います。