Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CTLADM(8)		  BSD System Manager's Manual		     CTLADM(8)

NAME
     ctladm -- CAM Target Layer	control	utility

SYNOPSIS
     ctladm <command> [target:lun] [generic args] [command args]
     ctladm tur	<target:lun> [general options]
     ctladm inquiry <target:lun> [general options]
     ctladm reqsense <target:lun> [general options]
     ctladm reportluns <target:lun> [general options]
     ctladm read <target:lun> [general options]	<-l lba> <-d datalen>
	    <-f	file|->	<-b blocksize_bytes> [-c cdbsize] [-N]
     ctladm write <target:lun> [general	options] <-l lba> <-d datalen>
	    <-f	file|->	<-b blocksize_bytes> [-c cdbsize] [-N]
     ctladm bbrread <target:lun> [general options] <--l	lba> <--d datalen>
     ctladm readcap <target:lun> [general options] [-c cdbsize]
     ctladm modesense <target:lun> <-m page | -l> [-P pc] [-d] [-S subpage]
	    [-c	size]
     ctladm start <target:lun> [general	options] [-i] [-o]
     ctladm stop <target:lun> [general options]	[-i] [-o]
     ctladm synccache <target:lun> [general options] [-l lba] [-b blockcount]
	    [-r] [-i] [-c cdbsize]
     ctladm shutdown [general options]
     ctladm startup [general options]
     ctladm hardstop
     ctladm hardstart
     ctladm lunlist
     ctladm delay <target:lun> <-l datamove|done> <-t secs> [-T	oneshot|cont]
     ctladm realsync <on|off|query>
     ctladm setsync interval <target:lun> <-i interval>
     ctladm getsync <target:lun>
     ctladm inject <-i action> <-p pattern> [-r	lba,len] [-s len fmt [args]]
	    [-c] [-d delete_id]
     ctladm create <-b backend>	[-B blocksize] [-d device_id] [-l lun_id]
	    [-o	name=value] [-s	size_bytes] [-S	serial_num] [-t	device_type]
     ctladm remove <-b backend>	<-l lun_id> [-o	name=value]
     ctladm modify <-b backend>	<-l lun_id> <-s	size_bytes>
     ctladm devlist [-b	backend] [-v] [-x]
     ctladm port [-l] [-o on|off] [-w wwpn] [-W	wwnn] [-p targ_port]
	    [-t	fe_type] [-q] [-x]
     ctladm dumpooa
     ctladm dumpstructs
     ctladm islist [-v]	[-x]
     ctladm islogout <-a | -c connection-id | -i name |	-p portal>
     ctladm isterminate	<-a | -c connection-id | -i name | -p portal>
     ctladm help

DESCRIPTION
     The ctladm	utility	is designed to provide a way to	access and control the
     CAM Target	Layer (CTL).  It provides a way	to send	SCSI commands to the
     CTL layer,	and also provides some meta-commands that utilize SCSI com-
     mands.  (For instance, the	lunlist	command	is implemented using the SCSI
     REPORT LUNS and INQUIRY commands.)

     The ctladm	utility	has a number of	primary	functions, many	of which re-
     quire a device identifier.	 The device identifier takes the following
     form:

     target:lun	     Specify the target	(almost	always 0) and LUN number to
		     operate on.
     Many of the primary functions of the ctladm utility take the following
     optional arguments:

     -C	retries	 Specify the number of times to	retry a	command	in the event
		 of failure.

     -D	device	 Specify the device to open.  This allows opening a device
		 other than the	default	device,	/dev/cam/ctl, to be opened for
		 sending commands.

     -I	id	 Specify the initiator number to use.  By default, ctladm will
		 use 7 as the initiator	number.

     Primary commands:

     tur	  Send the SCSI	TEST UNIT READY	command	to the device and re-
		  port whether or not it is ready.

     inquiry	  Send the SCSI	INQUIRY	command	to the device and display some
		  of the returned inquiry data.

     reqsense	  Send the SCSI	REQUEST	SENSE command to the device and	dis-
		  play the returned sense information.

     reportluns	  Send the SCSI	REPORT LUNS command to the device and display
		  supported LUNs.

     read	  Send a SCSI READ command to the device, and write the	re-
		  quested data to a file or stdout.

		  -l lba	Specify	the starting Logical Block Address for
				the READ.  This	can be specified in decimal,
				octal (starting	with 0), hexadecimal (starting
				with 0x) or any	other base supported by
				strtoull(3).

		  -d datalen	Specify	the length, in 512 byte	blocks,	of the
				READ request.

		  -f file	Specify	the destination	for the	data read by
				the READ command.  Either a filename or	`-'
				for stdout may be specified.

		  -c cdbsize	Specify	the minimum SCSI CDB (Command Data
				Block) size to be used for the READ request.
				Allowable values are 6,	10, 12 and 16.	De-
				pending	upon the LBA and amount	of data	re-
				quested, a larger CDB size may be used to sat-
				isfy the request.  (e.g., for LBAs above
				0xffffffff, READ(16) must be used to satisfy
				the request.)

		  -b blocksize	Specify	the blocksize of the underlying	SCSI
				device,	so the transfer	length can be calcu-
				lated accurately.  The blocksize can be	ob-
				tained via the SCSI READ CAPACITY command.

		  -N		Do not copy data to ctladm from	the kernel
				when doing a read, just	execute	the command
				without	copying	data.  This is to be used for
				performance testing.

     write	  Read data from a file	or stdin, and write the	data to	the
		  device using the SCSI	WRITE command.

		  -l lba	Specify	the starting Logical Block Address for
				the WRITE.  This can be	specified in decimal,
				octal (starting	with 0), hexadecimal (starting
				with 0x) or any	other base supported by
				strtoull(3).

		  -d atalen	Specify	the length, in 512 byte	blocks,	of the
				WRITE request.

		  -f file	Specify	the source for the data	to be written
				by the WRITE command.  Either a	filename or
				`-' for	stdin may be specified.

		  -c cdbsize	Specify	the minimum SCSI CDB (Command Data
				Block) size to be used for the READ request.
				Allowable values are 6,	10, 12 and 16.	De-
				pending	upon the LBA and amount	of data	re-
				quested, a larger CDB size may be used to sat-
				isfy the request.  (e.g., for LBAs above
				0xffffffff, READ(16) must be used to satisfy
				the request.)

		  -b blocksize	Specify	the blocksize of the underlying	SCSI
				device,	so the transfer	length can be calcu-
				lated accurately.  The blocksize can be	ob-
				tained via the SCSI READ CAPACITY command.

		  -N		Do not copy data to ctladm to the kernel when
				doing a	write, just execute the	command	with-
				out copying data.  This	is to be used for per-
				formance testing.

     bbrread	  Issue	a SCSI READ command to the logical device to poten-
		  tially force a bad block on a	disk in	the RAID set to	be re-
		  constructed from the other disks in the array.  This command
		  should only be used on an array that is in the normal	state.
		  If used on a critical	array, it could	cause the array	to go
		  offline if the bad block to be remapped is on	one of the
		  disks	that is	still active in	the array.

		  The data for this particular command will be discarded, and
		  not returned to the user.

		  In order to determine	which LUN to read from,	the user
		  should first determine which LUN the disk with a bad block
		  belongs to.  Then he should map the bad disk block back to
		  the logical block address for	the array in order to deter-
		  mine which LBA to pass in to the bbrread command.

		  This command is primarily intended for testing.  In prac-
		  tice,	bad block remapping will generally be triggered	by the
		  in-kernel Disk Aerobics and Disk Scrubbing code.

		  -l lba      Specify the starting Logical Block Address.

		  -d datalen  Specify the amount of data in bytes to read from
			      the LUN.	This must be a multiple	of the LUN
			      blocksize.

     readcap	  Send the SCSI	READ CAPACITY command to the device and	dis-
		  play the device size and device block	size.  By default,
		  READ CAPACITY(10) is used.  If the device returns a maximum
		  LBA of 0xffffffff, however, ctladm will automatically	issue
		  a READ CAPACITY(16), which is	implemented as a service ac-
		  tion of the SERVICE ACTION IN(16) opcode.  The user can
		  specify the minimum CDB size with the	-c argument.  Valid
		  values for the -c option are 10 and 16.  If a	10 byte	CDB is
		  specified, the request will be automatically reissued	with a
		  16 byte CDB if the maximum LBA returned is 0xffffffff.

     modesense	  Send a SCSI MODE SENSE command to the	device,	and display
		  the requested	mode page(s) or	page list.

		  -m page     Specify the mode page to display.	 This option
			      and the -l option	are mutually exclusive.	 One
			      of the two must be specified, though.  Mode page
			      numbers may be specified in decimal or hexadeci-
			      mal.

		  -l	      Request that the list of mode pages supported by
			      the device be returned.  This option and the -m
			      option are mutually exclusive.  One of the two
			      must be specified, though.

		  -P pc	      Specify the mode page control value.  Possible
			      values are:
			      0	  Current values.
			      1	  Changeable value bitmask.
			      2	  Default values.
			      3	  Saved	values.

		  -d	      Disable block descriptors	when sending the mode
			      sense request.

		  -S subpage  Specify the subpage used with the	mode sense re-
			      quest.

		  -c cdbsize  Specify the CDB size used	for the	mode sense re-
			      quest.  Supported	values are 6 and 10.

     start	  Send the SCSI	START STOP UNIT	command	to the specified LUN
		  with the start bit set.

		  -i	Set the	immediate bit in the CDB.  Note	that CTL does
			not support the	immediate bit, so this is primarily
			useful for making sure that CTL	returns	the proper er-
			ror.

		  -o	Set the	Copan proprietary on/offline bit in the	CDB.
			When this flag is used,	the LUN	will be	marked online
			again (see the description of the shutdown and startup
			commands).  When this flag is used with	a start	com-
			mand, the LUN will NOT be spun up.  You	need to	use a
			start command without the -o flag to spin up the disks
			in the LUN.

     stop	  Send the SCSI	START STOP UNIT	command	to the specified LUN
		  with the start bit cleared.  We use an ordered tag to	stop
		  the LUN, so we can guarantee that all	pending	I/O executes
		  before it is stopped.	 (CTL guarantees this anyway, but
		  ctladm sends an ordered tag for completeness.)

		  -i	Set the	immediate bit in the CDB.  Note	that CTL does
			not support the	immediate bit, so this is primarily
			useful for making sure that CTL	returns	the proper er-
			ror.

		  -o	Set the	Copan proprietary on/offline bit in the	CDB.
			When this flag is used,	the LUN	will be	spun down and
			taken offline ("Logical	unit not ready,	manual inter-
			vention	required").  See the description of the
			shutdown and startup options.

     synccache	  Send the SCSI	SYNCHRONIZE CACHE command to the device.  By
		  default, SYNCHRONIZE CACHE(10) is used.  If the specified
		  starting LBA is greater than 0xffffffff or the length	is
		  greater than 0xffff, though, SYNCHRONIZE CACHE(16) will be
		  used.	 The 16	byte command will also be used if the user
		  specifies a 16 byte CDB with the -c argument.

		  -l lba	  Specify the starting LBA of the cache	region
				  to synchronize.  This	option is a no-op for
				  CTL.	If you send a SYNCHRONIZE CACHE	com-
				  mand,	it will	sync the cache for the entire
				  LUN.

		  -b blockcount	  Specify the length of	the cache region to
				  synchronize.	This option is a no-op for
				  CTL.	If you send a SYNCHRONIZE CACHE	com-
				  mand,	it will	sync the cache for the entire
				  LUN.

		  -r		  Specify relative addressing for the starting
				  LBA.	CTL does not support relative address-
				  ing, since it	only works for linked com-
				  mands, and CTL does not support linked com-
				  mands.

		  -i		  Tell the target to return status immediately
				  after	issuing	the SYHCHRONIZE	CACHE command
				  rather than waiting for the cache to finish
				  syncing.  CTL	does not support this bit.

		  -c cdbsize	  Specify the minimum CDB size.	 Valid values
				  are 10 and 16	bytes.

     shutdown	  Issue	a SCSI START STOP UNIT command with the	start bit
		  cleared and the on/offline bit set to	all direct access
		  LUNs.	 This will spin	down all direct	access LUNs, and mark
		  them offline ("Logical unit not ready, manual	intervention
		  required").  Once marked offline, the	state can only be
		  cleared by sending a START STOP UNIT command with the	start
		  bit set and the on/offline bit set.  The ctladm commands
		  startup and start will accomplish this.  Note	that the
		  on/offline bit is a non-standard Copan extension to the SCSI
		  START	STOP UNIT command, so merely sending a normal start
		  command from an initiator will not clear the condition.
		  (This	is by design.)

     startup	  Issue	a SCSI START STOP UNIT command with the	start bit set
		  and the on/offline bit set to	all direct access LUNs.	 This
		  will mark all	direct access LUNs "online" again.  It will
		  not cause any	LUNs to	start up.  A separate start command
		  without the on/offline bit set is necessary for that.

     hardstop	  Use the kernel facility for stopping all direct access LUNs
		  and setting the offline bit.	Unlike the shutdown command
		  above, this command allows shutting down LUNs	with I/O ac-
		  tive.	 It will also issue a LUN reset	to any reserved	LUNs
		  to break the reservation so that the LUN can be stopped.
		  shutdown command instead.

     hardstart	  This command is functionally identical to the	startup	com-
		  mand described above.	 The primary difference	is that	the
		  LUNs are enumerated and commands sent	by the in-kernel Front
		  End Target Driver instead of by ctladm.

     lunlist	  List all LUNs	registered with	CTL.  Because this command
		  uses the ioctl port, it will only work when the FETDs	(Front
		  End Target Drivers) are enabled.  This command is the	equiv-
		  alent	of doing a REPORT LUNS on one LUN and then an INQUIRY
		  on each LUN in the system.

     delay	  Delay	commands at the	given location.	 There are two places
		  where	commands may be	delayed	currently: before data is
		  transferred ("datamove") and just prior to sending status to
		  the host ("done").  One of the two must be supplied as an
		  argument to the -l option.  The -t option must also be spec-
		  ified.

		  -l delayloc	Delay command(s) at the	specified location.
				This can either	be at the data movement	stage
				(datamove) or prior to command completion
				(done).

		  -t delaytime	Delay command(s) for the specified number of
				seconds.  This must be specified.  If set to
				0, it will clear out any previously set	delay
				for this particular location (datamove or
				done).

		  -T delaytype	Specify	the delay type.	 By default, the delay
				option will delay the next command sent	to the
				given LUN.  With the -T	cont option, every
				command	will be	delayed	by the specified pe-
				riod of	time.  With the	-T oneshot the next
				command	sent to	the given LUN will be delayed
				and all	subsequent commands will be completed
				normally.  This	is the default.

     realsync	  Query	and control CTL's SYNCHRONIZE CACHE behavior.  The
		  `query' argument will	show whether SYNCHRONIZE CACHE com-
		  mands	are being sent to the backend or not.  The default is
		  to send SYNCHRONIZE CACHE commands to	the backend.  The `on'
		  argument will	cause all SYNCHRONIZE CACHE commands sent to
		  all LUNs to be sent to the backend.  The `off' argument will
		  cause	all SYNCHRONIZE	CACHE commands sent to all LUNs	to be
		  immediately returned to the initiator	with successful	sta-
		  tus.

     setsync	  For a	given lun, only	actually service every Nth SYNCHRONIZE
		  CACHE	command	that is	sent.  This can	be used	for debugging
		  the optimal time period for sending SYNCHRONIZE cache	com-
		  mands.  An interval of 0 means that the cache	will be
		  flushed for this LUN every time a SYNCHRONIZE	CACHE command
		  is received.

		  You must specify the target and LUN you want to modify.

     getsync	  Get the interval at which we actually	service	the SYNCHRO-
		  NIZE CACHE command, as set by	the setsync command above.
		  The reported number means that we will actually flush	the
		  cache	on every Nth SYNCHRONIZE CACHE command.	 A value of 0
		  means	that we	will flush the cache every time.

		  You must specify the target and LUN you want to query.

     inject	  Inject the specified type of error for the LUN specified,
		  when a command that matches the given	pattern	is seen.  The
		  sense	data returned is in either fixed or descriptor format,
		  depending upon the status of the D_SENSE bit in the control
		  mode page (page 0xa) for the LUN.

		  Errors are only injected for commands	that have not already
		  failed for other reasons.  By	default, only the first	com-
		  mand matching	the pattern specified is returned with the
		  supplied error.

		  If the -c flag is specified, all commands matching the pat-
		  tern will be returned	with the specified error until the er-
		  ror injection	command	is deleted with	-d flag.

		  -i action	     Specify the error to return:

				     aborted	 Return	the next matching com-
						 mand on the specified LUN
						 with the sense	key ABORTED
						 COMMAND (0x0b), and the
						 ASC/ASCQ 0x45,0x00 ("Select
						 or reselect failure").

				     mediumerr	 Return	the next matching com-
						 mand on the specified LUN
						 with the sense	key MEDIUM ER-
						 ROR (0x03) and	the ASC/ASCQ
						 0x11,0x00 ("Unrecovered read
						 error") for reads, or
						 ASC/ASCQ 0x0c,0x02 ("Write
						 error - auto reallocation
						 failed") for write errors.

				     ua		 Return	the next matching com-
						 mand on the specified LUN
						 with the sense	key UNIT AT-
						 TENTION (0x06)	and the
						 ASC/ASCQ 0x29,0x00 ("POWER
						 ON, RESET, OR BUS DEVICE RE-
						 SET OCCURRED").

				     custom	 Return	the next matching com-
						 mand on the specified LUN
						 with the supplied sense data.
						 The -s	argument must be spec-
						 ified.

		  -p pattern	     Specify which commands should be returned
				     with the given error.

				     read	 The error should apply	to
						 READ(6), READ(10), READ(12),
						 READ(16), etc.

				     write	 The error should apply	to
						 WRITE(6), WRITE(10),
						 WRITE(12), WRITE(16), WRITE
						 AND VERIFY(10), etc.

				     rw		 The error should apply	to
						 both read and write type com-
						 mands.

				     readcap	 The error should apply	to
						 READ CAPACITY(10) and READ
						 CAPACITY(16) commands.

				     tur	 The error should apply	to
						 TEST UNIT READY commands.

				     any	 The error should apply	to any
						 command.

		  -r lba,len	     Specify the starting lba and length of
				     the range of LBAs which should trigger an
				     error.  This option is only applies when
				     read and/or write patterns	are specified.
				     If	used with other	command	types, the er-
				     ror will never be triggered.

		  -s len fmt [args]  Specify the sense data that is to be re-
				     turned for	custom actions.	 If the	format
				     is	`-', len bytes of sense	data will be
				     read from standard	input and written to
				     the sense buffer.	If len is longer than
				     252 bytes (the maximum allowable SCSI
				     sense data	length), it will be truncated
				     to	that length.  The sense	data format is
				     described in cam_cdparse(3).

		  -c		     The error injection should	be persistent,
				     instead of	happening once.	 Persistent
				     errors must be deleted with the -d	argu-
				     ment.

		  -d delete_id	     Delete the	specified error	injection se-
				     rial number.  The serial number is	re-
				     turned when the error is injected.

     port	  Perform one of several CTL frontend port operations.	Either
		  get a	list of	frontend ports (-l), turn one or more front-
		  ends on or off (-o on|off), or set the World Wide Node Name
		  (-w wwnn) or World Wide Port Name (-W	wwpn) for a given
		  port.	 One of	-l, -o,	or -w or -W must be specified.	The
		  WWNN and WWPN	may both be specified at the same time,	but
		  cannot be combined with enabling/disabling or	listing	ports.

		  -l		List all CTL frontend ports or a specific port
				type or	number.

		  -o on|off	Turn the specified CTL frontend	ports off or
				on.  If	no port	number or port type is speci-
				fied, all ports	are turned on or off.

		  -p targ_port	Specify	the frontend port number.  The port
				numbers	can be found in	the frontend port
				list.

		  -q		Omit the header	in the port list output.

		  -t fe_type	Specify	the frontend type.  Currently defined
				port types are "fc" (Fibre Channel), "scsi"
				(Parallel SCSI), "ioctl" (CTL ioctl inter-
				face), and "internal" (CTL CAM SIM).

		  -w wwnn	Set the	World Wide Node	Name for the given
				port.  The -n argument must be specified,
				since this is only possible to implement on a
				single port.  As a general rule, the WWNN
				should be the same across all ports on the
				system.

		  -W wwpn	Set the	World Wide Port	Name for the given
				port.  The -n argument must be specified,
				since this is only possible to implement on a
				single port.  As a general rule, the WWPN must
				be different for every port in the system.

		  -x		Output the port	list in	XML format.

     dumpooa	  Dump the OOA (Order Of Arrival) queue	for each LUN regis-
		  tered	with CTL.

     dumpstructs  Dump the CTL structures to the console.

     create	  Create a new LUN.  The backend must be specified, and	de-
		  pending upon the backend requested, some of the other	op-
		  tions	may be required.  If the LUN is	created	successfully,
		  the LUN configuration	will be	displayed.  If LUN creation
		  fails, a message will	be displayed describing	the failure.

		  -b backend	  The -b flag is required.  This specifies the
				  name backend to use when creating the	LUN.
				  Examples are "ramdisk" and "block".

		  -B blocksize	  Specify the blocksize	of the backend in
				  bytes.

		  -d device_id	  Specify the LUN-associated string to use in
				  the SCSI INQUIRY VPD page 0x83 data.

		  -l lun_id	  Request that a particular LUN	number be as-
				  signed.  If the requested LUN	number is not
				  available, the request will fail.

		  -o name=value	  Specify a backend-specific name/value	pair.
				  Multiple -o arguments	may be specified.  Re-
				  fer to the backend documentation for argu-
				  ments	that may be used.

		  -s size_bytes	  Specify the size of the LUN in bytes.	 Some
				  backends may allow setting the size (e.g.
				  the ramdisk backend) and for others the size
				  may be implicit (e.g.	the block backend).

		  -S serial_num	  Specify the serial number to be used in the
				  SCSI INQUIRY VPD page	0x80 data.

		  -t device_type  Specify the numeric SCSI device type to use
				  when creating	the LUN.  For example, the Di-
				  rect Access type is 0.  If this flag is not
				  used,	the type of LUN	created	is backend-
				  specific.  Not all LUN types are supported.
				  Currently CTL	only supports Direct Access
				  (type	0) and Processor (type 3) LUNs.	 The
				  backend requested may	or may not support all
				  of the LUN types that	CTL supports.

     remove	  Remove a LUN.	 The backend must be specified,	and the	LUN
		  number must also be specified.  Backend-specific options may
		  also be specified with the -o	flag.

		  -b backend	  Specify the backend that owns	the LUN	to be
				  removed.  Examples are "ramdisk" and
				  "block".

		  -l lun_id	  Specify the LUN number to remove.

		  -o name=value	  Specify a backend-specific name/value	pair.
				  Multiple -o arguments	may be specified.  Re-
				  fer to the backend documentation for argu-
				  ments	that may be used.

     modify	  Modify a LUN size.  The backend, the LUN number, and the
		  size must be specified.

		  -b backend	  Specify the backend that owns	the LUN	to be
				  removed.  Examples are "ramdisk" and
				  "block".

		  -l lun_id	  Specify the LUN number to remove.

		  -s size_bytes	  Specify the size of the LUN in bytes.	 For
				  the "block" backend, an "auto" keyword may
				  be passed instead; this will make CTL	use
				  the size of backing file or device.

     devlist	  Get a	list of	all configured LUNs.  This also	includes the
		  LUN size and blocksize, serial number	and device ID.

		  -b backend   Specify the backend.  This restricts the	LUN
			       list to the named backend.  Examples are
			       "ramdisk" and "block".

		  -v	       Be verbose.  This will also display any back-
			       end-specific LUN	attributes in addition to the
			       standard	per-LUN	information.

		  -x	       Dump the	raw XML.  The LUN list information
			       from the	kernel comes in	XML format, and	this
			       option allows the display of the	raw XML	data.
			       This option and the -v and -b options are mutu-
			       ally exclusive.	If you specify -x, the entire
			       LUN database is displayed in XML	format.

     islist	  Get a	list of	currently running iSCSI	connections.  This in-
		  cludes initiator and target names and	the unique connection
		  IDs.

		  -v	       Verbose mode.

		  -x	       Dump the	raw XML.  The connections list infor-
			       mation from the kernel comes in XML format, and
			       this option allows the display of the raw XML
			       data.

     islogout	  Ask the initiator to log out iSCSI connections matching cri-
		  teria.

		  -a	       Log out all connections.

		  -c	       Specify connection ID.

		  -i	       Specify initiator name.

		  -p	       Specify initiator portal	(hostname or IP	ad-
			       dress).

     isterminate  Forcibly terminate iSCSI connections matching	criteria.

		  -a	       Terminate all connections.

		  -c	       Specify connection ID.

		  -i	       Specify initiator name.

		  -p	       Specify initiator portal	(hostname or IP	ad-
			       dress).

     help	  Display ctladm usage information.

EXAMPLES
	   ctladm tur 0:1

     Send a SCSI TEST UNIT READY command to LUN	1.

	   ctladm modesense 0:1	-l

     Display the list of mode pages supported by LUN 1.

	   ctladm modesense 0:0	-m 10 -P 3 -d -c 10

     Display the saved version of the Control mode page	(page 10) on LUN 0.
     Disable fetching block descriptors, and use a 10 byte MODE	SENSE command
     instead of	the default 6 byte command.

     ctladm read 0:2 -l	0 -d 1 -b 512 -f - > foo

     Read the first 512	byte block from	LUN 2 and dump it to the file foo.

     ctladm write 0:3 -l 0xff432140 -d 20 -b 512 -f /tmp/bar

     Read 10240	bytes from the file /tmp/bar and write it to target 0, LUN 3.
     starting at LBA 0xff432140.

	   ctladm create -b ramdisk -s 10485760000000000

     Create a LUN with the "fake" ramdisk as a backing store.  The LUN will
     claim to have a size of approximately 10 terabytes.

	   ctladm create -b block -o file=src/usr.sbin/ctladm/ctladm.8

     Create a LUN using	the block backend, and specify the file
     src/usr.sbin/ctladm/ctladm.8 as the backing store.	 The size of the LUN
     will be derived from the size of the file.

	   ctladm create -b block -o file=src/usr.sbin/ctladm/ctladm.8 -S
	   MYSERIAL321 -d MYDEVID123

     Create a LUN using	the block backend, specify the file
     src/usr.sbin/ctladm/ctladm.8 as the backing store,	and specify the	SCSI
     VPD page 0x80 and 0x83 serial number (-S) and device ID (-d).

	   ctladm remove -b block -l 12

     Remove LUN	12, which is handled by	the block backend, from	the system.

	   ctladm devlist

     List configured LUNs in the system, along with their backend and serial
     number.  This works when the Front	End Target Drivers are enabled or dis-
     abled.

	   ctladm lunlist

     List all LUNs in the system, along	with their inquiry data	and device
     type.  This only works when the FETDs are enabled,	since the commands go
     through the ioctl port.

	   ctladm inject 0:6 -i	mediumerr -p read -r 0,512 -c

     Inject a medium error on LUN 6 for	every read that	covers the first 512
     blocks of the LUN.

	   ctladm inject 0:6 -i	custom -p tur -s 18 "f0	0 02 s12 04 02"

     Inject a custom error on LUN 6 for	the next TEST UNIT READY command only.
     This will result in a sense key of	NOT READY (0x02), and an ASC/ASCQ of
     0x04,0x02 ("Logical unit not ready, initializing command required").

SEE ALSO
     cam(3), cam_cdbparse(3), cam(4), ctl(4), xpt(4), camcontrol(8), ctld(8)

HISTORY
     The ctladm	utility	was originally written during the Winter/Spring	of
     2003 as an	interface to CTL.

AUTHORS
     Ken Merry <ken@FreeBSD.org>

BSD			       October 30, 2013				   BSD

NAME | SYNOPSIS | DESCRIPTION | EXAMPLES | SEE ALSO | HISTORY | AUTHORS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ctladm&manpath=FreeBSD+10.0-RELEASE>

home | help