SG\_STPG(8) SG3\_UTILS SG\_STPG(8)

# [NAME](#NAME)

sg\_stpg - send SCSI SET TARGET PORT GROUPS command

# [SYNOPSIS](#SYNOPSIS)

**sg\_stpg** \[*--active*] \[*--help*] \[*--hex*] \[*--offline*] \[*--optimized*] \[*--raw*] \[*--standby*] \[*--state=S,S...*] \[*--tp=P,P...*] \[*--unavailable*] \[*--verbose*] \[*--version*] *DEVICE*

# [DESCRIPTION](#DESCRIPTION)

Send a SCSI SET TARGET PORT GROUPS command to *DEVICE*. This utility has different modes depending on whether the *--tp=* option is given.

If *--tp=* is given then the SET TARGET PORT GROUPS command parameter block is built with a descriptor for each element in the list given to *--tp=*. The corresponding asymmetric access state value is either taken from the *--state=* list or, if that is not given, from one of the explicit state options (e.g. *--unavailable*), used repeatedly if required.

If *--tp=* is not given then a sequence of SCSI commands are sent to the *DEVICE* leading up to the SET TARGET PORT GROUPS command. First an INQUIRY is sent to fetch the device identification VPD page to find the (primary) target port group associated with *DEVICE*. Then a REPORT TARGET PORT GROUPS command is issued to find the current state and whether a transition to the requested state is supported. If so the SET TARGET PORT GROUPS command is sent.

Target port group access is described in SPC-4 found at www.t10.org in sections 5.8 and 5.16 (in rev 36e dated 2012/8/24). The SET TARGET PORT GROUPS command is also described in section 6.45 of that document.

# [OPTIONS](#OPTIONS)

Arguments to long options are mandatory for short options as well. The options are arranged in alphabetical order based on the long option name.

[**-a**, **--active**](#a)

set active/non-optimized state.

[**-h**, **--help**](#h)

output the usage message then exit.

[**-H**, **--hex**](#H)

output response to the REPORT TARGET PORT GROUPS command in hex then exit.

[**-O**, **-l**, **--offline**](#O)

set offline state. This is the appropriate state to set a target port to prior to removing the device. Note that a relative target port identifier should be given with this state (rather than a target port group identifier that all other states take).

[**-o**, **--optimized**](#o)

set active/optimized state. If no other state options or *--tp=* option are given then active/optimized is the default state.

[**-r**, **--raw**](#r)

output response to the REPORT TARGET PORT GROUPS command in binary to stdout then exit.

[**-s**, **--standby**](#s)

set standby state. Port group shall accept those commands listed for "unavailable" state plus LOG SELECT/SENSE, MODE SELECT/SENSE, RECEIVE DIAGNOSTIC RESULTS, SEND DIAGNOSTIC, PERSISTENT RESERVE IN/OUT commands.

[**-S**, **--state**=*S,S...*](#S)

specifies a comma separated list (one element of more) of states. Either a number or an abbreviation can be given. A number is assumed to be a decimal number unless it is prefixed by "0x" or has a trailing "h" in which case a hexadecimal value is assumed. Only the values 0, 1, 2, 3 or 14 are accepted. The accepted abbreviations are "an", "ao", "o", "s" or "u"; which represent active/[non-optimized(1)](/man/enterprise-packages/sg3-utils/non-optimized.1), active/optimized(0), offline(14), [standby(2)](/man/enterprise-packages/sg3-utils/standby.2) or [unavailable(3)](/man/enterprise-packages/sg3-utils/unavailable.3) respectively.

[**-t**, **--tp**=*P,P...*](#t)

specifies a comma separated list (one element of more). Each elements is either a target port group identifier (when the corresponding state is other than "offline") or a relative target port identifier (when the corresponding state is "offline"). Each element is assumed to be a decimal number unless it is prefixed by "0x" or has a trailing "h" in which case a hexadecimal value is assumed.

[**-u**, **--unavailable**](#u)

set unavailable state. Port group shall only accept INQUIRY, REPORT LUNS, REPORT/SET TARGET PORT GROUPS, REQUEST SENSE and READ/WRITE BUFFER commands.

[**-v**, **--verbose**](#v)

increase the level of verbosity, (i.e. debug output).

[**-V**, **--version**](#V)

print the version string and then exit.

# [NOTES](#NOTES)

The SET TARGET PORT GROUPS command should be supported whenever the TPGS value in a standard INQUIRY response is 2 or 3. \[View with sg\_inq utility.]

Notice that the offline state is termed as a "secondary target port asymmetric access state" and takes a relative target port identifier (i.e. acts on a single target port). All the other states are termed as "primary target port asymmetric access states" and each takes a target port group identifier (i.e. acts on one or more target ports).

When *--tp=* is given then the same number of elements should be given to the *--state=* option. If more than one list element is given to *--tp=* and an equal number of elements is \_not_ given to the *--state=* option, then if only one state is specified then it is repeated.

# [EXIT STATUS](#EXIT_STATUS)

The exit status of sg\_stpg is 0 when it is successful. Otherwise see the [sg3\_utils(8)](/man/enterprise-packages/sg3-utils/sg3_utils.8) man page.

# [AUTHORS](#AUTHORS)

Written by Douglas Gilbert.

# [REPORTING BUGS](#REPORTING_BUGS)

Report bugs to &lt;dgilbert at interlog dot com&gt;.

# [COPYRIGHT](#COPYRIGHT)

Copyright © 2007-2014 Hannes Reinecke, Christophe Varoqui and D Gilbert  
This software is distributed under a BSD-2-Clause license. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

# [SEE ALSO](#SEE_ALSO)

**sg\_inq, sg\_rtpg (sg3\_utils)**

January 2014 sg3\_utils-1.38

---

Document: sg_stpg(8) from sg3-utils 1.49-r2 (Chainguard OS)
Source: https://github.com/doug-gilbert/sg3_utils.git
