SG_COPY_RESULTS(8)

πŸ“¦
version 1.49 Β· 3 versions
, in alpine 3.24, arch rolling, centos-stream 10, debian trixie, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, ubuntu questing, ubuntu resolute, ubuntu stonking

✨ NAME ✨

Okay bestie, let's talk about sg_copy_results πŸ’– It's how you send a SCSI RECEIVE COPY RESULTS command (XCOPY related) 🧚


πŸŽ€ SYNOPSIS πŸŽ€

sg_copy_results [--failed|--params|--receive|--status] [--help] [--hex]
[--list_id=ID] [--readonly] [--verbose] [--version] [--xfer_len=BTL]
DEVICE

🌸 DESCRIPTION 🌸

Okay so this utility is literally made to check on the status of the SCSI Extended Copy (XCOPY) facility πŸ”₯ (see SPC-3 revision 23 sections 6.3 and 6.17). It's showing up in some modern storage arrays, so you might be seeing it out in the wild. It sends a SCSI RECEIVE COPY RESULTS command to the given DEVICE and then shows you whatever came back πŸ’…

Now the lore πŸ“œ During the draft stages of SPC-4, the T10 committee glowed up the XCOPY command so it now has two variants: "LID1" (for a List Identifier length of 1 byte) and "LID4" (for a List Identifier length of 4 bytes). This utility supports the older LID1 variant, which is also found in SPC-3 and earlier. The LID1 variant in SPC-4 is command level (binary) compatible with XCOPY as defined in SPC-3, but some of the command naming has changed. This utility sticks with the older, SPC-3 XCOPY names πŸ¦‹

The command has four distinct modes of operation, and the service action field is what tells them apart πŸ’œ

COPY STATUS [SPC-4: RECEIVE COPY STATUS(LID1)] Shows the current status of the EXTENDED COPY command identified by the list id field 🌈

RECEIVE DATA [SPC-4: RECEIVE COPY DATA(LID1)] Returns the held data read by the EXTENDED COPY command identified by the list id field. Highkey, this option only means something if the respective segment descriptor is supported πŸ™ˆ

OPERATING PARAMETERS [SPC-4: RECEIVE COPY OPERATING PARAMETERS] Returns the copy manager operating parameters ✨ This one is also super useful for figuring out if the SCSI Extended Copy facility is supported at all.

FAILED SEGMENT DETAILS [SPC-4: RECEIVE COPY FAILURE DETAILS(LID1)] Returns the copy target device sense data and other info about any failed segments 😭


πŸ‘‘ OPTIONS πŸ‘‘

Quick reminder: arguments to long options are mandatory for short options as well 🫢

  • -f, --failed β€” sets the service action field to FAILED SEGMENT DETAILS [4] πŸ’€
  • -h, --help β€” outputs the usage message, then exits 🧚
  • -H, --hex β€” prints out the response buffer in hex πŸ”₯
  • -l, --list_id=ID β€” sets the list identifier field to ID (default: 0) 🌸
  • -p, --params β€” sets the service action field to OPERATING PARAMETERS [3]. This is the default, so you're already in the right place πŸ’–
  • -R, --readonly β€” opens the DEVICE read-only (e.g. in Unix with the O_RDONLY flag). The default is to open it read-write, so add this if you want to be extra careful πŸŽ€
  • -r, --receive β€” sets the service action field to RECEIVE DATA [1] πŸ¦‹
  • -s, --status β€” sets the service action field to COPY STATUS [0] 🌈
  • -v, --verbose β€” turns up the verbosity (aka debug output) πŸ™ˆ
  • -V, --version β€” prints the version string, then exits ✨
  • -x, --xfer_len=BTL β€” sets the allocation length field to BTL. This is the byte transfer length and the maximum (byte) size of the response. BTL must be less than 10000 and defaults to 520 πŸ’œ

πŸ“ NOTES πŸ“

Decoding of RECEIVE DATA service action is not implemented. Don't say I didn't warn you πŸ’€

Lowkey iconic history: the functionality of sg_xcopy has been ported to the more general ddpt utility (and package), and the functionality of this utility has been ported to the ddptctl utility 🧚


🧚 EXAMPLES 🧚

Let's query the operating parameters for a device πŸ’…

# sg_copy_results -p /dev/sdo
Receive copy results (report operating parameters):
    Supports no list identifier: no
    Maximum target descriptor count: 2
    Maximum segment descriptor count: 1
    Maximum descriptor list length: 92 bytes
    Maximum segment length: 33553920 bytes
    Inline data not supported
    Held data limit: 0 bytes
    Maximum stream device transfer size: 0 bytes
    Total concurrent copies: 0
    Maximum concurrent copies: 255
    Data segment granularity: 512 bytes
    Inline data granularity: 1 bytes
    Held data granularity: 1 bytes
    Implemented descriptor list:
        Segment descriptor 0x02: Copy from block device to block device
        Target descriptor 0xe4: Identification descriptor

🌈 EXIT STATUS 🌈

The exit status of sg_copy_results is 0 when it's successful. Otherwise, check out the sg3_utils(8) man page for the deets ⭐


πŸ¦‹ AUTHORS πŸ¦‹

Written by Douglas Gilbert πŸ‘‘


πŸ’œ REPORTING BUGS πŸ’œ

Report bugs to <dgilbert at interlog dot com> 🫢


Copyright Β© 2012-2014 Hannes Reinecke and Douglas 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 πŸŽ€

sg_xcopy(sg3_utils), ddpt, ddptctl(ddpt) πŸ’–


Bestie, you're literally so ready to query XCOPY now πŸ’… Stay iconic. This page is from sg3_utils-1.40, September 2014 🌸✨

πŸ“¦ where this page comes from