===============
Version History - openSeaChest_Format
===============
v0.0.1  23-May-2017  1_14_3 libraries.  SeaChest_FormatUnit initial beta
                     test release.  Branched from SeaChest_Erase v1.4.0.
v0.0.2  14-Jun-2017  1_15_0 libraries adds bug fix malformed command line
                     should exit with code = 1; added detection of parallel ATA
                     and SCSI speeds; temperature data on ATA now uses the
                     values from the SCT status log or device statistics log.
                     Bug fix where the "-d all" was not filtering out csmi
                     drives like it is supposed to causing duplicate drives to
                     show up.  Adds the child drive matching options
                     --childModelMatch, --childOnlyFW, and --childNewFW.
v1.0.0  14-Jul-2017  1_16_1 libraries adds support for ATA drives that have the
                     Sense Data Reporting feature enabled, changes to how we
                     interpret the completion status from the drive, new Sense
                     Data ASC, ASCQ definitions from SPC5. Adds --Scan (or -S,
                     note the capital S) aggressive system scan.
v1.0.0  27-Jul-2017  1_16_2 libraries enhances Seagate brand detection.
v1.0.0  19-Sep-2017  1_16_4 libraries fixes SCSI "--progress format", added
                     reading remanufacture time for SAS when the drive reports
                     a time, fixed SAS --abortDST.
v1.0.0  25-Sep-2017  1_17_0 libraries adds improved SATA device discovery on
                     SAS adapters, added NVMe read, write & Flush commands.
v1.1.0  10-Oct-2017  1_17_1 libraries adds Better handling of NVMe as a SCSI
                     device, SAT library strings, and fixes to Read-Buffer
                     error history (ISL). Updated copyright notice, invalid
                     command line options now only display an error instead of
                     long help. Added --setSectorSize moved from
                     SeaChest_Configure. Name change from SeaChest_FormatUnit
                     to openSeaChest_Format.
v1.1.1  12-Oct-2017  1_17_3 libraries improves Fast-Format compatibility on SAS.
v1.2.0  26-Oct-2017  1_17_5 libraries fixes SATA drive discovery behind HBAs
                     that don't show as SATA and don't support the SAT VPD
                     page; added Automatic fallback to 12byte CDBs during
                     initial device discovery;  integrated fixes for SAS
                     firmware download and fixes for SAS LongDST time
                     calculation; added detection of TCG Pyrite and Opalite
                     drives. Removed --defaultFormat since that is now the
                     default behavior until other flags are added.
v1.2.0  31-Oct-2017  1_17_6 libraries adds ATA Security compatibility with SATL
                     on some LSI adapters, corrects firmware download issue
                     under Windows 10 API.
v1.2.0  02-Nov-2017  1_17_7 libraries fixes Long DST time on SCSI/SAS products.
v1.2.0  19-Apr-2018  1_18_0 libraries improves device detection of CD-ROM and
                     USB flash drives, support for early 90's PATA drives that
                     don't support LBA mode, bug fix where the last digit of
                     the SCSI Unit Serial Number was being dropped, additional
                     logic for deferred download completion status. --scan
                     --onlySeagate for just Seagate drives in a large system,
                     Long Drive Self Test Time in the -i output, write protect
                     status has been added for SCSI and NVMe in the -i output,
                     IDD enhancements for SAS, IDD enhancements to allow
                     captive mode on SATA, added USB Hacks to better support
                     some odd-ball USB devices and prevent crashes and improve
                     performance for some operations on them by issuing test
                     unit ready commands when something fails during device
                     discovery, automatic fall back to SAT 10 byte commands
                     during device discovery to help work with some USB
                     devices, some Legacy SCSI support enhancements (partially
                     from USB hacks development), enhanced SD to SG mapping in
                     Linux. Removed immediate bit from SAS Fast Format.
v1.2.1  21-Sep-2018  1_18_2 libraries Added in reading os-release PRETTY_NAME
                     field to get the OS name under linux; NVMe enabled;  fixed
                     a bug in the ATA activate FW command; added in reading ID
                     Data log and Device statistics logs page 0 to check the
                     list of supported pages; fixed a bug in the loop used to
                     read mode pages for -i information on SAS; IDD SAS
                     improvements; fixed a bug in DST & Clean with ATA drives
                     behind SCSI controllers. Fix for --modelMatch that have
                     spaces in the name. Added additional information to the
                     banner and -V data to show support levels. Add general
                     support for NVMe and NVMe specific identify data to "-i"
                     command.
v1.2.1  18-Oct-2018  1_18_3 libraries Added NVMe generic read command support.
v1.4.0  03-May-2019  1_19_18 libraries added per device verbosity, --deviceInfo
                     adds SAS (not SATA) FastFormat for Features Supported
                     section,  --deviceInfo now gives Low Current Spinup
                     status. Adds --showSupportedFormats, removes
                     --showSupportedSectorSizes. Adds several new commands in
                     support of NVMe format: --nvmFormat, --nvmFmtSecErase,
                     --nvmFmtMS, --nvmFmtNSID, --nvmFmtPI, --nvmFmtPIL,
                     --nvmFmtMetadataSet.
v1.4.0  10-Jun-2019  1_19_23 libraries added SNTL (SCSI to NVMe translator),
                     updated software SAT translator to use dataset management
                     XL command, fixes for issuing vendor unique commands under
                     Windows, improved fast format support detection, and
                     refactored verbose output for NVMe commands.
v1.5.1  19-Feb-2020  1_21_30 libraries add in check for Elevated Privileges
                     (sudo, run as administrator) before trying to talk to
                     devices, new exit code 9 if privileges are missing;
                     printing the USB VID/PID in the device info; fix to sg
                     helper to support large systems; many changes in support
                     of dual actuators (example: warning that EPC settings
                     affect multiple LUNs); overhaul to USB device detection
                     and support, incorporating a new USB hacks and workarounds
                     approach which uses a lookup table listing various USB
                     bridge VIDs/PIDs and their specific issues; separate
                     Seagate SAS SN and PCBA SN.
v1.5.2  13-Apr-2020  1_21_30 libraries, fix memory allocation during the scan
                     command.
v2.0.0  18-Oct-2020  Changed how scan-flags are parsed. CSMI rewrite and initial
                     Intel RST NVMe support added. Numerous code quality improvements
                     which fixed many potential bugs and memory leaks. Improved
                     support for openfabrics NVMe drivers. Changed permissions
                     detection to show warnings rather than errors. Removed obsolete
                     CSMI and SAT 12B CDB options. CSMI handles now show as csmi:?:?:?
v2.1.0  20-Nov-2020  Added Storage element depopulation commands to openSeaChest_Format.
                     Added support for new storage element repopulation command.
v2.2.1  12-Feb-2021  Added depopulate and repopulate options to openSeaChest_Format
                     Improved argument parsing to accept hex in addition to decimal for
                     many different options.
                     Setting fast-format to hold busy until complete for better results.
                     More messages are now displayed warning not to interrupt format/fast
                     format operations and depopulate.
                     opensea-transport code pulled in enhancements to attempt to block
                     other applications and the OS from interrupting format, fast format,
                     depopulate, and repopulate to prevent potential problems
                     during these operations or which may leave the drive in a bad state
                     if they are interrupted.
v2.3.1  27-Apr-2021  Adding Seagate quick format option for SATA drives. If a setSectorSize
                     operation fails, this may be necessary in order to get the drive back
                     to a good state. If a failure is detected this will automatically be run
                     to try and make sure the drive is left in a good state.
v2.3.1  16-Jun-2021  Pulled in updates to opensea-libs which includes the following:
                     Minor USB compatibility improvements and more products added
                     to the list with their specific workarounds.
                     Updated NVMe compatibility for FreeBSD 11.
                     Support for detection and showing of concurrent positioning 
                     (new multi-actuator support from the standards).
v2.7.0  28-Feb-2023  New acceptance string for low-level format options that are not
                     obvious that they are doing a formwat. As these options are dangerous
                     and in some cases can be interrupted by the host, this new string
                     is required to be used to accept the risk since it may leave a device
                     in an unusable state if interrupted. New warnings accompany this change.
                     Tool also was updated to remove the manual option to perform a Seagate
                     quick format on SATA drives since this is now handled automatically when
                     it is detected as needed to recover the device to a fully functional state.
                     Includes new --noBanner option and new fast discovery option
                     that can be used in situations where super critical performance
                     is required at a loss of information about a drive's capabilities.
                     Help now has many more examples of the options in the tool.
                     Fixed a few bugs in scan and device discovery that could cause
                     a crash or the tool to list no devices found.
                     Added option to dump low-level info to assist with debugging.
                     Added date of manufacture info to the -i output when available.
                     Fixed some big endian compatibility issues discovered on AIX.
                     Added capability for NVM format with user data erase in Windows as well
                     as crypto erase with format in Windows. Reworked conditions for issuing
                     sanitize on NVMe devices so that it might work in Windows too.
v2.7.0  27-Mar-2023  opensea-transport updated to fix CSMI scan duplicating devices 
                     found in certain scenarios.
v3.0.4  01-Dec-2023  Updated to newer opensea-libs to pull in low-level fixes.
                     Changed set sector size timeout to 1 hour instead of infinite to
                     improve compatibility with some drivers in Linux.
                     Added more warnings around set sector size option.
                     Changed default behavior of SAS fast format with --setSectorSize
                     to use polling while changing the sector size to reduce the
                     chance of OS interruption/resets.
                     Stopped reading /etc/passwd file to show username in banner.
                     Banner will now show either "admin"/"root" or "current user".
                     Improved parsing of linux distro/release information from
                     /etc/os-release file.
                     Fixed a bug in byte swap string used to get ATA MN, SN, FW.
                     Fixed a bug in getting/reporting power on hours as years, 
                     days, hours, etc where days was being truncated.
                     Fixed error reading NVMe features in Windows for drive info.
                     Fixed SAS Date of manufacture in drive info.
                     Added detection of HPA security feature.
                     Added more SMART attributes definitions for Seagate HDDs & SSDs,
                     and more definitions for Maxtor HDDs.
                     Improved temperature detection from older HDDs with only
                     SMART attribute 194 reporting current temperature.
                     Added separate warning for SMART attributes below threshold that
                     are not considered prefail/warranty attributes (aka failures).
                     Fixed output of Seagate Airflow temperature SMART attribute.
                     Added showing new capacity after changing Max LBA.
                     Fixed possible segmentation fault when reading /etc/mtab in Linux.
                     Workaround for some SAS drives on some HBAs reporting incorrect
                     response to SAT A1h CDB.
                     Fixed a bug in FreeBSD causing non-data ATA commands to report
                     all zeroes instead of expected output in RTFRs.
v3.2.0  28-Aug-2024  Pull in security updates and low-level bug fixes from opensea-libs.
                     CISS RAID device support for Linux (CCISS, HPSA, and SmartPQI drivers)
                     Added secure file API for reading pattern to use for formatting when user
                     is providing a custom pattern to use for a format unit on SAS.
                     Added --force as option to pass with --setSectorSize to force retries
                     or attempt the commands to change sector size or recovery from bad formats.
                     