]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - usr.sbin/ctladm/ctladm.8
sys/{x86,amd64}: remove one of doubled ;s
[FreeBSD/FreeBSD.git] / usr.sbin / ctladm / ctladm.8
1 .\"
2 .\" Copyright (c) 2003 Silicon Graphics International Corp.
3 .\" Copyright (c) 2015 Alexander Motin <mav@FreeBSD.org>
4 .\" Copyright (c) 2018 Marcelo Araujo <araujo@FreeBSD.org>
5 .\" All rights reserved.
6 .\"
7 .\" Redistribution and use in source and binary forms, with or without
8 .\" modification, are permitted provided that the following conditions
9 .\" are met:
10 .\" 1. Redistributions of source code must retain the above copyright
11 .\"    notice, this list of conditions, and the following disclaimer,
12 .\"    without modification.
13 .\" 2. Redistributions in binary form must reproduce at minimum a disclaimer
14 .\"    substantially similar to the "NO WARRANTY" disclaimer below
15 .\"    ("Disclaimer") and any redistribution must be conditioned upon
16 .\"    including a substantially similar Disclaimer requirement for further
17 .\"    binary redistribution.
18 .\"
19 .\" NO WARRANTY
20 .\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 .\" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 .\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
23 .\" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 .\" HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
28 .\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
29 .\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 .\" POSSIBILITY OF SUCH DAMAGES.
31 .\"
32 .\" ctladm utility man page.
33 .\"
34 .\" Author: Ken Merry <ken@FreeBSD.org>
35 .\"
36 .\" $Id: //depot/users/kenm/FreeBSD-test2/usr.sbin/ctladm/ctladm.8#3 $
37 .\" $FreeBSD$
38 .\"
39 .Dd July 25, 2019
40 .Dt CTLADM 8
41 .Os
42 .Sh NAME
43 .Nm ctladm
44 .Nd CAM Target Layer control utility
45 .Sh SYNOPSIS
46 .Nm
47 .Aq Ar command
48 .Op lun
49 .Op generic args
50 .Op command args
51 .Nm
52 .Ic tur
53 .Aq lun
54 .Op general options
55 .Nm
56 .Ic inquiry
57 .Aq lun
58 .Op general options
59 .Nm
60 .Ic reqsense
61 .Aq lun
62 .Op general options
63 .Nm
64 .Ic reportluns
65 .Aq lun
66 .Op general options
67 .Nm
68 .Ic read
69 .Aq lun
70 .Op general options
71 .Aq Fl l Ar lba
72 .Aq Fl d Ar datalen
73 .Aq Fl f Ar file|-
74 .Aq Fl b Ar blocksize_bytes
75 .Op Fl c Ar cdbsize
76 .Op Fl N
77 .Nm
78 .Ic write
79 .Aq lun
80 .Op general options
81 .Aq Fl l Ar lba
82 .Aq Fl d Ar datalen
83 .Aq Fl f Ar file|-
84 .Aq Fl b Ar blocksize_bytes
85 .Op Fl c Ar cdbsize
86 .Op Fl N
87 .Nm
88 .Ic readcap
89 .Aq lun
90 .Op general options
91 .Op Fl c Ar cdbsize
92 .Nm
93 .Ic modesense
94 .Aq lun
95 .Aq Fl m Ar page | Fl l
96 .Op Fl P Ar pc
97 .Op Fl d
98 .Op Fl S Ar subpage
99 .Op Fl c Ar size
100 .Nm
101 .Ic start
102 .Aq lun
103 .Op general options
104 .Op Fl i
105 .Op Fl o
106 .Nm
107 .Ic stop
108 .Aq lun
109 .Op general options
110 .Op Fl i
111 .Op Fl o
112 .Nm
113 .Ic synccache
114 .Aq lun
115 .Op general options
116 .Op Fl l Ar lba
117 .Op Fl b Ar blockcount
118 .Op Fl r
119 .Op Fl i
120 .Op Fl c Ar cdbsize
121 .Nm
122 .Ic lunlist
123 .Nm
124 .Ic delay
125 .Aq lun
126 .Aq Fl l Ar datamove|done
127 .Aq Fl t Ar secs
128 .Op Fl T Ar oneshot|cont
129 .Nm
130 .Ic inject
131 .Aq Fl i Ar action
132 .Aq Fl p Ar pattern
133 .Op Fl r Ar lba,len
134 .Op Fl s Ar len fmt Op Ar args
135 .Op Fl c
136 .Op Fl d Ar delete_id
137 .Nm
138 .Ic create
139 .Aq Fl b Ar backend
140 .Op Fl B Ar blocksize
141 .Op Fl d Ar device_id
142 .Op Fl l Ar lun_id
143 .Op Fl o Ar name=value
144 .Op Fl s Ar size_bytes
145 .Op Fl S Ar serial_num
146 .Op Fl t Ar device_type
147 .Nm
148 .Ic remove
149 .Aq Fl b Ar backend
150 .Aq Fl l Ar lun_id
151 .Op Fl o Ar name=value
152 .Nm
153 .Ic modify
154 .Aq Fl b Ar backend
155 .Aq Fl l Ar lun_id
156 .Op Fl o Ar name=value
157 .Aq Fl s Ar size_bytes
158 .Nm
159 .Ic devlist
160 .Op Fl b Ar backend
161 .Op Fl v
162 .Op Fl x
163 .Nm
164 .Ic port
165 .Op Fl c
166 .Op Fl o Ar on|off
167 .Op Fl w Ar wwpn
168 .Op Fl W Ar wwnn
169 .Op Fl O Ar pp|vp
170 .Op Fl p Ar targ_port
171 .Op Fl r Ar targ_port
172 .Op Fl t Ar fe_type
173 .Nm
174 .Ic portlist
175 .Op Fl f Ar frontend
176 .Op Fl i
177 .Op Fl l
178 .Op Fl p Ar targ_port
179 .Op Fl q
180 .Op Fl v
181 .Op Fl x
182 .Nm
183 .Ic lunmap
184 .Aq Fl p Ar targ_port
185 .Op Fl l Ar pLUN
186 .Op Fl L Ar cLUN
187 .Nm
188 .Ic dumpooa
189 .Nm
190 .Ic dumpstructs
191 .Nm
192 .Ic islist
193 .Op Fl v
194 .Op Fl x
195 .Nm
196 .Ic islogout
197 .Aq Fl a | Fl c Ar connection-id | Fl i Ar name | Fl p Ar portal
198 .Nm
199 .Ic isterminate
200 .Aq Fl a | Fl c Ar connection-id | Fl i Ar name | Fl p Ar portal
201 .Nm
202 .Ic help
203 .Sh DESCRIPTION
204 The
205 .Nm
206 utility is designed to provide a way to access and control the CAM Target
207 Layer (CTL).
208 It provides a way to send
209 .Tn SCSI
210 commands to the CTL layer, and also provides
211 some meta-commands that utilize
212 .Tn SCSI
213 commands.
214 (For instance, the
215 .Ic lunlist
216 command is implemented using the
217 .Tn SCSI
218 REPORT LUNS and INQUIRY commands.)
219 .Pp
220 The
221 .Nm
222 utility has a number of primary functions, many of which require a device
223 identifier.
224 The device identifier takes the following form:
225 .Bl -tag -width 14n
226 .It lun
227 Specify the LUN number to operate on.
228 .El
229 Many of the primary functions of the
230 .Nm
231 utility take the following optional arguments:
232 .Bl -tag -width 10n
233 .It Fl C Ar retries
234 Specify the number of times to retry a command in the event of failure.
235 .It Fl D Ar device
236 Specify the device to open.  This allows opening a device other than the
237 default device,
238 .Pa /dev/cam/ctl ,
239 to be opened for sending commands.
240 .It Fl I Ar id
241 Specify the initiator number to use.
242 By default,
243 .Nm
244 will use 7 as the initiator number.
245 .El
246 .Pp
247 Primary commands:
248 .Bl -tag -width 11n
249 .It Ic tur
250 Send the
251 .Tn SCSI
252 TEST UNIT READY command to the device and report whether or not it is
253 ready.
254 .It Ic inquiry
255 Send the
256 .Tn SCSI
257 INQUIRY command to the device and display some of the returned inquiry
258 data.
259 .It Ic reqsense
260 Send the
261 .Tn SCSI
262 REQUEST SENSE command to the device and display the returned sense
263 information.
264 .It Ic reportluns
265 Send the
266 .Tn SCSI
267 REPORT LUNS command to the device and display supported LUNs.
268 .It Ic read
269 Send a
270 .Tn SCSI
271 READ command to the device, and write the requested data to a file or
272 stdout.
273 .Bl -tag -width 12n
274 .It Fl l Ar lba
275 Specify the starting Logical Block Address for the READ.  This can be
276 specified in decimal, octal (starting with 0), hexadecimal (starting with
277 0x) or any other base supported by
278 .Xr strtoull 3 .
279 .It Fl d Ar datalen
280 Specify the length, in 512 byte blocks, of the READ request.
281 .It Fl f Ar file
282 Specify the destination for the data read by the READ command.  Either a
283 filename or
284 .Sq -
285 for stdout may be specified.
286 .It Fl c Ar cdbsize
287 Specify the minimum
288 .Tn SCSI
289 CDB (Command Data Block) size to be used for the READ request.  Allowable
290 values are 6, 10, 12 and 16.  Depending upon the LBA and amount of data
291 requested, a larger CDB size may be used to satisfy the request.  (e.g.,
292 for LBAs above 0xffffffff, READ(16) must be used to satisfy the request.)
293 .It Fl b Ar blocksize
294 Specify the blocksize of the underlying
295 .Tn SCSI
296 device, so the transfer length
297 can be calculated accurately.  The blocksize can be obtained via the
298 .Tn SCSI
299 READ CAPACITY command.
300 .It Fl N
301 Do not copy data to
302 .Nm
303 from the kernel when doing a read, just execute the command without copying
304 data.
305 This is to be used for performance testing.
306 .El
307 .It Ic write
308 Read data from a file or stdin, and write the data to the device using the
309 .Tn SCSI
310 WRITE command.
311 .Bl -tag -width 12n
312 .It Fl l Ar lba
313 Specify the starting Logical Block Address for the WRITE.  This can be
314 specified in decimal, octal (starting with 0), hexadecimal (starting with
315 0x) or any other base supported by
316 .Xr strtoull 3 .
317 .It Fl d Ar atalen
318 Specify the length, in 512 byte blocks, of the WRITE request.
319 .It Fl f Ar file
320 Specify the source for the data to be written by the WRITE command.  Either a
321 filename or
322 .Sq -
323 for stdin may be specified.
324 .It Fl c Ar cdbsize
325 Specify the minimum
326 .Tn SCSI
327 CDB (Command Data Block) size to be used for the READ request.  Allowable
328 values are 6, 10, 12 and 16.  Depending upon the LBA and amount of data
329 requested, a larger CDB size may be used to satisfy the request.  (e.g.,
330 for LBAs above 0xffffffff, READ(16) must be used to satisfy the request.)
331 .It Fl b Ar blocksize
332 Specify the blocksize of the underlying
333 .Tn SCSI
334 device, so the transfer length
335 can be calculated accurately.  The blocksize can be obtained via the
336 .Tn SCSI
337 READ CAPACITY command.
338 .It Fl N
339 Do not copy data to
340 .Nm
341 to the kernel when doing a write, just execute the command without copying
342 data.
343 This is to be used for performance testing.
344 .El
345 .It Ic readcap
346 Send the
347 .Tn SCSI
348 READ CAPACITY command to the device and display the device size and device
349 block size.  By default, READ CAPACITY(10) is
350 used.  If the device returns a maximum LBA of 0xffffffff, however,
351 .Nm
352 will automatically issue a READ CAPACITY(16), which is implemented as a
353 service action of the SERVICE ACTION IN(16) opcode.  The user can specify
354 the minimum CDB size with the
355 .Fl c
356 argument.  Valid values for the
357 .Fl c
358 option are 10 and 16.  If a 10 byte CDB is specified, the request will be
359 automatically reissued with a 16 byte CDB if the maximum LBA returned is
360 0xffffffff.
361 .It Ic modesense
362 Send a
363 .Tn SCSI
364 MODE SENSE command to the device, and display the requested mode page(s) or
365 page list.
366 .Bl -tag -width 10n
367 .It Fl m Ar page
368 Specify the mode page to display.  This option and the
369 .Fl l
370 option are mutually exclusive.  One of the two must be specified, though.
371 Mode page numbers may be specified in decimal or hexadecimal.
372 .It Fl l
373 Request that the list of mode pages supported by the device be returned.
374 This option and the
375 .Fl m
376 option are mutually exclusive.  One of the two must be specified, though.
377 .It Fl P Ar pc
378 Specify the mode page control value.  Possible values are:
379 .Bl -tag -width 2n -compact
380 .It 0
381 Current values.
382 .It 1
383 Changeable value bitmask.
384 .It 2
385 Default values.
386 .It 3
387 Saved values.
388 .El
389 .It Fl d
390 Disable block descriptors when sending the mode sense request.
391 .It Fl S Ar subpage
392 Specify the subpage used with the mode sense request.
393 .It Fl c Ar cdbsize
394 Specify the CDB size used for the mode sense request.  Supported values are
395 6 and 10.
396 .El
397 .It Ic start
398 Send the
399 .Tn SCSI
400 START STOP UNIT command to the specified LUN with the start
401 bit set.
402 .Bl -tag -width 4n
403 .It Fl i
404 Set the immediate bit in the CDB.  Note that CTL does not support the
405 immediate bit, so this is primarily useful for making sure that CTL returns
406 the proper error.
407 .El
408 .It Ic stop
409 Send the
410 .Tn SCSI
411 START STOP UNIT command to the specified LUN with the start
412 bit cleared.  We use an ordered tag to stop the LUN, so we can guarantee
413 that all pending I/O executes before it is stopped.  (CTL guarantees this
414 anyway, but
415 .Nm
416 sends an ordered tag for completeness.)
417 .Bl -tag -width 4n
418 .It Fl i
419 Set the immediate bit in the CDB.  Note that CTL does not support the
420 immediate bit, so this is primarily useful for making sure that CTL returns
421 the proper error.
422 .El
423 .It Ic synccache
424 Send the
425 .Tn SCSI
426 SYNCHRONIZE CACHE command to the device.  By default, SYNCHRONIZE
427 CACHE(10) is used.  If the specified starting LBA is greater than
428 0xffffffff or the length is greater than 0xffff, though,
429 SYNCHRONIZE CACHE(16) will be used.  The 16 byte command will also be used
430 if the user specifies a 16 byte CDB with the
431 .Fl c
432 argument.
433 .Bl -tag -width 14n
434 .It Fl l Ar lba
435 Specify the starting LBA of the cache region to synchronize.  This option is a
436 no-op for CTL.  If you send a SYNCHRONIZE CACHE command, it will sync the
437 cache for the entire LUN.
438 .It Fl b Ar blockcount
439 Specify the length of the cache region to synchronize.  This option is a
440 no-op for CTL.  If you send a SYNCHRONIZE CACHE command, it will sync the
441 cache for the entire LUN.
442 .It Fl r
443 Specify relative addressing for the starting LBA.  CTL does not support
444 relative addressing, since it only works for linked commands, and CTL
445 does not support linked commands.
446 .It Fl i
447 Tell the target to return status immediately after issuing the SYNCHRONIZE CACHE
448 command rather than waiting for the cache to finish syncing.  CTL does not
449 support this bit.
450 .It Fl c Ar cdbsize
451 Specify the minimum CDB size.  Valid values are 10 and 16 bytes.
452 .El
453 .It Ic lunlist
454 List all LUNs registered with CTL.
455 Because this command uses the ioctl port, it will only work when the FETDs
456 (Front End Target Drivers) are enabled.
457 This command is the equivalent of doing a REPORT LUNS on one LUN and then
458 an INQUIRY on each LUN in the system.
459 .It Ic delay
460 Delay commands at the given location.  There are two places where commands
461 may be delayed currently: before data is transferred
462 .Pq Dq datamove
463 and just prior to sending status to the host
464 .Pq Dq done .
465 One of the two must be supplied as an argument to the
466 .Fl l
467 option.  The
468 .Fl t
469 option must also be specified.
470 .Bl -tag -width 12n
471 .It Fl l Ar delayloc
472 Delay command(s) at the specified location.
473 This can either be at the data movement stage (datamove) or prior to
474 command completion (done).
475 .It Fl t Ar delaytime
476 Delay command(s) for the specified number of seconds.  This must be
477 specified.  If set to 0, it will clear out any previously set delay for
478 this particular location (datamove or done).
479 .It Fl T Ar delaytype
480 Specify the delay type.
481 By default, the
482 .Ic delay
483 option will delay the next command sent to the given LUN.
484 With the
485 .Fl T Ar cont
486 option, every command will be delayed by the specified period of time.
487 With the
488 .Fl T Ar oneshot
489 the next command sent to the given LUN will be delayed and all subsequent
490 commands will be completed normally.
491 This is the default.
492 .El
493 .It Ic inject
494 Inject the specified type of error for the LUN specified, when a command
495 that matches the given pattern is seen.
496 The sense data returned is in either fixed or descriptor format, depending
497 upon the status of the D_SENSE bit in the control mode page (page 0xa) for
498 the LUN.
499 .Pp
500 Errors are only injected for commands that have not already failed for
501 other reasons.
502 By default, only the first command matching the pattern specified is
503 returned with the supplied error.
504 .Pp
505 If the
506 .Fl c
507 flag is specified, all commands matching the pattern will be returned with
508 the specified error until the error injection command is deleted with
509 .Fl d
510 flag.
511 .Bl -tag -width 17n
512 .It Fl i Ar action
513 Specify the error to return:
514 .Bl -tag -width 10n
515 .It aborted
516 Return the next matching command on the specified LUN with the sense key
517 ABORTED COMMAND (0x0b), and the ASC/ASCQ 0x45,0x00 ("Select or reselect
518 failure").
519 .It mediumerr
520 Return the next matching command on the specified LUN with the sense key
521 MEDIUM ERROR (0x03) and the ASC/ASCQ 0x11,0x00 ("Unrecovered read error") for
522 reads, or ASC/ASCQ 0x0c,0x02 ("Write error - auto reallocation failed")
523 for write errors.
524 .It ua
525 Return the next matching command on the specified LUN with the sense key
526 UNIT ATTENTION (0x06) and the ASC/ASCQ 0x29,0x00 ("POWER ON, RESET, OR BUS
527 DEVICE RESET OCCURRED").
528 .It custom
529 Return the next matching command on the specified LUN with the supplied
530 sense data.
531 The
532 .Fl s
533 argument must be specified.
534 .El
535 .It Fl p Ar pattern
536 Specify which commands should be returned with the given error.
537 .Bl -tag -width 10n
538 .It read
539 The error should apply to READ(6), READ(10), READ(12), READ(16), etc.
540 .It write
541 The error should apply to WRITE(6), WRITE(10), WRITE(12), WRITE(16), WRITE
542 AND VERIFY(10), etc.
543 .It rw
544 The error should apply to both read and write type commands.
545 .It readcap
546 The error should apply to READ CAPACITY(10) and READ CAPACITY(16) commands.
547 .It tur
548 The error should apply to TEST UNIT READY commands.
549 .It any
550 The error should apply to any command.
551 .El
552 .It Fl r Ar lba,len
553 Specify the starting lba and length of the range of LBAs which should
554 trigger an error.
555 This option is only applies when read and/or write patterns are specified.
556 If used with other command types, the error will never be triggered.
557 .It Fl s Ar len fmt Op Ar args
558 Specify the sense data that is to be returned for custom actions.
559 If the format is
560 .Sq - ,
561 len bytes of sense data will be read from standard input and written to the
562 sense buffer.
563 If len is longer than 252 bytes (the maximum allowable
564 .Tn SCSI
565 sense data length), it will be truncated to that length.
566 The sense data format is described in
567 .Xr cam_cdbparse 3 .
568 .It Fl c
569 The error injection should be persistent, instead of happening once.
570 Persistent errors must be deleted with the
571 .Fl d
572 argument.
573 .It Fl d Ar delete_id
574 Delete the specified error injection serial number.
575 The serial number is returned when the error is injected.
576 .El
577 .It Ic port
578 Perform one of several CTL frontend port operations.
579 Either get a list of frontend ports
580 .Pq Fl l ,
581 turn one or more frontends on
582 or off
583 .Pq Fl o Ar on|off ,
584 or set the World Wide Node Name
585 .Pq Fl w Ar wwnn
586 or World Wide Port Name
587 .Pq Fl W Ar wwpn
588 for a given port.
589 One of
590 .Fl l ,
591 .Fl o ,
592 or
593 .Fl w
594 or
595 .Fl W
596 must be specified.
597 The WWNN and WWPN may both be specified at the same time, but cannot be
598 combined with enabling/disabling or listing ports.
599 .Bl -tag -width 12n
600 .It Fl c
601 Create new frontend port using free pp and vp=0.
602 .It Fl o Ar on|off
603 Turn the specified CTL frontend ports on or off.
604 If no port number or port type is specified, all ports are turned on or
605 off.
606 .It Fl O Ar pp|vp
607 Specify generic options on the ioctl frontend port.
608 At present, only pp and vp port numbers can be set.
609 .It Fl p Ar targ_port
610 Specify the frontend port number.
611 The port numbers can be found in the frontend port list.
612 .It Fl r
613 Remove port specified with
614 .Pq Fl p Ar targ_port .
615 .It Fl t Ar fe_type
616 Specify the frontend type.
617 Currently defined port types are
618 .Dq fc
619 (Fibre Channel),
620 .Dq scsi
621 (Parallel SCSI),
622 .Dq ioctl
623 (CTL ioctl interface),
624 and
625 .Dq internal
626 (CTL CAM SIM).
627 .It Fl w Ar wwnn
628 Set the World Wide Node Name for the given port.
629 The
630 .Fl n
631 argument must be specified, since this is only possible to implement on a
632 single port.
633 As a general rule, the WWNN should be the same across all ports on the
634 system.
635 .It Fl W Ar wwpn
636 Set the World Wide Port Name for the given port.
637 The
638 .Fl n
639 argument must be specified, since this is only possible to implement on a
640 single port.
641 As a general rule, the WWPN must be different for every port in the system.
642 .El
643 .It Ic portlist
644 List CTL frontend ports.
645 .Bl -tag -width 12n
646 .It Fl f Ar frontend
647 Specify the frontend type.
648 .It Fl i
649 Report target and connected initiators addresses.
650 .It Fl l
651 Report LUN mapping.
652 .It Fl p Ar targ_port
653 Specify the frontend port number.
654 .It Fl q
655 Omit the header in the port list output.
656 .It Fl v
657 Enable verbose output (report all port options).
658 .It Fl x
659 Output the port list in XML format.
660 .El
661 .It Ic lunmap
662 Change LUN mapping for specified port.
663 If both
664 .Ar pLUN
665 and
666 .Ar cLUN
667 are specified -- LUN will be mapped.
668 If
669 .Ar pLUN
670 is specified, but
671 .Ar cLUN
672 is not -- LUN will be unmapped.
673 If neither
674 .Ar pLUN
675 nor
676 .Ar cLUN
677 are specified -- LUN mapping will be disabled, exposing all CTL LUNs.
678 .Bl -tag -width 12n
679 .It Fl p Ar targ_port
680 Specify the frontend port number.
681 .It Fl l Ar pLUN
682 LUN number visible by specified port.
683 .It Fl L Ar cLUN
684 CTL LUN number.
685 .El
686 .It Ic dumpooa
687 Dump the OOA (Order Of Arrival) queue for each LUN registered with CTL.
688 .It Ic dumpstructs
689 Dump the CTL structures to the console.
690 .It Ic create
691 Create a new LUN.
692 The backend must be specified, and depending upon the backend requested,
693 some of the other options may be required.
694 If the LUN is created successfully, the LUN configuration will be
695 displayed.
696 If LUN creation fails, a message will be displayed describing the failure.
697 .Bl -tag -width 14n
698 .It Fl b Ar backend
699 The
700 .Fl b
701 flag is required.
702 This specifies the name backend to use when creating the LUN.
703 Examples are
704 .Dq ramdisk
705 and
706 .Dq block .
707 .It Fl B Ar blocksize
708 Specify the blocksize of the backend in bytes.
709 .It Fl d Ar device_id
710 Specify the LUN-associated string to use in the
711 .Tn SCSI
712 INQUIRY VPD page 0x83 data.
713 .It Fl l Ar lun_id
714 Request that a particular LUN number be assigned.
715 If the requested LUN number is not available, the request will fail.
716 .It Fl o Ar name=value
717 Specify a backend-specific name/value pair.
718 Multiple
719 .Fl o
720 arguments may be specified.
721 Refer to the backend documentation for arguments that may be used.
722 .It Fl s Ar size_bytes
723 Specify the size of the LUN in bytes.
724 Some backends may allow setting the size (e.g. the ramdisk backend) and for
725 others the size may be implicit (e.g. the block backend).
726 .It Fl S Ar serial_num
727 Specify the serial number to be used in the
728 .Tn SCSI
729 INQUIRY VPD page 0x80 data.
730 .It Fl t Ar device_type
731 Specify the numeric SCSI device type to use when creating the LUN.
732 If this flag is not used, the type of LUN created is backend-specific.
733 Not all LUN types are supported.
734 Currently CTL supports Direct Access (type 0), Processor (type 3)
735 and CD/DVD (type 5) LUNs.
736 The backend requested may or may not support all of the LUN types that CTL
737 supports.
738 .El
739 .It Ic remove
740 Remove a LUN.
741 The backend must be specified, and the LUN number must also be specified.
742 Backend-specific options may also be specified with the
743 .Fl o
744 flag.
745 .Bl -tag -width 14n
746 .It Fl b Ar backend
747 Specify the backend that owns the LUN to be removed.
748 Examples are
749 .Dq ramdisk
750 and
751 .Dq block .
752 .It Fl l Ar lun_id
753 Specify the LUN number to remove.
754 .It Fl o Ar name=value
755 Specify a backend-specific name/value pair.
756 Multiple
757 .Fl o
758 arguments may be specified.
759 Refer to the backend documentation for arguments that may be used.
760 .El
761 .It Ic modify
762 Modify a LUN size.
763 The backend, the LUN number, and the size must be specified.
764 .Bl -tag -width 14n
765 .It Fl b Ar backend
766 Specify the backend that owns the LUN to be modified.
767 Examples are
768 .Dq ramdisk
769 and
770 .Dq block .
771 .It Fl l Ar lun_id
772 Specify the LUN number to modify.
773 .It Fl o Ar name=value
774 Specify a backend-specific name/value pair.
775 Multiple
776 .Fl o
777 arguments may be specified.
778 Refer to the backend documentation for arguments that may be used.
779 .It Fl s Ar size_bytes
780 Specify the size of the LUN in bytes.
781 For the
782 .Dq block
783 backend, an
784 .Dq auto
785 keyword may be passed instead; this will make CTL use the size of backing
786 file or device.
787 .El
788 .It Ic devlist
789 Get a list of all configured LUNs.
790 This also includes the LUN size and blocksize, serial number and device ID.
791 .Bl -tag -width 11n
792 .It Fl b Ar backend
793 Specify the backend.
794 This restricts the LUN list to the named backend.
795 Examples are
796 .Dq ramdisk
797 and
798 .Dq block .
799 .It Fl v
800 Be verbose.
801 This will also display any backend-specific LUN attributes in addition to
802 the standard per-LUN information.
803 .It Fl x
804 Dump the raw XML.
805 The LUN list information from the kernel comes in XML format, and this
806 option allows the display of the raw XML data.
807 This option and the
808 .Fl v
809 and
810 .Fl b
811 options are mutually exclusive.
812 If you specify
813 .Fl x ,
814 the entire LUN database is displayed in XML format.
815 .El
816 .It Ic islist
817 Get a list of currently running iSCSI sessions.
818 This includes initiator and target names and the unique connection IDs.
819 .Bl -tag -width 11n
820 .It Fl v
821 Verbose mode.
822 .It Fl x
823 Dump the raw XML.
824 The sessions list information from the kernel comes in XML format, and this
825 option allows the display of the raw XML data.
826 .El
827 .It Ic islogout
828 Ask the initiator to log out iSCSI sessions matching criteria.
829 .Bl -tag -width 11n
830 .It Fl a
831 Log out all sessions.
832 .It Fl c
833 Specify connection ID.
834 .It Fl i
835 Specify initiator name.
836 .It Fl p
837 Specify initiator portal (hostname or IP address).
838 .El
839 .It Ic isterminate
840 Forcibly terminate iSCSI sessions matching criteria.
841 .Bl -tag -width 11n
842 .It Fl a
843 Terminate all sessions.
844 .It Fl c
845 Specify connection ID.
846 .It Fl i
847 Specify initiator name.
848 .It Fl p
849 Specify initiator portal (hostname or IP address).
850 .El
851 .It Ic help
852 Display
853 .Nm
854 usage information.
855 .El
856 .Sh OPTIONS
857 Number of additional configuration options may be specified for LUNs.
858 Some options are global, others are backend-specific.
859 .Pp
860 Global options:
861 .Bl -tag -width 12n
862 .It Va vendor
863 Specifies LUN vendor string up to 8 chars.
864 .It Va product
865 Specifies LUN product string up to 16 chars.
866 .It Va revision
867 Specifies LUN revision string up to 4 chars.
868 .It Va scsiname
869 Specifies LUN SCSI name string.
870 .It Va eui
871 Specifies LUN EUI-64 identifier.
872 .It Va naa
873 Specifies LUN NAA identifier.
874 .It Va uuid
875 Specifies LUN locally assigned RFC 4122 UUID identifier.
876 EUI, NAA or UUID identifier should be set to UNIQUE value to allow
877 EXTENDED COPY command access the LUN.
878 Non-unique LUN identifiers may lead to data corruption.
879 Some initiators may not support later introduced UUID identifiers.
880 .It Va ha_role
881 Setting to "primary" or "secondary" overrides default role of the node
882 in HA cluster, set by kern.cam.ctl.ha_role sysctl.
883 .It Va insecure_tpc
884 Setting to "on" allows EXTENDED COPY command sent to this LUN access
885 other LUNs on this host, not accessible otherwise.
886 This allows to offload copying between different iSCSI targets residing
887 on the same host in trusted environments.
888 .It Va readcache
889 Set to "off", disables read caching for the LUN, if supported by the backend.
890 .It Va readonly
891 Set to "on", blocks all media write operations to the LUN, reporting it
892 as write protected.
893 .It Va removable
894 Set to "on", makes LUN removable.
895 .It Va reordering
896 Set to "unrestricted", allows target to process commands with SIMPLE task
897 attribute in arbitrary order.  Any data integrity exposures related to
898 command sequence order shall be explicitly handled by the application
899 client through the selection of appropriate commands and task attributes.
900 The default value is "restricted".  It improves data integrity, but may
901 introduce some additional delays.
902 .It Va serseq
903 Set to "on" to serialize consecutive reads/writes.
904 Set to "read" to serialize consecutive reads.
905 Set to "off" to allow them be issued in parallel.
906 Parallel issue of consecutive operations may confuse logic of the
907 backing file system, hurting performance; but it may improve performance
908 of backing stores without prefetch/write-back.
909 .It Va pblocksize
910 .It Va pblockoffset
911 Specify physical block size and offset of the device.
912 .It Va ublocksize
913 .It Va ublockoffset
914 Specify UNMAP block size and offset of the device.
915 .It Va rpm
916 Specifies medium rotation rate of the device: 0 -- not reported,
917 1 -- non-rotating (SSD), >1024 -- value in revolutions per minute.
918 .It Va formfactor
919 Specifies nominal form factor of the device: 0 -- not reported, 1 -- 5.25",
920 2 -- 3.5", 3 -- 2.5", 4 -- 1.8", 5 -- less then 1.8".
921 .It Va temperature
922 .It Va reftemperature
923 Specify current and reference (maximum) temperatures of the device.
924 .It Va provisioning_type
925 When UNMAP support is enabled, this option specifies provisioning type:
926 "resource", "thin" or "unknown".
927 Default value is "thin".
928 Logical units without UNMAP support are reported as fully provisioned.
929 .It Va unmap
930 Setting to "on" or "off" controls UNMAP support for the logical unit.
931 Default value is "on" if supported by the backend.
932 .It Va unmap_max_lba
933 .It Va unmap_max_descr
934 Specify maximum allowed number of LBAs and block descriptors per UNMAP
935 command to report in Block Limits VPD page.
936 .It Va write_same_max_lba
937 Specify maximum allowed number of LBAs per WRITE SAME command to report
938 in Block Limits VPD page.
939 .It Va avail-threshold
940 .It Va used-threshold
941 .It Va pool-avail-threshold
942 .It Va pool-used-threshold
943 Set per-LUN/-pool thin provisioning soft thresholds.
944 LUN will establish UNIT ATTENTION condition if its or pool available space
945 get below configured avail values, or its or pool used space get above
946 configured used values.
947 Pool thresholds are working only for ZVOL-backed LUNs.
948 .It Va writecache
949 Set to "off", disables write caching for the LUN, if supported by the backend.
950 .El
951 .Pp
952 Options specific for block backend:
953 .Bl -tag -width 12n
954 .It Va file
955 Specifies file or device name to use for backing store.
956 .It Va num_threads
957 Specifies number of backend threads to use for this LUN.
958 .El
959 .Pp
960 Options specific for ramdisk backend:
961 .Bl -tag -width 12n
962 .It Va capacity
963 Specifies capacity of backing store (maximum RAM for data).
964 The default value is zero, that disables backing store completely,
965 making all writes go to nowhere, while all reads return zeroes.
966 .El
967 .Sh EXAMPLES
968 .Pp
969 Send a
970 .Tn SCSI
971 TEST UNIT READY command to LUN 1.
972 .Pp
973 .Dl ctladm tur 1
974 .Pp
975 Display the list of mode pages supported by LUN 1.
976 .Pp
977 .Dl ctladm modesense 1 -l
978 .Pp
979 Display the saved version of the Control mode page (page 10) on LUN 0.
980 Disable fetching block descriptors, and use a 10 byte MODE SENSE command
981 instead of the default 6 byte command.
982 .Pp
983 .Dl ctladm modesense 0 -m 10 -P 3 -d -c 10
984 .Pp
985 Read the first 512 byte block from LUN 2 and dump it to the file
986 .Bd -literal
987 .Dl ctladm read 2 -l 0 -d 1 -b 512 -f - > foo
988 .Ed
989 .Pp
990 Read 10240 bytes from the file
991 .Pa /tmp/bar
992 and write it to LUN 3.
993 starting at LBA 0xff432140.
994 .Pp
995 .Bd -literal
996 .Dl ctladm write 3 -l 0xff432140 -d 20 -b 512 -f /tmp/bar
997 .Ed
998 .Pp
999 Create a LUN with the
1000 .Dq fake
1001 ramdisk as a backing store.
1002 The LUN will claim to have a size of approximately 10 terabytes,
1003 while having no real data store (all written data are lost).
1004 .Pp
1005 .Dl ctladm create -b ramdisk -s 10485760000000000
1006 .Pp
1007 Create a thin provisioned LUN with a ramdisk as a backing store.
1008 The LUN will have maximal backing store capacity of 10 gigabytes,
1009 while reporting size of 10 terabytes,
1010 .Pp
1011 .Dl ctladm create -b ramdisk -s 10T -o capacity=10G
1012 .Pp
1013 Create a LUN using the block backend, and specify the file
1014 .Pa src/usr.sbin/ctladm/ctladm.8
1015 as the backing store.
1016 The size of the LUN will be derived from the size of the file.
1017 .Pp
1018 .Dl ctladm create -b block -o file=src/usr.sbin/ctladm/ctladm.8
1019 .Pp
1020 Create a LUN using the block backend, specify the file
1021 .Pa src/usr.sbin/ctladm/ctladm.8
1022 as the backing store, and specify the
1023 .Tn SCSI
1024 VPD page 0x80 and 0x83 serial number
1025 .Fl ( S )
1026 and device ID
1027 .Fl ( d ) .
1028 .Pp
1029 .Dl ctladm create -b block -o file=src/usr.sbin/ctladm/ctladm.8 -S MYSERIAL321 -d MYDEVID123
1030 .Pp
1031 Use to specify generic options on ioctl frontend port, now it is
1032 only possible to set pp and/or vp port number.
1033 .Pp
1034 .Dl ctladm port -c -O pp=11 -O vp=12
1035 .Pp
1036 Remove specified targ_port.
1037 .Pp
1038 .Dl ctladm port -r -p 4
1039 .Pp
1040 .Pp
1041 Remove LUN 12, which is handled by the block backend, from the system.
1042 .Pp
1043 .Dl ctladm remove -b block -l 12
1044 .Pp
1045 List configured LUNs in the system, along with their backend and serial
1046 number.
1047 This works when the Front End Target Drivers are enabled or disabled.
1048 .Pp
1049 .Dl ctladm devlist
1050 .Pp
1051 List all LUNs in the system, along with their inquiry data and device type.
1052 This only works when the FETDs are enabled, since the commands go through the
1053 ioctl port.
1054 .Pp
1055 .Dl ctladm lunlist
1056 .Pp
1057 Inject a medium error on LUN 6 for every read that covers the first 512
1058 blocks of the LUN.
1059 .Pp
1060 .Dl ctladm inject 6 -i mediumerr -p read -r 0,512 -c
1061 .Pp
1062 Inject a custom error on LUN 6 for the next TEST UNIT READY command only.
1063 This will result in a sense key of NOT READY (0x02), and an ASC/ASCQ of
1064 0x04,0x02 ("Logical unit not ready, initializing command required").
1065 .Pp
1066 .Bd -literal -offset indent
1067 ctladm inject 6 -i custom -p tur -s 18 "f0 0 02 s12 04 02"
1068 .Ed
1069 .Sh SEE ALSO
1070 .Xr cam 3 ,
1071 .Xr cam_cdbparse 3 ,
1072 .Xr cam 4 ,
1073 .Xr ctl 4 ,
1074 .Xr xpt 4 ,
1075 .Xr camcontrol 8 ,
1076 .Xr ctld 8 ,
1077 .Xr ctlstat 8
1078 .Sh HISTORY
1079 The
1080 .Nm
1081 utility was originally written during the Winter/Spring of 2003 as an
1082 interface to CTL.
1083 .Sh AUTHORS
1084 .An Ken Merry Aq Mt ken@FreeBSD.org