targ(4)
NAME
targ - SCSI target emulator driver
SYNOPSIS
device targ
DESCRIPTION
- The targ driver provides an interface for usermode programs
- to emulate
SCSI target devices. A sample program that emulates a disk - drive (similar to da(4)) can be found in
- /usr/share/examples/scsi_target.
- The targ driver supplies control devices, /dev/targ0,
- /dev/targ1, etc.
If a device is already in use, open(2) will fail and errno - will be set to
EBUSY. After opening the device, the file descriptor must - be bound to a
specific bus/target/LUN and enabled to process CCBs using - the
TARGIOCENABLE ioctl. The process then uses write(2) to send - CCBs to the
SIM and poll(2) or kqueue(2) to see if responses are ready. - Pointers to
completed CCBs are returned via read(2). Any data transfers - requested by
the user CCBs are done via zero-copy IO.
IOCTLS
The following ioctl(2) calls are defined in the header file
- TARGIOCENABLE (struct ioc_enable_lun) Enable target
- mode on the LUN
- specified by the following structure:
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;}; - The selected path (bus), target, and LUN
- must not
already be in use or EADDRINUSE is re - turned. If
grp6_len or grp7_len are non-zero, re - ception of vendor-specific commands is enabled.
- TARGIOCDISABLE Disable target mode and abort all pend
- ing CCBs. The
- CCBs may optionally be read as they com
- plete.
TARGIOCENABLE can then be called to ac - tivate a different LUN. Multiple disable calls have
- no effect.
The close(2) system call automatically - disables target mode if enabled.
- TARGIOCDEBUG (int) Enables CAM_PERIPH debugging if
- the argument is
- non-zero, otherwise disables it.
FILES
- describes the usermode in
- terface.
- /sys/cam/scsi/scsi_target.c is the driver source file.
/dev/targ* are the control devices.
SEE ALSO
/usr/share/examples/scsi_target, ahc(4), isp(4), scsi(4)
- FreeBSD Target Information, http://www.root.org/~nate/freeb
- sd/.
AUTHORS
- The targ driver first appeared in FreeBSD 3.0 and was writ
- ten by Justin
T. Gibbs. It was rewritten for FreeBSD 5.0 by Nate Lawson
<nate@root.org>.