.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sh \" Subsection heading
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings.  \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote.  | will give a
.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
.\" expand to `' in nroff, nothing in troff, for use with C<>.
.tr \(*W-|\(bv\*(Tr
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
'br\}
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.if \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.\"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.hy 0
.if n .na
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
.    \" fudge factors for nroff and troff
.if n \{\
.    ds #H 0
.    ds #V .8m
.    ds #F .3m
.    ds #[ \f1
.    ds #] \fP
.\}
.if t \{\
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.    ds #V .6m
.    ds #F 0
.    ds #[ \&
.    ds #] \&
.\}
.    \" simple accents for nroff and troff
.if n \{\
.    ds ' \&
.    ds ` \&
.    ds ^ \&
.    ds , \&
.    ds ~ ~
.    ds /
.\}
.if t \{\
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
.    \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.    \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.    \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.    ds : e
.    ds 8 ss
.    ds o a
.    ds d- d\h'-1'\(ga
.    ds D- D\h'-1'\(hy
.    ds th \o'bp'
.    ds Th \o'LP'
.    ds ae ae
.    ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "TW_CLI 8"
.TH TW_CLI 8 "2005-12-01" "Version 
TW_CLI_VERSION" "AMCC/3ware Storage Management CLI"
.SH "NAME"
tw_cli(8) \- AMCC/3ware Storage Controller Management Command Line Interface.
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 3
\& tw_cli                 Interactive Mode
\& tw_cli -f file         Process from a file
\& tw_cli command         Process single command (batch mode)
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
\&\fI\fItw_cli\fI\|(8)\fR is a Command Line Interface Storage Management Software for 
AMCC/3ware \s-1ATA\s0 \s-1RAID\s0 Controller(s). It provides controller, logical unit and drive
management. tw_cli can be used in both interactive and batch mode, providing
higher-level \s-1API\s0 (Application Programming Interface) functionalities.
.PP
As a way of synchronizing terminologies, logical units (a.k.a. units) are block
devices presented to operating systems. A logical unit can be a one\-tier, two\-tier,
or three-tier arrangement. \s-1JBOD\s0, spare, and single logical units are examples of
one-tier units. \s-1RAID\-1\s0 and \s-1RAID\-5\s0 are examples of two-tier units and 
as such will have sub\-units. \s-1RAID\-10\s0 and \s-1RAID\-50\s0 are examples of three-tier units
and as such will have sub\-sub\-units.  A controller has one or many ports 
(typically 4, 8, 12). Each port is connected to zero or one disk drive. 
.PP
\&\s-1CLI\s0 also supports \fIcomments\fR. Command lines beginning with \fI#\fR denotes start
of comment. This feature is mostly useful with batch processing via \fI\-f script\fR flag.
.PP
\&\s-1CLI\s0 prompt indicates the current object in focus, expressed in \s-1URI\s0 (Universal Resource 
Identifier) syntax consisting of a hostname (\fI//hostname\fR), and an object path
(\fI/path/path/object\fR) such as \fI//elvis/c0/u0\fR. User can set the focus to a
particular object by \fIfocus \s-1URI\s0\fR.  
.PP
In this version of the \s-1CLI\s0 release, the tw_cli supports a set of primary command
syntax (so called new command syntax) and a set of legacy command syntax (so called
old command syntax or original command syntax).  Note: we reserve the right to 
discontinue the legacy command syntax in the future releases.
.SH "Primary Command Syntax"
.IX Header "Primary Command Syntax"
The primary command syntax will replace the legacy command syntax in the future releases.
This new and improved command format follows a general grammar in the form:
.PP
.Vb 1
\& Object Message Attributes
.Ve
.PP
Objects are either shell commands or specify a certain controller, logical unit,
port (drive), or battery backup unit (bbu).  Messages are commands sent to the 
requested objects and will be a read operation such as show or write operation
such as set, delete, add, stop, start, or export.  Attributes specify what values
to read or write.  Attributes
are either \fIBoolean Attributes\fR or \fINamed Attributes\fR. Value of a Boolean
attribute is deduced by presence or not. Value of named attributes are
expressed in a \*(L"key = value\*(R" format. 
.Sh "Shell Object Messages"
.IX Subsection "Shell Object Messages"
Shell Object Messages are commands (a.k.a. methods/messages) that are sent to
the Command Interpreter (a.k.a. Shell/CLI) itself. 
.RE
.IP "\fIshow\fR"
.IX Item "show"
This command shows a general summary of all detected controllers.  Note that the
appropriate kernel device drivers should be loaded for the list to show all 
controllers. The intention is to provide a global view of the environment.
.PP
Typical output looks like:
.PP
.Vb 1
\& //localhost> show
.Ve
.PP
.Vb 4
\& Ctl     Model           Ports   Drives  Units   NotOpt   RRate   VRate   BBU
\& --------------------------------------------------------------------------------
\& c0      7500-12         12      8       3       1        2       -       -
\& c1      9506S-12        12      6       1       0        3       5       TESTING
.Ve
.PP
Indicating that \fIController 0\fR is a 7500 model with 12 Ports, with 8 Drives
detected (attached), total of 1 Units, with one unit in a NotOpt (Not Optimal) state,
RRate(Rebuild Rate) of 2, VRate(Verify Rate) of '\-' (Not Applicable), \s-1BBU\s0 of '\-'
(Not Applicable).  Not Optimal refers to any state except \s-1OK\s0 and \s-1VERIFYING\s0.  Other
states include \s-1INITIALIZING\s0, \s-1INIT\-PAUSED\s0, \s-1REBUILDING\s0, \s-1REBUILD\-PAUSED\s0, \s-1DEGRADED\s0, 
\&\s-1MIGRATING\s0, \s-1MIGRATE\-PAUSED\s0, \s-1RECOVERY\s0, \s-1INOPERABLE\s0, and \s-1UNKOWN\s0.
.RE
.IP "\fBshow\fR \fIver\fR"
.IX Item "show ver"
This command will show the \s-1CLI\s0 and \s-1API\s0 version.
.PP
For example:
.PP
.Vb 1
\& //localhost> show ver
.Ve
.PP
.Vb 2
\& CLI Version = 2.00.00.0xx
\& API Version = 2.00.00.0xx
.Ve
.PP
.Vb 1
\& //localhost>
.Ve
.RE
.IP "\fBshow\fR \fIalarms\fR [\fIreverse\fR]"
.IX Item "show alarms [reverse]"
This command shows the alarms or \s-1AEN\s0 messages of all controllers in the
system.  The default is to display the most recent message first.  The 
\&\fIreverse\fR attribute offers the display order to be the most recent message last.
.RE
.IP "\fBshow\fR \fIdiag\fR"
.IX Item "show diag"
This command shows the diagnostic information of all controllers in the
system.  
.RE
.IP "\fBshow\fR \fIrebuild\fR"
.IX Item "show rebuild"
This command displays all rebuild schedules of all the 9000 controllers 
in the system.
.RE
.IP "\fBshow\fR \fIverify\fR"
.IX Item "show verify"
This command displays all verify schedules of all the 9000 controllers
in the system.
.RE
.IP "\fBshow\fR \fIselftest\fR"
.IX Item "show selftest"
This command displays all self test schedules of all the 9000 controllers
in the system.
.RE
.IP "\fBfocus\fR \fIObject\fR"
.IX Item "focus Object"
This command will set the specified object in focus. This command is active in
interactive mode only and is provided to reduce typing.  Recall that messages (or
commands) are sent to objects such as 
.PP
.Vb 1
\& //hostname/c0/u0 show
.Ve
.PP
Instead, if the focus is set to \fI//hostname/c0/u0\fR, the prompt is changed 
automatically to reflect this and the user would only have to type \fIshow\fR.
The concept is similar to being in a particular location in a file system and
requesting a listing of the current directory.
.PP
\&\fIobject\fR can have the following forms:
.Sp
.RS 4
\&\fI//hostname/cx/ux\fR specifies the fully qualified \s-1URI\s0 of an object on host 
\&\fBhostname\fR, controller \fBcx\fR, unit \fBux\fR.
.Sp
\&\fI//hostname\fR specifies root of host \fBhostname\fR.  The hostname is the name of 
the system where your 3ware \s-1RAID\s0 controllers are.  With current releases, the 
hostname here should be always your system's name.
.Sp
\&\fI..\fR specifies one level up (the parent object).
.Sp
\&\fI/\fR specifies the root at the current focused host.
.Sp
\&\fI./obj\fR specifies the next level of the object.
.Sp
\&\fI/c0/bbu\fR specifies a relative path with respect to the current focused hostname.
.Sp
For example:
.Sp
.Vb 2
\& //localhost> focus //elvis.amcc.com
\& //elvis.amcc.com>
.Ve
.Sp
.Vb 2
\& //elvis.amcc.com> focus /c0/u0
\& //elvis.amcc.com/c0/u0>
.Ve
.Sp
.Vb 2
\& //elvis.amcc.com/c0/u0> focus ..
\& //elvis.amcc.com/c0>
.Ve
.Sp
.Vb 2
\& //elvis.amcc.com/c0> focus ./u0
\& //elvis.amcc.com/c0/u0>
.Ve
.Sp
.Vb 2
\& //elvis.amcc.com/c0> focus /
\& //elvis.amcc.com>
.Ve
.Sp
Note that \fIfocus\fR is available as default.  You can also set \fITW_CLI_INPUT_STYLE=OLD\fR
in the following to disable the feature.
.Sp
.Vb 3
\& If Bash,    then "export TW_CLI_INPUT_STYLE=OLD"
\& If csh,     then "setenv TW_CLI_INPUT_STYLE OLD"
\& If Windows, then "set    TW_CLI_INPUT_STYLE=OLD"
.Ve
.RE
.Sh "Controller Object Messages"
.IX Subsection "Controller Object Messages"
Controller Object Messages are commands (a.k.a. methods/messages) that are sent to
an instance of a controller such as \fI/c0\fR. 
.RE
.IP "\fI/cx\fR \fBshow\fR"
.IX Item "/cx show"
This command shows summary information on the specified controller \fI/cx\fR. This report
consists of two to three parts; a \fBUnit\fR summary listing all present units, 
a \fBPort\fR summary section listing of all present disks and their attached ports, and
a \fB\s-1BBU\s0\fR summary section listing if a \s-1BBU\s0 unit is installed on the controller.
.PP
The \fBUnit\fR summary section lists all present units specifying their Unit Number,
Unit type (such \s-1RAID\s0 5), Status, usable capacity in Giga (or Tera) Bytes, number 
of blocks and unit status such as \s-1OK\s0, \s-1VERIFYING\s0, \s-1INITIALIZING\s0, etc. \fB%Compl\fR 
reports percent completion of \s-1REBUILDING\s0 or \s-1VERIFYING\s0, etc., units.
.PP
Note:  If a \*(L"*\*(R" appears at the end of the status, it means one of its sub-unit is in
\&\s-1WARNING\s0 state which a recoverable error might be found in the corresponding port.
.PP
The \fBPort\fR summary section lists all present ports specifying the port number,
disk status, unit affiliation, size (in human readable and blocks of 512 bytes),
and disk vendor assigned serial number.
.PP
The \fB\s-1BBU\s0\fR summary section lists a few important attributes such as hours left 
(in which the current \s-1BBU\s0 can backup the controller cache in the event of power
loss), temperature, voltage, and its readiness, etc.
.PP
Additional attributes about controllers, units, ports and disks can be obtained
by querying for them explicitly. See other show sub-commands below.
.PP
Typical output looks like:
.PP
.Vb 1
\& //localhost> /c0 show
.Ve
.PP
.Vb 5
\& Unit   UnitType       Status         %Cmpl   Stripe  Size(GB) Cache  AVerify  IgnECC
\& ------------------------------------------------------------------------------------
\& u0     RAID-1         OK             -       -       149.05   ON     OFF      OFF
\& u1     RAID-5         OK             -       64k     298.22   ON     OFF      OFF
\& u2     SPARE          OK             -       -       149.05   ON     OFF      -
.Ve
.PP
.Vb 14
\& Port   Status           Unit   Size        Blocks        Serial
\& ---------------------------------------------------------------
\& p0     OK               u0     149.05 GB   312581808     3JS0TF14      
\& p1     OK               u0     149.05 GB   312581808     3JS0TETZ      
\& p2     OK               u1     149.05 GB   312581808     3JS0VG85      
\& p3     OK               u1     149.05 GB   312581808     3JS0VGCY      
\& p4     OK               u1     149.05 GB   312581808     3JS0VGGQ      
\& p5     OK               u2     149.05 GB   312581808     3JS0VH1P      
\& p6     OK               -      149.05 GB   312581808     3JS0TF0P      
\& p7     OK               -      149.05 GB   312581808     3JS0VF43      
\& p8     OK               -      149.05 GB   312581808     3JS0VG8D      
\& p9     NOT-PRESENT      -      -           -             -
\& p10    NOT-PRESENT      -      -           -             -
\& p11    NOT-PRESENT      -      -           -             -
.Ve
.PP
.Vb 3
\& Name  OnlineState  BBUReady  Status    Volt     Temp     Hours  LastCapTest
\& ---------------------------------------------------------------------------
\& bbu   On           Yes       OK        OK       OK       241    22-Jun-2004
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR Attribute Attribute ..."
.IX Item "/cx show Attribute Attribute ..."
This command shows the current setting of the given \fIattribute(s)\fR. One or
many attributes can be requested. An invalid attribute will terminate the loop.
Possible attributes are: achip, allunitstatus, autocarve(9000 series), 
autorebuild(9550SX only), bios, carvesize(9000 series), driver, drivestatus,
exportjbod, firmware, memory, model, monitor, numdrives, numports, numunits,
ctlbus(9550SX only), ondegrade(9000S only), pcb, pchip, serial, spinup, 
stagger, and unitstatus.
.RE
.IP "\fI/cx\fR \fBshow\fR \fIdriver\fR"
.IX Item "/cx show driver"
This command reports the device driver version associated with controller
\&\fI/cx\fR.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0 show driver
\& /c0 Driver Version = 1.02.00.036
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fImodel\fR"
.IX Item "/cx show model"
This command reports the controller model of controller \fI/cx\fR.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0 show model
\& /c0 Model = 7500-12
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIfirmware\fR"
.IX Item "/cx show firmware"
This command reports the firmware version of controller \fI/cx\fR.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0 show firmware
\& /c0 Firmware Version = FGXX 2.01.00.025
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIbios\fR"
.IX Item "/cx show bios"
This command reports the \s-1BIOS\s0 version of controller \fI/cx\fR.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0 show bios
\& /c0 BIOS Version = BG9X 2.01.00.026
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fImonitor\fR"
.IX Item "/cx show monitor"
This command reports the monitor (firmware boot\-loader) version of
controller \fI/cx\fR.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0 show monitor
\& /c0 Monitor Version = BLDR 1.00.00.008
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIserial\fR"
.IX Item "/cx show serial"
This command reports the serial number of the specified controller \fI/cx\fR.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0 show serial
\& /c0 Serial Number = F12705A3240009
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIpcb\fR"
.IX Item "/cx show pcb"
This command reports the \s-1PCB\s0 (Printed Circuit Board) revision of the specified
controller \fI/cx\fR.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0 show pcb
\& /c0 PCB Version = Rev3
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIpchip\fR"
.IX Item "/cx show pchip"
This command reports the \s-1PCHIP\s0 (\s-1PCI\s0 Interface Chip) version of the specified
controller \fI/cx\fR.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show pchip
.Ve
.PP
.Vb 1
\& /c0 PCHIP Version = 1.30-33
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIachip\fR"
.IX Item "/cx show achip"
This command reports the \s-1ACHIP\s0 (\s-1ATA\s0 Interface Chip) version of the specified
controller \fI/cx\fR.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show achip
.Ve
.PP
.Vb 1
\& /c0 ACHIP Version = 3.20
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fInumports\fR"
.IX Item "/cx show numports"
This command reports the port capacity (number of physical ports) of the specified
controller \fI/cx\fR.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show numports
.Ve
.PP
.Vb 1
\& /c0 Number of Ports = 12
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fInumunits\fR"
.IX Item "/cx show numunits"
This command reports the number of units currently managed by the specified
controller \fI/cx\fR.  This report does not include off-line units (or exported units).
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show numunits
.Ve
.PP
.Vb 1
\& /c0 Number of Units = 1
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fInumdrives\fR"
.IX Item "/cx show numdrives"
This command reports the number of drives currently managed by the specified
controller \fI/cx\fR.  This report does not include (logically) removed/exported drives.
Also note that physically removed disk(s) will not be detected unless
I/O is performed against the disk. See \fB/cx/px show smart\fR for a workaround.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show numdrives
.Ve
.PP
.Vb 1
\& /c0 Number of Drives = 5
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIexportjbod\fR (9000 series)"
.IX Item "/cx show exportjbod (9000 series)"
This command presents the current \s-1JBOD\s0 Export Policy; \*(L"on\*(R", \*(L"off\*(R" or \*(L"Not Supported\*(R".
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show exportjbod
.Ve
.PP
.Vb 1
\& /c0 JBOD Export Policy = Not Supported.
.Ve
.PP
.Vb 1
\& //localhost> /c1 show exportjbod
.Ve
.PP
.Vb 1
\& /c1 JBOD Export Policy = on
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIspinup\fR (9000 series)"
.IX Item "/cx show spinup (9000 series)"
This command presents the number of concurrent disks spin up at the power on.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show spinup
.Ve
.PP
.Vb 1
\& /c0 Disk Spinup Policy = 1
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIondegrade\fR (9000S only)"
.IX Item "/cx show ondegrade (9000S only)"
This command presents the cache policy for degraded units.  If the ondegrade policy is
\&\fBFollow Unit Policy\fR, a unit cache policy stays the same when the unit becomes degraded.
If the ondegrade policy is \fBoff\fR, a unit cache policy will force to be off when the 
unit becomes degraded.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show ondegrade
.Ve
.PP
.Vb 1
\& /c0 Cache on Degraded Policy = Follow Unit Policy
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIstagger\fR (9000 series)"
.IX Item "/cx show stagger (9000 series)"
This command presents the time delay between each group of spinups at the power on.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show stagger
.Ve
.PP
.Vb 1
\& /c0 Spinup Stagger Time Policy (sec) = 2
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIautocarve\fR (9000 series)"
.IX Item "/cx show autocarve (9000 series)"
This command shows the Auto-Carving policy.  If the policy is on, all
newly created or migrated units larger than carvesize will be automatically 
carved into multiples of carvesize volumes and 1 remainder volume.  
Each volume can be treated as an individual disk with its own file system.  
The default carvesize is 2 \s-1TB\s0.  
.PP
This feature is useful for operating systems limited to 2 \s-1TB\s0 filesystems.  
For 64\-bit \s-1OS\s0 users, there is no need to set the policy to be \*(L"on\*(R" 
unless users want to have multiple smaller volumes to the \s-1OS\s0.  
For 32\-bit \s-1OS\s0 users, it is recommended to keep the policy on unless users 
know their \s-1OS\s0 supports more than 2 \s-1TB\s0 disk devices.
.PP
When autocarve policy is off, all the new unit creation consists of one 
single volume.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show autocarve
.Ve
.PP
.Vb 1
\& /c0 Auto-Carving Policy = on
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIcarvesize\fR (9000 series)"
.IX Item "/cx show carvesize (9000 series)"
This command shows the carvesize that Auto-Carving policy needs.  The
carve size is between 1024 to 2048 \s-1GB\s0.  Default carvesize is 2048 \s-1GB\s0 
(i.e. 2 \s-1TB\s0).  See "\fI/cx\fR \fBshow\fR \fIautocarve\fR" command above for details.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show carvesize
.Ve
.PP
.Vb 1
\& /c0 Auto-Carving Size = 2000 GB
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fImemory\fR"
.IX Item "/cx show memory"
This command presents the size of the memory installed on the controller.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show memory
.Ve
.PP
.Vb 1
\& /c0 Memory Installed = 112MB
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIctlbus\fR (9550SX only)"
.IX Item "/cx show ctlbus (9550SX only)"
This command presents the controller host bus type, bus speed and bus width.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show ctlbus
.Ve
.PP
.Vb 3
\& /c0 Controller Bus Type = PCIX
\& /c0 Controller Bus Width = 64 bits
\& /c0 Controller Bus Speed = 133 Mhz
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIautorebuild\fR (9550SX only)"
.IX Item "/cx show autorebuild (9550SX only)"
This command shows the Auto-Rebuild policy.  If the policy is enabled, the firmware
will choose following drives in order to find a candidate for rebuild operation 
on a degraded unit.
.PP
1.  Smallest usable capacity spare.
.PP
2.  Smallest usable unconfigured drive.
.PP
3.  Smallest usable capacity failed drive.
.PP
If the policy is disabled, spare drives are the only candidates for an automatic rebuild operation.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show autorebuild
.Ve
.PP
.Vb 1
\& /c0 Auto-Rebuild Policy = on
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIunitstatus\fR"
.IX Item "/cx show unitstatus"
This command presents a list of units, their types, capacity and status currently
managed by the specified controller \fI/cx\fR.
.PP
Example:
.PP
.Vb 1
\& //localhost> /cx show unitstatus
.Ve
.PP
.Vb 5
\& Unit  UnitType  Status         %Cmpl  Stripe  Size(GB)  Cache  AVerify  IgnECC
\& ------------------------------------------------------------------------------
\& u0    RAID-5    OK             -      64K     223.485   OFF    OFF      ON
\& u1    JBOD      OK             -      -       76.3352   OFF    OFF      -
\& u2    RAID-0    OK             -      64K     148.99    ON     ON       -
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIallunitstatus\fR"
.IX Item "/cx show allunitstatus"
This command presents a count of Total and Not Optimal units managed by the
specified controller \fI/cx\fR. See \*(L"Shell Object Messages\*(R" for more on Not Optimal
definition.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show allunitstatus
.Ve
.PP
.Vb 2
\& /c0 Total Optimal Units = 2
\& /c0 Not Optimal Units = 0
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIdrivestatus\fR"
.IX Item "/cx show drivestatus"
This command presents a list of drives, port assignment, vendor signature, size,
status, and unit membership/affiliation.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 show drivestatus
.Ve
.PP
.Vb 14
\& Port   Status           Unit   Size        Blocks        Serial
\& ---------------------------------------------------------------
\& p0     OK               u0     149.05 GB   312581808     3JS0TF14
\& p1     OK               u0     149.05 GB   312581808     3JS0TETZ
\& p2     OK               u1     149.05 GB   312581808     3JS0VG85
\& p3     OK               u1     149.05 GB   312581808     3JS0VGCY
\& p4     OK               u1     149.05 GB   312581808     3JS0VGGQ
\& p5     OK               u2     149.05 GB   312581808     3JS0VH1P
\& p6     OK               -      149.05 GB   312581808     3JS0TF0P
\& p7     OK               -      149.05 GB   312581808     3JS0VF43
\& p8     OK               -      149.05 GB   312581808     3JS0VG8D
\& p9     NOT-PRESENT      -      -           -             -
\& p10    NOT-PRESENT      -      -           -             -
\& p11    NOT-PRESENT      -      -           -             -
.Ve
.RE
.IP "\fI/cx\fR \fBshow all\fR"
.IX Item "/cx show all"
This command shows the current setting of all attributes.
.RE
.IP "\fI/cx\fR \fBadd\fR type=<RaidType> disk=<p:\-p> [stripe=Stripe] [noscan] [group=<3|4|5|6|7|8>] [nocache] [autoverify] [ignoreECC] [name=string] [storsave=<protect|balance|perform>]"
.IX Item "/cx add type=<RaidType> disk=<p:-p> [stripe=Stripe] [noscan] [group=<3|4|5|6|7|8>] [nocache] [autoverify] [ignoreECC] [name=string] [storsave=<protect|balance|perform>]"
This command allows you to add a new unit or create a unit on the specified controller \fI/cx\fR,
of type \fIRaidType\fR, optional stripe size of \fIStripe\fR, using one or many disks 
specified by \fIdisk=p:\-p\fR. By default the host operating system will be informed of the 
new block device and write cache is enabled. In case of \s-1RAID\-50\s0, you can also specify the 
layout of the unit by specifying the number of disks per disk group with \fIgroup=3|4|5|6|7|8\fR 
attribute.
.PP
Upon the success of the new unit creation, a unique serial number is also assigned to the
new unit.  Please refer to commands \fI/cx/ux show serial\fR for checking.
.PP
Note:  The default of the unit creation sets write cache to \*(L"on\*(R" for performance reason.
However, if there is no \s-1BBU\s0 available for the controller, a warning is sent to standard error.
.PP
Since this command is by far the richest command, it deserves more details.
.PP
\&\fB/cx\fR is the controller name as in /c0, /c1, etc.
.PP
\&\fBtype=RaidType\fR consists of logical unit type as in \fBraid0\fR, \fBraid1\fR, \fBraid5\fR, \fBraid10\fR,
\&\fBraid50\fR, \fBsingle\fR, \fBspare\fR, and \fB\s-1JBOD\s0 (7000/8000 only)\fR. 
.PP
For example type=raid50. 
.PP
The following table illustrates supported types and controller models.
.PP
.Vb 6
\& Model | Raid0 | Raid1 | Raid5 | Raid10 | JBOD | Spare | Raid50 | Single |
\& ------+-------+-------+-------+--------+------+-------+--------+--------+
\& 7K/8K |   Y   |   Y   |   Y   |    Y   |  Y   |   Y   |    N   |   N    |
\& ------+-------+-------+-------+--------+------+-------+--------+--------+
\& 9K    |   Y   |   Y   |   Y   |    Y   |  N   |   Y   |    Y   |   Y    |
\& ------+-------+-------+-------+--------+------+-------+--------+--------+
.Ve
.PP
\&\fBdisk=p:\-p\fR consists of a list of ports (disks) to be used in the construction
of the specified unit type. One or more ports can be specified. Multiple
ports can be specified using \fB\*(L":\*(R"\fR or \fB\*(L"\-\*(R"\fR as port index separators.
A dash indicates a range and can be mixed with \*(L":\*(R". For example
\&\fBdisk=0:1:2\-5:9:12\fR indicates port 0, 1, 2 thru 5 (inclusive), 9 and 12.
.PP
\&\fBstripe=Stripe\fR consists of the stripe size to be used.  The following
table illustrates the supported and applicable stripes on unit types and
controller models. Stripe size of units are in K (kilo bytes).
.PP
.Vb 12
\& Model | Raid0   | Raid1  | Raid5  | Raid10  | JBOD | Spare | Raid50 | Single |
\& ------+---------+--------+--------+---------+------+-------+--------+--------+
\& 7K/8K |   64    |   N/A  |   64   |   64    | N/A  |  N/A  |   N/S  |   N/S  |
\&       |   128   |        |        |   128   |      |       |        |        |
\&       |   256   |        |        |   256   |      |       |        |        |
\&       |   512   |        |        |   512   |      |       |        |        |
\&       |   1024  |        |        |   1024  |      |       |        |        |
\& ------+---------+--------+--------+---------+------+-------+--------+--------+
\& 9K    |   16    |   N/A  |   16   |   16    | N/A  |  N/A  |   16   |   N/A  |
\&       |   64    |        |   64   |   64    |      |       |   64   |        |
\&       |   256   |        |   256  |   256   |      |       |   256  |        |
\& ------+---------+--------+--------+---------+------+-------+--------+--------+
.Ve
.PP
\&\fBgroup=3|4|5|6|7|8\fR consists of the number of disks per group for a Raid 50 type.
Note, this attribute can only be used when type=raid50.
.PP
Recall that a \s-1RAID\-50\s0 is a multi-tier array. At the most bottom layer,
N number of disks per group are used to form the \s-1RAID\-5\s0 layer. These
\&\s-1RAID\-5\s0 arrays are then integrated into a \s-1RAID\-0\s0. This attribute allows
you to specify the number of disks in the \s-1RAID\-5\s0 level. Valid values
are 3, 4, 5, 6, 7 and 8.
.PP
Note that a sufficient number of disks are required for a given pattern or
disk group. For example, given 6 disks, specifying 3 will create two \s-1RAID\-5\s0.
However given 12 disks, specifying 3 will create four \s-1RAID\-5\s0 under the \s-1RAID\-0\s0 
level.  Given 6 disks and grouping of 6 is not allowed, as you'll basically 
be creating a \s-1RAID\-5\s0.
.PP
The default group varies based on number of disks. For 6 & 9 disks, default 
is group=3.  For 8 disks, default is group=4. For 10 or 15 disks, default is 
group=5.  For 12 or 16 disks, default is group=4.  For 14 disks, default is 
group=7.  Case of 12 disks could be grouped with group=3, group=4, or group=6. 
Group=4 was set by default as it provides best net capacity and performance.  
Case of 15 disks could be grouped with group=3 or group=5.  And case 
of 16 disks could be grouped with group=4 and group=8.
.PP
\&\fBnoscan\fR attribute instructs \s-1CLI\s0 not to notify \s-1OS\s0 of creation of the new unit.
By default \s-1CLI\s0 will inform the \s-1OS\s0. One application of this feature is to avoid 
the \s-1OS\s0 from creating block special devices such as /dev/sdb and /dev/sdc as some 
implementations might create naming fragmentation and creating a moving target.
.PP
\&\fBnocache\fR attribute instructs \s-1CLI\s0 disable the write cache on the newly created unit.
Enabling write cache increases performance at the cost of high\-availability.  No
cache is recommended when no \s-1BBU\s0 or \s-1UPS\s0 is installed.
.PP
\&\fBautoverify\fR attribute enables the autoverify attribute on the unit that is to
be created. For more details on this feature, refer to \*(L"cx/ux set Commands\*(R" section of
this document. This feature is not supported on model 7000/8000. On model 9000,
\&\s-1JBOD\s0 autoverify attribute is not persistent (does not survive reboots).
.PP
\&\fBignoreECC\fR attribute enables the ignoreECC/OverwriteECC attribute on the unit that is to
be created. For more details on this feature, refer to \*(L"cx/ux set Commands\*(R" section of
this document. The following table illustrates the supported Model-Unit Type.
This table only applies to setting this feature at unit creation time.
Generally ignoreECC applies to redundant units.
.PP
.Vb 6
\& Model | Raid0 | Raid1 | Raid5 | Raid10 | JBOD | Spare | Raid50 | Single |
\& ------+-------+-------+-------+--------+------+-------+--------+--------+
\& 7K/8K |   N   |   N   |   N   |    N   |  N   |   N   |    N   |   N    |
\& ------+-------+-------+-------+--------+------+-------+--------+--------+
\& 9K    |   N   |   Y   |   Y   |    Y   |  N   |   N   |    Y   |   N    |
\& ------+-------+-------+-------+--------+------+-------+--------+--------+
.Ve
.PP
\&\fBname=string\fR attribute allows user to name the new unit.  The maximum characters 
allowed for the string are 21.  No space is allowed within the string.  If user likes
to use some special characters which the \s-1OS\s0 command shell reserves such as '<', '>',
\&'!', and '&', etc in the name string, the user has to use quote "" around the name
string in order to bypass the command shell.  User can change the name of the unit 
any time after the unit creation.  This is a feature for 9000 or above series of 
controllers.  Please refer to commands \fI/cx/ux set name=sting\fR for changing the 
name and \fI/cx/ux show name\fR for checking.
.PP
\&\fBstorsave=protect|balance|perform\fR attribute allows user to set the storsave policy
of the new unit. It is a 9550SX only feature.  Please refer to command 
\&\fI/cx/ux set storsave=protect|balance|perform\fR for detail.
.RE
.IP "\fI/cx\fR \fBrescan\fR [\fInoscan\fR]"
.IX Item "/cx rescan [noscan]"
This command instructs the controller to rescan all ports and reconstitute
all units. The controller will update its list of ports (attached disks), and visits
every \s-1DCB\s0 (Disk Configuration Block) in order to re-assemble its view and
awareness of logical units.  Any newly found unit(s) or drive(s) will be listed.
\&\fInoscan\fR is used to not inform the \s-1OS\s0 of the unit discovery. Default is to inform 
the \s-1OS\s0.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c1 rescan
.Ve
.PP
.Vb 3
\& Rescanning controller /c1 for units and drives ...Done.
\& Found following unit(s): [/c1/u3].
\& Found following drive(s): [/c1/p7, /c1/p8].
.Ve
.PP
Note: Does not import non-JBOD on 7000/8000 models.
.RE
.IP "\fI/cx\fR \fBcommit\fR"
.IX Item "/cx commit"
This command instructs the controller to commit its dirty DCBs to
persistent storage (ie disks). While controller is processing I/O requests
against underlying disks, an in-transaction bit is set. If a failure (such
as power failure) is experienced, subsequent read from the disks, will inform
the controller that an un-clean shutdown took place. This command allows the
end user to complete all pending I/Os on disks and clear the in-transaction
bit.
.PP
Typical application of this feature is when an application is using a given
unit in raw mode (such as databases) and user would like to shutdown the
host (Including \s-1UPS\s0 post failure automations). This command can then expedite
the process by instructing the controller to finish pending requests, clear
\&\s-1DCB\s0's in-transaction flag as we are going down.
.PP
Note that block devices (cooked devices) do not require this and clients of
block devices (such as file systems) will send its own shutdown request to the 
devices.
.PP
This command only applies to Windows operating system. 
.RE
.IP "\fI/cx\fR \fBflush\fR"
.IX Item "/cx flush"
This command allows you to flush the write cache on all units associated with 
the \fI/cx\fR controller
.RE
.IP "\fI/cx\fR \fBshow\fR \fIalarms\fR [\fIreverse\fR]"
.IX Item "/cx show alarms [reverse]"
Asynchronous events are originated by firmware and captured by their respective device
drivers. These events are kept in a finite queue inside the kernel, awaiting extraction by
user space programs such as \s-1CLI\s0 and/or 3DMPlus. These events reflect warning, debugging
and/or informative messages for end user.
.PP
Alarms generated on 7000/8000 models do not have dates, as such you'll see a '\-'
(read not\-applicable) in \*(L"Date\*(R" column. Also on 7000/8000 models, the alarm message,
contain the severity as well, hence the \*(L"Severity\*(R" column is showing a '\-' as well.
.PP
This command displays all available alarms on a given controller.  The default is
to display the most recent alarm or \s-1AEN\s0 message first.  User can also use the [\fIreverse\fR]
attribute to display the most recent alarm or \s-1AEN\s0 message last.
.PP
Typical output looks like:
.PP
.Vb 1
\& //localhost> /c1 show alarms reverse
.Ve
.PP
.Vb 12
\& Ctl  Date                        Severity  Message
\& ----------------------------------------------------------------------------
\& c1   [Fri Nov 28 04:26:31 2003]  ERROR     (0x04:0x0002): Degraded unit detected: unit=0, port=2
\& c1   [Fri Nov 28 06:13:54 2003]  INFO      (0x04:0x000B): Rebuild started: unit=0
\& c1   [Fri Nov 28 06:30:35 2003]  INFO      (0x04:0x003B): Background rebuild paused: unit=0
\& c1   [Fri Nov 28 06:33:00 2003]  ERROR     (0x04:0x0002): Degraded unit detected: unit=0, port=0
\& c1   [Fri Nov 28 06:33:04 2003]  ERROR     (0x04:0x0002): Degraded unit detected: unit=0, port=4
\& c1   [Fri Nov 28 06:33:46 2003]  INFO      (0x04:0x000B): Rebuild started: unit=0
\& c1   [Fri Nov 28 06:37:58 2003]  INFO      (0x04:0x000B): Rebuild started: unit=0
\& c1   [Fri Nov 28 07:51:34 2003]  INFO      (0x04:0x0005): Background rebuild done: unit=0
\& c1   [Fri Nov 28 07:59:43 2003]  INFO      (0x04:0x0005): Background rebuild done: unit=0
\& c1   [Mon Dec  1 02:26:12 2003]  ERROR     (0x04:0x0002): Degraded unit detected: unit=0, port=3
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIdiag\fR"
.IX Item "/cx show diag"
This command extracts controller diagnostics suitable for technical support usage.
Note that some characters might not be printable or rendered correctly (human
readable). It is recommended to save this output to a file, where it can be
communicated to tech support or further studied with Linux utilities like \fIod\fR\|(1).
.PP
Example:
.PP
.Vb 1
\& $ tw_cli /c0 show diag > diag.txt
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIrebuild\fR"
.IX Item "/cx show rebuild"
Model 9000 series support background tasks such as rebuild, verify, or self test activities. For each activity, up to 
7 tasks can be registered, known as slots 1 through 7. Each task activity can be managed 
by a set of commands including \fBadd\fR, \fBdel\fR, \fBshow\fR and \fBset\fR. Background 
tasks have a slot id, start day, hour, duration, and status attributes.
.PP
Rebuild activity attempts to (re)synchronize all members of redundant units such
as \s-1RAID\-1\s0, \s-1RAID\-10\s0, \s-1RAID\-5\s0 and \s-1RAID\-50\s0. Rebuilds can be started manually or automatically
if a spare has been defined. Scheduled rebuilds will take place during the scheduled
window, if enabled.
.PP
This command displays the current rebuild background task schedule as illustrated below.
.PP
.Vb 1
\& $ tw_cli /c1 show rebuild
.Ve
.PP
.Vb 11
\& Rebuild Schedule for Controller /c1
\& ========================================================
\& Slot    Day     Hour            Duration        Status
\& --------------------------------------------------------
\& 1       Mon     2:00pm          10 hr(s)        disabled
\& 2       Thu     7:00pm          18 hr(s)        disabled
\& 3       -       -               -               -
\& 4       -       -               -               -
\& 5       -       -               -               -
\& 6       Mon     1:00am           4 hr(s)        disabled
\& 7       Sun     12:00am          1 hr(s)        disabled
.Ve
.PP
\&\fBStatus\fR \*(L"disabled\*(R" indicates that the controller will not use the tabled schedules.
.PP
Note:  The rebuild schedules are also applicable to initialization and migration processes.
.PP
For example:
.PP
If a unit is in the initialization state at noon on Wed, the tabled schedule above
is show in the following:
.PP
.Vb 1
\& $ tw_cli /c1 show rebuild
.Ve
.PP
.Vb 11
\& Rebuild Schedule for Controller /c1
\& ========================================================
\& Slot    Day     Hour            Duration        Status
\& --------------------------------------------------------
\& 1       Mon     2:00pm          10 hr(s)        disabled
\& 2       Thu     7:00pm          18 hr(s)        disabled
\& 3       -       -               -               -
\& 4       -       -               -               -
\& 5       -       -               -               -
\& 6       Mon     1:00am           4 hr(s)        disabled
\& 7       Sun     12:00am          1 hr(s)        disabled
.Ve
.PP
.Vb 4
\& $ tw_cli /c1 show
\& Unit  UnitType  Status         %Cmpl  Stripe  Size(GB)  Cache  AVerify  IgnECC
\& ------------------------------------------------------------------------------
\& u0    RAID-5    INITIALIZING   0      64K     521.466   ON     OFF      OFF
.Ve
.PP
.Vb 14
\& Port   Status           Unit   Size        Blocks        Serial
\& ---------------------------------------------------------------
\& p0     NOT-PRESENT      -      -           -             -
\& p1     OK               u0     76.33 GB    160086528     Y2NXL7FE
\& p2     NOT-PRESENT      -      -           -             -
\& p3     OK               u0     76.33 GB    160086528     Y2NXLB9E
\& p4     NOT-PRESENT      -      -           -             -
\& p5     OK               u0     76.33 GB    160086528     Y2NXQPZE
\& p6     NOT-PRESENT      -      -           -             -
\& p7     OK               u0     76.33 GB    160086528     Y2NXM4VE
\& p8     OK               u0     74.53 GB    156301488     3JV3WTSE
\& p9     OK               u0     74.53 GB    156301488     3JV3WRHC
\& p10    OK               u0     74.53 GB    156301488     3JV3WQLQ
\& p11    OK               u0     74.53 GB    156301488     3JV3WQLZ
.Ve
.PP
.Vb 3
\& Name  OnlineState  BBUReady  Status    Volt     Temp     Hours  LastCapTest
\& ---------------------------------------------------------------------------
\& bbu   On           Yes       OK        OK       OK       0      xx-xxx-xxxx
.Ve
.PP
Then if the user enables the tabled schedules, the unit initialization will be paused
until next scheduled slot comes.
.PP
.Vb 2
\& $ tw_cli /c1 set rebuild=enable
\& Enabling scheduled rebuilds on controller /c1 ...Done.
.Ve
.PP
.Vb 1
\& $ tw_cli /c1 show rebuild
.Ve
.PP
.Vb 11
\& Rebuild Schedule for Controller /c1
\& ========================================================
\& Slot    Day     Hour            Duration        Status
\& --------------------------------------------------------
\& 1       Mon     2:00pm          10 hr(s)        enabled
\& 2       Thu     7:00pm          18 hr(s)        enabled
\& 3       -       -               -               -
\& 4       -       -               -               -
\& 5       -       -               -               -
\& 6       Mon     1:00am           4 hr(s)        enabled
\& 7       Sun     12:00am          1 hr(s)        enabled
.Ve
.PP
.Vb 1
\& $ tw_cli /c1 show
.Ve
.PP
.Vb 3
\& Unit  UnitType  Status         %Cmpl  Stripe  Size(GB)  Cache  AVerify  IgnECC
\& ------------------------------------------------------------------------------
\& u0    RAID-5    INIT-PAUSED    0      64K     521.466   ON     OFF      OFF
.Ve
.PP
.Vb 14
\& Port   Status           Unit   Size        Blocks        Serial
\& ---------------------------------------------------------------
\& p0     NOT-PRESENT      -      -           -             -
\& p1     OK               u0     76.33 GB    160086528     Y2NXL7FE
\& p2     NOT-PRESENT      -      -           -             -
\& p3     OK               u0     76.33 GB    160086528     Y2NXLB9E
\& p4     NOT-PRESENT      -      -           -             -
\& p5     OK               u0     76.33 GB    160086528     Y2NXQPZE
\& p6     NOT-PRESENT      -      -           -             -
\& p7     OK               u0     76.33 GB    160086528     Y2NXM4VE
\& p8     OK               u0     74.53 GB    156301488     3JV3WTSE
\& p9     OK               u0     74.53 GB    156301488     3JV3WRHC
\& p10    OK               u0     74.53 GB    156301488     3JV3WQLQ
\& p11    OK               u0     74.53 GB    156301488     3JV3WQLZ
.Ve
.PP
.Vb 3
\& Name  OnlineState  BBUReady  Status    Volt     Temp     Hours  LastCapTest
\& ---------------------------------------------------------------------------
\& bbu   On           Yes       OK        OK       OK       0      xx-xxx-xxxx
.Ve
.RE
.IP "\fI/cx\fR \fBshow\fR \fIverify\fR"
.IX Item "/cx show verify"
Model 9000 series support background tasks such as rebuild, verify, or self test activities. 
For each activity, up to 7 tasks can be registered, known as slots 1 through 7. Each 
activity can be managed by a set of commands including \fBadd\fR, \fBdel\fR, \fBshow\fR 
and \fBset\fR a task. Background tasks have a slot id, start day, hour, duration, and 
status attributes.
.PP
Verify activity attempts to verify all units based on their unit type.  Verifying
\&\s-1RAID\-1\s0 involves checking that both drives contain the exact data.  On \s-1RAID\-5\s0, the 
parity information is used to verify data integrity. \s-1RAID\-10\s0 and 50 are composite 
types and follow their respective array types. On the 9000 series, non-redundant units
such as \s-1RAID\-0\s0, \s-1JBOD\s0, single, and spare, are also verified (by reading and reporting
un-readable sectors).
.PP
This command displays the current verify background task schedule as illustrated below.
.PP
.Vb 1
\& $ tw_cli /c1 show verify
.Ve
.PP
.Vb 11
\& Verify Schedule for Controller /c1
\& ========================================================
\& Slot    Day     Hour            Duration        Status
\& --------------------------------------------------------
\& 1       Mon     2:00am           4 hr(s)        disabled
\& 2       -       -               -               -
\& 3       Tue     12:00am         24 hr(s)        disabled
\& 4       Wed     12:00am         24 hr(s)        disabled
\& 5       Thu     12:00am         24 hr(s)        disabled
\& 6       Fri     12:00am         24 hr(s)        disabled
\& 7       Sat     12:00am         24 hr(s)        disabled
.Ve
.PP
\&\fBStatus\fR \*(L"disabled\*(R" indicates that the controller will not use the tabled schedules.
.RE
.IP "\fI/cx\fR \fBshow\fR \fIselftest\fR"
.IX Item "/cx show selftest"
Model 9000 series support background tasks such as rebuild, verify, or self test 
activities. For each activity, up to
7 tasks can be registered, known as slots 1 through 7. Each activity can be managed
by a set of commands including \fBadd\fR, \fBdel\fR, \fBshow\fR and \fBset\fR a task. Background
tasks have a slot id, start\-day\-time, duration, status attributes.
.PP
\&\fBselftest\fR activity provides two types of selftests; \s-1UDMA\s0 (Ultra Direct Memory Access)
and \s-1SMART\s0 (Self Monitoring Analysis and Reporting).  Both self tests are checked once
each day by default.
.PP
\&\s-1UDMA\s0 self test entails checking the current parallel \s-1ATA\s0 bus speed (between controller and 
attached disk), which could have been throttled down during previous operations, and 
increases the speed for best performance (usually one level higher). Possible speeds 
include 33, 66, 100 and 133 Mhz.  Note that the \s-1UDMA\s0 selftest is not 
applicable (or required) with \s-1SATA\s0 drives, but is left enabled by default.
.PP
\&\s-1SMART\s0 selftest instructs the controller to check certain \s-1SMART\s0 supported thresholds
by the disk vendor.  An \s-1AEN\s0 is logged to the alarms page if a drive reports a \s-1SMART\s0
failure.  The failing drive should be replaced if this error occurs.
.PP
This command displays the current selftest background task schedule as illustrated below.
.PP
.Vb 1
\& $ tw_cli /c1 show selftest
.Ve
.PP
.Vb 11
\& Selftest Schedule for Controller /c1
\& ========================================================
\& Slot    Day     Hour            UDMA            SMART
\& --------------------------------------------------------
\& 1       Sun     12:00am         enabled         enabled
\& 2       Mon     12:00am         enabled         enabled
\& 3       Tue     12:00am         enabled         enabled
\& 4       Wed     12:00am         enabled         enabled
\& 5       Thu     12:00am         enabled         enabled
\& 6       Fri     12:00am         enabled         enabled
\& 7       Sat     12:00am         enabled         enabled
.Ve
.RE
.IP "\fI/cx\fR \fBadd\fR \fIrebuild=ddd:hh:duration\fR"
.IX Item "/cx add rebuild=ddd:hh:duration"
This command adds a new background rebuild task to be executed on the day
\&\fIddd\fR (where ddd is Sun, Mon, Tue, Wed, Thu, Fri, and Sat), at the hour \fIhh\fR 
(range 0 .. 23), for a duration of \fIduration\fR (range 1 .. 24) hours. This
command will fail if no (empty) slot is available.
.PP
For \*(L"rebuild\*(R" background task description, see command \fB/cx show rebuild\fR.
.PP
For example:
.PP
.Vb 1
\& $ tw_cli /c1 add rebuild=Sun:16:3
.Ve
.PP
Will add a rebuild background task schedule to be executed on Sundays at 4:00 \s-1PM\s0 for
a duration of 3 hours.
.RE
.IP "\fI/cx\fR \fBadd\fR \fIverify=ddd:hh:duration\fR"
.IX Item "/cx add verify=ddd:hh:duration"
This command adds a new background \fIverify\fR task to be executed on
day \fIddd\fR (where ddd is Sun, Mon, Tue, Wed, Thu, Fri, and Sat), at hour
\&\fIhh\fR (range 0 .. 23), for a duration of \fIduration\fR (range 1 .. 24) hours.
This command will fail if no (empty) slot is available.
.PP
For \*(L"verify\*(R" background task description, see command \fB/cx show verify\fR.
.PP
For example:
.PP
.Vb 1
\& $ tw_cli /c1 add verify=Sun:16:3
.Ve
.PP
Will add a verify background task schedule to be executed on Sundays at
4:00 \s-1PM\s0 for a duration of 3 hours.
.RE
.IP "\fI/cx\fR \fBadd\fR \fIselftest=ddd:hh\fR"
.IX Item "/cx add selftest=ddd:hh"
This command adds a new background \fIselftest\fR task to be executed on
day \fIddd\fR (where ddd is Sun, Mon, Tue, Wed, Thu, Fri, and Sat), at hour
<hh> (range 0 .. 23). Notice that selftest runs to completion and as such
no duration is provided. This command will fail if no (empty) slot is
available.
.PP
For \*(L"selftest\*(R" background task description, see command \fB/cx show selftest\fR.
.PP
For example:
.PP
.Vb 1
\& $ tw_cli /c1 add selftest=Sun:16
.Ve
.PP
Will add a selftest background task schedule to be executed on Sundays at 4:00 \s-1PM\s0.
.RE
.IP "\fI/cx\fR \fBdel\fR \fIrebuild=slot_id\fR"
.IX Item "/cx del rebuild=slot_id"
This command will remove (or unregister) the rebuild background task in slot \fIslot_id\fR.
.PP
For \*(L"rebuild\*(R" background task description, see command \fB/cx show rebuild\fR.
.PP
For example:
.PP
.Vb 1
\& $ tw_cli /c1 del rebuild=2
.Ve
.PP
Will remove rebuild background task in slot 2.
.PP
\&\s-1WARNING:\s0 If all timeslots are removed, be sure to also disable the schedule.
Otherwise the applicable background task will never occur.
.RE
.IP "\fI/cx\fR \fBdel\fR \fIverify=slot_id\fR"
.IX Item "/cx del verify=slot_id"
This command will remove (or unregister) the verify background task in slot \fIslot_id\fR.
.PP
For \*(L"verify\*(R" background task description, see command \fB/cx show verify\fR.
.PP
For example:
.PP
.Vb 1
\& $ tw_cli /c1 del verify=3
.Ve
.PP
Will remove rebuild background task in slot 3.
.PP
\&\s-1WARNING:\s0 If all timeslots are removed, be sure to also disable the schedule.
Otherwise the applicable background task will never occur.
.RE
.IP "\fI/cx\fR \fBdel\fR \fIselftest=slot_id\fR"
.IX Item "/cx del selftest=slot_id"
This command will remove (or unregister) the selftest background
task in slot \fIslot_id\fR.
.PP
For \*(L"selftest\*(R" background task description, see command \fB/cx show selftest\fR.
.PP
For example:
.PP
.Vb 1
\& $ tw_cli /c1 del selftest=3
.Ve
.PP
Will remove selftest background task in slot 3.
.PP
\&\s-1WARNING:\s0 If all timeslots are removed, be sure to also disable the schedule.
Otherwise the applicable background task will never occur.
.RE
.IP "\fI/cx\fR \fBset\fR \fIrebuild=enable|disable|1..5\fR"
.IX Item "/cx set rebuild=enable|disable|1..5"
This command will \fIenable\fR or \fIdisable\fR all rebuild background tasks on controller \fI/cx\fR.
When enabled, only tabled scheduled tasks will be followed (or used). Any
previous on-demand background tasks will be ignored.
.PP
This command also allows you to set priority of rebuild vs I/O  operations.
Setting this value to 1 implies that rebuilds should consume more
resources (cpu time, I/O bandwidth) to complete its task. Conversely
setting this value to 5 implies that I/O has higher priority and rebuild.
This command applies to 7000, 8000, and 9000 models. For 7/8000 series,
the rebuild rate also applies to verify and mediascan tasks.
.PP
For \*(L"rebuild\*(R" background task description, see command \fB/cx show rebuild\fR.
.RE
.IP "\fI/cx\fR \fBset\fR \fIverify=enable|disable|1..5\fR"
.IX Item "/cx set verify=enable|disable|1..5"
This command will \fIenable\fR or \fIdisable\fR all verify background tasks on controller \fI/cx\fR.
When enabled, only tabled scheduled tasks will be followed (or used). Any
previous on-demand background tasks will be ignored.
.PP
This command allows you to set priority of verification vs I/O operations.
Setting this value to 1 implies fastest verify, and 5 implies fastest I/O.
Note that this feature only applies to 9000 models.
.PP
For \*(L"verify\*(R" background task description, see command \fB/cx show verify\fR.
.RE
.IP "\fI/cx\fR \fBset\fR \fIselftest=enable|disable\fR [\fItask=UDMA|SMART\fR]"
.IX Item "/cx set selftest=enable|disable [task=UDMA|SMART]"
This command will \fIenable\fR or \fIdisable\fR all or a particular \fBtask=selftest_task\fR 
(\s-1UDMA\s0 or \s-1SMART\s0) on a specified controller \fI/cx\fR.  When enabled, only specified
\&\fBtask=selftest_task\fR task will be performed during a scheduled timeslot.  If
no task is specified, the command is applicable to both tasks.
.PP
For \*(L"selftest\*(R" background task description, see command \fB/cx show selftest\fR.
.PP
For example:
.PP
.Vb 1
\& $ tw_cli /c0 selftest=enable task=UDMA
.Ve
.PP
Will enable \s-1UDMA\s0 selftest on controller c0.
.RE
.IP "\fI/cx\fR \fBset\fR \fIexportjbod=on|off\fR"
.IX Item "/cx set exportjbod=on|off"
This command allows you to set the \s-1JBOD\s0 Export Policy to on or off.
If \s-1JBOD\s0 export policy is off, \s-1CLI\s0 would not be able to create JBODs
and during reboot, the firmware will not export \s-1JBOD\s0 units to the
operating system. \s-1JBOD\s0 Export Policy is only supported on 9000 series controllers. 
Previous models did not have such a policy enforcement feature.
.RE
.IP "\fI/cx\fR \fBset\fR \fIondegrade=cacheoff|follow\fR  (9000S only)"
.IX Item "/cx set ondegrade=cacheoff|follow  (9000S only)"
This command allows you to set a controller based cache policy. If the policy
is set to \fIcacheoff\fR, then if a unit is degraded, firmware will disable
the write-cache on the degraded unit, regardless of what the unit-based policy
is. If the policy is set to \fIfollow\fR, then if a unit is degraded, firmware will
follow whatever policy has been set for that unit.
.RE
.IP "\fI/cx\fR \fBset\fR \fIspinup=nn\fR"
.IX Item "/cx set spinup=nn"
This command allows you to set a controller based disk spin up policy. The value
must be a positive integer between 1 to the number of disks/ports supported on
the controller (e.g. 4, 8, 12, 16). This policy is used to stagger spin ups of disks
at boot time in order to spread the power consumption on the power supply.
For example, given a spin up policy of 2, the controller will spin up two disks
at a time, pause, and then spin up another 2 disks, etc, etc. The amount of time
to pause can be specified with the spin up stagger time policy.
.RE
.IP "\fI/cx\fR \fBset\fR \fIstagger=nn\fR"
.IX Item "/cx set stagger=nn"
This command allows you to set a controller based disk spin up stagger time 
policy.  The value must be a positive integer between 0 to 60 seconds. This 
policy in conjunction with disk spin up policy specifies how the controller 
should spin up disks at boot time.
.RE
.IP "\fI/cx\fR \fBset\fR \fIautocarve=on|off\fR  (9000 series)"
.IX Item "/cx set autocarve=on|off  (9000 series)"
This command allows you to set the Auto-Carving policy to be on or off.  
When the Auto-Carving policy is on, any unit larger than the carvesize 
is created or migrated into one or more carvesize volumes and a remaining 
volume.  Each volume can be treated as an individual disk with its own 
file system.  The default carvesize is 2 \s-1TB\s0.  This feature is useful for 
operating systems limited to 2 \s-1TB\s0 filesystems.  
.PP
For example a 3 \s-1TB\s0 array would be configured into a 2 \s-1TB\s0 and a 1 \s-1TB\s0 
volumes with default carvesize.  For a 5 \s-1TB\s0 array, two 2 \s-1TB\s0 volumes 
would be created plus a 1 \s-1TB\s0 volume.  
.PP
When autocarve policy is off, all the new unit creation or migration 
consists of one single volume.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0 set autocarve=on
\& Setting Auto-Carving Policy on /c0 to on ... Done.
.Ve
.RE
.IP "\fI/cx\fR \fBset\fR \fIcarvesize=[1024..2048]\fR  (9000 series)"
.IX Item "/cx set carvesize=[1024..2048]  (9000 series)"
This command allows you to set the carve size in \s-1GB\s0.  This feature 
works together with the autocarve above.  
See "\fI/cx\fR \fBset\fR \fIautocarve=on|off\fR" command above for details.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0 set carvesize=2000
\& Setting Auto-Carving Size on /c0 to 2000 GB ... Done.
.Ve
.RE
.IP "\fI/cx\fR \fBset\fR \fIautorebuild=on|off\fR      (9550SX only)"
.IX Item "/cx set autorebuild=on|off      (9550SX only)"
This command sets Auto-Rebuild policy to be on or off.  If the policy 
is on, the firmware will choose drives in the following priority order for 
a candidate of a rebuild operation (on a degraded unit).
.PP
1.  Smallest usable capacity spare.
.PP
2.  Smallest usable unconfigured drive.
.PP
3.  Smallest usable capacity failed drive.
.PP
If the policy is off, spares are the only candidates for rebuild operations.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0 set autorebuild=on
.Ve
.PP
.Vb 1
\& Setting Auto-Rebuild Policy on /c0 to on ... Done.
.Ve
.RE
.IP "\fI/cx\fR \fBstart\fR \fImediascan\fR"
.IX Item "/cx start mediascan"
This command applies to 7000/8000 controllers. It provides media scrubbing
for validating functionality of a disk. This includes bad block detection
and remapping, etc. The commands starts a media scan operation on the
specified controller \fI/cx\fR.
.RE
.IP "\fI/cx\fR \fBstop\fR \fImediascan\fR"
.IX Item "/cx stop mediascan"
This command applies to 7000/8000 controllers. It provides media scrubbing
for validating functionality of a disk. This includes bad block detection
and remapping, etc. The commands stops a media scan operation on the
specified controller \fI/cx\fR.
.Sh "Logical Disk Object Messages"
.IX Subsection "Logical Disk Object Messages"
Logical Disk Object Messages are commands (a.k.a. methods/messages) that are sent to
an instance of a Logical Disk (a.k.a. unit) such as \fI/c0/u0\fR. 
.RE
.IP "\fI/cx/ux\fR \fBshow\fR"
.IX Item "/cx/ux show"
This command shows summary information on the specified unit \fI/cx/ux\fR.
If the unit consists of sub-units as with the case of \s-1RAID\-10\s0, and \s-1RAID\-50\s0 arrays, 
then each sub-unit is further presented.  If the Auto-Carving policy 
was on at the time the unit was created and the unit is over the carve size 
(default is 2 \s-1TB\s0), multiple volumes will be created but will not be displayed.  
.PP
One application of this command is to see which sub-unit of a degraded unit has 
caused the unit to degrade and which disk within that sub-unit is the source of 
degradation.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/u0 show
.Ve
.PP
.Vb 11
\& Unit     UnitType  Status        %Cmpl  Port  Stripe  Size(GB)  Blocks
\& ----------------------------------------------------------------------
\& u0       RAID-50   OK            -      -     64K     596.05    1249921024
\& u0-0     RAID-5    OK            -      -     64K     -         -
\& u0-0-0   DISK      OK            -      p0    -       149.10    312481280
\& u0-0-1   DISK      OK            -      p2    -       149.10    312481280
\& u0-0-2   DISK      OK            -      p3    -       149.10    312481280
\& u0-1     RAID-5    OK            -      -     64K     -         -
\& u0-1-0   DISK      OK            -      p4    -       149.10    312481280
\& u0-1-1   DISK      OK            -      p5    -       149.10    312481280
\& u0-1-2   DISK      OK            -      p6    -       149.10    312481280
.Ve
.PP
.Vb 1
\& //localhost> /c0/u1 show
.Ve
.PP
.Vb 15
\& Unit     UnitType  Status        %Cmpl  Port  Stripe  Size(GB)  Blocks
\& ----------------------------------------------------------------------
\& u1       RAID-0    OK            -      -     64K     3578.40   7499550720
\& u1-0     DISK      OK            -      p0    -       298.20    624962560
\& u1-1     DISK      OK            -      p1    -       298.20    624962560
\& u1-2     DISK      OK            -      p2    -       298.20    624962560
\& u1-3     DISK      OK            -      p3    -       298.20    624962560
\& u1-4     DISK      OK            -      p4    -       298.20    624962560
\& u1-5     DISK      OK            -      p5    -       298.20    624962560
\& u1-6     DISK      OK            -      p6    -       298.20    624962560
\& u1-7     DISK      OK            -      p7    -       298.20    624962560
\& u1-8     DISK      OK            -      p8    -       298.20    624962560
\& u1-9     DISK      OK            -      p9    -       298.20    624962560
\& u1-10    DISK      OK            -      p10   -       298.20    624962560
\& u1-11    DISK      OK            -      p11   -       298.20    624962560
.Ve
.RE
.IP "\fI/cx/ux\fR \fBshow\fR Attribute Attribute ..."
.IX Item "/cx/ux show Attribute Attribute ..."
This command shows the current setting of the given \fIattribute(s)\fR. One or
many attributes can be requested.  An invalid attribute will terminate the loop.
Possible attributes are: initializestatus, name(9000 series), qpolicy(9550SX Only),
rebuildstatus, serial(9000 series), status, storsave(9550SX Only), verifystatus, 
volumes(9000 series).  The attributes volumes, name, and serial are applied 
to 9000 series controllers; and the attributes qpolicy and storsave are only 
applied to 9550SX controllers.
.RE
.IP "\fI/cx/ux\fR \fBshow\fR \fIstatus\fR"
.IX Item "/cx/ux show status"
This command presents the status of the specified unit.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/u0 show status
.Ve
.PP
.Vb 1
\& /c0/u5 status = OK
.Ve
.RE
.IP "\fI/cx/ux\fR \fBshow\fR \fIrebuildstatus\fR"
.IX Item "/cx/ux show rebuildstatus"
This command presents the rebuildstatus (if any) of the specified unit.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/u5 show rebuildstatus
.Ve
.PP
.Vb 1
\& /c0/u5 is not rebuilding, its current state is OK
.Ve
.RE
.IP "\fI/cx/ux\fR \fBshow\fR \fIverifystatus\fR"
.IX Item "/cx/ux show verifystatus"
This command presents the verifystatus (if any) of the specified unit.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/u5 show verifystatus
.Ve
.PP
.Vb 1
\& /c0/u5 is not verifying, its current state is OK
.Ve
.RE
.IP "\fI/cx/ux\fR \fBshow\fR \fIinitializestatus\fR"
.IX Item "/cx/ux show initializestatus"
This command presents the initializestatus (if any) of the specified unit.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/u5 show initializestatus
.Ve
.PP
.Vb 1
\& /c0/u5 is not initializing, its current state is OK
.Ve
.RE
.IP "\fI/cx/ux\fR \fBshow\fR \fIvolumes\fR (9000 series)"
.IX Item "/cx/ux show volumes (9000 series)"
This command presents the number of volumes of the specified unit.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/u5 show volumes
.Ve
.PP
.Vb 1
\& /c0/u5 Volume(s) = 2
.Ve
.RE
.IP "\fI/cx/ux\fR \fBshow\fR \fIname\fR (9000 series)"
.IX Item "/cx/ux show name (9000 series)"
This command presents the name (if any) of the specified unit.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/u5 show name
.Ve
.PP
.Vb 1
\& /c0/u5 Name = Joe
.Ve
.RE
.IP "\fI/cx/ux\fR \fBshow\fR \fIserial\fR (9000 series)"
.IX Item "/cx/ux show serial (9000 series)"
This command presents the unique serial number of the specified unit.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/u5 show serial
.Ve
.PP
.Vb 1
\& /c0/u5 Serial Number = 12345678901234567890
.Ve
.RE
.IP "\fI/cx/ux\fR \fBshow\fR \fIqpolicy\fR (9550SX only)"
.IX Item "/cx/ux show qpolicy (9550SX only)"
This command presents the queue policy of the firmware.  If the queue policy is 
on, the firmware utilizes the drive queueing policy.  If some of the drives 
do not support any queueing policy, this policy will have no effect on 
those drives.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/u5 show qpolicy
.Ve
.PP
.Vb 1
\& /c0/u5 Command Queuing Policy = on
.Ve
.RE
.IP "\fI/cx/ux\fR \fBshow\fR \fIstorsave\fR (9550SX only)"
.IX Item "/cx/ux show storsave (9550SX only)"
This command presents the storsave policy (protect|balance|perform) of the 
firmware on the unit.  
.PP
For detail, see \fI/cx/ux\fR \fBset\fR \fIstorsave=protect|balance|perform\fR (9550SX only).
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/u5 show storsave
.Ve
.PP
.Vb 1
\& /c0/u5 Command Storsave Policy = protect
.Ve
.RE
.IP "\fI/cx/ux\fR \fBshow all\fR"
.IX Item "/cx/ux show all"
This command shows the current setting of all above attributes.
.PP
If the 2TB Auto-Carving policy was on at the time the unit was created and the
unit is over 2TB, the total number of volumes will be displayed.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/u1 show all
.Ve
.PP
.Vb 7
\& /c0/u1 status = OK
\& /c0/u1 is not rebuilding, its current state is OK
\& /c0/u1 is not verifying, its current state is OK
\& /c0/u1 is not initializing, its current state is OK
\& /c0/u1 volume(s) = 2
\& /c0/u1 name = 1234567
\& /c0/u1 serial number = C6CPR7JMF98DA8001DF0
.Ve
.PP
.Vb 15
\& Unit     UnitType  Status        %Cmpl  Port  Stripe  Size(GB)  Blocks
\& ----------------------------------------------------------------------
\& u1       RAID-0    OK            -      -     64K     3578.40   7499550720
\& u1-0     DISK      OK            -      p0    -       298.20    624962560
\& u1-1     DISK      OK            -      p1    -       298.20    624962560
\& u1-2     DISK      OK            -      p2    -       298.20    624962560
\& u1-3     DISK      OK            -      p3    -       298.20    624962560
\& u1-4     DISK      OK            -      p4    -       298.20    624962560
\& u1-5     DISK      OK            -      p5    -       298.20    624962560
\& u1-6     DISK      OK            -      p6    -       298.20    624962560
\& u1-7     DISK      OK            -      p7    -       298.20    624962560
\& u1-8     DISK      OK            -      p8    -       298.20    624962560
\& u1-9     DISK      OK            -      p9    -       298.20    624962560
\& u1-10    DISK      OK            -      p10   -       298.20    624962560
\& u1-11    DISK      OK            -      p11   -       298.20    624962560
.Ve
.RE
.IP "\fI/cx/ux\fR \fBexport\fR [\fInoscan\fR] [\fIquiet\fR]"
.IX Item "/cx/ux export [noscan] [quiet]"
This command allows you to export (or remove) a \fBunit\fR. Exporting a unit will instruct
the firmware to remove the specified unit from its pool of managed units, but retains
the \s-1DCB\s0 (Disk Configuration Block) meta\-data. As such the unit can later be imported
back. \fInoscan\fR is used to not inform the \s-1OS\s0 of this change. Default is to inform the \s-1OS\s0.
The quiet option is for non-interactive mode.   
.PP
Use caution when using this command.  Units that are currently in use or mounted
cannot be removed.
.RE
.IP "\fI/cx/ux\fR \fBdel\fR [\fInoscan\fR] [\fIquiet\fR]"
.IX Item "/cx/ux del [noscan] [quiet]"
This command allows you to delete a \fBunit\fR.  Deleting a unit not only remove the 
specified unit from the controller's list of managed units, but also \fBdestroys\fR
the \s-1DCB\s0 (Disk Configuration Block) meta\-data. Ports (or disks) associated with this 
unit will now be part of the free pool of managed disks.  In another words, once
the unit is deleted, all the data on the unit \fBcan not be recovered\fR.
\&\fInoscan\fR is used to not inform the \s-1OS\s0 of this change. Default is to inform 
the \s-1OS\s0.  The quiet option is for non-interactive mode.
.PP
Use caution when using this command.  \fBThis is a destructive command and should be\fR 
\&\fBused with extreme care\fR.  Units that are currently in use or mounted
should not be deleted.
.RE
.IP "\fI/cx/ux\fR \fBstart\fR \fIrebuild\fR \fIdisk=p\fR [\fIignoreECC\fR]"
.IX Item "/cx/ux start rebuild disk=p [ignoreECC]"
This command allows you to rebuild a \s-1DEGRADED\s0 unit by using the specified \fBdisk=p\fR.
Rebuild only applies to redundant arrays such as \s-1RAID\-1\s0, \s-1RAID\-5\s0, \s-1RAID\-10\s0 and \s-1RAID\-50\s0.
During rebuild, bad sectors on the source disk will cause the rebuild to fail.
You can allow for the operation to continue via  \fBignoreECC\fR. Rebuild process is
a background task and will change the state of a unit to \s-1REBUILDING\s0. Various
\&\fBshow\fR commands also show a percent completion as rebuilding progresses.
.PP
Note that the disk to be used to rebuild a unit, must be a \s-1SPARE\s0 or unconfigured
disk.
.RE
.IP "\fI/cx/ux\fR \fBstart\fR \fIverify\fR"
.IX Item "/cx/ux start verify"
This command starts a background verification process on the specified
unit \fI/cx/ux\fR. The following shows the supported matrix as a function of
controller model and logical unit type. N/A (Not Applicable) refers to cases
where the given logical unit type is not supported on that controller model.
.PP
.Vb 6
\& Model | Raid0 | Raid1 | Raid5 | Raid10 | Raid50 | Single | JBOD | Spare |
\& ------+-------+-------+-------+--------+--------+--------+------+-------+
\& 7K/8K |  No   |  Yes  |  Yes  |  Yes   |  N/A   | N/A    | No   | No    |
\& ------+-------+-------+-------+--------+--------+--------+------+-------+
\& 9K    |  Yes  |  Yes  |  Yes  |  Yes   |  Yes   | Yes    | Yes  | Yes   |
\& ------+-------+-------+-------+--------+--------+--------+------+-------+
.Ve
.PP
Note that if subsequent to this command, one enables the background verify
task to follow the scheduled slots, then this on-demand task will be paused
until the next scheduled timeslot.
.RE
.IP "\fI/cx/ux\fR \fBpause\fR \fIrebuild\fR"
.IX Item "/cx/ux pause rebuild"
This command allows you to \fBpause\fR the rebuild operation on the specified 
\&\s-1REBUILDING\s0 unit \fB/cx/ux\fR.  This feature is intended for model 7000 and 8000
only. Model 9000 has an on-board scheduler where rebuild operations can be 
scheduled to take place at specified start and stop times.
.PP
Rebuild \fBpause\fR function is provided to enable 7000/8000 users to achieve 
functionality with use of \s-1OS\s0 provided schedulers such as \fIcron\fR\|(8) or, \fIat\fR\|(1) 
in Linux or user supplied programs.
.RE
.IP "\fI/cx/ux\fR \fBresume\fR \fIrebuild\fR"
.IX Item "/cx/ux resume rebuild"
This command allows you to \fBresume\fR the rebuild operation on the specified 
unit \fB/cx/ux\fR.  This feature is intended for model 7000 and 8000 only.  
Model 9000 has an on-board scheduler where rebuild operations can be scheduled 
to take place at specified start and stop times.  
.PP
Rebuild \fBresume\fR function is provided to 
enable 7000/8000 users to achieve similar functionality with use of \s-1OS\s0 provided
schedulers such as \fIcron\fR\|(8) or, \fIat\fR\|(1) in Linux or user supplied programs.
.RE
.IP "\fI/cx/ux\fR \fBstop\fR \fIverify\fR"
.IX Item "/cx/ux stop verify"
This command stops a background verification process on the specified
unit \fI/cx/ux\fR. The following shows the supported matrix as a function of
controller model and logical unit type. N/A (Not Applicable) refers to cases
where the given logical unit type is not supported on that controller model.
.PP
.Vb 6
\& Model | Raid0 | Raid1 | Raid5 | Raid10 | Raid50 | Single | JBOD | Spare |
\& ------+-------+-------+-------+--------+--------+--------+------+-------+
\& 7K/8K |  No   |  Yes  |  Yes  |  Yes   |  N/A   | N/A    | No   | No    |
\& ------+-------+-------+-------+--------+--------+--------+------+-------+
\& 9K    |  Yes  |  Yes  |  Yes  |  Yes   |  Yes   | Yes    | Yes  | Yes   |
\& ------+-------+-------+-------+--------+--------+--------+------+-------+
.Ve
.PP
Note that if subsequent to this command, one enables the background verify
task to follow the scheduled slots, then this on-demand task will be paused
until the next scheduled timeslot.
.RE
.IP "\fI/cx/ux\fR \fBflush\fR"
.IX Item "/cx/ux flush"
This command allows you to flush the write cache on the specified unit \fI/ux\fR
associated with controller \fI/cx\fR. Note that this command does not apply to 
spare unit types.
.RE
.IP "\fI/cx/ux\fR \fBset\fR \fIautoverify=on|off\fR"
.IX Item "/cx/ux set autoverify=on|off"
This command allows you to turn on/off the autoverify operation on a specified
unit \fI/cx/ux\fR.  Once the autoverify=on, the \s-1RAID\s0 firmware will pick a time
to start the verify process on the unit.  If the allocated schedule windows is
enabled, the verify process becomes active during the scheduled windows.  Otherwise,
the firmware will decide when the verify needs to be paused or restarted again before
it completes.  
.PP
You can use the \fBshow verify\fR command to display the existing schedule
windows. The autoverify operation is a continuous verify operation, which takes
place within the existing schedule windows (displayed with /cx show verify) if
the schedule is enabled.  While the \*(L"/cx show verify\*(R" command allows
you to see the time for the verify operation, this command allows you to
enable or disable the autoverify operation on the specified unit.  This feature
only applies to 9000 models.
.RE
.IP "\fI/cx/ux\fR \fBset\fR \fIcache=on|off\fR [\fIquiet\fR]"
.IX Item "/cx/ux set cache=on|off [quiet]"
This command allows you to turn the write cache on a specified unit \fI/cx/ux\fR, 
on or off.  This feature is supported on both 7000/8000 and 9000 models. The 
quiet option is for non-interactive mode.  It can be used in conjunction with 
\&\fIset\fR \fIcache=on\fR command when the controller has no \s-1BBU\s0 installed.  
The following is the Raid Type-Model support matrix.
.PP
.Vb 6
\& Model | Raid0 | Raid1 | Raid5 | Raid10 | Raid50 | Single | JBOD | Spare |
\& ------+-------+-------+-------+--------+--------+--------+------+-------+
\& 7K/8K |  Yes  |  Yes  |  Yes  |  Yes   |  N/A   | N/A    | Yes  | No    |
\& ------+-------+-------+-------+--------+--------+--------+------+-------+
\& 9K    |  Yes  |  Yes  |  Yes  |  Yes   |  Yes   | Yes    | Yes  | No    |
\& ------+-------+-------+-------+--------+--------+--------+------+-------+
.Ve
.RE
.IP "\fI/cx/ux\fR \fBset\fR \fIignoreECC=on|off\fR"
.IX Item "/cx/ux set ignoreECC=on|off"
This command allows you to set the ignoreECC policy for a given unit such that during
rebuild of the specified unit, which could begin automatically (if the unit is
degraded and spare has been defined) or manually, to be applied to the rebuild operation.
Setting overwriteECC to on means ignoreECC. This feature only applies to
9000 models.
.RE
.IP "\fI/cx/ux\fR \fBset\fR \fIname=string\fR    (9000 series)"
.IX Item "/cx/ux set name=string    (9000 series)"
This command allows you to name the unit to an arbitrary name upto 21 characters.  
No space is allowed within the string.  If user likes to use some special characters 
which the \s-1OS\s0 command shell reserves such as '<', '>', '!', and '&', etc in the name 
string, the user has to use quote "" around the name string in order to bypass the 
command shell.  Users can use this 
name in conjunction with the unit serial number (which created at the unit creation 
time) to cross reference with the unit.  It is user's responsibility to give unique 
or redundant names on all units.  This feature only applies to 9000 models. 
.PP
Note:  Users can also name a \s-1JBOD\s0.  But the naming information will not persist 
across power cycles or resets due to the nature of JBODs. 
.RE
.IP "\fI/cx/ux\fR \fBset\fR \fIqpolicy=on|off\fR (9550SX only)"
.IX Item "/cx/ux set qpolicy=on|off (9550SX only)"
This command sets the queue policy of the firmware.  If the queue policy is
on, the firmware utilizes the drive queueing policy.  If some of the drives
do not support any queueing policy, this policy will have no effect on
those drives.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/u5 set qpolicy = on
.Ve
.PP
.Vb 1
\& Setting Command Queuing Policy for unit /c0/u5 to [on] ... Done.
.Ve
.RE
.IP "\fI/cx/ux\fR \fBset\fR \fIstorsave=protect|balance|perform\fR [\fIquiet\fR] (9550SX only)"
.IX Item "/cx/ux set storsave=protect|balance|perform [quiet] (9550SX only)"
This command sets the storsave policy of the firmware to be either protect, balance,
or perform when the unit write cache is enabled.  
.PP
This feature is available only within 9550SX controller family or above.  There is 
a tradeoff among the available settings.  The following description about the settings
should help you to decide which one is suitable to you and your application.  The 
protect mode is the default setting.
.PP
\&\fBprotect\fR \*(-- provide the maximum data protection among the controller settings.  
When user sets storsave to protect mode, it means : 
.PP
1. \*(L"Write Cache\*(R" will be disabled when the unit becomes \*(L"\s-1DEGRADED\s0\*(R", 
.PP
2. all data flushing from controller cache will be flushed to media, and 
.PP
3. incoming \s-1FUA\s0 (Force Unit Access) host request will be ignored if a \s-1BBU\s0 is 
installed and enabled;  Otherwise, will be honored. 
.PP
\&\fBperform\fR \*(-- provide the maximum performance and less data protection among the the 
controller settings.  When user sets the storsave to perform mode, it means:  
.PP
1. \*(L"Write Cache\*(R" will not be disabled when the unit becomes \*(L"\s-1DEGRADED\s0\*(R", 
.PP
2. all data flushing from controller cache will be flushed to disk, and 
.PP
3. incoming \s-1FUA\s0 (Force Unit Access) host request will be honored.
.PP
When storsave is set to \fBperform\fR, a warning about the data loss in the 
event of power failure is giving to user to confirm the option.  If user 
want to skip the confirmation, [\fIquiet\fR] option can be used to by pass 
the warning. 
.PP
\&\fBbalance\fR \*(-- provide more data protection than perform mode but less data 
protection than protect mode.  And provide better performance than protect 
mode but less performance than perform mode.  When user sets the storsave 
to the balance mode, it means: 
.PP
1. \*(L"Write Cache\*(R" will not be disabled when the unit becomes \*(L"\s-1DEGRADED\s0\*(R", 
.PP
2. all data flushing from controller cache will be flushed to media if a 
\&\s-1BBU\s0 is installed and enabled; Otherwise, will be flushed to disk only, and 
.PP
3. incoming \s-1FUA\s0 (Force Unit Access) host request will be ignored if a \s-1BBU\s0 is 
installed and enabled;  Otherwise, will be honored.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/u5 set storsave=protect
.Ve
.PP
.Vb 1
\& Setting Command Storsave Policy for unit /c0/u5 to [protect] ... Done.
.Ve
.RE
.IP "\fI/cx/ux\fR \fBmigrate\fR type=\fIRaidType\fR [disk=\fIp:\-p\fR] [group=\fI3|4|5|6|7|8\fR] [stripe=\fIStripe\fR] [\fInoscan\fR] [\fInocache\fR] [\fIautoverify\fR]"
.IX Item "/cx/ux migrate type=RaidType [disk=p:-p] [group=3|4|5|6|7|8] [stripe=Stripe] [noscan] [nocache] [autoverify]"
This command allows you to migrate an existing unit (aka source) to a unit with \fItype=RaidType\fR
(aka destination) to achieve a goal of either capacity expansion.
The destination is subject to similar rules and policies during its creation time.
For example a valid number of disks and parameters must be specified.  The destination 
unit must use all source disks and potentially augment in the disk=\fIp:\-p\fR list for
a larger capacity.  Un-specified parameters
are inherited from the source unit.  Both source name and serial number will be
carried over to the destination unit.
.PP
A special case of this command is when the source unit has a type of \s-1RAID1\s0 and 
destination unit has a type of single.  In this case, the \fBmigrate\fR command splits 
drives participating in \s-1RAID1\s0 into multiple units of type single.  The source unit 
name information will be duplicated to all destination units.  But the source 
unit serial number will \fBnot\fR be carried over to new unit.  The new destination unit
will have its own serial number.  
.PP
This feature is only available with 9000 series of controllers.
.PP
Note:  We do not recommend users to move a migrating unit to another controller before 
its migrate operation is completed.  Any unclean shutdown on the migrating unit may 
lead the unit to a \s-1RECOVERY\s0 state in another controller which the migrate operation 
can not be continue until the unit is moved back to its original controller. 
.PP
\&\fBtype=RaidType\fR consists of the destination unit \s-1RAID\s0 type as in \fBraid0\fR, \fBraid1\fR, \fBraid5\fR, \fBraid10\fR,
\&\fBraid50\fR, or \fBsingle\fR.  
.PP
For example \*(L"type=raid5\*(R" indicates the destination unit is \s-1RAID\-5\s0.
.PP
The following table illustrates valid migration paths:
.PP
.Vb 18
\& Src/Dst | Raid0 | Raid1 | Raid5 | Raid10 | Raid50 | Single | JBOD | Spare |
\& --------+-------+-------+-------+--------+--------+--------+------+-------+
\&  Raid0  |   Y   |   N   |   Y   |    Y   |    Y   |   N    |   N  |   N   |
\& --------+-------+-------+-------+--------+--------+--------+------+-------+
\&  Raid1  |   Y   |   N   |   Y   |    Y   |    Y   |   Y    |   N  |   N   |
\& --------+-------+-------+-------+--------+--------+--------+------+-------+
\&  Raid5  |   Y   |   N   |   Y   |    Y   |    Y   |   N    |   N  |   N   |
\& --------+-------+-------+-------+--------+--------+--------+------+-------+
\&  Raid10 |   Y   |   N   |   Y   |    Y   |    Y   |   N    |   N  |   N   |
\& --------+-------+-------+-------+--------+--------+--------+------+-------+
\&  Raid50 |   Y   |   N   |   Y   |    Y   |    Y   |   N    |   N  |   N   |
\& --------+-------+-------+-------+--------+--------+--------+------+-------+
\&  Single |   Y   |   Y   |   Y   |    Y   |    Y   |   N    |   N  |   N   |
\& --------+-------+-------+-------+--------+--------+--------+------+-------+
\&  JBOD   |   N   |   N   |   N   |    N   |    N   |   N    |   N  |   N   |
\& --------+-------+-------+-------+--------+--------+--------+------+-------+
\&  Spare  |   N   |   N   |   N   |    N   |    N   |   N    |   N  |   N   |
\& --------+-------+-------+-------+--------+--------+--------+------+-------+
.Ve
.PP
\&\fBdisk=p:\-p..\fR consists of a list of ports (disks) to be used in addition to the
source disks in the construction of the destination unit. One or more ports can be
specified. Multiple ports can be specified using \fB\*(L":\*(R"\fR or \fB\*(L"\-\*(R"\fR as port index
separators.  A dash indicates a range and can be mixed with \*(L":\*(R". For example
\&\fBdisk=0:1:2\-5:9:12\fR indicates port 0, 1, 2 thru 5 (inclusive), 9 and 12.
.PP
\&\fBgroup=3|4|5|6|7|8\fR is \fBonly\fR applicable to \fBtype=raid50\fR which consists of a number
of disks per group.  Recall that a \s-1RAID\-50\s0 is a multi-tier array. At the most
bottom layer, N number of disks per group are used to form the \s-1RAID\-5\s0 layer.
These \s-1RAID\-5\s0 arrays are then integrated into a \s-1RAID\-0\s0. This option allows you
to specify the number of disks in the \s-1RAID\-5\s0 level. Valid values are 3, 4, 5
and 6.  For example \fBgroup=3\fR indicates 3 disks of \s-1RAID\-5\s0 at the bottom layer
of \s-1RAID\-50\s0.
.PP
Note that a sufficient number of disks are required for a given pattern or disk
group. For example, given 6 disks, specifying 3 will create two \s-1RAID\-5\s0.  However
given 12 disks, specifying 3 will create four \s-1RAID\-5\s0 under the \s-1RAID\-0\s0 level.  Given
6 disks and grouping of 6 is not allowed, as you'll basically be creating a \s-1RAID\-5\s0.
.PP
The default disk \fBgroup\fR varies based on number of disks. For 6 & 9 disks, default
is group=3.  For 8 disks, default is group=4. For 10 or 15 disks, default is
group=5.  For 12 or 16 disks, default is group=4.  For 14 disks, default is
group=7.  Case of 12 disks could be grouped with group=3, group=4, or group=6.
Group=4 was set by default as it provides best net capacity and performance.
Case of 15 disks could be grouped with group=3 or group=5.  And case
of 16 disks could be grouped with group=4 and group=8.
.PP
Note that \s-1RAID\-10\s0 has \fBgroup=2\fR always.
.PP
\&\fBStripe\fR consists of the logical unit stripe size to be used.
The following table illustrates the supported and applicable stripes on
unit types and controller models. Stripe size units are in K (kilo bytes).
.PP
.Vb 6
\& Model | Raid0   | Raid1  | Raid5  | Raid10  | JBOD | Spare | Raid50 | Single |
\& ------+---------+--------+--------+---------+------+-------+--------+--------+
\& 9K    |   16    |   N/A  |   16   |   16    | N/A  |  N/A  |   16   |   N/A  |
\&       |   64    |        |   64   |   64    |      |       |   64   |        |
\&       |   256   |        |   256  |   256   |      |       |   256  |        |
\& ------+---------+--------+--------+---------+------+-------+--------+--------+
.Ve
.PP
\&\fBnoscan\fR switch instructs \s-1CLI\s0 not to notify \s-1OS\s0 of creation of the new unit.
By default \s-1CLI\s0 will inform the \s-1OS\s0. One application of this feature is to avoid the \s-1OS\s0
from creating block special devices such as /dev/sdb and /dev/sdc as some implementations
might create naming fragmentation and creating a moving target.
.PP
\&\fBnocache\fR switch instructs \s-1CLI\s0 disable the write cache on the migrated unit.  
Enabling write cache increases performance at the cost of high\-availability.
.PP
\&\fBautoverify\fR switch enables the autoverify attribute on the unit that is to
be migrated. For more details on this feature, refer to \*(L"cx/ux set Commands\*(R" section of
this document.
.PP
For example:
.PP
In the case of split mirror:
.PP
.Vb 1
\& $ tw_cli /c1/u3 migrate type=single
.Ve
.PP
Indicates that u3 is a \s-1TWINSTOR\s0 or \s-1RAID\-1\s0 and the \fBmigrate\fR command splits u3 to u3 
and ux with \s-1RAID\s0 type of Single.
.PP
In the case of capacity expansion:
.PP
.Vb 1
\& $ tw_cli /c0/u0 migrate type=raid10 disk=3-4 stripe=16
.Ve
.PP
Indicates that the destination unit has a \s-1RAID\s0 type of raid10 and has the disk 3, 4
in addition to all the disks in the existing unit u0.
.PP
The following is a mockup of how migrating units will be displayed...
.PP
.Vb 5
\& 3ware CLI> /c0 show
\& Unit   UnitType       Status         %Cmpl   Stripe  Size(GB) Cache  AVerify  IgnECC
\& ------------------------------------------------------------------------------------
\& u0     Migrator       MIGRATING      67      -       149.05   ON     OFF      OFF
\& u1     RAID-5         OK             -       64k     298.22   ON     OFF      OFF
.Ve
.PP
.Vb 1
\& 3ware CLI> /c0/u0 show
.Ve
.PP
.Vb 3
\& Unit     UnitType  Status        %Cmpl  Port  Stripe  Size(GB)  Blocks
\& ----------------------------------------------------------------------
\& u0       Migrator  MIGRATING     67     -     -       -         -
.Ve
.PP
.Vb 3
\& su0      RAID-1    OK             -      -     -       149.001   312477696
\& su0-0    DISK      OK             -      p0    -       149.001   312477696
\& su0-1    DISK      OK             -      p2    -       149.001   312477696
.Ve
.PP
.Vb 7
\& du0      RAID-10   OK             -      -     16K     298.002   624955392
\& du0-0    RAID-1    OK             -      -     -       -         -
\& du0-0-0  DISK      OK             -      p0    -       149.001   312477696
\& du0-0-1  DISK      OK             -      p2    -       149.001   312477696
\& du0-1    RAID-1    OK             -      -     -       -         -
\& du0-1-0  DISK      OK             -      p3    -       149.001   312477696
\& du0-1-1  DISK      OK             -      p4    -       149.001   312477696
.Ve
.PP
The above report indicates that \fI/c0/u0\fR is a migrating unit with 67%
completion. The report also indicate that Source Unit \fIsu0\fR is of type \s-1RAID\-1\s0
and Destination Unit \fIdu0\fR is of type \s-1RAID\-10\s0.
.Sh "Port Object Messages"
.IX Subsection "Port Object Messages"
Port Object Messages are commands (a.k.a. methods/messages) that are sent to
an instance of a disk which attaches to a port such as \fI/c0/p0\fR.
.RE
.IP "\fI/cx/px\fR \fBshow\fR"
.IX Item "/cx/px show"
This command shows summary information on the specified disk attached to port \fI/cx/px\fR.
Typical information looks like:
.PP
Example:
.PP
.Vb 4
\& //localhost> /c0/p5 show
\& Port   Status           Unit   Size        Blocks        Serial
\& ---------------------------------------------------------------
\& p5     OK               u5     149.05 GB   312581808     WD-WMACK1406498
.Ve
.PP
The above report indicate that port 5 of controller 0 is attached to one Western Digital
disk with status \s-1OK\s0 participating in unit 5.
.RE
.IP "\fI/cx/px\fR \fBshow\fR \fIAttribute Attribute ...\fR"
.IX Item "/cx/px show Attribute Attribute ..."
This command shows the current setting of the given \fIattribute(s)\fR on the
specified port or disk. One or many attributes can be requested. Invalid 
attribute will terminate the loop.  Possible attributes are: capacity,
firmware, identify(9550SX only), lspeed(9550SX only), model, 
ncq(9550SX only), serial, smart, and status.
.RE
.IP "\fI/cx/px\fR \fBshow\fR \fIstatus\fR"
.IX Item "/cx/px show status"
This command presents the status  of the specified port.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0/p5 show status
\& /c0/p5 Status = OK
.Ve
.RE
.IP "\fI/cx/px\fR \fBshow\fR \fImodel\fR"
.IX Item "/cx/px show model"
This command presents the model of the specified port.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0/p5 show model
\& /c0/p5 Model = WDC WD1600BB-00DAA0
.Ve
.RE
.IP "\fI/cx/px\fR \fBshow\fR \fIserial\fR"
.IX Item "/cx/px show serial"
This command presents the serial number of the specified port.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0/p5 show serial
\& /c0/p5 Serial = WD-WMACK1406498
.Ve
.RE
.IP "\fI/cx/px\fR \fBshow\fR \fIfirmware\fR"
.IX Item "/cx/px show firmware"
This command presents the firmware version of the specified port.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0/p5 show firmware
\& /c0/p5 Firmware Version = 65.13G65
.Ve
.RE
.IP "\fI/cx/px\fR \fBshow\fR \fIidentify\fR (9550SX only)"
.IX Item "/cx/px show identify (9550SX only)"
This command presents the \s-1LED\s0 status of the port for 9550SX only.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/p5 show identify
.Ve
.PP
.Vb 1
\& /c0/p5 Identify Status = on
.Ve
.RE
.IP "\fI/cx/px\fR \fBshow\fR \fIncq\fR (9550SX only)"
.IX Item "/cx/px show ncq (9550SX only)"
This command presents the \s-1NCQ\s0 (Native Command Queueing) information of the port.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/p5 show ncq
.Ve
.PP
.Vb 2
\& /c0/p5 NCQ Supported = No
\& /c0/p5 NCQ Enabled = No
.Ve
.RE
.IP "\fI/cx/px\fR \fBshow\fR \fIlspeed\fR (9550SX only)"
.IX Item "/cx/px show lspeed (9550SX only)"
This command presents the \s-1SATA\s0 link speed supported by the disk behind the port and the
actual speed is set to.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/p5 show lspeed
.Ve
.PP
.Vb 2
\& /c0/p5 SATA Link Speed Supported = 3.0 Gb/s
\& /c0/p5 SATA Link Speed = 3.0 Gb/s
.Ve
.RE
.IP "\fI/cx/px\fR \fBshow\fR \fIcapacity\fR"
.IX Item "/cx/px show capacity"
This command presents the capacity, both in human readable (such as \s-1GB\s0) and block count
of the specified port. Note that at this writing, human readable format is computed based
on division by 1000 (not 1024) as is popular with hard disk vendors.
.PP
Example:
.PP
.Vb 2
\& //localhost> /c0/p5 show capacity
\& 149.05 GB (312581808)
.Ve
.RE
.IP "\fI/cx/px\fR \fBshow\fR \fIsmart\fR"
.IX Item "/cx/px show smart"
This command extracts \s-1SMART\s0 (Self Monitoring Analysis and Reporting) data from the
specified disk. Note that this data is actually extracted live from the disk; as
such this command could be used to get most recent data about presence or lack of a
disk. Be aware that extracting \s-1SMART\s0 data will burden the I/O bandwidth.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/p5 show smart
.Ve
.PP
.Vb 5
\& 10 00 01 0B 00 C8 C8 00 00 00 00 00 00 00 03 07
\& 00 9A 96 BC 14 00 00 00 00 00 04 32 00 64 64 7A
\& 00 00 00 00 00 00 05 33 00 C8 C8 00 00 00 00 00
\& ...
\& 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2C
.Ve
.PP
Note that at this writing, we are not decoding the \s-1SMART\s0 data.  Also note that if 
the disk attached to the specified port is not present or there are cabling problems
reaching the disk, \s-1CLI\s0 will return an error. This could be one way of detecting
whether a disk is present or not.
.RE
.IP "\fI/cx/px\fR \fBshow\fR \fIall\fR"
.IX Item "/cx/px show all"
This command shows the current setting of all above attributes.
.RE
.IP "\fI/cx/px\fR \fBexport\fR [\fInoscan\fR] [\fIquiet\fR]"
.IX Item "/cx/px export [noscan] [quiet]"
This command allows you to export (or remove) a port \fB/cx/px\fR (or drive). 
Exporting a port will instruct the firmware to remove the specified port
form its pool of managed ports, but retains the \s-1DCB\s0 (Disk Configuration Block)
meta-data on the attached disk.  You can import (or re\-introduce) the port
via \fBrescan\fR. \fInoscan\fR is used to not inform the \s-1OS\s0 of this change.
Default is to inform the \s-1OS\s0.  The quiet option is for non-interactive mode.
.PP
Use caution when using this command.  Drives, which are part of a redundant
array, can be removed,  but the array will be degraded.  Non-redundant drives, 
which are part of a unit, can not be removed.
.RE
.IP "\fI/cx/px\fR \fBset\fR \fIidentify=on|off\fR (9550SX only)"
.IX Item "/cx/px set identify=on|off (9550SX only)"
This command sets the \s-1LED\s0 status of the port.  If the identify is set to on, 
the firmware activates the setting of the corresponding \s-1LED\s0 of the port.  If the
setting of the configuration for \s-1LED\s0 is blinking for identify=on, this will blink 
the \s-1LED\s0 of the port.
.PP
Note:  Enclosure services hardware is also required.
.PP
Example:
.PP
.Vb 1
\& //localhost> /c0/p5 set identify=on
.Ve
.PP
.Vb 1
\& Setting Port Identify on /c0/p5 to [on] ... Done.
.Ve
.Sh "\s-1BBU\s0 Object Messages"
.IX Subsection "BBU Object Messages"
\&\s-1BBU\s0 (Battery Backup Unit) Object Messages are commands (a.k.a. methods/messages) 
that are sent to an instance of a \s-1BBU\s0 such as \fI/c0/bbu\fR. This object is only
available on 9000S controllers where the \s-1BBU\s0 is actually installed.
.RE
.IP "\fI/cx/bbu\fR \fBshow\fR"
.IX Item "/cx/bbu show"
This command presents a summary report on the specified \s-1BBU\s0 object.
.PP
For example:
.PP
.Vb 1
\& //localhost> /cx/bbu show
.Ve
.PP
.Vb 3
\& Name  OnlineState  BBUReady  Status    Volt     Temp     Hours  LastCapTest
\& ---------------------------------------------------------------------------
\& bbu   On           No        Testing   OK       OK       72     01-Jul-2004
.Ve
.PP
Indicates the date the battery capacity was last measured is 01\-Jul\-2004.  The
battery is estimated to last for 72 hours from the last tested date.
The \s-1BBU\s0 unit is currently testing the battery.  Both voltage and temperature 
are normal.  And the \s-1BBU\s0 is \fBnot\fR ready to backup the write cache on the 
controller due to the testing.
.RE
.IP "\fI/cx/bbu\fR \fBshow\fR \fIAttribute Attribute ...\fR"
.IX Item "/cx/bbu show Attribute Attribute ..."
This command shows the current setting of the given \fIattribute(s)\fR on the 
\&\s-1BBU\s0 board. One or many attributes can be requested. Invalid attribute will
terminate the loop.  Possible attributes are: batinst, bootloader, cap,
fw, lasttest, pcb, ready, serial, status, temp, and volt.
.RE
.IP "\fI/cx/bbu\fR \fBshow\fR \fIstatus\fR"
.IX Item "/cx/bbu show status"
This command \fBshow\fRs the status of the \s-1BBU\s0.  Possible values are:
.Sp
.RS 4
\&\fBTesting\fR 
.Sp
Battery test is currently in progress.  It may take up to 24 hours to complete.
During the test, the \s-1BBU\s0 is \fBnot\fR capable of backup operation and the write
cache of the applicable \s-1RAID\s0 units are also disabled.  If the test is completed with
no error and the \s-1BBU\s0 returns back to WeakBat or \s-1OK\s0 state, the write cache will be resumed.
If a Fault, Failed or an Error occurs during the test, the write cache remains at the
disabled state until the problem is fixed.
.Sp
\&\fBCharging\fR 
.Sp
\&\s-1BBU\s0 is currently charging the battery.  The charging is started automatically 
by the \s-1BBU\s0 whenever necessary.  During the charging, the \s-1BBU\s0 is \fBnot\fR capable 
of backup operation and the write cache is disabled.  Once charging is completed
and the \s-1BBU\s0 returns back to \s-1OK\s0 status, the write cache will be
resumed.  If a \s-1FAULT\s0 or an \s-1ERROR\s0 occurs during the test, the write cache remains
at the disabled state until the problem is fixed.
.Sp
\&\fBFault\fR    
.Sp
A battery fault is detected.  At this state, the \s-1BBU\s0 is \fBnot\fR capable of backup 
operation and the write cache is disabled.  We recommend you to replace the
battery and/or the \s-1BBU\s0 board to fix the problem as soon as possible so that the
write cache will be enabled again.
.Sp
\&\fBError\fR    
.Sp
Other \s-1BBU\s0 error is detected.  At this state, the \s-1BBU\s0 is \fBnot\fR capable of backup
operation and the write cache is disabled.  We recommend you to replace the
battery and/or the \s-1BBU\s0 board to fix the problem as soon as possible so that the 
write cache will be enabled again.
.Sp
\&\fBFailed\fR
.Sp
The battery failed a test.  At this state, the \s-1BBU\s0 is \fBnot\fR capable of backup
operation and the write cache is disabled.  We recommend you to replace the
battery and/or the \s-1BBU\s0 board to fix the problem as soon as possible so that the
write cache will be enabled again.
.Sp
\&\fBWeakBat\fR
.Sp
\&\s-1BBU\s0 is functioning normally which means it is online and capable of backing up the 
write cache.  But the battery is \fBweak\fR and should be \fBreplaced\fR.
.Sp
\&\fB\s-1OK\s0\fR       
.Sp
\&\s-1BBU\s0 is ready, online and capable of backing up the write cache.
.Sp
\&\fB\-\fR
.Sp
Battery is not present or \s-1BBU\s0 unit is not installed.
.RE
.RE
.IP "\fI/cx/bbu\fR \fBshow\fR \fIbatinst\fR"
.IX Item "/cx/bbu show batinst"
This command \fBshow\fRs the date when the current battery was installed. 
.RE
.IP "\fI/cx/bbu\fR \fBshow\fR \fIlasttest\fR"
.IX Item "/cx/bbu show lasttest"
This command \fBshow\fRs the date the battery capacity was last measured.
.RE
.IP "\fI/cx/bbu\fR \fBshow\fR \fIvolt\fR"
.IX Item "/cx/bbu show volt"
This command \fBshow\fRs the voltage status of the battery.  The status can be \s-1OK\s0,
\&\s-1HIGH\s0, \s-1LOW\s0, \s-1TOO\-HIGH\s0, and \s-1TOO\-LOW\s0.  The \s-1HIGH\s0 and \s-1LOW\s0 are in warning range.  TOO-HIGH
and TOO-LOW are out of the operating range and need to be concerned.
.RE
.IP "\fI/cx/bbu\fR \fBshow\fR \fItemp\fR"
.IX Item "/cx/bbu show temp"
This command \fBshow\fRs the temperature status of the battery.  The status can be
\&\s-1OK\s0, \s-1HIGH\s0, \s-1LOW\s0, \s-1TOO\-HIGH\s0, and \s-1TOO\-LOW\s0.  The \s-1HIGH\s0 and \s-1LOW\s0 are in warning range. 
TOO-HIGH and TOO-LOW are out of the operating range and need to be concerned.
.RE
.IP "\fI/cx/bbu\fR \fBshow\fR \fIcap\fR"
.IX Item "/cx/bbu show cap"
This command \fBshow\fRs the battery capacity in hours.
.RE
.IP "\fI/cx/bbu\fR \fBshow\fR \fIserial\fR"
.IX Item "/cx/bbu show serial"
This command \fBshow\fRs the \s-1BBU\s0 serial number.
.RE
.IP "\fI/cx/bbu\fR \fBshow\fR \fIfw\fR"
.IX Item "/cx/bbu show fw"
This command \fBshow\fRs the \s-1BBU\s0 board firmware version number.
.RE
.IP "\fI/cx/bbu\fR \fBshow\fR \fIpcb\fR"
.IX Item "/cx/bbu show pcb"
This command \fBshow\fRs the \s-1PCB\s0 revision number on the \s-1BBU\s0 unit.
.RE
.IP "\fI/cx/bbu\fR \fBshow\fR \fIbootloader\fR"
.IX Item "/cx/bbu show bootloader"
This command shows the \s-1BBU\s0's Boot Loader version.
.RE
.IP "\fI/cx/bbu\fR \fBshow\fR \fIall\fR"
.IX Item "/cx/bbu show all"
This command shows the current settings of all above attributes on the \s-1BBU\s0
board.
.PP
For example:
.PP
.Vb 1
\& //localhost> /c1/bbu show all
.Ve
.PP
.Vb 12
\&   /c1/bbu Firmware Version          = BBU: 1.04.00.007
\&   /c1/bbu Serial Number             = Engineering Sample.
\&   /c1/bbu Online State              = On
\&   /c1/bbu BBU Ready                 = Yes
\&   /c1/bbu BBU Status                = OK
\&   /c1/bbu Battery Voltage           = OK
\&   /c1/bbu Battery Temperature       = OK
\&   /c1/bbu Estimated Backup Capacity = 241 Hours
\&   /c1/bbu Last Capacity Test        = 22-Jun-2004
\&   /c1/bbu Battery Intallation Date  = 20-Jun-2004
\&   /c1/bbu Bootloader Version        = BBU 0.02.00.002
\&   /c1/bbu PCB Revision              = 65
.Ve
.PP
.Vb 1
\& //localhost>
.Ve
.RE
.IP "\fI/cx/bbu\fR \fBtest\fR [\fIquiet\fR]"
.IX Item "/cx/bbu test [quiet]"
This command starts the battery capacity test.  The test may take up to 24 hours
to complete.  During the test, the \s-1BBU\s0 is \fBnot\fR capable of backup operation
and the write cache is disabled.  The performance of all the units under the
controller may be impacted because their write IOs are not cached.  Once the test 
is completed with no error and the \s-1BBU\s0 returns back to \s-1OK\s0 state, the write cache
will be resumed.  The quiet option is for non-interactive mode.
.PP
Check with the alarms command, \s-1AEN\s0 (Asynchronous Event Notification) messages are
also generated by controllers to notify user the status of the command.
.PP
Note:
The test cannot be terminated before it completes.
.RE
.IP "\fI/cx/bbu\fR \fBenable\fR"
.IX Item "/cx/bbu enable"
This command enables the \s-1BBU\s0 detection on the controller.  And the controller will utilize \s-1BBU\s0 
functionality in the event of power failure if \s-1BBU\s0 is there and ready.
.RE
.IP "\fI/cx/bbu\fR \fBdisable\fR \fB[quiet]\fR"
.IX Item "/cx/bbu disable [quiet]"
This command disables the \s-1BBU\s0 detection on the controller.  In this situation, the controller 
ignores the existence of the \s-1BBU\s0 when the \s-1BBU\s0 detection is disabled.  In another words, when 
a \s-1BBU\s0 attaches to a controller and the \s-1BBU\s0 detection is disabled, the storage management 
software will show user that there is no \s-1BBU\s0 installed on this controller.  This is because 
the \s-1BBU\s0 detection is disabled.  The quiet option is for non-interactive mode.
.Sh "Help Commands"
.IX Subsection "Help Commands"
This command set provides brief on-line help.  At top level of the command 
set, it is considered to be in the Shell Object.  The Shell object has focus,
show, flush, rescan, and commit commands.  In addition to the Shell Object, 
we also have other objects such as /cx, /cx/ux, /cx/px, and /cx/bbu.  Using 
the help command on objects, the help command shows all possible sub-commands
associate with the object.  
.PP
For example: help on the controller object /cx, will display all the sub-commands
associated with the controller /cx. 
.PP
.Vb 1
\& //localhost> help /cx
.Ve
.PP
.Vb 12
\&   /cx show
\&   /cx show attribute [attribute ...]           where attributes are:
\&            achip|allunitstatus|autocarve(9000 series)|autorebuild(9550SX only)
\&            bios|carvesize(9000 series)|driver|drivestatus|exportjbod|firmware
\&            memory|model|monitor|numdrives|numports|numunits|ctlbus(9550SX only)
\&            ondegrade(9000S only)|pcb|pchip|serial|spinup|stagger|unitstatus
\&   /cx show all               where all means attributes and configurations.
\&   /cx show diag
\&   /cx show alarms [reverse]
\&   /cx show rebuild                    (9000 series)
\&   /cx show verify                     (9000 series)
\&   /cx show selftest                   (9000 series)
.Ve
.PP
.Vb 5
\&   /cx add type=<RaidType> disk=<p:-p..> [stripe=<Stripe>] [noscan] [nocache] [group=<3|4|5|6|7|8>] [autoverify] [ignoreECC] [name=string (9000S only)] [storsave=<protect|balance|perform> (9550SX only)]
\&           RaidType = { raid0, raid1, raid5, raid10, raid50, single, spare, JBOD(7000/8000 only)}
\&   /cx add rebuild=ddd:hh:duration     (9000 series)
\&   /cx add verify=ddd:hh:duration      (9000 series)
\&   /cx add selftest=ddd:hh             (9000 series)
.Ve
.PP
.Vb 3
\&   /cx del rebuild=slot_id             (9000 series)
\&   /cx del verify=slot_id              (9000 series)
\&   /cx del selftest=slot_id            (9000 series)
.Ve
.PP
.Vb 10
\&   /cx set exportjbod=on|off                                 (9000 series)
\&   /cx set ondegrade=cacheoff|follow                         (9000S only)
\&   /cx set spinup=nn                                         (9000 series)
\&   /cx set stagger=nn                                        (9000 series)
\&   /cx set autocarve=on|off                                  (9000 series)
\&   /cx set carvesize=[1024..2048]                            (9000 series)
\&   /cx set autorebuild=on|off                                (9550SX only)
\&   /cx set rebuild=enable|disable|<1..5>  (enable|disable for 9000 series)
\&   /cx set verify=enable|disable|<1..5>   (enable|disable for 9000 series)
\&   /cx set selftest=enable|disable [task=UDMA|SMART]         (9000 series)
.Ve
.PP
.Vb 5
\&   /cx flush
\&   /cx commit (** Windows only **) (previously known as shutdown)
\&   /cx start mediascan (7000/8000 only)
\&   /cx stop mediascan (7000/8000 only)
\&   /cx rescan [noscan] NOTE: Does not import non-JBOD on 7000/8000 models.
.Ve
.PP
.Vb 1
\& //localhost>
.Ve
.PP
However, user can also get help with \*(L"?\*(R" or \*(L"help\*(R" as the user progresses with the
specific object or a command after an object.
.PP
For example:  User progresses to /c0 show and needs help on what specific 
attribute syntax, user can use '?' to get help as following:
.PP
.Vb 1
\& //localhost> /c0 show ?
.Ve
.PP
.Vb 12
\&   /cx show
\&   /cx show attribute [attribute ...]           where attributes are:
\&            achip|allunitstatus|autocarve(9000 series)|autorebuild(9550SX only)
\&            bios|carvesize(9000 series)|driver|drivestatus|exportjbod|firmware
\&            memory|model|monitor|numdrives|numports|numunits|ctlbus(9550SX only)
\&            ondegrade(9000S only)|pcb|pchip|serial|spinup|stagger|unitstatus
\&   /cx show all               where all means attributes and configurations.
\&   /cx show diag
\&   /cx show alarms [reverse]
\&   /cx show rebuild                    (9000 series)
\&   /cx show verify                     (9000 series)
\&   /cx show selftest                   (9000 series)
.Ve
.PP
.Vb 1
\& //localhost>
.Ve
.RE
.IP "\fBhelp\fR"
.IX Item "help"
This command provide a table of contents, providing an overall navigational help.
Typical output looks like:
.PP
.Vb 1
\& //localhost> help
.Ve
.PP
.Vb 1
\& Copyright(c) 2004, 2005 Applied Micro Circuits Corporation(AMCC). All rights reserved.
.Ve
.PP
.Vb 1
\& AMCC/3ware CLI (version 2.00.00.048)
.Ve
.PP
.Vb 17
\& Commands  Description
\& -------------------------------------------------------------------
\& info      Displays information about controller(s), unit(s) and port(s).
\& maint     Performs maintenance operations on controller(s), unit(s) and ports.
\& alarms    Displays current AENs.
\& set       Displays or modifies controller and unit settings.
\& sched     Schedules bachground tasks on controller(s) (9000 controllers only).
\& quit      Exits the CLI.
\&            ---- Primary Command Syntax ----
\& show      Displays information about controller(s), unit(s) and port(s).
\& flush     Flush write cache data to units in the system.
\& rescan    Rescan all empty ports for new unit(s) and disk(s).
\& commit    Commit dirty DCB to storage on controller(s).
\& /cx       Controller specific commands.
\& /cx/ux    Unit specific commands.
\& /cx/px    Port specific commands.
\& /cx/bbu   BBU specific commands.               (9000 controllers only)
.Ve
.PP
.Vb 2
\& Type help <command> to get more details about a particular command.
\& For more detail information see tw_cli's documentation.
.Ve
.PP
.Vb 1
\& //localhost>
.Ve
.RE
.IP "\fBhelp\fR \fIshow\fR"
.IX Item "help show"
This command provides specific \fIshow\fR related help, illustrating various ways
to use the \fIshow\fR command. It provides reports on Controllers, Units and Drives.
See the \*(L"Shell Object Messages\*(R" section for more on show.
.RE
.IP "\fBhelp\fR \fIflush\fR"
.IX Item "help flush"
This command provides specific \fIflush\fR related help, illustrating various ways
to use the \fIflush\fR command.  See the \*(L"Shell Object Messages\*(R" section for more.
.RE
.IP "\fBhelp\fR \fIrescan\fR"
.IX Item "help rescan"
This command provides specific \fIrescan\fR related help, illustrating various ways
to use the \fIrescan\fR command.  See the \*(L"Shell Object Messages\*(R" section for more.
.RE
.IP "\fBhelp\fR \fIcommit\fR"
.IX Item "help commit"
This command provides specific \fIcommit\fR related help, illustrating various ways
to use the \fIcommit\fR command.  See the \*(L"Shell Object Messages\*(R" section for more.
.RE
.IP "\fBhelp\fR \fIfocus\fR"
.IX Item "help focus"
This command provides specific \fIfocus\fR related help, illustrating various ways
to use the \fIfocus\fR command. See the \*(L"Shell Object Messages\*(R" section for more.
.RE
.IP "\fBhelp\fR \fI/cx\fR"
.IX Item "help /cx"
This command provides specific controller \fI/cx\fR related help, illustrating various 
commands associated with the controller \fI/cx\fR. See the \*(L"Controller Object Messages\*(R" 
section for more.
.RE
.IP "\fBhelp\fR \fI/cx/ux\fR"
.IX Item "help /cx/ux"
This command provides specific unit \fI/cx/ux\fR related help, illustrating various 
commands to use on a unit \fI/cx/ux\fR. See the \*(L"Controller Object Messages\*(R" section 
for more.
.RE
.IP "\fBhelp\fR \fI/cx/px\fR"
.IX Item "help /cx/px"
This command provides specific \fI/cx/px\fR related help, illustrating various ways
to use the \fI/cx/px\fR command. See the \*(L"Port Object Messages\*(R" section for more.
.RE
.IP "\fBhelp\fR \fI/cx/bbu\fR"
.IX Item "help /cx/bbu"
This command provides specific \fI/cx/bbu\fR related help, illustrating various ways
to use the \fI/cx/bbu\fR command. See the \*(L"\s-1BBU\s0 Object Messages\*(R" section for more.
.SH "\fBLegacy or Original Command Syntax (For a Limited Time)\fP"
.IX Header "Legacy or Original Command Syntax (For a Limited Time)"
The functionality provided by \fItw_cli\fR\|(8) in the legacy command syntax can be divided
into the following categories:
.PP
Important Notice: The legacy command syntax will be discontinued in the future releases.  
Please change your existing \s-1CLI\s0 related scripts or automation programs with the 
primary command syntax as soon as possible.
.IP "\fBinfo\fR" 4
.IX Item "info"
A collection of sub-commands under this category allows you to view attributes
of objects such as controllers, logical units and drives. This is a read-only operation.
.IP "\fBmaint\fR" 4
.IX Item "maint"
Sub-commands under this category allow you to create and mutate objects and their 
attributes such as creating and deleting logical units, rebuilding, flushing, etc.
These commands are read/write operations and should be used with care.
.IP "\fBsched\fR" 4
.IX Item "sched"
This is a read/write operation. It allows you to set background tasks associated with
a controller. Background tasks are executed concurrent to I/O and management
operations.
.IP "\fBalarms\fR" 4
.IX Item "alarms"
Displays alarms, which have been generated by controllers. Alarms or AENs (Asynchronous Event 
Notification) have different levels of severity. These can be extracted and 
archived for overall trend analysis.
.IP "\fBset\fR" 4
.IX Item "set"
Displays or modifies controller settings such as enabling or disabling cache on units,
turning auto-verify on or off.
.IP "\fBhelp\fR" 4
.IX Item "help"
Display help on various sub\-commands.
.PP
\&\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
.Sh "Info Commands"
.IX Subsection "Info Commands"
Info commands are read-only operations showing various values of controllers,
units and drives.
.IP "\fBinfo\fR" 4
.IX Item "info"
Provides information on all detected controllers.
.IP "\fBinfo\fR \fIcid\fR" 4
.IX Item "info cid"
Provides an overall summary information on controller \fIcid\fR. 
.IP "\fBinfo\fR \fIcid\fR \fIdriver\fR" 4
.IX Item "info cid driver"
This command reports the device driver version associated with controller 
\&\fIcid\fR.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 driver
\& /c0 Driver Version = 1.02.00.036
.Ve
.IP "\fBinfo\fR \fIcid\fR \fImodel\fR" 4
.IX Item "info cid model"
This command reports the controller model of controller \fIcid\fR.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 model
\& /c0 Model = 7500-12
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIfirmware\fR" 4
.IX Item "info cid firmware"
This command reports the firmware version of controller \fIcid\fR.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 firmware
\& /c0 Firmware Version = FGXX 2.01.00.025
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIbios\fR" 4
.IX Item "info cid bios"
This command reports the \s-1BIOS\s0 version of controller \fIcid\fR.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 bios
\& /c0 BIOS Version = BG9X 2.01.00.026
.Ve
.IP "\fBinfo\fR \fIcid\fR \fImonitor\fR" 4
.IX Item "info cid monitor"
This command reports the monitor (firmware boot\-loader) version of 
controller \fIcid\fR.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 monitor
\& /c0 Monitor Version = BLDR 1.00.00.008
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIserial\fR" 4
.IX Item "info cid serial"
This command reports the serial number of the specified controller \fIcid\fR.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 serial
\& /c0 Serial Number = F12705A3240009
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIpcb\fR" 4
.IX Item "info cid pcb"
This command reports the \s-1PCB\s0 (Printed Circuit Board) revision of the specified 
controller \fIcid\fR.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 pcb
\& /c0 PCB Version = Rev3
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIpchip\fR" 4
.IX Item "info cid pchip"
This command reports the \s-1PCHIP\s0 (\s-1PCI\s0 Interface Chip) version of the specified 
controller \fIcid\fR.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 pchip
\& /c0 PCHIP Version = 1.30-33
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIachip\fR" 4
.IX Item "info cid achip"
This command reports the \s-1ACHIP\s0 (\s-1ATA\s0 Interface Chip) version of the specified 
controller \fIcid\fR.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 achip
\& /c0 ACHIP Version = 3.20
.Ve
.IP "\fBinfo\fR \fIcid\fR \fInumports\fR" 4
.IX Item "info cid numports"
This command reports the port capacity (number of physical ports) of the specified 
controller \fIcid\fR.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 numports
\& /c0 Number of Ports = 12
.Ve
.IP "\fBinfo\fR \fIcid\fR \fInumunits\fR" 4
.IX Item "info cid numunits"
This command reports the number of units currently managed by the specified 
controller \fIcid\fR.  This report does not include off-line units (or exported units).
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 numunits
\& /c0 Number of Units = 1
.Ve
.IP "\fBinfo\fR \fIcid\fR \fInumdrives\fR" 4
.IX Item "info cid numdrives"
This command reports the number of drives currently managed by the specified 
controller \fIcid\fR.  This report does not include (logically) removed/exported drives. 
Also note that physically removed disk(s) will not be detected unless
I/O is performed against the disk. See \fBinfo cid pid smart\fR for a workaround.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 numdrives
\& /c0 Number of Drives = 5
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIunitstatus\fR" 4
.IX Item "info cid unitstatus"
This command presents a list of units, their types, capacity and status currently
managed by the specified controller \fIcid\fR.
.Sp
Example:
.Sp
.Vb 1
\& //localhost> info c0 unitstatus
.Ve
.Sp
.Vb 5
\& Unit  UnitType  Status         %Cmpl  Stripe  Size(GB)  Cache  AVerify  IgnECC
\& ------------------------------------------------------------------------------
\& u0    RAID-5    OK             -      64K     223.485   OFF    OFF      ON
\& u1    JBOD      OK             -      -       76.3352   OFF    OFF      -
\& u2    RAID-0    OK             -      64K     148.99    ON     ON       -
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIallunitstatus\fR" 4
.IX Item "info cid allunitstatus"
This command presents a count of total and Not Optimal units managed by the 
specified controller \fIcid\fR. See \*(L"Info Commands\*(R" for more on Not Optimal 
definition.
.Sp
Example:
.Sp
.Vb 3
\& //localhost> info c0 allunitstatus
\& /c0 Total Optimal Units = 2
\& /c0 Not Optimal Units = 0
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIdrivestatus\fR" 4
.IX Item "info cid drivestatus"
This command presents a list of drives, port assignment, vendor signature, size, 
status, and unit membership/affiliation. 
.Sp
Example:
.Sp
.Vb 1
\& //localhost> info c0 drivestatus
.Ve
.Sp
.Vb 14
\& Port   Status           Unit   Size        Blocks        Serial
\& ---------------------------------------------------------------
\& p0     OK               u0     149.05 GB   312581808     3JS0TF14      
\& p1     OK               u0     149.05 GB   312581808     3JS0TETZ      
\& p2     OK               u1     149.05 GB   312581808     3JS0VG85      
\& p3     OK               u1     149.05 GB   312581808     3JS0VGCY      
\& p4     OK               u1     149.05 GB   312581808     3JS0VGGQ      
\& p5     OK               u2     149.05 GB   312581808     3JS0VH1P      
\& p6     OK               -      149.05 GB   312581808     3JS0TF0P      
\& p7     OK               -      149.05 GB   312581808     3JS0VF43      
\& p8     OK               -      149.05 GB   312581808     3JS0VG8D      
\& p9     NOT-PRESENT      -      -           -             -
\& p10    NOT-PRESENT      -      -           -             -
\& p11    NOT-PRESENT      -      -           -             -
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIuid\fR" 4
.IX Item "info cid uid"
This command presents detailed information on the specified unit \fIuid\fR.
If the unit consists of sub-units as with the case of \s-1RAID\-1\s0, \s-1RAID\-5\s0, \s-1RAID\-10\s0,
\&\s-1RAID\-50\s0, then each sub-unit is further presented. One application of this command
is to see which sub-unit of a degraded unit has caused the unit to degrade and which
disk within that sub-unit is the source of degradation.
.Sp
Example: 
.Sp
.Vb 1
\& //localhost> info c0 u0
.Ve
.Sp
.Vb 11
\& Unit     UnitType  Status        %Cmpl  Port  Stripe  Size(GB)  Blocks
\& ----------------------------------------------------------------------
\& u0       RAID-50   OK            -      -     64K     596.05    1249921024
\& u0-0     RAID-5    OK            -      -     64K     -         -
\& u0-0-0   DISK      OK            -      p0    -       149.10    312481280
\& u0-0-1   DISK      OK            -      p2    -       149.10    312481280
\& u0-0-2   DISK      OK            -      p3    -       149.10    312481280
\& u0-1     RAID-5    OK            -      -     64K     -         -
\& u0-1-0   DISK      OK            -      p4    -       149.10    312481280
\& u0-1-1   DISK      OK            -      p5    -       149.10    312481280
\& u0-1-2   DISK      OK            -      p6    -       149.10    312481280
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIuid\fR \fIstatus\fR" 4
.IX Item "info cid uid status"
This command presents the status of the specified unit.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 u0 status
\& /c0/u5 status = OK
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIuid\fR \fIrebuildstatus\fR" 4
.IX Item "info cid uid rebuildstatus"
This command presents the rebuildstatus (if any) of the specified unit.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 u5 rebuildstatus
\& /c0/u5 is not rebuilding, its current state is OK
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIuid\fR \fIverifystatus\fR" 4
.IX Item "info cid uid verifystatus"
This command presents the verifystatus (if any) of the specified unit.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 u5 verifystatus
\& /c0/u5 is not verifying, its current state is OK
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIuid\fR \fIinitializestatus\fR" 4
.IX Item "info cid uid initializestatus"
This command presents the initializestatus (if any) of the specified unit.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 u5 initializestatus
\& /c0/u5 is not initializing, its current state is OK
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIpid\fR" 4
.IX Item "info cid pid"
This command presents various information on the specified disk attached to port \fIpid\fR.
Typical information looks like:
.Sp
Example:
.Sp
.Vb 4
\& //localhost> info c0 p5
\& Port   Status           Unit   Size        Blocks        Serial
\& ---------------------------------------------------------------
\& p5     OK               u5     149.05 GB   312581808     WD-WMACK1406498
.Ve
.Sp
The above report indicate that port 5 of controller 0 is attached to one Western Digital
disk with status \s-1OK\s0 participating in unit 5.
.IP "\fBinfo\fR \fIcid\fR \fIpid\fR \fIstatus\fR" 4
.IX Item "info cid pid status"
This command presents the status  of the specified port.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 p5 status
\& /c0/p5 Status = OK
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIpid\fR \fImodel\fR" 4
.IX Item "info cid pid model"
This command presents the model of the specified port.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 p5 model
\& /c0/p5 Model = WDC WD1600BB-00DAA0
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIpid\fR \fIserial\fR" 4
.IX Item "info cid pid serial"
This command presents the serial number of the specified port.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 p5 serial
\& /c0/p5 Serial = WD-WMACK1406498
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIpid\fR \fIfirmware\fR" 4
.IX Item "info cid pid firmware"
This command presents the firmware version of the specified port.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 p5 firmware
\& /c0/p5 Firmware Version = 65.13G65
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIpid\fR \fIcapacity\fR" 4
.IX Item "info cid pid capacity"
This command presents the capacity, both in human readable (such as \s-1GB\s0) and block count
of the specified port. Note that at this writing, human readable format is computed based
on division by 1000 (not 1024) as is popular with hard disk vendors.
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 p5 capacity
\& /c0/p5 Capacity = 149.05 GB (312581808)
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIpid\fR \fIsmart\fR" 4
.IX Item "info cid pid smart"
This command extracts \s-1SMART\s0 (Self Monitoring Analysis and Reporting) data from the
specified disk. Note that this data is actually extracted live from the disk, as
such this command could be used to get most recent data about presence or lack of a
disk. Be aware that extracting \s-1SMART\s0 data will burden the I/O bandwidth. 
.Sp
Example:
.Sp
.Vb 1
\& //localhost> info c0 p5 smart
.Ve
.Sp
.Vb 5
\& 10 00 01 0B 00 C8 C8 00 00 00 00 00 00 00 03 07 
\& 00 9A 96 BC 14 00 00 00 00 00 04 32 00 64 64 7A 
\& 00 00 00 00 00 00 05 33 00 C8 C8 00 00 00 00 00 
\& ... 
\& 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2C
.Ve
.Sp
Note that at this writing, we are not decoding the \s-1SMART\s0 data. 
Also note that if the disk attached to the specified port is not present
or there are cabling problems reaching the disk, \s-1CLI\s0 will return an error.
This could be one way of detecting whether a disk is present or not.
.IP "\fBinfo\fR \fIcid\fR \fIdiag\fR" 4
.IX Item "info cid diag"
This command extracts controller diagnostics suitable for technical support usage.
Note that some characters might not be printable or rendered correctly (human 
readable). It is recommended to save this output to a file, where it can be
communicated to tech support or further studied with Linux utilities like \fIod\fR\|(1).
.Sp
Example:
.Sp
.Vb 1
\& $ tw_cli info c0 diag > diag.txt
.Ve
.IP "\fBinfo\fR \fIcid\fR \fIexportjbod\fR (9000 series)" 4
.IX Item "info cid exportjbod (9000 series)"
This command presents the current \s-1JBOD\s0 Export Policy; \*(L"on\*(R", \*(L"off\*(R" or \*(L"Not Supported\*(R".
.Sp
Example:
.Sp
.Vb 2
\& //localhost> info c0 exportjbod
\& /c0 JBOD Export Policy = Not Supported.
.Ve
.Sp
.Vb 2
\& //localhost> info c1 exportjbod
\& /c1 JBOD Export Policy = on
.Ve
.Sh "Maint Commands"
.IX Subsection "Maint Commands"
Sub-commands under this category allow you to create and mutate
objects and their attributes such as creating and deleting logical
units, rebuilding, flushing, etc.  These commands are read/write
operations and should be used with care.
.IP "\fBmaint\fR \fIrescan\fR \fI[cid ...]\fR \fI[noscan]\fR" 4
.IX Item "maint rescan [cid ...] [noscan]"
This command instructs the controller to rescan all ports and reconstitute
all units. The controller will update its list of ports (attached disks), and visits
every \s-1DCB\s0 (Disk Configuration Block) in order to re-assemble its view and
awareness of logical units.  Any newly found unit(s) or drive(s) will be listed.
.Sp
If no controller is specified, all controllers will be rescanned. One or many
controllers can be specified. \fInoscan\fR is used to not inform the \s-1OS\s0
of the unit discovery. Default is to inform the \s-1OS\s0.
.Sp
Example:
.Sp
.Vb 7
\& //localhost> maint rescan 
\& Rescanning controller /c0 for units and drives ...Done.
\& Found following unit(s): [none].
\& Found following drive(s): [none].
\& Rescanning controller /c1 for units and drives ...Done.
\& Found following unit(s): [/c1/u3].
\& Found following drive(s): [/c1/p7, /c1/p8].
.Ve
.Sp
Note: Does not import non-JBOD on 7000/8000 models
.IP "\fBmaint\fR \fIremove\fR \fIcid\fR \fIuid\fR [noscan]" 4
.IX Item "maint remove cid uid [noscan]"
This command allows you to remove (or export) a \fBunit\fR. Exporting a unit will instruct
the firmware to remove the specified unit from its pool of managed units, but retains
the \s-1DCB\s0 (Disk Configuration Block) meta\-data. As such the unit can later be imported
back. \fInoscan\fR is used to not inform the \s-1OS\s0 of this change. Default is to inform the 
\&\s-1OS\s0.  Use caution when using this command.  Units that are currently in use or mounted 
cannot be removed.
.IP "\fBmaint\fR \fIremove\fR \fIcid\fR \fIpid\fR [noscan]" 4
.IX Item "maint remove cid pid [noscan]"
This command allows you to remove (or export) a \fBport\fR (or drive). Exporting a port 
will instruct the firmware to remove the specified port form its pool of managed ports,
but retains the \s-1DCB\s0 (Disk Configuration Block) meta-data on the attached disk.
You can import (or re\-introduce) the port via \fBrescan\fR. \fInoscan\fR is used to 
not inform the \s-1OS\s0 of this change. Default is to inform the \s-1OS\s0.  Use caution when
using this command.  Drives, which are part of a redundant array, can be removed,
but the array will be degraded.  Non-redundant drives, which are part of a unit, 
can not be removed.
.IP "\fBmaint\fR \fIdeleteunit\fR \fIcid\fR \fIuid\fR [noscan]" 4
.IX Item "maint deleteunit cid uid [noscan]"
This command allows you to delete a \fBunit\fR. Deleting a unit not only remove the 
specified unit from the controller's list of managed units, but also destroys the 
\&\s-1DCB\s0 (Disk Configuration Block) meta\-data. Ports (or disks) associated with this
unit will now be part of the free pool of managed disks. This is a destructive 
command and should be used with care. \fInoscan\fR is used to not inform the \s-1OS\s0 of
this change. Default is to inform the \s-1OS\s0.  Use caution when using this command.  
Units that are currently in use or mounted cannot be removed.
.IP "\fBmaint\fR \fIcreateunit\fR \fIcid\fR \fIRaidType\fR \fIPidList\fR [\fIStripe\fR] [\fInoscan\fR] [\fIDskGrp\fR] [\fInocache\fR] [\fIautoverify\fR] [\fIignoreECC\fR]" 4
.IX Item "maint createunit cid RaidType PidList [Stripe] [noscan] [DskGrp] [nocache] [autoverify] [ignoreECC]"
This command allows you to create a unit on the specified controller \fIcid\fR, of type
\&\fIRaidType\fR, optional stripe size of \fIStripe\fR, using one or many disks specified by
\&\fIPidList\fR. By default the host operating system will be informed of the new block device 
and write cache is enabled. In case of \s-1RAID\-50\s0, you can also specify 
the layout of the unit by specifying the number of disks per diskgroup with \fIDskGrp\fR option. 
.Sp
Since this command is by far the richest command, it deserves more details.
.Sp
\&\fBcid\fR is the controller name as in c0, c1, etc.
.Sp
\&\fBRaidType\fR consists of letter \*(L"r\*(R" followed by \s-1RAID\s0 or logical unit type as in \fBraid0\fR, 
\&\fBraid1\fR, \fBraid5\fR, \fBraid10\fR, \fBraid50\fR, \fBsingle\fR, \fBspare\fR, and \fBjbod\fR. For example
\&\*(L"rraid50\*(R". The following table illustrates supported types and controller models.
.Sp
.Vb 5
\& Model | R0 | R1 | R5 | R10 | JBOD | Spare | R50 | Single |
\& ------+----+----+----+-----+------+-------+-----+--------+
\& 7K/8K | Y  | Y  | Y  |  Y  |  Y   |   Y   |  N  |   N    |
\& ------+----+----+----+-----+------+-------+-----+--------+
\& 9K    | Y  | Y  | Y  |  Y  |  Y   |   Y   |  Y  |   Y    |
.Ve
.Sp
\&\fBPidList\fR consists of letter \*(L"p\*(R" followed by a list of ports (disks) to be used 
in the construction of the specified unit type. One or more ports can be specified. Multiple
ports can be specified using \fB\*(L":\*(R"\fR or \fB\*(L"\-\*(R"\fR as port index separators.
A dash indicates a range and can be mixed with \*(L":\*(R". For example
\&\fBp0:1:2\-5:9:12\fR indicates port 0, 1, 2 thru 5 (inclusive), 9 and 12.
.Sp
\&\fBStripe\fR consists of letter \*(L"k\*(R" followed by the stripe size to be used. 
The following table illustrates the supported and applicable stripes on 
unit types and controller models. Stripe size units are in K (kilo bytes).
.Sp
.Vb 12
\& Model | R0   | R1  | R5  | R10  | JBOD | Spare | R50 | Single |
\& ------+------+-----+-----+------+------+-------+-----+--------+
\& 7K/8K | 64   | N/A | 64  | 64   | N/A  |  N/A  | N/S |   N/S  |
\&       | 128  |     |     | 128  |      |       |     |        |
\&       | 256  |     |     | 256  |      |       |     |        |
\&       | 512  |     |     | 512  |      |       |     |        |
\&       | 1024 |     |     | 1024 |      |       |     |        |
\& ------+------+-----+-----+------+------+-------+-----+--------+
\& 9K    | 16   | N/A | 16  | 16   | N/A  |  N/A  | 16  |   N/A  |
\&       | 64   |     | 64  | 64   |      |       | 64  |        |
\&       | 256  |     | 256 | 256  |      |       | 256 |        |
\& ------+------+-----+-----+------+------+-------+-----+--------+
.Ve
.Sp
\&\fBDskGrp\fR consists of letter \*(L"g\*(R" followed by the number of disks per group for a \s-1RAID\-50\s0 type. 
Recall that a \s-1RAID\-50\s0 is a multi-tier array. At the most bottom layer, 
N number of disks per group are used to form the \s-1RAID\-5\s0 layer. These
\&\s-1RAID\-5\s0 arrays are then integrated into a \s-1RAID\-0\s0. This attribute allows
you to specify the number of disks in the \s-1RAID\-5\s0 level. Valid values
are 3, 4, 5 and 6. 
.Sp
Note that a sufficient number of disks are required for a given pattern or
disk group. For example, given 6 disks, specifying 3 will create two \s-1RAID\-5\s0.
However given 12 disks, specifying 3 will create four \s-1RAID\-5\s0 under the \s-1RAID\-0\s0 level.
Given 6 disks a grouping of 6 is not allowed, as you'll basically be creating a \s-1RAID\-5\s0.
.Sp
The default g\fBDskGrp\fR varies based on number of disks. For 6 & 9 disks, the default 
is 3.  For 8 disks, the default is 4. For 10 disks, the default is 5 and for 12 disks, 
the default is 4.  Since 12 disks could be grouped into 3, 4, or 6 \s-1RAID\-5\s0 arrays. A 
grouping of 4 was set by default as it provides best net capacity and performance.
.Sp
\&\fBnoscan\fR attribute instructs \s-1CLI\s0 not to notify \s-1OS\s0 of creation of the new unit.
By default \s-1CLI\s0 will inform the \s-1OS\s0. One application of this feature is to avoid the \s-1OS\s0
from creating block devices such as /dev/sdb and /dev/sdc as some implementations
might create naming fragmentation and creating a moving target. 
.Sp
\&\fBnocache\fR attribute instructs \s-1CLI\s0 disable the write cache on the newly create unit. 
Enabling write cache increases performance at the cost of high\-availability.  A 
\&\s-1BBU\s0 (battery backup unit) or \s-1UPS\s0 is recommended to prevent data lost if the cache
is enabled in the event of a power failure.
.Sp
\&\fBautoverify\fR attribute enables the autoverify attribute on the unit that is to
be created. For more details on this feature, refer to \*(L"Set Commands\*(R" section of
this document. This feature is not supported on model 7000/8000. On model 9000, 
\&\s-1JBOD\s0 autoverify attribute is not persistent (does not survive reboots).
.Sp
\&\fBignoreECC\fR attribute enables the ignoreECC, also known as the overwriteECC attribute 
on the unit that is to be created. For more details on this feature, refer to
\&\*(L"Set Commands\*(R" section of
this document. The following table illustrates the supported \s-1RAID\s0 unit types. 
This table only applies to setting this feature at unit creation time. 
Generally ignoreECC applies to redundant units.
.Sp
.Vb 5
\& Model | R0 | R1 | R5 | R10 | JBOD | Spare | R50 | Single |
\& ------+----+----+----+-----+------+-------+-----+--------+
\& 7K/8K | N  | N  | N  |  N  |  N   |   N   |  N  |   N    |
\& ------+----+----+----+-----+------+-------+-----+--------+
\& 9K    | N  | Y  | Y  |  Y  |  N   |   N   |  Y  |   N    |
.Ve
.IP "\fBmaint\fR \fIrebuild\fR \fIcid\fR \fIuid\fR \fIpid\fR [ignoreECC]" 4
.IX Item "maint rebuild cid uid pid [ignoreECC]"
This command allows you to rebuild a \s-1DEGRADED\s0 unit by using the specified \fBport\fR. 
Rebuild only applies to redundant arrays such as \s-1RAID\-1\s0, \s-1RAID\-5\s0, \s-1RAID\-10\s0 and \s-1RAID\-50\s0. 
During rebuild, bad sectors on the source disk will cause the rebuild to fail. 
You can allow for the operation to continue via the \fBignoreECC\fR attribute. Rebuild process is
a background task and will change the state of a unit to \s-1REBUILDING\s0. Various
\&\fBinfo\fR commands also show a percent completion as rebuilding progresses.
.Sp
Note that the port (disk) to be used to rebuild a unit, must be a \s-1SPARE\s0 or unconfigured
disk.
.IP "\fBmaint\fR \fBrebuild\fR \fIcid\fR \fIuid\fR \fBpause\fR      (7/8000 controllers only)" 4
.IX Item "maint rebuild cid uid pause      (7/8000 controllers only)"
This command allows you to \fBpause\fR the rebuild operation on the specified \fBunit\fR.
This feature is intended for model 7000 and 8000 only. Model 9000 has an on-board
scheduler where rebuild operations can be scheduled to take place at specified 
start and stop times. Rebuild \fBpause\fR and \fBresume\fR function is provided to 
enable 7000/8000 users to achieve similar functionality with use of \s-1OS\s0 provided
schedulers such as \fIcron\fR\|(8) or, \fIat\fR\|(1) in linux or user supplied programs.
.Sp
See also \*(L"Sched Commands\*(R".
.IP "\fBmaint\fR \fBrebuild\fR \fIcid\fR \fIuid\fR \fBresume\fR     (7/8000 controllers only)" 4
.IX Item "maint rebuild cid uid resume     (7/8000 controllers only)"
This command allows you to \fBresume\fR the rebuild operation on the specified \fBunit\fR.
See \*(L"rebuild cid uid pause\*(R" for more.
.IP "\fBmaint\fR \fBflush\fR \fIcid\fR [\fIuid ...\fR]" 4
.IX Item "maint flush cid [uid ...]"
This command allows you to flush the write cache on the specified unit or all units
associated with controller \fIcid\fR. Note that this command does not apply to spare unit types.
.IP "\fBmaint\fR \fBverify\fR \fIcid\fR \fIuid\fR \fB[stop]\fR" 4
.IX Item "maint verify cid uid [stop]"
This command starts or stops a background verification process on the specified 
unit \fIuid\fR. The following shows the supported matrix as a function of 
controller model and logical unit type. N/A (Not Applicable) refers to cases
where the given logical unit type is not supported on that controller model.
.Sp
.Vb 6
\& Model | R-0 | R-1 | R-5 | R-10 | R-50 | Single | JBOD | Spare |
\& ------+-----+-----+-----+------+------+--------+------+-------+
\& 7K/8K | No  | Yes | Yes | Yes  | N/A  | N/A    | No   | No    |
\& ------+-----+-----+-----+------+------+--------+------+-------+
\& 9K    | Yes | Yes | Yes | Yes  | Yes  | Yes    | Yes  | Yes   |
\& ------+-----+-----+-----+------+------+--------+------+-------+
.Ve
.Sp
Note that if subsequent to this command, one enables the background verify
task to follow the scheduled slots, then this on-demand task will be paused until 
the scheduled time.
.IP "\fBmaint\fR \fBmediascan\fR \fIcid\fR \fBstart|stop\fR       (7/8000 controllers only)" 4
.IX Item "maint mediascan cid start|stop       (7/8000 controllers only)"
This command applies to 7000/8000 controllers. It provides media scrubbing
for validating disk functionality. This includes bad block detection
and remapping, etc. The command starts or stops a media
scan operation on the specified controller \fIcid\fR.
.IP "\fBmaint\fR \fBcommit\fR \fIcid\fR" 4
.IX Item "maint commit cid"
This command instructs the controller to commit its dirty DCBs to 
persistent storage (i.e. disks). While controller is processing I/O requests
against underlying disks, an in-transaction bit is set. If a failure (such
as power failure) is experienced, subsequent read from the disks, will inform
the controller that an un-clean shutdown took place. This command allows the
end user to complete all pending I/Os on disk(s) and clear the in-transaction
bit.
.Sp
Typical application of this feature is when an application is using a given
unit in raw mode (such as databases) and user would like to shutdown the
host (Including \s-1UPS\s0 post failure automations). This command can then expedite
the process by instructing the controller to finish pending requests, clear
\&\s-1DCB\s0's in-transaction flag as we are going down.
.Sp
This command only applies to Windows operating system. 
.Sh "Sched Commands"
.IX Subsection "Sched Commands"
Model 9000 supports background tasks. Background tasks include
\&\*(L"rebuild\*(R", \*(L"verify\*(R", or \*(L"self test\*(R" activities. For each activity, up to 7 tasks can
be registered, known as slots 1 through 7. Each activity can be managed by this 
command including adding, removing, enabling and disabling a task. Background tasks
have a slot id, category (rebuild, verify, selftest), start-day-time and duration attributes.
.Sp
\&\fBrebuild\fR activity attempts to (re)synchronize all members of redundant units such 
as \s-1RAID\-1\s0, \s-1RAID\-10\s0, \s-1RAID\-5\s0 and \s-1RAID\-50\s0. Rebuild can be started manually or automatically
if a spare has been defined. Scheduled rebuilds will take place during the scheduled
window, if enabled.
.Sp
\&\fBverify\fR activity attempts to verify all units based on their unit type. 
Verifying \s-1RAID\-1\s0 involves checking that both drives contain the exact data. 
On \s-1RAID\-5\s0, the parity information is used to verify data integrity. \s-1RAID\-10\s0 and 50 are 
composite types and follow their respective array types. On 9000 series, non-redundant units 
such as \s-1RAID\-0\s0, \s-1JBOD\s0, single, and spare, are also verified (by reading and reporting 
un-readable sectors).
.Sp
\&\fBselftest\fR activity provides two types of selftests; \s-1UDMA\s0 (Ultra Direct Memory Access)
and \s-1SMART\s0 (Self Monitoring Analysis and Reporting).  Both self tests are checked once 
each day by default.
.Sp
\&\s-1UDMA\s0 self test entails checking the 
current \s-1ATA\s0 bus speed (between controller and attached disk), which could have been 
throttled down during previous operations and increase the speed for best performance 
(usually one level higher). Possible speeds include 33, 66, 100 and 133 Mhz (at 
this writing). Note that \s-1UDMA\s0 selftest is not applicable (or required) with \s-1SATA\s0 drives,
but is left enabled by default.
.Sp
\&\s-1SMART\s0 activity instructs the controller to check certain \s-1SMART\s0 supported thresholds
by the disk vendor.  An \s-1AEN\s0 is logged to the alarms page if a drive reports a \s-1SMART\s0 
failure.
.IP "\fBsched\fR \fBrebuild\fR \fIcid\fR" 4
.IX Item "sched rebuild cid"
This command displays the current \fIrebuild\fR background tasks as illustrated below.
.Sp
.Vb 1
\& $ tw_cli sched rebuild c1
.Ve
.Sp
.Vb 11
\& Rebuild Schedule for Controller /c1
\& ========================================================
\& Slot    Day     Hour            Duration        Status
\& --------------------------------------------------------
\& 1       Mon     2:00pm          10 hr(s)        disabled
\& 2       Thu     7:00pm          18 hr(s)        disabled
\& 3       -       -               -               -
\& 4       -       -               -               -
\& 5       -       -               -               -
\& 6       Mon     1:00am           4 hr(s)        disabled
\& 7       Sun     12:00am          1 hr(s)        disabled
.Ve
.Sp
\&\fBStatus\fR \*(L"disabled\*(R" indicates that the controller will not use the tabled schedules.
.IP "\fBsched\fR \fBrebuild\fR \fIcid\fR \fBadd\fR \fIday\fR \fIhour\fR \fIduration\fR" 4
.IX Item "sched rebuild cid add day hour duration"
This command adds a new background \fIrebuild\fR task to be executed on 
\&\fIday\fR (range 0 .. 6, where 0 is Sunday), at \fIhour\fR (range 0 .. 23), for a duration 
of \fIduration\fR (range 1 .. 24) hours. This command will fail if no (empty) 
slot is available.
.Sp
For example:
.Sp
.Vb 1
\& $ tw_cli sched rebuild c1 add d0 h16 t3
.Ve
.Sp
Will add a rebuild background task to be executed on Sundays at 4:00 \s-1PM\s0 for
a duration of 3 hours.
.IP "\fBsched\fR \fBrebuild\fR \fIcid\fR \fBremove\fR \fIslot_id\fR" 4
.IX Item "sched rebuild cid remove slot_id"
This command will remove (or unregister) the rebuild background task in slot
\&\fIslot_id\fR. 
.Sp
For example:
.Sp
.Vb 1
\& $ tw_cli sched rebuild c1 remove 2
.Ve
.Sp
Will remove rebuild background task in slot 2.
.Sp
Warning: If all timeslots are removed, be sure to also disable the schedule.
Otherwise the applicable background task will never occur.
.IP "\fBsched\fR \fBrebuild\fR \fIcid\fR \fBenable\fR" 4
.IX Item "sched rebuild cid enable"
This command will \fIenable\fR \s-1ALL\s0 rebuild background tasks on controller \fIcid\fR.
.IP "\fBsched\fR \fBrebuild\fR \fIcid\fR \fBdisable\fR" 4
.IX Item "sched rebuild cid disable"
This command will \fIdisable\fR \s-1ALL\s0 rebuild background tasks on controller \fIcid\fR.
.IP "\fBsched\fR \fBverify\fR \fIcid\fR" 4
.IX Item "sched verify cid"
This command displays the current \fIverify\fR background task as illustrated below.
.Sp
.Vb 1
\& $ tw_cli sched verify c1
.Ve
.Sp
.Vb 11
\& Verify Schedule for Controller /c1
\& ========================================================
\& Slot    Day     Hour            Duration        Status
\& --------------------------------------------------------
\& 1       Mon     2:00am           4 hr(s)        disabled
\& 2       -       -               -               -
\& 3       Tue     12:00am         24 hr(s)        disabled
\& 4       Wed     12:00am         24 hr(s)        disabled
\& 5       Thu     12:00am         24 hr(s)        disabled
\& 6       Fri     12:00am         24 hr(s)        disabled
\& 7       Sat     12:00am         24 hr(s)        disabled
.Ve
.Sp
\&\fBStatus\fR indicates that the controller will not use the tabled schedules.
.IP "\fBsched\fR \fBverify\fR \fIcid\fR \fBadd\fR \fIday\fR \fIhour\fR \fIduration\fR" 4
.IX Item "sched verify cid add day hour duration"
This command adds a new background verify task to be executed on
day (range 0 .. 6, where 0 is Sunday), at hour
(range 0 .. 23), for a duration of duration (range 1 .. 24) hours.
This command will fail if no (empty) slot is available.
.Sp
For example:
.Sp
.Vb 1
\& $ tw_cli sched verify c1 add d0 h16 t3
.Ve
.Sp
Will add a verify background task to be executed on Sundays at
4:00 \s-1PM\s0 for a duration of 3 hours.
.IP "\fBsched\fR \fBverify\fR \fIcid\fR \fBremove\fR \fIslot_id\fR" 4
.IX Item "sched verify cid remove slot_id"
This command will remove (or unregister) the verify background
task in slot \fIslot_id\fR.
.Sp
For example:
.Sp
.Vb 1
\& $ tw_cli sched verify c1 remove 3
.Ve
.Sp
Will remove rebuild background task in slot 3.
.Sp
Warning: If all timeslots are removed, be sure to also disable the schedule.
Otherwise the applicable background task will never occur.
.IP "\fBsched\fR \fBverify\fR \fIcid\fR \fBenable\fR" 4
.IX Item "sched verify cid enable"
This command will \fIenable\fR \s-1ALL\s0 verify background tasks on controller \fIcid\fR.
When enabled, only tabled scheduled tasks will be followed (or used). Any
previous on-demand background tasks will be ignored.
.IP "\fBsched\fR \fBverify\fR \fIcid\fR \fBdisable\fR" 4
.IX Item "sched verify cid disable"
This command will \fIdisable\fR \s-1ALL\s0 verify background tasks on controller \fIcid\fR.
.IP "\fBsched\fR \fIselftest\fR \fIcid\fR" 4
.IX Item "sched selftest cid"
This command displays the current \fIselftest\fR background task as illustrated below.
.Sp
.Vb 1
\& $ tw_cli sched selftest c1
.Ve
.Sp
.Vb 11
\& Selftest Schedule for Controller /c1
\& ========================================================
\& Slot    Day     Hour            UDMA            SMART
\& --------------------------------------------------------
\& 1       Sun     12:00am         enabled         enabled
\& 2       Mon     12:00am         enabled         enabled
\& 3       Tue     12:00am         enabled         enabled
\& 4       Wed     12:00am         enabled         enabled
\& 5       Thu     12:00am         enabled         enabled
\& 6       Fri     12:00am         enabled         enabled
\& 7       Sat     12:00am         enabled         enabled
.Ve
.IP "\fBsched\fR \fBselftest\fR \fIcid\fR \fBadd\fR \fIday\fR \fIhour\fR" 4
.IX Item "sched selftest cid add day hour"
This command adds a new background selftest task to be executed on
day (range 0 .. 6, where 0 is Sunday), at hour
(range 0 .. 23). Notice that selftest runs to completion and as such
no duration is provided. This command will fail if no (empty) slot is 
available.
.Sp
For example:
.Sp
.Vb 1
\& $ tw_cli sched selftest c1 add d0 h16
.Ve
.Sp
Will add a selftest background task to be executed on Sundays at 4:00 \s-1PM\s0.
.IP "\fBsched\fR \fBselftest\fR \fIcid\fR \fBremove\fR \fIslot_id\fR" 4
.IX Item "sched selftest cid remove slot_id"
This command will remove (or unregister) the selftest background
task in slot \fIslot_id\fR.
.Sp
For example:
.Sp
.Vb 1
\& $ tw_cli sched selftest c1 remove 3
.Ve
.Sp
Will remove rebuild background task in slot 3.
.Sp
Warning: If all timeslots are removed, be sure to also disable the schedule.
Otherwise the applicable background task will never occur.
.IP "\fBsched\fR \fBselftest\fR \fIcid\fR \fBenable\fR \fB[selftest_task_id]\fR" 4
.IX Item "sched selftest cid enable [selftest_task_id]"
This command will \fIenable\fR a particular \fBselftest_task\fR (\s-1UDMA\s0 or \s-1SMART\s0).
While \fBs0\fR is interpreted as \s-1UDMA\s0, \fBs1\fR is interpreted as \s-1SMART\s0.  If no 
selftest_task_id is specified, both tasks will be enabled.
.Sp
For example:
.Sp
.Vb 1
\& $ tw_cli sched selftest c1 enable s0
.Ve
.Sp
Will enable \s-1UDMA\s0 selftest on controller c0.
.IP "\fBsched\fR \fBselftest\fR \fIcid\fR \fBdisable\fR \fB[selftest_task_id]\fR" 4
.IX Item "sched selftest cid disable [selftest_task_id]"
This command will \fIdisable\fR a particular \fBselftest_task\fR (\s-1UDMA\s0 or \s-1SMART\s0).
While \fBs0\fR is interpreted as \s-1UDMA\s0, \fBs1\fR is interpreted as \s-1SMART\s0.  If no
selftest_task_id is specified, both tasks will be disabled.
.Sp
For example:
.Sp
.Vb 1
\& $ tw_cli sched selftest c1 disable s1
.Ve
.Sp
Will disable \s-1SMART\s0 selftest on controller c0.
.Sh "Alarms Commands"
.IX Subsection "Alarms Commands"
Asynchronous events are originated by firmware and captured by their respective device 
drivers. These events are kept in a finite queue inside the kernel, awaiting extraction by
user space programs such as \s-1CLI\s0 and/or 3DMPlus. These events reflect warning, debugging
and/or informative messages for end user. 
.Sp
Alarms generated on 7000/8000 models do not have dates, as such you'll see a '\-' 
(read not\-applicable) in \*(L"Date\*(R" column. Also on 7000/8000 models, the alarm message,
contain the severity as well, hence the \*(L"Severity\*(R" column is showing a '\-' as well.
.IP "\fBalarms\fR [\fIcid\fR]" 4
.IX Item "alarms [cid]"
This command displays all available alarms on a given controller. Invoked without
any controller id, will display alarms associated with all detected controllers.
.Sp
Typical output looks like:
.Sp
.Vb 1
\& //localhost> alarms
.Ve
.Sp
.Vb 13
\& Ctl  Date                        Severity  Message
\& --------------------------------------------------
\& c0   -                           -         ERROR: Unit degraded: Unit #0
\& c1   [Fri Nov 28 04:26:31 2003]  ERROR     (0x04:0x0002): Degraded unit detected: unit=0, port=2
\& c1   [Fri Nov 28 06:13:54 2003]  INFO      (0x04:0x000B): Rebuild started: unit=0
\& c1   [Fri Nov 28 06:30:35 2003]  INFO      (0x04:0x003B): Background rebuild paused: unit=0
\& c1   [Fri Nov 28 06:33:00 2003]  ERROR     (0x04:0x0002): Degraded unit detected: unit=0, port=0
\& c1   [Fri Nov 28 06:33:04 2003]  ERROR     (0x04:0x0002): Degraded unit detected: unit=0, port=4
\& c1   [Fri Nov 28 06:33:46 2003]  INFO      (0x04:0x000B): Rebuild started: unit=0
\& c1   [Fri Nov 28 06:37:58 2003]  INFO      (0x04:0x000B): Rebuild started: unit=0
\& c1   [Fri Nov 28 07:51:34 2003]  INFO      (0x04:0x0005): Background rebuild done: unit=0
\& c1   [Fri Nov 28 07:59:43 2003]  INFO      (0x04:0x0005): Background rebuild done: unit=0
\& c1   [Mon Dec  1 02:26:12 2003]  ERROR     (0x04:0x0002): Degraded unit detected: unit=0, port=3
.Ve
.Sh "Set Commands"
.IX Subsection "Set Commands"
These commands allow you to view and/or set certain controller and unit 
specific parameters as described below.
.IP "\fBset\fR \fBrebuild\fR \fIcid\fR \fI1..5\fR" 4
.IX Item "set rebuild cid 1..5"
This command allows you to set priority of rebuild vs I/O  operations.
Setting this value to 1 implies that rebuilds should consume more 
resources (cpu time, I/O bandwidth) to complete its task. Conversely
setting this value to 5 implies that I/O has higher priority than rebuild.
This command applies to 7000, 8000, and 9000 models. For 7/8000 series,
the rebuild rate also applies to verify and mediascan tasks.
.IP "\fBset\fR \fBverify\fR \fIcid\fR \fI1..5\fR" 4
.IX Item "set verify cid 1..5"
This command allows you to set priority of verification vs I/O operations.
Setting this value to 1 implies fastest verify, and 5 implies fastest I/O.
Note that this feature only applies to 9000 models.
.IP "\fBset\fR \fBcache\fR \fIcid\fR \fIuid\fR \fIon\fR|\fIoff\fR" 4
.IX Item "set cache cid uid on|off"
This command allows you to turn the write cache on a specified unit, on or off.
This feature is supported on both 7000/8000 and 9000 models. The following is
the \s-1RAID\s0 Type vs Model support matrix.
.Sp
.Vb 6
\& Model | R-0 | R-1 | R-5 | R-10 | R-50 | Single | JBOD | Spare |
\& ------+-----+-----+-----+------+------+--------+------+-------+
\& 7K/8K | Yes | Yes | Yes | Yes  | N/A  | N/A    | Yes  | No    |
\& ------+-----+-----+-----+------+------+--------+------+-------+
\& 9K    | Yes | Yes | Yes | Yes  | Yes  | Yes    | Yes  | No    |
\& ------+-----+-----+-----+------+------+--------+------+-------+
.Ve
.IP "\fBset\fR \fBautoverify\fR \fIcid\fR \fIuid\fR \fIon\fR|\fIoff\fR" 4
.IX Item "set autoverify cid uid on|off"
This command allows you to turn on/off the autoverify operation on a specified
unit during allocated windows specified by \fBsched verify\fR commands. The
autoverify operation is a continuous verify operation, which takes place within
the window specified with \*(L"sched verify\*(R". While the \*(L"sched verify\*(R" command allows 
you to specify the time for the verify operation, this command allows you to 
enable or disable the autoverify operation on the specified unit. 
This feature only applies to 9000 models. 
.IP "\fBset\fR \fBoverwriteECC\fR \fIcid\fR \fIuid\fR \fIon\fR|\fIoff\fR" 4
.IX Item "set overwriteECC cid uid on|off"
This command allows you to set the ignoreECC policy for a given unit such that during
rebuild of the specified unit, which could begin automatically (if the unit is
degraded and spare has been defined) or manually, to be applied to the rebuild operation.
Setting overwriteECC to on means ignoreECC. This feature only applies to
9000 models.
.Sh "Help Commands"
.IX Subsection "Help Commands"
This command set provides brief on-line help.
.IP "\fBhelp\fR" 4
.IX Item "help"
This command provide a table of contents, providing an overall navigational help.
Typical output looks like:
.Sp
.Vb 1
\& //localhost> help
.Ve
.Sp
.Vb 1
\& Copyright(c) 2004, 2005 Applied Micro Circuits Corporation(AMCC). All rights reserved.
.Ve
.Sp
.Vb 1
\& AMCC/3ware CLI (version 2.00.00.048)
.Ve
.Sp
.Vb 17
\& Commands  Description
\& -------------------------------------------------------------------
\& info      Displays information about controller(s), unit(s) and port(s).
\& maint     Performs maintenance operations on controller(s), unit(s) and ports.
\& alarms    Displays current AENs.
\& set       Displays or modifies controller and unit settings.
\& sched     Schedules bachground tasks on controller(s) (9000 controllers only).
\& quit      Exits the CLI.
\&            ---- Primary Command Syntax ----
\& show      Displays information about controller(s), unit(s) and port(s).
\& flush     Flush write cache data to units in the system.
\& rescan    Rescan all empty ports for new unit(s) and disk(s).
\& commit    Commit dirty DCB to storage on controller(s).
\& /cx       Controller specific commands.
\& /cx/ux    Unit specific commands.
\& /cx/px    Port specific commands.
\& /cx/bbu   BBU specific commands.               (9000 controllers only)
.Ve
.Sp
.Vb 2
\& Type help <command> to get more details about a particular command.
\& For more detail information see tw_cli's documentation.
.Ve
.IP "\fBhelp\fR \fIinfo\fR" 4
.IX Item "help info"
This command provides specific \fIinfo\fR related help, illustrating various ways
to use the \fIinfo\fR command. Info provides reports on Controllers, Units and Drives.
See the \*(L"Info Commands\*(R" section for more on info.
.IP "\fBhelp\fR \fIalarms\fR" 4
.IX Item "help alarms"
This command provides specific \fIalarms\fR related help, illustrating various ways
to use the \fIalarms\fR command. See the \*(L"Alarms Commands\*(R" section for more.
.IP "\fBhelp\fR \fIset\fR" 4
.IX Item "help set"
This command provides specific \fIset\fR related help, illustrating various ways
to use the \fIset\fR command. See the \*(L"Set Commands\*(R" section for more.
.IP "\fBhelp\fR \fImaint\fR" 4
.IX Item "help maint"
This command provides specific \fImaintenance\fR related help, illustrating various ways
to use the \fImaint\fR command. See the \*(L"Maint Commands\*(R" section for more.
.IP "\fBhelp\fR \fIsched\fR" 4
.IX Item "help sched"
This command provides specific \fIscheduling\fR related help, illustrating various ways
to use the \fIsched\fR command. See the \*(L"Sched Commands\*(R" section for more.
.IP "\fBhelp\fR \fIquit\fR" 4
.IX Item "help quit"
This command provides specific \fIquit\fR related help, illustrating various ways
to use the \fIquit\fR command. See the \*(L"Quit Commands\*(R" section for more.
.SH "RETURN CODE"
.IX Header "RETURN CODE"
While informative messages are written to standard output, error messages are
written to standard error. On success, 0 is returned. On failure 1 is returned.
.SH "ERRATA"
.IX Header "ERRATA"
.Sh "Meta-Character Warning:"
.IX Subsection "Meta-Character Warning:"
.RS 4
.RS 4
If you wish to use \s-1CLI\s0 in single command mode (not interactive), make sure to avoid
collision with your command interpreter (\s-1OS\s0 shell) by escaping the meta-characters
(such as ?, <, >, @, &, *, etc) appropriately with single quote around them.
.Sp
For example, given the
.Sp
$ tw_cli /c0 ?
.Sp
This is a case of single command usage where the user intends to get help on Controller
related commands.  While this is a valid \s-1CLI\s0 command, but since the arguments to \s-1CLI\s0
are first processed by the shell, then some shells like \fIcsh\fR\|(1) will interpret the '?' as
a meta-character to be used toward file completion and if no file is found with a single
character, then shell will complain before the arguments are even passed down to \s-1CLI\s0.
.Sp
One solutions of this problem can be :
.Sp
$ tw_cli help /cx
.Sp
or
.Sp
$ tw_cli '/c0 ?'
.Sp
Note:  Some of the \s-1OS\s0 shell does not have this problem such as bash.
.RE
.RE
.RS 4
.Sh "Reporting Style"
.IX Subsection "Reporting Style"
\&\fItw_cli\fR\|(8) reporting has changed (hopefully for better). The intent has been to
provide a consistent tabular reporting so that relevant and important information 
(such as \fBinfo\fR) are made available as fast as possible. For example, firmware,
\&\s-1PCB\s0, \s-1PCHIP\s0 and similar information have been removed from the info summary report, 
as this type of information is not frequently needed.
.Sp
The new style also accommodates automation much better by providing consistent 
columns with or without values so that it could be easily parsed. The intent is
to make \s-1CLI\s0 yet another \s-1API\s0 (to approach it).
.Sp
However to accommodate current automations around tw_cli and to ease the migration,
the old behavior can still be requested by setting \fB\s-1TW_CLI_STYLE\s0\fR 
environment variable to \fB\s-1OLD\s0\fR as follows:
.Sp
.Vb 3
\& If Bash, then "export TW_CLI_STYLE=OLD"
\& If csh, then "setenv TW_CLI_STYLE OLD"
\& if Windows, then "set TW_CLI_STYLE=OLD"
.Ve
.Sp
This backward compatibility window, will be communicated by official AMCC/3ware representatives.
.Sh "Initialization Process Control"
.IX Subsection "Initialization Process Control"
On the 9K series of controllers, the rebuild scheduling controls both rebuild and
initialize processes if it is enabled.  Currently, \fItw_cli\fR\|(8)
does not have any direct command to pause or resume an initialization process.
If such action is needed, use the rebuild scheduling to handle it.
.SH "ENVIRONMENT VARIABLES"
.IX Header "ENVIRONMENT VARIABLES"
\&\s-1TW_CLI_STYLE\s0 setting this variable to \s-1OLD\s0, will provide the old reporting style.
\&\s-1TW_CLI_INPUT_STYLE\s0 setting this variable to \s-1OLD\s0, will disable focus feature in the 
interactive mode.
.SH "AUTHOR"
.IX Header "AUTHOR"
Medi Montaseri
.SH "SEE ALSO"
.IX Header "SEE ALSO"
.Vb 4
\& AMCC/3ware CLI User Guide
\& AMCC/3ware User Guide
\& AMCC/3ware Installation Guide
\& http://www.amcc.com
.Ve
