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

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
CTLADM(8)               FreeBSD 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 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
     commands.  (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
     require 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
                  report 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
                  display 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
                  requested 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.
                                Depending upon the LBA and amount of data
                                requested, a larger CDB size may be used to
                                satisfy 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
                                calculated accurately.  The blocksize can be
                                obtained 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.
                                Depending upon the LBA and amount of data
                                requested, a larger CDB size may be used to
                                satisfy 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
                                calculated accurately.  The blocksize can be
                                obtained via the SCSI READ CAPACITY command.

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

     bbrread      Issue a SCSI READ command to the logical device to
                  potentially force a bad block on a disk in the RAID set to
                  be reconstructed 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
                  determine which LBA to pass in to the bbrread command.

                  This command is primarily intended for testing.  In
                  practice, 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
                  display 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
                  action 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
                              hexadecimal.

                  -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 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
                              request.

                  -c cdbsize  Specify the CDB size used for the mode sense
                              request.  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
                        error.

                  -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
                        command, 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
                        error.

                  -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
                        intervention 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
                                  command, 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
                                  command, it will sync the cache for the
                                  entire LUN.

                  -r              Specify relative addressing for the starting
                                  LBA.  CTL does not support relative
                                  addressing, since it only works for linked
                                  commands, and CTL doesn't support linked
                                  commands.

                  -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
                  active.  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
                  command 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
                  equivalent 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
                  specified.

                  -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
                                period 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
                  commands 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
                  status.

     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
                  commands.  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
                  SYNCHRONIZE 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
                  command matching the pattern specified is returned with the
                  supplied error.

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

                  -i action          Specify the error to return:

                                     aborted     Return the next matching
                                                 command 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
                                                 command on the specified LUN
                                                 with the sense key MEDIUM
                                                 ERROR (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
                                                 command on the specified LUN
                                                 with the sense key UNIT
                                                 ATTENTION (0x06) and the
                                                 ASC/ASCQ 0x29,0x00 ("POWER
                                                 ON, RESET, OR BUS DEVICE
                                                 RESET OCCURRED").

                                     custom      Return the next matching
                                                 command on the specified LUN
                                                 with the supplied sense data.
                                                 The -s argument must be
                                                 specified.

                  -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
                                                 commands.

                                     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
                                     error will never be triggered.

                  -s len fmt [args]  Specify the sense data that is to be
                                     returned 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
                                     argument.

                  -d delete_id       Delete the specified error injection
                                     serial number.  The serial number is
                                     returned 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
                  frontends 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
                                specified, 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
                                interface), 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
                  registered with CTL.

     dumpstructs  Dump the CTL structures to the console.

     create       Create a new LUN.  The backend must be specified, and
                  depending upon the backend requested, some of the other
                  options 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
                                  assigned.  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.
                                  Refer to the backend documentation for
                                  arguments 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
                                  Direct 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.
                                  Refer to the backend documentation for
                                  arguments 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
                               backend-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
                               mutually exclusive.  If you specify -x, the
                               entire LUN database is displayed in XML format.

     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
     disabled.

           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), xpt(4), camcontrol(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>

FreeBSD 11.0-PRERELEASE          March 6, 2012         FreeBSD 11.0-PRERELEASE

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

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

home | help