EN JA
TARG(4)
TARG(4) FreeBSD Kernel Interfaces Manual TARG(4)

名称

targSCSI ターゲットエミュレータドライバ

書式

このドライバをカーネルにコンパイルするためには、次の行を利用者のカーネル設定ファイルに置きます:

device targ

解説

targ ドライバは、SCSI ターゲットデバイスをエミュレートするユーザモードプログラムのためのインタフェースを提供します。 ( da(4) に似た) ディスクドライブをエミュレートするサンプルプログラムは /usr/share/examples/scsi_target で見つけることができます。

targ ドライバは、制御デバイス /dev/targ を供給します。デバイスをオープンした後に、ファイル記述子を特定のバス/ターゲット/LUN に結合しなければならないし、 TARGIOCENABLE ioctl を使用することでプロセス CCB を利用可能にしなければなりません。そしてプロセスは、CCB を SIM に送信するために write(2) を使用し、応答の準備ができているかどうかを調べるために poll(2)kqueue(2) を使用します。完了した CCB へのポインタは read(2) によって返されます。 0 コピー IO を通してユーザ CCB が終了することによって任意のデータ転送が要求されます。

IOCTL

次の ioctl(2) 呼び出しはヘッダファイル < cam/scsi/scsi_targetio.h> で定義されます。
TARGIOCENABLE
( struct ioc_enable_lun) 次の構造体によって指定された LUN でターゲットモードを有効にします。

struct ioc_enable_lun { 
 path_id_t path_id; 
 target_id_t target_id; 
 lun_id_t lun_id; 
 int  grp6_len; 
 int  grp7_len; 
};

選択されたパス (バス)、ターゲット、LUN が既に使用中であってはなりません。または EADDRINUSE を返します。 grp6_lengrp7_len が 0 でなければ、ベンダ固有のコマンドは受理可能です。

TARGIOCDISABLE
ターゲットモードを無効にし、すべての未決の CCB を異常終了します。 CCB はそれらが完了するように任意に読み込むことができます。そして、異なった LUN を動かすために TARGIOCENABLE を呼び出すことができます。複数の無効呼び出しは効果がありません。ターゲットモードが有効であるなら、 close(2) システムコールは自動的にターゲットモードを無効にします。
TARGIOCDEBUG
( int) 引数が 0 でなければ CAM_PERIPH デバッグを有効にし、そうでなければそれを無効にします。
/dev/targ
は、制御デバイスです。

関連ファイル

< cam/scsi/scsi_targetio.h>
ユーザモードインタフェースの説明。
/sys/cam/scsi/scsi_target.c
ドライバのソースファイルです。
/dev/targ*
制御デバイスです。

関連項目

/usr/share/examples/scsi_target, ahc(4), isp(4), scsi(4) FreeBSD Target Information, http://www.root.org/~nate/freebsd/.

作者

targ ドライバは、 FreeBSD 3.0 ではじめて登場し、 Justin T. Gibbs によって書かれました。それは、 FreeBSD 5.0 のために Nate Lawson <nate@root.org>によって書き直されました。

バグ

現在、 ahc(4)isp(4) ドライバだけがターゲットモードを完全にサポートします。

ahc(4) ドライバは、ターゲットモードにおいてタグ付きキューをサポートしません。

December 13, 2011 FreeBSD