OPENSEACHEST_RESERVATIONS(1)

πŸ“¦
version 26.03.2 Β· 4 versions
, in nixpkgs unstable, ubuntu stonking

πŸŽ€ OPENSEACHEST_RESERVATIONS πŸŽ€

okay bestie, so openSeaChest_Reservations(1) is a User Command and it's the whole manual page for openSeaChest_Reservations β€” yes, the utility and the manpage share a name, that's just how it is. Sit down, grab a snack, it's giving ✨drive reservation lore✨.


✨ NAME ✨

openSeaChest_Reservations β€” manual page for openSeaChest_Reservations πŸ¦‹


πŸ’– DESCRIPTION πŸ’–

Subject line, because you deserve the receipts first:

openSeaChest_Reservations - openSeaChest drive utilities - NVMe
Enabled Copyright (c) 2014-2026 Seagate Technology LLC and/or its
Affiliates, All Rights Reserved openSeaChest_Reservations
Version: 26.03.2 X86_64 Build Date: May 18 2026 Today:
20260605T144117 User: current user

So like β€” openSeaChest drive utilities, NVMe enabled, Copyright (c) 2014-2026 Seagate Technology LLC and/or its Affiliates, All Rights Reserved. Version 26.03.2, built for X86_64, Build Date: May 18 2026, Today: 20260605T144117, User: current user. Not me reading my own version number like it's a horoscope. πŸ’…

🫢 Usage

openSeaChest_Reservations [-d <sg_device>] {arguments} {options}
⚠️ NOTE, and it matters: this utility only supports persistent reservations. SCSI 2 reservations are not supported. Periodt. If you came here for SCSI 2 reservations, this is not the house. 😭

🌈 Examples

Straight up the glow-up starter pack:

openSeaChest_Reservations --scan
openSeaChest_Reservations -d /dev/sg<#> -i
openSeaChest_Reservations -d /dev/sg<#> --SATInfo
openSeaChest_Reservations -d /dev/sg<#> --llInfo
openSeaChest_Reservations -d /dev/sg<#> --showPReservationCapabilties
openSeaChest_Reservations -d /dev/sg<#> --showFullPReservationInfo
openSeaChest_Reservations -d /dev/sg<#> --showPRegistrationKeys
openSeaChest_Reservations -d /dev/sg<#> --showPReservations

(and yes, --showPReservationCapabilties is spelled exactly like that, I don't make the rules, I just report them πŸ™ˆ)

πŸ’€ Return codes

When it's over, it's over β€” here's the tea on exit codes:

Generic/Common exit codes

  • 0 = No Error Found βœ…
  • 1 = Error in command line options
  • 2 = Invalid Device Handle or Missing Device Handle
  • 3 = Operation Failure
  • 4 = Operation not supported
  • 5 = Operation Aborted
  • 6 = File Path Not Found
  • 7 = Cannot Open File
  • 8 = File Already Exists
  • 9 = Need Elevated Privileges
  • 10 = Not enough resources
  • 11 = Error Writing File
  • 12 = Device not found when opening handle.
  • 13 = Device not opened. Handle is busy.
  • 14 = Insecure Directory to read or write file
  • Anything else = unknown error

πŸ‘‘ Utility Options

✨ The Obsolete Trio ✨

  • --csmiIgnorePort (Obsolete) β€” this option is obsolete and will be removed in future versions.
  • --csmiUsePort (Obsolete) β€” this option is obsolete and will be removed in future versions.
  • --csmiVerbose (Obsolete) β€” this option is obsolete and will be removed in future versions.

(lowkey all three said the exact same thing. iconic consistency. do not use them, fr fr. 🫠)

πŸ“ The Rest Of The Utility Options

  • --echoCommandLine β€” Echo the command line entered into the utility on the screen.
  • --enableLegacyUSBPassthrough β€” okay so, ONLY use this option on old USB or IEEE1394 (Firewire) products that do not otherwise work with the tool. This option will enable a trial and error method that attempts sending various ATA Identify commands through vendor specific means. Because of this, certain products that may respond in unintended ways since they may interpret these commands differently than the bridge chip the command was designed for. πŸ‘€ (yes, that's a real warning, not me being dramatic for once)
  • --forceATA β€” Using this option will force the current drive to be treated as a ATA drive. Only ATA commands will be used to talk to the drive.
  • --forceATADMA (SATA Only) β€” Using this option will force the tool to issue SAT commands to ATA device using the protocol set to DMA whenever possible (on DMA commands). This option can be combined with --forceATA
  • --forceATAPIO (SATA Only) β€” Using this option will force the tool to issue PIO commands to ATA device when possible. This option can be combined with --forceATA
  • --forceATAUDMA (SATA Only) β€” Using this option will force the tool to issue SAT commands to ATA device using the protocol set to UDMA whenever possible (on DMA commands). This option can be combined with --forceATA
  • --forceSCSI β€” Using this option will force the current drive to be treated as a SCSI drive. Only SCSI commands will be used to talk to the drive.
  • -h, --help β€” Show utility options and example usage (this output you see now). Please report bugs/suggestions to seaboard@seagate.com. Include the output of --version information in the email. (so like, if you're gonna email them, include the receipts bestie πŸ’Œ)
  • --license β€” Display the Seagate End User License Agreement (EULA).
  • --modelMatch [model Number] β€” Use this option to run on all drives matching the provided model number. This option will provide a closest match although an exact match is preferred. Ex: ST500 will match ST500LM0001
  • --noBanner β€” Use this option to suppress the text banner that displays each time openSeaChest is run.
  • --onlyFW [firmware revision] β€” Use this option to run on all drives matching the provided firmware revision. This option will only do an exact match.
  • --onlySeagate β€” Use this option to match only Seagate drives for the options provided
  • -q, --quiet β€” Run openSeaChest_Reservations in quiet mode. This is the same as -v 0 or --verbose 0
  • -v [0-4], --verbose [0 | 1 | 2 | 3 | 4] β€” Show verbose information. Verbosity levels are: 0 - quiet, 1 - default, 2 - command descriptions, 3 - command descriptions and values, 4 - command descriptions, values, and data buffers. Example: -v 3 or --verbose 3
  • -V, --version β€” Show openSeaChest_Reservations version and copyright information & exit

🌸 Utility Arguments 🌸

  • -d, --device [deviceHandle | all] β€” Use this option with most commands to specify the device handle on which to perform an operation. Example: /dev/sg<#>. CSMI device handles can be specified as <error<#><#><#>>. To run across all devices detected in the system, use the "all" argument instead of a device handle. Example: -d all. NOTE: The "all" argument is handled by running the specified options on each drive detected in the OS sequentially. For parallel operations, please use a script opening a separate instance for each device handle.
  • -F, --scanFlags [option list] β€” Use this option to control the output from scan with the options listed below. Multiple options can be combined.
    • ata - show only ATA (SATA) devices
    • usb - show only USB devices
    • scsi - show only SCSI (SAS) devices
    • nvme - show only NVMe devices
    • interfaceATA - show devices on an ATA interface
    • interfaceUSB - show devices on a USB interface
    • interfaceSCSI - show devices on a SCSI or SAS interface
    • interfaceNVME = show devices on an NVMe interface
    • sd - show sd device handles
    • sgtosd - show the sd and sg device handle mapping
    • ignoreCSMI - do not scan for any CSMI devices
    • allowDuplicates - allow drives with both CSMI and PD handles to show up multiple times in the list
  • -i, --deviceInfo β€” Show information and features for the storage device
  • --llInfo β€” Dump low-level information about the device to assist with debugging. πŸ›
  • -s, --scan β€” Scan the system and list all storage devices with logical /dev/sg<#> assignments. Shows model, serial and firmware numbers. If your device is not listed on a scan immediately after booting, then wait 10 seconds and run it again. (patience is a virtue, bestie ⏳)
  • -S, --Scan β€” This option is the same as --scan or -s, however it will also perform a low level rescan to pick up other devices. This low level rescan may wake devices from low power states and may cause the OS to re-enumerate them. Use this option when a device is plugged in and not discovered in a normal scan. NOTE: A low-level rescan may not be available on all interfaces or all OSs. The low-level rescan is not guaranteed to find additional devices in the system when the device is unable to come to a ready state.
  • --SATInfo β€” Displays SATA device information on any interface using both SCSI Inquiry / VPD / Log reported data (translated according to SAT) and the ATA Identify / Log reported data.
  • --testUnitReady β€” Issues a SCSI Test Unit Ready command and displays the status. If the drive is not ready, the sense key, asc, ascq, and fru will be displayed and a human readable translation from the SPC spec will be displayed if one is available.
  • --fastDiscovery β€” Use this option to issue a fast scan on the specified drive. πŸƒβ€β™€οΈπŸ’¨

πŸ¦‹ The Persistent Reservation Girlies πŸ¦‹

  • --prAllTargetPorts (NVMe & SAS only) β€” Use this option when registering a new key to specify that it applies to all target ports. NOTE: Not all devices will support this option
  • --prClear (NVMe & SAS only) β€” Use this option to clear all reservations using a key that is specified by the --prKey option. The specified key must already be registered with the device.
  • --prKey [key] (NVMe & SAS Only) β€” Use this option to specify the key to use for persistent reservation options. When registering a key, this provides the value expected for your use. It should continue to be used through all persistent reseve operations until unregistered or cleared. (yes the original says "reseve", no I will not be fixing it, the facts stay facts πŸ’…)
  • --prPersistThroughPowerLoss (NVMe & SAS only) β€” Use this option when registering a new key to activate the persist through power loss capability. NOTE: Not all devices will support this option
  • --prPreempt [reservation key to preempt] (NVMe & SAS only) β€” Use this option to preempt another reservation using a registration key that is specified by the --prKey option.

The specified key must already be registered with the device. This is used to remove a reservation from another initiator and start a new one using the specified registration key. --prType must also be provided to specify the type of reservation that should be active once the preempt has completed. Use with the --prPreemptAbort option to cause the preempt to abort all outstanding commands to the previous reservation holder. (the drama of it all 😀)

  • --prPreemptAbort (NVMe & SAS only) β€” Use this option to cause a preempt to abort commands to the previous reservation holder. This must be used in combination with the --prPreempt option in order to specify the key to preempt.
  • --prRegister (NVMe & SAS only) β€” Use this option to register a new key as specified by the --prKey option. Combine this with the following options as needed: --prAllTargetPorts --prPersistThroughPowerLoss --prRegisterIgnore

✨ and that's only part of the story β€” there's more of this page coming, so don't go anywhere πŸ’…

  • --prRegisterIgnore β€” (NVMe & SAS only, bestie) πŸ’–

Okay so when you're registering a new key, this one tells the device to just… ignore any previous registration key that was already registered from the same initiator. Like, new key era, who dis? πŸ™ˆ

NOTE: not all devices will support this option. Some of them are simply not on that level, and that's fine. πŸ’…
  • --prRelease β€” (NVMe & SAS only) ✨

This one releases a reservation, using the key you handed over with the --prKey option. Heads up though: that key has to already be registered with the device and it has to have an active reservation that can actually be released β€” no ghost reservations, the vibes must be real. Use --prType to specify the reservation type you're releasing. πŸŽ€

  • --prReserve β€” (NVMe & SAS only) πŸ”₯

Use this to acquire a reservation, again with the key from --prKey. The key must already be registered with the device β€” you can't just show up unregistered and expect to claim the spotlight, that's not how this works, queen. πŸ‘‘

Use --prType to specify the reservation type you want to acquire.

  • --prType [wrex | ex | wrexro | exro | wrexar | exar] β€” (NVMe and SAS only) 🌸

This is the one that says what kind of reservation you're holding. It's required for acquiring, preempting, and releasing reservations β€” no flopping out here without it. 🫢

The available reservation types are literally these, and here's what each one is giving:

  • wrex β€” write exclusive
  • ex β€” exclusive access
  • wrexro β€” write exclusive, registrants only
  • exro β€” exclusive access, registrants only
  • wrexar β€” write exclusive, all registrants
  • exar β€” exclusive access, all registrants
  • --prUnregister β€” (NVMe & SAS only) πŸ¦‹

Use this option to unregister a key that is specified by the --prKey option. Closing the tab, logging out, throwing the key away. Bye bestie, it was iconic. 😭

  • --showFullPReservationInfo β€” (NVMe & SAS Only) ⭐

This option reads the persistent reservation full information β€” that means both the registrations and the reservations β€” and prints it all to the screen. The whole lore, in one read. πŸ“–

  • --showPRegistrationKeys β€” (NVMe & SAS Only) πŸŽ€

This option reads the persistent reservation registration keys and prints them to the screen.

  • --showPReservations β€” (NVMe & SAS Only) πŸ’œ

This option reads the persistent reservation reservations and prints them to the screen.

  • --showPReservationCapabilties β€” (NVMe & SAS Only) 🌈

This option shows the persistent reservation capabilities for a device. Knowledge is power, and this is the vibe check for what your drive can even do. ✨

NOTE: older devices supporting SPC or SPC2 may not support showing capabilities β€” but they do support persistent reservations. So if it comes up empty, it's not a glow-down, it's just an older icon refusing to overshare. 🫢

πŸ¦‹ Version Info for openSeaChest_Reservations πŸ¦‹

Okay so here's the receipt, the full ID, no edits:

openSeaChest_Reservations - openSeaChest drive utilities - NVMe
Enabled Copyright (c) 2014-2026 Seagate Technology LLC and/or its
Affiliates, All Rights Reserved openSeaChest_Reservations
Version: 26.03.2 X86_64 Build Date: May 18 2026 Today:
20260605T144117 User: current user
==========================================================================================
Version Info for openSeaChest_Reservations:

       Utility Version: 26.03.2 opensea-common Version: 6.1.0
       opensea-transport Version: 10.3.0 opensea-operations Version:
       9.4.0 Build Date: May 18 2026 Compiled Architecture: X86_64
       Detected Endianness: Little Endian Compiler Used: GCC Compiler
       Version: 14.2.0 Operating System Type: Linux Operating System
       Version: 6.6.114-1 Operating System Name: Ubuntu 24.04.4 LTS

Look at that stack of versions. Utility 26.03.2, opensea-common 6.1.0, opensea-transport 10.3.0, opensea-operations 9.4.0, built May 18 2026, compiled for X86_64, little endian detected, GCC 14.2.0 did the work, running on Linux 6.6.114-1 aka Ubuntu 24.04.4 LTS. Slay. πŸ’…


πŸ” SEE ALSO πŸ”

The full documentation for openSeaChest_Reservations is maintained as a Texinfo manual. If the info and openSeaChest_Reservations programs are properly installed at your site, the command

info openSeaChest_Reservations

should give you access to the complete manual. Go read it, bestie, it's the extended universe. πŸ’–


And that's a wrap on OPENSEACHEST_RESERVATIONS(1) πŸŽ€ β€” brought to you by openSeaChest_Reservations, version 26.03.2, dated June 2026. Authored and shipped by Seagate Technology LLC and/or its Affiliates, Β© 2014-2026, All Rights Reserved. No cap, that's the whole page. Bye bestie, go reserve something. πŸ‘‘βœ¨

πŸ“¦ where this page comes from