2 .\" Nate Lawson. All rights reserved.
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\" notice, this list of conditions and the following disclaimer.
9 .\" 2. Neither the name of the author nor the names of any co-contributors
10 .\" may be used to endorse or promote products derived from this software
11 .\" without specific prior written permission.
13 .\" THIS SOFTWARE IS PROVIDED BY Nate Lawson AND CONTRIBUTORS ``AS IS'' AND
14 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 .Nd SCSI target emulator driver
34 To compile this driver into the kernel,
35 place the following line in your
36 kernel configuration file:
37 .Bd -ragged -offset indent
43 driver provides an interface for usermode programs to emulate SCSI target
45 A sample program that emulates a disk drive (similar to
48 .Pa /usr/share/examples/scsi_target .
52 driver supplies control devices,
56 If a device is already in use,
62 After opening the device, the file descriptor must be bound to a
63 specific bus/target/LUN and enabled to process CCBs using the
68 to send CCBs to the SIM and
72 to see if responses are ready.
73 Pointers to completed CCBs are returned via
75 Any data transfers requested by the user CCBs are done via zero-copy IO.
79 calls are defined in the header file
80 .In cam/scsi/scsi_targetio.h .
81 .Bl -tag -width ".Dv TARGIOCDISABLE"
83 .Pq Vt "struct ioc_enable_lun"
84 Enable target mode on the LUN specified by the following structure:
85 .Bd -literal -offset indent
86 struct ioc_enable_lun {
88 target_id_t target_id;
95 The selected path (bus), target, and LUN must not already be in use or
102 are non-zero, reception of vendor-specific commands
104 .It Dv TARGIOCDISABLE
105 Disable target mode and abort all pending CCBs.
106 The CCBs may optionally be read as they complete.
108 can then be called to activate a different LUN.
109 Multiple disable calls have no effect.
112 system call automatically disables target mode if enabled.
117 debugging if the argument is non-zero, otherwise disables
121 .Bl -tag -width ".Pa /sys/cam/scsi/scsi_target.c" -compact
122 .It In cam/scsi/scsi_targetio.h
123 describes the usermode interface.
124 .It Pa /sys/cam/scsi/scsi_target.c
125 is the driver source file.
127 are the control devices.
130 .Pa /usr/share/examples/scsi_target ,
135 .%T "FreeBSD Target Information"
136 .%U http://www.root.org/~nate/freebsd/
142 driver first appeared in
145 .An Justin T. Gibbs .
150 .An Nate Lawson Aq nate@root.org .
156 drivers fully support target mode.
160 driver does not support tagged queuing in target mode.