Each utility has its own version number, date of last change and
some description at the top of its ".c" file. All utilities in the main
directory have their own "man" pages. There is also a sg3_utils man page.

Changelog for pre-release sg3_utils-1.48 [20221020] [svn: r975]
  - some utilities: add experimental --json[=JO] option
  - sg_z_act_query: new utility for sending either a
    Zone activate or Zone query command
  - sg_rep_density: new utility for decoding the response of
    Report density support command [ssc (tape)]
  - sg_rem_rest_elem: new utility for removing or restoring
    elements
  - sg_rtpg: https://github.com/hreinecke/sg3_utils/pull/79
    applied
  - rescan-scsi-bus.sh: with '-r' it crashed due to change in
    rev 867 in sg_inq.c from Device_type= to PDT= .
    Change script to use either
    - undo regression in rev 815 that added newline after
      each LUN in the default (no option) output
    - rev 815 changed the order of listing hosts from
      numeric to alphabetical, change it back to numeric
    - https://github.com/doug-gilbert/sg3_utils/pull/17
      applied with tweaks: add timeout parameter
    - clean $norm handling
    - fix handling of '-I <secs>' option
    - sgdevice26: do not traverse sg class if scsi_device
      is not added
    - add -no-lip-scan option
    - https://github.com/doug-gilbert/sg3_utils/pull/21
    - speed testonline() when peripheral_qualifier != 0
      see https://github.com/doug-gilbert/sg3_utils/issues/24
    - speed multipath scans with many LUNs, cache multipath
      LUN info in temporary file, see
      https://github.com/doug-gilbert/sg3_utils/issues/22
  - sg_rep_zones: add Report zone starting LBA granularity
    field in REPORT ZONES response [zbc2r12]
    - add --brief option, show part of header and last
      descriptor fetched
    - add --find ZT option to find the first occurrence of
      ZT; if ZT prefixed by - or ! find first not equal to ZT
    - add --statistics option
  - sg_get_elem_status: change '--maxlen=' option default to
    1056 (header plus 32 physical element status descriptors)
  - sg_decode_sense: add --nodecode option
  - sg_logs: tweak the meaning of --list option to more closely
    reflect the contents of log pages 0x0 and 0x0,0xff
    - make '-lll' set union of log pages 0x0 and 0x0,0xff
    - add --exclude option to exclude vendor specific pages
      and parameters
    - add --undefined option for hex format of undefined/
      unrecognized fields
    - for short binary fields, remove address (index) from
      the left hand side of each line of hex
    - improve 'last_n' log pages; supply VPD and mode pages
      with their name (if T10 defined)
    - update names for TapeAlert lpage
  - sg_modes: improve handling of zbc disks with pdt=0x14
  - sg_inq, sg_vpd: merge VPD page processing for T10
    defined pages, VS pages still differ
    - Device Identication VPD page, change
      "IEEE Company_id" to "AOI" as per spc6r06.pdf
    - add support for Hitachi/HP open-v ldev names
  - sg_vpd: apply github pull 18 (missing LF)
    - add --sinq_inraw=RFN option
  - sg_opcodes: cleanup error reporting
    - add --inhex=FN to process earlier -HHH
  - sg_format: allow disk formats on ZBC (zoned) disks
  - sg_read_buffer: add --eh_code= and --no_output options
  - sg_ses: add exp_sas_addr acronym for getting expander's
    SAS address
  - sg_turs: change nanosleep() to Sleep() in MinGW
  - inhex/logs_last_n.hex: new, tests for the 4 "Last n ..."
    log (sub)pages
  - sg_lib: add sg_pdt_s_eq() to cope with ZBC disks which may
    be either PDT_ZBC (if host managed) or PDT_DISK 
    - add hex2fp(), similar to hex2str() but outputs to FILE
    - cleanup masks for PDT [0x1f] and group_number [0x3f]
    - new sg_json_builder.[hc] files local to lib folder
    - document internal json interface in include/sg_pr2serr.h
    - add SG_C_CPP_ZERO_INIT to better handle aggregate stack
      instance zeroing (C23 adding 'struct T t {};' will help)
    - correct fixed format sense data command-specific field
      for ata-passthrough (lba field), see:
      https://github.com/doug-gilbert/sg3_utils/pull/25
  - initialize all sense buffers to 0
  - linux: replace references to /proc/scsi/sg with
    /sys/module/sg/parameters/
  - rework main README file
  - rev 921+922 are bugfix revs on release 1.47 [r919,920]
  - configure.ac: map msys to mingw
    - repeat tweak to accept uclinux as linux
  - sg_dd: change uint type to uint32_t
    - remove unused out2_off in main()
  - sg_pt_dummy.c: remove problematic include
  - sg3_utils.spec: change tarball extension from .tgz to
    .tar.gz ; fix build issue with Fedora 36
  - build cleanups for 'make distcheck', see
    https://github.com/doug-gilbert/sg3_utils/pull/26, 27 and
    28; need svn:ignore property or maybe global-ignores
  - round of coverity identified issue fixes (and non-issues)
  - autoconf: upgrade version 2.70 to 2.71; automake upgrade
    to version 1.16.5 (from Fedora 36)
  - codespell fixes

Changelog for released sg3_utils-1.47 [20211110] [svn: r919]
  - sg_rep_zones: add support for REPORT ZONE DOMAINS and
    REPORT REALMS in this utility
  - sg_raw: fix prints of NVMe NVM command names
  - sg_ses: fix Windows problem "No command (cdb) given"
    - fix crash when '-m LEN' < 252
    - guard against smaller '--maxlen=' values
  - sg_logs: additions to Volume statistics lpage [ssc5r05c]
    - additions to Command duration limits statistics log
      page [spc6r06]
  - sg_vpd: fix do_hex type on some recent pages
    - zoned block dev char vpd: add zone alignment mode and
      zone starting LBA granularity [zbc2r11]
  - sg_read_buffer: fix --length= problem
  - sg_dd, sgm_dd, sgp_dd: don't close negative file descriptors
  - sg_dd: srand48_r() and mrand48_r() are GNU libc specific,
    put conditional in so non-reentrant version used otherwise
    - 'iflag=00,ff' places the 32 bit block address (big endian)
      into each block
  - sgp_dd: major rework, fix issue with error being ignored
    - new: --chkaddr which checks for block address in each block
    - add check for stdatomic.h presence in configure.ac
  - sg_xcopy: tweak CSCD identification descriptor
  - sg_get_elem_status: fix issue with '--maxlen=' option
    - add 2 depopulation revocation health attributes [sbc5r01]
  - transport error handling improved. To fix report of a
    BAD_TARGET transport error but the utility still continued.
    - introduce SG_LIB_TRANSPORT_ERROR [35] exit status
  - several utilities: override '--maxlen=LEN' when LEN
    is < 16 (or 4), take default (or 4) instead
  - scripts: 55-scsi-sg3_id.rules remove outdated rule
  - sg_lib: add sg_scsi_status_is_good(),
    sg_scsi_status_is_bad() and sg_get_zone_type_str()
  - pt_linux: fix verify(BytChk=0) which Linux SNTL translated
    to write, other SNTL cleanups
  - pt_linux_nvme: fix fua setting
  - pt: check_pt_file_handle() add return value of 5 for
    FreeBSD for nvme(cam)
  - pt: new configure option --enable-pt_dummy builds the
    library with sg_pt_dummy.c instead of OS specific code;
    for experimenting with --inhex= decoding on netbsd
  - pt: add Haiku OS support
  - gcc -fanalyzer fixes: in sg_pt_linux.c + sg_write_x.c
  - sg_pt_dummy.c: add list of functions that a new pt
    needs to define
  - configure.ac: tweak to accept uclinux as linux
  - move some hex files from examples to inhex directory
  - major rework of lib/sg_pt_freebsd.c; make SNTL as similar
    as practical to the Linux implementation
  - add testing/sg_take_snap
  - change links to http://sg.danny/cz/sg/* to https

Changelog for released sg3_utils-1.46 [20210329] [svn: r891]
  - sg_rep_pip: new utility: report provisioning initialization
    pattern command
  - sg_turs: estimated time-to-ready [spc6r03]
    - add --delay=MS option
  - sg_requests: substantial cleanup
  - sg_vpd: add Format presets and Concurrent positioning ranges
    - add hot-pluggable field in standard Inquiry [spc6r05]
    - fix vendor struct opts_t alignment
  - sg_inq: add hot-pluggable field in standard Inquiry
  - sg_dd: --verify : separate category for miscompare errors
    - --verify : oflag=coe continue on miscompares, counts them
    - add cdl= operand for command duration limit indexes
    - add oflag=nocreat and conv=nocreat : OFILE must exist
    - add iflag=00, ff, random flags
    - setup conditional auto rule for getrandom()
    - add command timeout after comma in time= operand
  - sg_get_elem_status: add ralwd bit sbc4r20a
  - sg_write_x: add dld bits to write(32) [sbc4r19a]
  - sg_rep_zones: print invalid write pointer LBA as -1 rather
    than 16 "f"s
  - sg_opcodes: improve handling of RWCDLP field
  - sg_ses: use fan speed factor field for calculation [ses4r04]
    - add --all (-a) option, same action as --join
  - sg_compare_and_write: add examples section to its manpage
  - sg_modes: document '-s' option (same as '-6')
  - sg_sanitize + sg_format: when --verbose given once report
    probable success; without --verbose 'no news is good news'
  - sg_zone: add Remove element and modify zones command
  - sg_raw: increase maximum data-in and data-out buffer size
    from 64 KB to 1 MB
    - fix --cmdfile= handling
    - add --nvm option to send commands from the NVM command set
    - add --cmdset option to bypass cdb heuristic
    - add --scan= first_opcode,last_opcode
  - sg_pt_freebsd: allow device names without leading /dev/
    thus fix for regression introduced in rev 731 (ver: 1.43)
  - sg_pt_solaris+sg_pt_osf1: fix problem with clear_scsi_pt_obj()
    which needs to remember is_nvme and dev_fd values
  - sg_lib: add ZBC (2020) feature set entries
  - sg_lib: restore elements and rebuild command added
  - sg_lib,sg_pt: add partial_clear_scsi_pt_obj(),
    get_scsi_pt_cdb_len() and get_scsi_pt_cdb_buf()
    - add do_nvm_pt() for the NVM (sub-)command set
    - tweak transport error handling in Linux
  - sg_lib: Linux NVMe SNTL: add read, write and verify;
    synchronize cache and write same translations
    - add dummy start stop unit and test unit ready commands
    - wire cache mpage's WCE to nvme 'volatile write cache'
    - fix crash in sg_f2hex_arr() when fname not found
  - sg_lib: reprint cdb with illegal request sense key
    - asc/ascq match asc-num.txt @t10 20200708 [spc6r02]
  - gcc-10: suppress warnings
  - autoconf: upgrade version 2.69 to 2.70
  - remove space from end of source lines for git-svn
  - testing/sg_mrq_testing: new, for blocking mrq usage
  - testing/sgs_dd: add evfd flags and eventfd processing
  - testing: remove master-slave terminology for sgv4
  - examples: add nvme_read_ctl.hex and nvme_write_ctl.hex

Changelog for released sg3_utils-1.45 [20200229] [svn: r843]
  - sg_get_elem_status: new utility [sbc4r16]
  - sg_ses: bug: --page= being overridden when --control and --data= also
    given; fix
    - document explicit Element type codes and example
    - rename 'SAS SlimLine' to SlimSAS [ses4r02]
    - add --inhex=FN, equivalent to --data=@FN, for compatibility with
      other utilities
    - 'fan speed factor' field added in 20-013r1
  - sg_opcodes: expand MLU (now 2 bits, spc5r20)
    - include RWCDLP field as extension of CDLP field (spc5r01)
  - sg_write_buffer: allow comma and period separated lists when input
    from stdin
  - sg_inq: update version descriptors to spc5r21
    - add some NVMe 1.4 snippets to ctl identify
  - sg_format: add --dcrt used twice (FOV=1 DCRT=0)
    - add support for FORMAT WITH PRESET (sbc4r18)
  - sg_raw: fix --send bug when using stdin
  - sg_vpd: 3pc VPD page add copy group descriptor
    - add --examine option
    - new zoned block device char. page (zbc2r04)
  - sg_read_buffer: decode read microcode status page
    - add --inhex=FN option
  - sg_request: add --error option, replaces opcode with 0xff (or skips call
    to pass-through)
  - sg_get_lba_status: add --inhex=FN option
  - sg_xcopy: add --fco (fast copy only) (spc5r20)
    - implement --app=1 (append) on regular OFILE type
  - sg_scan (win32): expand limits for big arrays
  - sg_modes: placeholders for Command duration limit  T2A and T2B mpages
    (sbc4r17)
    - improve zbc support (e.g. caching mpage)
  - sg_logs: add Command duration limits statistics lpage (spc6r01)
    - zoned block device statistics log page: shorten counter fields from
      8 to 4 bytes (zbc2r02)
      - new field in this log page (zbc2r04)
    - change '-ll' option to suppress subpages=0xff apart from page
      0x0,0xff. Used three times: list all pages and subpages names
      reported
  - sg_reassign: for defect list format 6 (vendor specific) don't try to decode
  - sg_rep_zones: expand some fields per zbc2r04
    - add --num= and --wp options
  - sg_verify: correct so issues VERIFY(16)
    - add --0 and --ff options and implement bytchk=3 properly
  - sg_write_same: add --ff for 0xff fill
  - sg_luns: report new "target commands" w-lun (19-117)
  - sg_dd: add --verify support
  - sgp_dd: support memory-mapped IO via mmap flag
  - inhex directory: new, contains ASCII hex files that can be used with
    the '--inhex=' option
  - sg_lib: add sg_t10_uuid_desig2str()
    - add sg_get_command_str and sg_print_command_len()
    - speed up sg_print_command()
    - sg_scsi_normalize_sense(): populate byte4,5,6
    - tweak sg_pt interface to better handle bidi
    - sg_cmds_process_resp(): two arguments removed
    - add ${PACKAGE_VERSION} to '.so' name
    - add sg_f2hex_arr()
    - update some tables for NVMe 1.4
    - sg_get_num()+sg_get_llnum(): add 'e' decoding, exabytes; allow
      addition (e.g. --count=3+1k)
    - asc/ascq match asc-num.txt @t10 20191014
    - new zbc2r04 service actions
  - sg_pt_freebsd: fixes for FreeBSD 12.0 release
  - scripts: update 54-before-scsi-sg3_id.rules, scsi-enable-target-scan.sh
    and 59-fc-wwpn-id.rules
  - linux: add nanosecond durations when SG3_UTILS_LINUX_NANO environment
    variable givenand Linux sg driver >= 4.0.30
  - rescan-scsi-bus: widen LUN 0 only scanning
    - multiple patches to sync with Suse
  - testing/sg_tst_async: fix free_list issue
  - testing/sg_tst_ioctl: for sg 4.0 driver
  - testing/sg_tst_bidi: for sg 4.0 driver
  - testing/sgh_dd: test request sharing, mreqs...
    - add --verify support
  - testing/sgs_dd: back from archive, for testing SIGPOLL (SIGIO) and
    realtime (RT) signals
  - testing/sg_chk_asc: allow LF and CR/LF in asc-num.txt
  - testing: 'make' now builds both C and C++ programs
  - sg_pt: add sg_get_opcode_translation() to replace global pointer to
    array: sg_opcode_info_arr[]
    - extend small SNTL to support read capacity
  - utils/hxascdmp: add -o=<offset> option
    - add -1, -2 and -q options
  - sg_io_linux (sg_lib): add sg_linux_sense_print()
  - sg_pt_linux: uses sg v4 interface if sg driver >= 4.0.0 . Force sg v3
    always by building with './configure --disable-linux-sgv4'
    - add sg_linux_get_sg_version() function
  - add: 'SPDX-License-Identifier: BSD-2-Clause' or a small number of
    'GPL-2.0-or-later'
  - gcc-9: suppress (pointless) warnings
  - automake: upgrade to version 1.16.1
  - autoconf: upgrade to version 2.69
  - sync with fixes from Redhat, via github

Changelog for sg3_utils-1.44 [20180912] [svn: r791]
  - same code as release 1.43 20180911 svn rev 789;
    new release due to sync problem with git mirror at:
    https://github.com/hreinecke/sg3_utils
    that has a v1.43 tag dated 20160217 [svn: r663]

Changelog for sg3_utils-1.43 [20180911] [svn: r789]
  - release 1.43 20180911 svn rev 789
  - sg_write_x: where x can be normal, atomic, or(write),
    same, scattered, or stream writes with 16 or 32 byte
    cdbs (sbc4r04 for atomic, sbc4r11 for scattered)
  - sg_bg_ctl: new Background control command (sbc4r08)
  - sg_seek: new SEEK(10) or PRE-FETCH(10 or 16)
  - sg_stream_ctl: new, STREAM CONTROL or GET STREAM STATUS
  - sg_senddiag: add --timeout=SECS option
  - sg_sanitize: add --timeout=SECS option
    - add --dry-run option
  - sg_format: add --timeout=SECS option
    - add --dry-run option to bypass modifying behaviour
    - add --quick option to skip reconsideration time
    - extend --wait timeout to 40 hours for disk sizes
      > 4 TB and 80 hours if > 8 TB
    - when changing block size allow for Mode Select
      rejecting SP=1 (Save Page): repeat with SP=0
    - FFMT tweaks: default CMPLST to false, shorten poll
    - make all data-in and data-out buffers page aligned
  - sg_decode sense: add --cdb and --err=ES options
  - sg_ses: handle 2 bit EIIOE field in aes dpage
    - increase join array size from 260 to 520 elements
    - add --quiet option to suppress messages
    - expand join handling of SAS connectors and others
    - expand join debug code
    - allow multiple --clear=, --get= and --set= options
    - allow individual index ranges (e.g. --index=3-5)
    - allow --index=IIA with -ee to enumerate only fields
      belonging to element type IIA
    - --data=@FN with --status now decodes dpage(s) in FN
    - add 'offset_temp' and 'rqst_override' to temperature
      sensor element type
    - add 'hw_reset' and 'sw_reset' to enclosure services
      controller electronics element type (18-047r1)
    - interpret '--join --page=aes' to only display join
      rows that have a corresponding AES dpage element
    - support NVMe attached enclosure via NVME-MI Send and
      Receive SES commands
    - decode array status diagnostic page (obsolete)
    - sync to ses4r01
  - sg_ses_microcode: add --dry-run and -ealsd options
  - sg_ses, sg_ses_microcode, sg_senddiag: make all access
    buffer page size aligned (typically page_size=4096)
  - sg_write_buffer: add --dry-run option
  - sg_luns: resync with drafts (sam6r02+spc5r10)
    - remove undocumented test "W" format
    - accept and output on request "quad dashed" format
  - sg_logs: fix volume statistics lpage when subpage
    is zero (ssc5r02a); decode mount history log parameter
    - add --vendor=VP and '--pdt=DT' options
    - decode Requested recovery, TapeAlert response, and
      Service buffer information lpages for tape
    - add min+max 'mounted' temperature and rel. humidity
      fields to Environmental reporting lpage (spc5r10)
    - add last n Inquiry/Mode_page data changed log
      pages (spc5r17)
    - add zoned block device statistics lpage (zbc2r?,
      16-264r4)
    - fixup enumeration in power condition transition
      log page (from H. Reinecke, Suse)
  - sg_inq: fix potential unbounded loop in --export
    - add --only to stop standard inquiry decoding also
      doing a serial number vpd page (0x80) fetch
    - update version descriptor list to 20170114
    - add further checks so CDROM standard inquiry response
      doesn't trick --inhex into thinking it's VPD pg 0x80
    - decode NVMe Identify controller/nsid commands
    - with NVMe --only restricts to a single Identify
      controller command
    - add --long which decodes more of the NVMe Identify
      command responses
  - sg_inq+sg_vpd: update Extended inquiry data vpd
    page (spc5r09 and 17-142r5)
    - block limits and block limit extension VPD pages:
      add extra info about corner cases
    - add maximum inquiry|mode_page change logs fields
      to extended inquiry vpd page (spc5r17)
    - both now return EDOM (adjusted sg error code) when
      requested page not in Supported VPD Pages page
    - add --force option to bypass checking Supported
      Vpd Pages page and fetch requested page directly
  - sg_vpd: 3 party copy VPD page improvements
    - fully implement Device constituents VPD page
    - decode some WDC/Hitachi vendor VPD pages
    - improve handling of unknown pages
  - sg_reassign+sg_write_same: fix ULONG_MAX problem
  - sg_rdac: add sanity checks for -f=lun value
  - sg_turs+sg_requests: make both accept '--num=NUM'
    and '--number=NUM' for mutual compatibility
  - sg_turs: add --low option
    - fix exit status when not ready in single case
  - sg_zone: fix debug cdb naming
    - add --sequentialize, --count=ZC options, zbc2r01b
  - sg_reset_wp add --count=ZC option, zbc2r01b
  - sg_persist: add --maxlen-LEN option, LEN defaults to
    decimal, similar to --alloc-length= which takes hex
    - add Replace lost reservation capable (RLR_C) bit
      in Report Capabilities (spc4r36)
  - sg_dd: add --dry-run and --verbose options
    - allow multiple short options (e.g. -dvv )
  - sgp_dd: pthread_cancel() has issues in C++ (and
    the Android multi-threaded library doesn't supply it)
    so use pthread_kill() in its place [Linux only]
    - add --dry-run and --verbose options
  - sgm_dd: add --dry-run and --verbose options
  - sg_opcode: add '--enumerate' and '--pdt=' options
    - support CDLP (command duration limit page)
    - support MLU, Multiple Logical Units (18-045r1)
    - check resid and trim response if necessary
    - report when --no-inquiry is ignored
  - sg_raw: add --enumerate option
    - add --cmdfile=CF option, permit 64 byte NVMe
      admin commands to be sent
    - add --raw option (for CF in binary)
    - page align input and output buffers
  - sg_get_lba_status: add --report-type= option (sbc4r12)
    - add support for 32 byte cdb variant (sbc4r14)
    - add support for --element-id= and --scan-len=
      options (sbc4r14)
    - decode response's RTP and two more provisioning
      statuses and the additional status (sbc4r12)
    - decode completion condition (sbc4r14)
  - sg_modes: add Out of band management control mpage
    - accept acronym for page/subpage codes
  - sg_rep_zones: expand --help option information
  - sg_unmap: add --all=ST,RN[,LA] option to unmap
    large contiguous segments of a disk/ssd
    - add --dry-run and --force options
  - sg_wr_mode: add --rtd option for RTD bit
  - sg_timestamp: add '--no-timestamp' option
    - add --elapsed and --hex options
  - sginfo: don't open /dev/snapshot
  - introduce SG3_UTILS_DSENSE environment variable
  - manpages and usage messages: corrections from
    Gris Ge via github
  - group_number: is 6 bit field allowing 0 to 63,
    code in several utilities limited it to 31, fix
  - convert many two valued 'int's to bool
  - sg_lib: add SSC maintenance in/out sa names
    - enhance exit status values and associated
      strings, add SG_LIB_OS_BASE_ERR (50)
    - add sg_ll_inquiry_v2(), sg_ll_inquiry_pt() and
      sg_simple_inquiry_pt()
    - add sg_ll_report_luns_pt()
    - add sg_ll_log_sense_v2()
    - add sg_ll_mode_sense10_v2()
    - add sg_ll_mode_select6_v2() and
      sg_ll_mode_select10_v2() for RTD bit
    - add sg_ll_receive_diag_v2()
    - add sg_ll_write_buffer_v2()
    - add sg_get_llnum_nomult()
    - add sg_ll_get_lba_status16()
    - add sg_ll_get_lba_status32()
    - add sg_ll_format_unit_v2()
    - add sg_ll_test_unit_ready_progress_pt()
    - add sg_ll_start_stop_unit_pt()
    - add sg_ll_request_sense_pt()
    - add sg_ll_send_diag_pt(), sg_ll_receive_diag_pt()
    - add sg_get_sfs_name() for spc5r11 (Feature sets)
    - add sg_decode_transportid_str()
    - add sg_msense_calc_length()
    - add sg_all_zeros(), sg_all_ffs()
    - add sg_get_sense_cmd_spec_fld()
    - add sg_is_scsi_cdb()
    - add sg_get_nvme_cmd_status_str()
    - add sg_nvme_status2scsi()
    - add sg_nvme_desc2sense()
    - add sg_build_sense_buffer()
    - add sg_get_nvme_opcode_name()
    - add sg_memalign() and sg_get_page_size()
    - add sg_is_aligned() and pr2ws()
    - add sg_get_big_endian(), sg_set_big_endian()
    - add hex2stdout(), hex2stderr() and hex2str()
    - add sg_convert_errno()
    - add sg_if_can2stdout(), sg_if_can2stderr() and
      sg_exit2str()
    - implement 'format' argument in dStrHexStr()
    - add read buffer(16) command mode names
    - add Microcode activation sense descriptor spc5r10
    - add SG_LIB_OK_TRUE(0) and SG_LIB_OK_FALSE(36)
      non "error" code defines for exit status
    - add SG_LIB_LBA_OUT_OF_RANGE error code
    - add SG_LIB_UNBOUNDED_32BIT (_16BIT and _64BIT)
      defines to help with decoding corner cases
    - identify vendor specific sense data (response
      code 0x7f), print contents in hex
  - sg_pr2serr.h: add sg_scnpr() [like lk scnprintf()]
  - sg_pt: add construct_scsi_pt_obj_with_fd()
    - add pt_device_is_nvme(), get_pt_nvme_nsid()
    - add check_pt_file_handle()
    - add get_pt_file_handle(), set_pt_file_handle()
    - add small SNTL to support sg_ses on NVMe
  - sg_lib_data: sync asc/ascq codes with T10 20170114
    - add write scattered (16+32) cdb names sbc4r11
  - sg_cmds_extra: expand sg_ll_ata_pt() to send new
    Ata pass-through(32) command (sat4r05)
  - sg_sat_identify: expand to take --len=32
  - sg_pt: add dummy pt_device_is_nvme()
  - rescan-scsi-bus.sh: harden code
    - fixes from Suse; bump version
    - bump version to 20180615
    - add to install list in Makefile, hope it does
      not clash with other package providing it
    - add --ignore-rev to ignore revision change
  - 55-scsi-sg3_id.rules: fixes from Suse
  - https://github.com/hreinecke/sg3_utils branch
    sles15 synced 20170914
  - move some testing utilities out of the
    'examples' and 'utils' directories into the new
    'testing' directory
  - add testing/sg_tst_nvme utility
  - clean Makefile.freebsd in examples/ and testing/
  - gcc 7.2 cleanups (sysmacros.h etc)
  - clang --analyze static checker clean ups
  - shellcheck cleanup on scripts
  - ./configure automake utility:
    - option --enable-debug added for testing
    - option --disable-linuxbsg retired, still accepted
      but now ignored, Linux sg v3 or v4 interface
      decision made at runtime
    - Info section now printed at end of ./configure
  - automake: add AM_PROG_AR to configure.ac
    - upgrade to version 1.15
    - various configure.ac and Makefile.am cleanups
    - add SG_LIB_ANDROID build 'define'. If defined then
      SG_LIB_LINUX is also defined, so test for Android
      before Linux if need to differentiate
  - update BSD license from 3 to 2 clause aka FreeBSD
    license (without reference to FreeBSD project)
  - debian: bump compat file contents from 7 to 10

Changelog for sg3_utils-1.42 [20160217] [svn: r663]
  - sg_timestamp: new, to report or set timestamp
  - sg_read_attr: new, supported by tape drives
  - sg_stpg: fix truncation of target port field
  - sg_inq: cope with unicode strings, udev fixes
    - update version descriptor list to 20160125
    - '--export': new entries for UUID descriptor
  - sg_ses: add more field acronyms (ses3r11)
  - sg_logs: add Utilization lpage (sbc4r07)
    - add Background operation lpage
    - add Pending defects lpage
    - add LPS misalignment lpage (sbc4r10)
    - document '--All' ('-A') option
    - rework lto tape vendor lpages
  - sg_vpd: add Block limits extension VPD page
    - add Device constituents VPD page
    - add LB Protection VPD page (ssc ssc5r02a)
    - LB provisioning VPD page: expand LBPRZ, add
      Minimum and Threshold percentage fields
    - rework lto tape vendor VPD pages
  - sg_inq+sg_vpd+sg_xcopy: add support for locally
    assigned UUIDs in VPD page 0x83 (spc5r08)
  - sg_sanitize: add --znr option (sbc4r07)
  - sg_rep_zones: add --partial option (zbc-r04)
  - sg_format: add ffmt option (sbc4r10)
    - add support for FORMAT MEDIUM (for tape)
  - sg_raw: document length relationships
  - rescan-scsi-bus.sh: updates from Suse
  - sg_lib_data: sync asc/ascq codes with T10 20151126
  - sg_lib: add 'sense' categories for SCSI statuses:
    condition met, busy, task set full, ACA active and
    task aborted
    - add pr2serr() extern
    - change sg_get_sense_str() and dStrHexStr(), return
      chars written (returned void previously)
    - add sg_get_sense_descriptors_str() function
    - add sg_get_designation_descriptor_str() function
    - sg_get_desig_type_str()+sg_get_desig_assoc_str()
      and sg_get_desig_code_set_str() added
    - sg_get_opcode_sa_name() break out zoning in/out,
      read attribute and read position service actions
  - sg_cmds_extra: add sg_ll_format_unit2() for FFMT
  - sg_pr2serr.h: new, to shorten fprintf(stderr, ...)
  - sg_io_linux, sg_pt_linux: drop SUGGEST_* decoding
  - sg_unaligned.h: add 48 bit support and gets for
    variable length unsigned integers
    - add specializations for little and big endian
  - change sg_ll_*() function's 'int noisy' to bool

Changelog for sg3_utils-1.41 [20150511] [svn: r644]
  - sg_zone: new utility for open, close and finish
    zone commands introduced in zbc-r02
  - sg_rep_zones and sg_reset_wp: change opcodes as
    indicated in zbc-r02
  - sg_read_buffer: add READ BUFFER(16) support (spc5r02)
  - sg_logs: add --enumerate and acronyms
    - allow decode from hex or binary in file
    - decode environmental reporting + limits lpages
  - sg_write_buffer: add --timeout=TO option
  - sg_lib interface: add sg_lib_pdt_decay(), TPROTO_PCIE
    plus support for zoning service actions
  - sg_lib: in Linux blocked devices yield ENXIO from
    ioctl(SG_IO), map to SG_LIB_CAT_NOT_READY
    - clean up sg_warnings_stream handling
  - sg_inq+sg_vpd: fix SCSI name string decoding in
    device identification VPD page (0x83)
    - increase sanity on Unit Serial number VPD page
    - improve rdac vpd page reporting (vendor)
  - sg_inq: improve NAA handling in dev_id VPD page
    - update version descriptor list to 20150126
  - sg_vpd: add atomic boundary values (sbc4r04)
    - block limits VPD page: fix unmap granularity
      alignment value; spc5r02 additions
  - sg_readcap: add support for ZBC's rc_basis field
  - sg_senddiag: fix bug with --raw option
    - add support for -HHH for output suitable for --raw
  - sg_ses: enclosure element: add failure and warning
    acronyms, fix warning indication output
    - additional element status dpage: add PCIe/NVMe
    - handle element descriptor names that count
      multiple trailing NULLs
  - rescan-scsi-bus.sh: add --issue-lip-wait option and
    improve error handling
    - improve dm-multipath handling
  - sg_modes: make '-HHH' output suitable as input to
    'sdparm --inhex='
  - sg_rdac: add '-6' option for mode sense/select(6)
    - add support for reporting more SCSI transports
      and accessing rdac extended mode page 0x2c
  - sg_write_same: cleanup, mainly man page
  - scsi_logging_level: replace use of tr command
  - examples/sg_tst_async: cleanup
  - examples/sg-simple_aio.c: remove
  - sg_lib_data: sync asc/ascq codes with T10 20150423
  - Makefile cleanup
  - autogen.sh: upgrade to buildconf 20091223 version

Changelog for sg3_utils-1.40 [20141110] [svn: r620]
  - sg_write_verify: new utility for WRITE AND VERIFY
  - sg_ses_microcode: new utility
  - sg_sat_read_gplog: new utility
  - sg_senddiag: add --maxlen= option
  - sg_copy_results: correct response length calculations
  - sg_format: make '-FFF' bypass mode sense/select
    - add --mode=MP to supply alternate mode page,
      default remains read-write error recovery mpage
    - output unit serial number and LU name prior to
  - sg_inq: expand Block limits VPD page output
    - fix --cmddt output if not supported by device
    - more sanity checks on vendor supplied fields
  - sg_vpd: add --all option
    - more TPC VPD page decoding
    - add zoned block device characteristics page
    - more sanity checks on vendor supplied fields
  - sg_ses: fix problem with --index=sse (and ssc)
    - mask status element before using as control
    - defeat previous item with --mask (ignore) option
    - SAS connector status element: add overcurrent bit
    - handle element descriptor names that count a
      trailing NULL
    - add --warn option mainly for broken joins
    - add optional descriptions to -ee output
    - sync with ses3r07
  - sg_sanitize: add --desc and --zero options
    - output unit serial number and LU name prior to
  - sg_rep_zones: corrections, sync with zbc-r01c
  - sg_persist: split help into two pages, '-hh' for 2nd
  - sg_logs: refine tape drive output
  - sg_raw: with -vvv decode T10 CDB name
    - do not output/print data-in if error
  - sg_opcodes: add --compact field
  - sg_senddiag: add --page=PG option
  - sg_reset: add words for EAGAIN from reset ioctl
  - sg_sat_*: mention t_type and multiple_count fields
  - win32: sg_scan: handle larger configurations
  - sg_lib: trim trailing spaces in dStrHex() and friends
  - sg_lib_data: sync asc/ascq codes with T10 20140924
    - clean up service action string functions
    - sg_ll_unmap_v2(): fix group number
    - sg_ll_inquiry(), sg_ll_mode_sense*(),
      sg_ll_log_sense(): use resid to clear unfilled
      data-in buffer
  - sg_unaligned.h: add header for building parameters
  - examples/sg_tst_async: new Linux sg test utility

Changelog for sg3_utils-1.39 [20140612] [svn: r588]
  - sg_rep_zones: new utility for ZBC REPORT ZONES
  - sg_reset_wp: new utility, ZBC RESET WRITE POINTER
  - sg_ses: add --eiioe=auto|force option
    - fix AES dpage element indexing problems
    - add --readonly option
  - sg_write_buffer: add --bpw=CS option to call
    write buffer multiple times for big blobs
  - sg_format: add --ip_def option to fully provision
  - sg_opcodes: add --mask option
  - sg_logs: add --in=FN option for log select params
    - add --filter=PARC (parameter code)
    - add --no_inq for suppress initial INQUIRY call
    - add --readonly option
  - sg_persist: add --readonly option, environment
    variable SG_PERSIST_IN_RDONLY sets ro on prin cmds
  - sg_inq: sync version descriptors dated 20105176
    - suppress dev-id VPD messages so they only appear
      when --verbose is given
    - add new SCSI_IDENT_*_ATA pair to --export output
  - sg_luns: add decoding for conglomerate LUNS
    - add --lu_cong option to simulate the LU_CONG bit
  - sg_vpd: add --vendor=VP option, re-order vendor
    specific pages, split lto into lto5 and lto6
    - add Supported block lengths and protection types
      page (sbc4r01)
    - add Block device characteristics extension
      page (sbc4r02)
  - sg_copy_results, sg_get_lba_status, sg_luns,
    sg_read_buffer, sg_readcap, sg_referrals, sg_rtpg,
    sg_sat_set_features, sg_sat_identify:
    add --readonly option
  - sginfo: strip trailing spaces from INQUIRY text
  - sg_rbuf: add --echo option (to use echo buffer)
  - sg_lib: add sanitize command service action names
    - add 'sense' categories for reservation conflict,
      data protect and protection information violations
    - add sg_get_category_sense_str() to API
    - change struct sg_simple_inquiry_resp::rmb to byte_1
    - add initial zbc service actions
    - dStrHex(Err): fix output truncation error
    - linux, sg: support SCSI_PT_FLAGS_QUEUE_AT_TAIL and
      SCSI_PT_FLAGS_QUEUE_AT_HEAD (block layer queueing)
  - sg_lib_data: sync asc/ascq codes with T10 20140516
    - sync operation code with T10 20140515
    - add id string for SPC-5
  - scripts/59-scsi-sg3_utils.rules: removed
    - functionality split into two scripts:
      55-scsi-sg3_id.rules + 58-scsi-sg3_symlink.rules
  - examples/sg_persist_tst.sh: add --exclusive option
  - win32: sg_scan, sg_ses and sg_log fixes
  - examples/sgq_dd: re-add old utility as example

Changelog for sg3_utils-1.38 [20140401] [svn: r563]
  - sg_ses: add --dev-slot-num= and --sas-addr=
    - fix --data=- problem with large buffers
    - new --data=@FN to read hex data from file FN
    - error and warning message cleanup
    - add --maxlen= option
  - sg_inq: add --block=0|1 option to control opens
    - add --inhex=FN to read response in ASCII hex from
      a file; --inhex=FN --raw reads response in binary
    - make -HHH (-HHHH for '-p ai') output suitable for
      another sg_inq invocation to use --inhex to decode
    - add LU_CONG to standard inquiry response output
    - decode ASCII information VPD pages
    - add HAW_ZBC in block dev char. VPD page (sbc4r01)
    - sync version descriptors dated 20131126
    - allow --page=-1 to force std INQUIRY decoding
    - fix overflow in encode_whitespaces
    - improve unit serial number display (VPD page 0x80)
  - sg_vpd: add LU_CONG to standard inquiry response output
    - add --inhex=FN to read response in ASCII hex from
      a file; --inhex=FN --raw reads response in binary
    - decode Third Party Copy (tpc) page
    - add HAW_ZBC in block dev char. VPD page (sbc4r01)
    - add LTO and DDS vendor pages
    - allow --page=num to restrict --enumerate output
  - sg_persist: add PROUT: Replace Lost Reservation (spc4r36)
    - add --transport-id= for SOP: 'sop,<routing_id_in_hex>'
  - sg_readcap: for --16 show physical block size if
    different from logical block size
  - sg_xcopy: environment variables: XCOPY_TO_SRC and
    XCOPY_TO_DST indicate where xcopy command is sent
    - change default to send xcopy to dst (was src)
    - improve CL handling of short options (e.g. '-vv')
  - sg_luns: guard against garbage response
  - sg_decode_sense: with --nospace ignore spaces on
    command line, so multiple arguments are concatenated
  - sg_write_same: repeat if unit attention
  - sg_rtpg: fix indexing bug with --extended option
  - sg_logs: placeholder for pending defects lpage
  - sg_unmap: fix another problem with --grpnum= option
  - sg_lib.h: add PDT_ZBC define (spc4r36p)
  - sg_lib_data: sync asc/ascq codes with T10 dated 20140320
    - add pdt string for ZBC (spc4r36p)
  - sg_lib: extensions to sg_get_num() and sg_get_llnum()
  - sg_cmds_extra: fix sa bug in sg_ll_3party_copy_out()
  - scripts/rescan-scsi-bus.sh: check if FC driver exports
    issue_lip before using it
    - man page added (Linux only)
  - scripts/59-scsi-sg3_utils.rules: linux specific udev rules
  - examples: add sg_tst_excl3 for testing O_EXCL
    - improve sg_tst_excl and sg_tst_excl2
    - add sg_tst_context for testing file handle contexts
  - upgrade automake to version 1.13.3
  - add suse directory and 'spec' file to facilitate builds

Changelog for sg3_utils-1.37 [20131014] [svn: r522]
  - sg_compare_and_write: fix wrprotect setting
    - add --quiet option to suppress miscompare report
    - merge features from another implementation
  - sg_inq: fix referrals VPD page
    - dev_id VPD: T10 vendor id designator clean up
  - sg_logs: improve for tape drives, general cleanup
  - sg_persist: fix core dump on -Q option
  - sg_unmap: fix core dump on -g option
  - sg_vpd: dev_id VPD: T10 vendor id designator clean up
    - cleanup up dev_id NAA-3: locally assigned
  - sg_ses: add --nickname and --nickid options
    - eiioe added to additional element status page (ses3r6)
    - multiple --filter options to prune output
  - sg_verify: improve miscompare handling
    - rename --btychk=ndo option to --ndo=ndo (hide former)
    - add --quiet option
  - sg_xcopy: allow sg and bsg devices
    - fix for bpt going negative
    - limit each XCOPY(LID1) command to 65535 blocks
    - fix for seek in multi-segment copies
  - sg_sanitize: skip 15 second safety delay with --fail
  - sg_libs: extended copy opcode renamed (spc4r34)
    - sg_ll_receive_copy_results(): expand for all sa_s
    - add sg_get_sense_key()
    - add sg_ll_3party_copy_out()
    - add dStrHexErr(): ascii hex to stderr
    - add dStrHexStr(): ascii hex to string
    - add SG_LIB_CAT_MISCOMPARE to categories
    - clean header files
  - sg_pt_freebsd: sanity check on sense_resid; fix leaks
  - scripts/rescan-scsi-bus.sh KG's v1.57 + HR patch
    - improve wlun handling, detect updated and resized
      devices, better multipath support
  - Makefile.am cleanup
  - examples: add sg_tst_excl and sg_tst_excl2

Changelog for sg3_utils-1.36 [20130531] [svn: r497]
  - sg_vpd: Protocol-specific port information VPD page
    for SAS SSP, persistent connection (spl3r2), power
    disable (spl3r3)
    - block device characteristics: add FUAB bit
  - sg_xcopy: handle more descriptor types; handle zero
    maximum segment length; allow list IDs to be disabled;
    improve skip/seek handling; allow xcopy on destination
  - sg_reset: and --no-esc option to stop reset escalation
    - clean up cli, add long option names
  - sg_luns: add --test=ALUN option for decoding LUNs
    - decoded luns output in decimal or hex (if -HH given)
    - add '--linux' option to show Linux LUN after T10
      representation, can map one to the other
  - sg_inq: add --vendor option to show standard inquiry's
    vendor specific fields in ASCII
    - take resid into account with response output
  - sg_sync: add --16 (for 16 byte command) and --timeout=
  - sg_logs: add data compression page (ssc4)
  - sg_sat_set_features: increase --lba from 1 to 4 bytes
  - sg_write_same: add --ndob option (sbc3r35d)
  - sg_map: mark as deprecated
  - sginfo: mark as deprecated, especially -l (list)
  - sg_lib: improve snprintf handling
  - sg_lib_data: sync asc/ascq codes with T10 20130117
  - sg_cmds (lib): if noisy given, give more UA info
  - make code more C++ friendly

Changelog for sg3_utils-1.35 [20130117] [svn: r476]
  - sg_compare_and_write: new utility
  - sg_inq+sg_vpd: block device characteristics VPD page:
    add product_type, WABEREQ, WACEREQ and VBULS fields
  - sg_inq: more --export option changes for udev
  - sg_vpd: add more rdac vendor specific vpd pages
  - sg_verify: add --ebytchk option for sbc3r34 changes
  - sg_stpg: --offline option: fix 'Invalid state 0xe'
  - sg_ses: Door Lock element changed to Door element and
    abbreviation changed from 'dl' to 'do' (ses3r05)
  - archive/rescan-scsi-bus.sh: upgrade to version 1.53hr
    - move rescan-scsi-bus.sh to scripts directory
  - sync to sbc3r34
  - sg_lib: sg_ll_verify10+16 expand BYTCHK to 2 bit field
  - sg_pt_win32, sg_scan(win32): changes for cygwin 1.7.17
  - clean up man page summary lines

Changelog for sg3_utils-1.34 [20121013] [svn: r461]
  - sg_xcopy: new dd like utility for extended copy command
  - sg_copy_results: new utility for receive copy results
  - sg_verify: add 16 byte cdb, bytchk (data-out buffer)
    and group number support
  - sync to spc4r36 and sbc3r32
  - sg_inq: add --export so sg_inq can replace udev's scsi_id
    - decode old EMC Symmetrix abuse of VPD page 0x83
  - sg_vpd: decode old EMC Symmetrix abuse of VPD page 0x83
  - sg_ses: increase max dpage response size to 64 KB
    - allow ident,locate on enclosure controller
    - more sanity for additional element status descriptor
  - sg_sanitize: add --ause, --fail and --test=
  - sg_luns: add long extended flat space addressing format
  - sg_logs: add ATA pass-through results lpage (SAT-2)
  - sg_rtpg: add --extended option
  - sg_senddiag: list rebuild assist diag page name
  - sg_pt_linux: expand DID_ (host_byte) codes
    - cope with a transport error plus sense data
    - prefer major() over MAJOR() macro
  - sg_lib: fix sg_get_command_name() service actions
    - report sdat_ovfl bit (if set) in sense data
    - decode extended_copy and receive_copy service actions
    - decode read_buffer and write_buffer modes
    - decode ATA PT fixed format sense (SAT-2)
  - sg_cmds_extra: add sg_ll_report_tgt_prt_grp2()
  - ./configure options:
    - change --enable-no-linux-bsg to --disable-linuxbsg
    - add --disable-scsistrings to reduce utility sizes

Changelog for sg3_utils-1.33 [20120118] [svn: r435]
  - sg_ses: major rework of indexes (again), now two level
  - sg_write_buffer: new --specific option for mode specific
    field; new mode 13 (spc4r32)
  - sg_vpd: add hp3par volume info vendor VPD page
    - fix 'scsi ports' [0x88] page problem
    - add 'sinq' pseudo page for standard inquiry response
    - add power consumption page
  - sg_format: add --poll= option for request sense polling
    - improve handling of disks > 2 TB and DIF (protection)
  - sg_logs: LB provision lpage extra (sbc3r28)
  - sg_modes: application tag mpage subcode 0xf0->0x2
  - sg_write_same: no prot fields when wrprotect=0
  - sg_get_lba_status: reflect change in sbc3r25 to Parameter
    Data Length response field (offset reduced from 8 to 4)
  - sg_inq, sg_vpd: sync with spc4r33
  - win32: change DataBufferOffset type per MSDN; caused
    problem with 64 bit machines (with buffered interface)
  - sg_luns: tweak documentation for vendor specific reports
  - add man pages for scsi_loging_level, scsi_mandat,
    scsi_satl and scsi_temperature

Changelog for sg3_utils-1.32 [20110730] [svn: r410]
  - sg_sanitize: new utility for command added in sb3r27
  - sg_sat_identify: add '--ident' to output WWN
  - sg_ses: major rework of descriptor output
    - add --index, --descriptor, --join, --clear, --get,
      and --set options
  - sg_raw: exit status corrections
  - sg_decode_sense: add --nospace and --hex options
  - sg_logs: fix bug with large --maxlen
    - zero response length when resid implies it is invalid
    - add scope field to lb provisioning lpage (sb3r27)
  - sg_inq: sync version descriptors with spc4r31
  - sg_lib_data: sync asc/ascq codes with spc4r31
  - sg_vpd: add LBPRZ field in LB provisioning VPD page
  - sg_format: allow format of pdt 7 (some MO drives)
  - sg_cmds_basic: sg_cmds_process_resp() handle status good
    with a sense key other than no_sense (e.g. completed)
  - add README.iscsi

Changelog for sg3_utils-1.31 [20110216] [svn: r386]
  - sg_decode_sense: new utility to decode sense data
  - sg_vpd: LB provisioning + Block limits pages (sbc3r26)
  - sync asc/ascq and version descriptors with spc4r28
  - sg_get_config, sg_rmsn, sg_verify: add --readonly option
  - sg_lib: implement forwarded sense data descriptor
    - decode user data segment referral sense data descriptor
  - sg_lib, sg_turs, sg_format: more precision for progress
    indication (two places after decimal point)
  - sg_lib(win32): add runtime selection of SPT direct or
    indirect interface
    - sg_read_buffer+sg_write_buffer: set SPT direct
  - add examples/forwarded_sense.txt + examples/ref_sense.txt

Changelog for sg3_utils-1.30 [20101111] [svn: r363]
  - sg_referrals: new utility for REPORT REFERRALS
  - sbc3r25 renames 'thin' provisioning' to 'logical block
    provisioning': changes in sg_format, sg_inq, sg_logs,
    sg_modes, sg_readcap, sg_vpd
  - sg_inq: update version descriptor list to spc4r27
    - extended inquiry vpd page add extended self test
      completion minutes field
  - sg_lib: sync asc/ascq list to spc4r27
    - dStrHex(): trim excess trailing spaces
  - sg_read_long: add --readonly option (open() is rw)
  - sg_raw: add --readonly option (open() is rw)
    - allow bidirectional commands
  - sg_vpd: rdac vendor page [0xc8] parse corrections
    - extended inquiry vpd page add extended self test
      completion minutes field
  - sg_ses: expand --data (in) buffer to 2048 bytes
  - sg_opcodes: add extended parameter data for TMFs (spc4r26)
  - sg_dd: clean count calculation, document nocache flag
    - treat bsg devices as implicit sg_io
    - add more conversions
  - sg_write_same: if READ CAPACITY(16) fails try 10 byte variant
    - anticipate approval of proposal to allow UNMAP and ANCHOR
      bits to be set on WRITE SAME(10) with '--10' option
  - sg3_utils man page: sections added for OS device names

Changelog for sg3_utils-1.29 [20100406] [svn: r334]
  - sg_rtpg: new logical block dependent state and bit (spc4r23)
  - sg_start: add '--readonly' option for ATA disks
  - sg_lib: update asc/ascq list to spc4r23
  - sg_inq: update version descriptor list to spc4r23
  - sg_vpd: block device characteristics page: fix form factor
    - update Extended Inquiry VPD page to spc4r23
    - update Block Limits VPD page to sbc3r22
    - update Thin Provisioning VPD page to sbc3r22
    - Automation device serial number and Data transfer device
      element VPD pages (ssc4r01)
    - add Referrals VPD page (sbc3r22)
  - sg_logs: add thin provisioning and solid state media log pages
    - addition of IBM LTO specific log pages
  - sg_modes: new page names from ssc4r01
  - sg_ses: sync with ses3r02 (SAS-2.1 connector types)
  - sg_unmap: add '--anchor' option (sbc3r22)
  - sg_write_same: add '--anchor' option (sbc3r22)
  - sg_pt interface: add set_scsi_pt_flags() to permit passing
    through SCSI_PT_FLAGS_QUEUE_AT_TAIL and AT_HEAD flags
  - add examples/sg_queue_tst+bsg_queue_tst for SG_FLAG_Q_AT_TAIL
  - add AM_MAINTAINER_MODE to configure.ac to lessen build issues
  - add BSD_LICENSE file to this and lib directories, refer to
    it from source and header files. Some source has GPL license

Changelog for sg3_utils-1.28 [20091002] [svn: r315]
  - sg_unmap: new utility for thin provisioning
    - add examples/sg_unmap_example.txt
  - sg_get_lba_status: new utility for thin provisioning
  - sg_read_block_limits: new utility for tape drives
  - sg_logs: add cache memory statistics log (sub)page
  - sg_vpd, sg_inq: extend Block limits VPD page (sbc3r19)
  - sg_vpd: add Thin provisioning VPD page (sbc3r20) and
            TapeAlert supported flags VPD page
  - sg_inq: note VPD page support better in sg_vpd
  - sg_persist: add transport specific transportID format
    - allow transportIDs to be read from named file
  - sg_opcodes: allow --opcode= option to take OP and SA
    values (comma separated)
    - tweak print format, remove test code
  - sg_requests: remove test code in progress calculation
  - sg_reset: add target reset option
  - sg_luns: reduce default maxlen to 8192 (for FreeBSD)
  - sg_raw: extend max cdb length from 16 to 256 bytes
    - align heap allocs to page boundaries
  - sg_lib: sg_set_binary_mode() needs config.h included
    - add progress indication sense data descriptor (0xa)
    - change SG3_UTILS_* constants to SG_LIB_*
    - decode service actions within persistent reserve in/out
    - sync with spc4r21
  - sg_cmds_extra: add sg_ll_unmap() and sg_ll_get_lba_status()
  - sg_pt_linux: fix check condition but empty sense buffer; occurred
    when sg v3 node used and /usr/include/linux/bsg.h visible
    - major() macro grief, if present include <linux/kdev_t.h> and
      use MAJOR() instead
  - scripts/sas_disk_blink: moved from this package to sdparm
  - utils/hxascdmp: in Windows set binary mode on read files
  - examples/sg_persist_tst.sh: add PRIN read full status command
  - sg_raw,sg_write_buffer,sg_write_long,sg_write_same: in Windows
    set binary mode on read files
  - sg_pt_win32: default to non-direct variant of SPT interface
    - use './configure --enable-win32-spt-direct' to override
    - non-direct data length set to 16 KB, extended if required
  - debian: incorporate patch from debian sid

Changelog for sg3_utils-1.27 [20090411] [svn: r250]
  - sg_write_same: new utility: 10, 16 and 32 byte cdb variants
  - sg_inq: sync version descriptors with spc4r18
    - add power condition VPD page
    - expand block limits VPD page (sbc3r18)
  - sg_vpd: add power condition VPD page
    - expand block limits VPD page (sbc3r18)
  - sg_map26: fix for lk 2.6.26 when CONFIG_SYSFS_DEPRECATED_V2
    is not defined
    - output cdb when verbose option given
    - correct tape minors >= 32
  - sg_dd: flock flag (does LOCK_EX|LOCK_NB)
    - switch open on input for sg device nodes: first open
      read-write and if that fails try opening read-only
    - experiment with of2=OFILE2; add conv=sparse
    - use posix_fadvise() to defeat caching of normal+block files
      when new 'nocache' flag given
    - sg_dd copied to own package called ddpt
  - sg_dd, sgm_dd, sgp_dd: accept 'count=-1' for calculate count,
    accept '-V' for version string
  - sg_get_config: add OSSC feature [mmc6r02]
  - sg_modes: add ATA power condition mode page
  - sg_logs: protocol specific (SAS) lpage sync to sas2r15
    - power condition transitions lpage (added in spc4r18)
    - extra parameters for start-stop cycle counter lpage
  - sg_format: add '--fmtpinfo=' and '--pie=' options (sbc3r18)
  - sg_readcap: more protection + thin provisioning (sbc3r18)
    - add a '--16' option for 16 byte cdb version
  - sg_persist: code clean up
    - allow '--transport-id=' argument to use space as separator
    - add '--alloc-length=' argument
  - sg_scan: (win32) new format, scsi adapter scan optional
  - sginfo: fix crash when 1024 sg device nodes (or more)
  - sg_ses: allow '--data=' argument to use space as separator
  - sg_senddiag: allow '--raw=' argument to use space as separator
  - sg_reassign: allow '--address=' argument to use space as
    separator
  - sg_wr_mode: allow '--contents=' and '--mask=' arguments to
    use space as separator
  - sg3_utils.spec: correction to configure call
  - sg_pt: add scsi_pt_open_device_flags() call
    - add scsi_pt_version() and clear_scsi_pt_obj() calls
    - clear os_err at start of do_scsi_pt()
    - add linux bsg support via runtime detection
  - sg_cmds: add sg_cmds_open_device_flags()
  - sg_cmds_extra: sg_ll_format_unit: remove rto_req argument,
    the expanded fmtpinfo argument subsumes it.
  - clearer split between Linux and Windows only code and doc
  - automake tools: change to what Ubuntu 8.10 provides
    - Ubuntu 8.10 libtool problems -> Debian 4.0

Changelog for sg3_utils-1.26 [20080625] [svn: r183]
  - sg_sat_phy_event: new utility; copied from examples
    directory and enhanced, rename original to sg__sat_phy_event
  - sg_ses: sync with ses2r19b, many nomenclature changes
  - sg_get_config: sync with mmc6r01
    - allow Microcode upgrade and DVD read feature descriptors
      to be 4 bytes long
    - add '--raw' option
  - sg_verify: add --vrprotect= option
  - sg_vpd: add nominal form factor to block dev. char. VPD page
    - add --maxlen= option to set allocation length in cdb
  - sg_inq: add --maxlen= option that does same as --len=
    - move version descriptors (spc4r15) to sg_inq_data.c file
  - sg_inq+sg_vpd: logic for "NAA-3 Locally assigned" identifier
    - update extended inquiry VPD page
  - sg_modes: add --maxlen= option to specify allocation length
  - sg_start: add '--noflush' and '--mod=PC_MOD' options (sbc3r14)
  - sg_request: add a '--progress' option (similar to sg_turs)
    - add --maxlen= option to set allocation length in cdb
  - sg_luns: add --maxlen= option to specify allocation length
  - sg_dd: improve MMC handling of 'illegal mode for this track'
    read errors (with ILI and info field)
  - sg_dd, sgm_dd, sgp_dd, sginfo, sg_rbuf, sg_read: replace
    "%lld" and friends with PRI macros
  - sg_opcodes: tmf name change in spc4r15 (async event)
  - sg_turs: add more to man page about '--progress' indication
  - sg_write_long: add examples section to man page
  - '--raw' option: modify utilities that can send binary output
    to call sg_set_binary_mode(). For MingGW port CR problem.
  - sg_lib: update asc/ascq and command name strings to spc4r15
    - split sg_lib into sg_lib_data.[hc] and sg_lib.[hc]
    - split sg_cmds_extra into sg_cmds_extra and sg_cmds_mmc
    - add osd2r03 service actions (all different from osd-r10)
    - add sg_get_trans_proto_str()
    - add sg_get_sense_filemark_eom_ili() function (MMC uses ILI)
    - add sense key specific unit attention condition queue
      overflow decoding (added in spc4r13)
    - add sg_set_text_mode() and sg_set_binary_mode() functions
      for non-Unix OSes
  - sg_cmds_mmc: add sg_ll_set_streaming() function
  - sg_cmds_extra: add vrprotect argument to sg_ll_verify10()
    - add sg_ll_get_performance() and sg_ll_set_cd_speed()
  - change 'long long' to int64_t and 'unsigned long long' to
    uint64_t to stress that 64 bit integer wanted, not larger
  - audit of dangerous 'u64 = uch[24] << 24' code, replace most
    'unsigned long's
  - multiple documentation corrections provided by Dan Horak
  - win32/MinGW: define SG3_UTILS_MINGW when detected
  - remove archive/pre_configure subdirectory
  - move sg_io_linux.c into the lib subdirectory
  - utils/hxascdmp: add hxascdmp(1) man page
  - switch primary build to ubuntu environment, rename
    library to libsgutils2 to avoid clash

Changelog for sg3_utils-1.25 [20071016] [svn: r115]
  - sg_stpg: new utility to Set Target Port Groups
  - sg_safte: new utility to query SAF-TE processor (SES like)
  - sg_sat_set_features: new utility (actually copied from examples
    directory); renamed examples version to: sg__sat_set_features
  - sg_read_buffer: restore (had fallen out of build scripts)
  - sg_dd: add oflag=sparse to step over bs*bpt number of zeros;
    - with oflag=sparse, write last bs*bpt segment at end or after
      error so file length of OFILE is appropriate
    - when coe>1 then SCSI READ LONG logic remembers extended block
      length of first encountered error
  - sg_dd, sgm_dd, sgp_dd: allow iflag=null and oflag=null both of
    which do nothing (placeholders)
  - sg_ses: sync with ses2r17 then r18
  - sg_vpd, sg_inq: add block device characteristics VPD page
  - sg_inq: add '--vpd' option (or '-e') for backward compatibility
  - sg_vpd: decode protocol specific lu information page for SAS
    - add more RDAC vendor VPD pages
  - sg_logs: update background scan results log page, sbc3r11
    - add generation code to protocol specific page for SAS SSP
    - add media changer diagnostic data log page
  - sg_raw: fix error message when do_scsi_pt() fails
  - sg_lib: sync asc/ascq codes with spc4r11
    - add sg_get_num_nomult()
    - add TPROTO_* protocol identifier constants to sg_lib.h
  - sg_cmds_extra: add sg_ll_set_tgt_prt_grp()
  - place source in subversion repository
  - split code into src/ lib/ and include/ directories
  - sync debian directory with their 1.24 version (sid unstable)
  - convert build logic to use autotools (i.e. './configure ; make')
    - rename this file from CHANGELOG to ChangeLog
    - note: only code in lib/ and src/ directories built by
      autotools; some other subdirectories still use hand-crafted
      Makefiles

Changelog for sg3_utils-1.24 [20070507] [svn: r77]
  - sg_raw: new utility to send arbitrary SCSI commands
  - sg_luns: increase number of luns that can be fetched
    - fix length of raw and hex output
    - add '--quiet' option to output only ASCII hex
      representation of each lun
  - sg_rtpg: update for changes in spc4r09
  - sg_persist: update documentation, spc-4 references
    - fix exit status values
  - sg_inq: update version descriptors per spc4r09
    - fix '--id' and '--extended'
    - extend block limits VPD page (sbc3r09)
  - sg_vpd: extend block limits VPD page (sbc3r09)
    - append relative target port identifier to SAS target
      port address with '-iq' option
  - sg_logs: add decoding for stats+performance log pages
    - fix showing of page names for pdt > 0
    - implement '-HH' for single and all pages, fix '-r'
    - when '--maxlen=' given, only do single fetch
    - add Tape Alert (ssc), Media and Element statistics (smc) pages
    - add '--brief' option
  - sg_ses: sync with ses2r16
    - fix bay number for SAS
  - sg_format: add '--dcrt' and '--security' options
  - sgm_dd: add 'smmap' oflag for shared_mmap_io testing
    - add 'dio' oflag
  - sg_dd, sgp_dd: add 'dio' iflag and oflag
  - sg_modes: change SAS mode page names per sas2r09
    - check validity of block descriptors length
  - sg_pt: change opaque context object from 'void *'
    to 'struct sg_pt_base *'
  - sg_opcodes: anticipate extra tmfs from 07-159r0
  - sg_sat_set_features: add more usage information
    - add man page
  - sg_sat_phy_event: add to examples directory
  - sg_lib: sync asc/ascq codes with spc4r10
  - Solaris port: using uscsi interface
  - various .html files removed from doc directory

Changelog for sg3_utils-1.23 [20070131] [svn: 75]
  - sg_read_buffer: new utility
  - sg_write_buffer: new utility
  - sg_opcodes, sg_senddiag, sg_logs, sg_modes, sg_start, sg_inq,
    sg_turs, sg_readcap, sg_rbuf: add getopt_long() based cli;
    old and new cli selectable, new getopt_long cli is default
  - scripts: new subdirectory containing some bash scripts
    - add scripts/README file
  - sg_reassign: add '--hex' option for grown and primary lists
  - sg_rtpg: add '--raw' option
  - sg_lib.h, sg_cmds_basic.h + sg_cmds_extra.h: add C++
    'extern "C" ' wrappers
    - cleanup C code so it will compile as C++
  - sg_lib: sync with spc4r08
    - include <inttypes.h>, use PRId64 instead of %lld form
    - fix sg_get_sense_str() when empty sense buffer
  - win32 port: add Makefile.mingw + related support for MinGW
  - sg_cmds_extra: add sg_ll_read_buffer() and sg_ll_write_buffer()
  - sg_dd, sgp_dd, sgm_dd, sg_read: use lseek64() instead of llseek.c
  - sgm_dd: accept coe=<n> for interworking with sg_dd
  - sg_rdac: fix on non-linux ports
  - sg_ses: fix spurious warning in additional element status page
    - '-rr' option outputs a diagnostic page in binary to stdout
  - sg_opcodes: add command timeout descriptor support (spc4r08)
    - change linux specific pass through to generic pass through
  - sg_logs: add 'name=value' decoding for SAS specific lpage
  - examples+utils subdirectories: remove symlinks
  - synchronize man pages with usage messages
  - sg3_utils.spec: rework

Changelog for sg3_utils-1.22 [20061016] [svn: 72]
  - sgp_dd: accept verbose=<n> as well as deb=<n> to ease
    interworking with sg_dd and sgm_dd
  - sg_sat_set_features: added to examples directory
  - sg_lib: sync asc/ascq text with spc4r06
    - move SG_LIB_CAT_NO_SENSE and SG_LIB_CAT_RECOVERED to
      20 and 21 respectively; add SG_LIB_CAT_ABORTED_COMMAND
      at 11 (its sense key value)
  - sg_vpd: tweak '--page=sp --quiet' output
    - change '-HHH' so same as '-rr' (prepares ATA Information
      (ai) response for hdparm)
  - sg_requests: add '-s' option to set exit status from
    parameter data
  - sg_modes: exit quickly from '-e' if device not ready
  - sg_logs: sync sas log pages with sas2r05a
    - expand background scan results log page
    - add '-m=<max_len>' to limit response length
    - drop '-scum' and '-sthr' options and add '-select'
  - sg_write_long: add '--16' option to send 16 byte cdb
    - add '--wr_uncor' and '--pblock' options
  - sg_senddiag: cleanup and add sdiag_sas_p1_stop.txt
    to examples directory
  - sg_format: add '--cmplst=<n>' option (default: 1)
    - add '--pfu=<n>' option
    - expand man page to discuss P/D/C/GLISTs
  - sg_reassign: add '--primary' option to fetch primary
    defect list (PLIST) length
  - sg_readcap: add '-H' option to output response in hex
    and '-r' to output response in binary to stdout
    - add logical blocks per physical block (sbc3r07)
  - sginfo: add PLIST and GLIST designation to defect lists
  - sg_cmds: split this support file into sg_cmds_basic.[hc]
    and sg_cmds_extra.[hc]
    - add sg_ll_ata_pt() (SATL ATA pass) to sg_cmds_extra.[hc]
  - sg_rdac: fix includes for FreeBSD
  - sg_dd: add 'coe_limit=' option to exit after <n>
    consecutive 'coe' type read errors
  - sgm_dd: print out throughput information when signal arrives
    if time=1 (like sg_dd does already)
  - sg_inq: change '-HHH' so same as '-rr'. Now sg_inq, sg_vpd
    and sdparm output for hdparm with '-HHH'
    -add '-l=<resp_len>' option
  - sg_read_long: add '--pblock' option for physical blocks
  - sg_luns: add '--hex' and '--raw' options
  - sg_requests: add '--hex' and '--raw' options
  - sg_scan: windows version added (was previously linux only)
    - 2 man pages: sg_scan.8l and sg_scan.8w that are installed
      as sg_scan.8
  - archive directory: removed all but rescan-scsi-bus.sh
      - README points to previous version in that directory
  - sg_sat_identify: add to main directory
      - rename earlier version to examples/sg__sat_identify.c
  - sg_ident: rework as spc4r07 changed command names and
    expanded functionality

Changelog for sg3_utils-1.21 [20060706] [svn: 70]
  - sg_vpd: new utility for decoding VPD pages. sg_inq's cli is
    cluttered; also borrows from sdparm's VPD handling
  - sg_rdac: new utility for vendor specific work
  - sg_lib: add sg_vpd_dev_id_iter() to iterate over di VPD page
    - add sg_ata_get_chars() to fetch chars from ATA words
    - sync additional sense code strings with spc4r05a
    - add SG_LIB_CAT_NOT_READY category when sense_key is NOT READY
    - add SG_LIB_FILE_ERROR category for open problems
    - add SG_LIB_SYNTAX_ERROR category for command line problems
    - broaden SG_LIB_CAT_MEDIA_CHANGED to SG_LIB_CAT_UNIT_ATTENTION
    - add SG_LIB_CAT_MALFORMED for bad responses
    - BEWARE: these changes cause confusion if an executable from this
      version is run with a libsgutils library from 1.20 or earlier
  - sg_cmds: add SG_LIB_CAT_NOT_READY return to most "ll" functions
    - alter many utilities to report SG_LIB_CAT_NOT_READY
  - sg_dd: add retries=<n> option for sg_io
  - sg_logs: add '-T' option to output protocol specific port log page
    - add support for log subpages (new in spc4r05)
    - more sanity checks in Start Stop Cycle Counter page
  - sg_cmds: add sg_ll_read_long16()
    - add page_code and subpage_code to sg_ll_log_select()
    - add subpage_code to sg_ll_log_sense()
  - sg_read_long: do READ LONG(16) when '--16' given
  - sg_read: accept and ignore 'of=' arguments
  - sg_dd: expand medium/hardware error "coe' processing to include
    the "blank check" sense key (for optical devices)
  - sg_ses: expand display element (per 05-011r2)
  - sg_format: clear 'cmplst' bit (for MO disks)
    - add '--six' ('-6') option for mode sense/select(6)
  - sg_format + sg_test_rwbuf: fix for when char is unsigned
  - sg_inq: VPD page 0x89: output ATA IDENTIFY DEVICE strings
    - for IDENTIFY (PACKET) DEVICE response use sg_ata_get_chars()
  - sg3_utils.html : new name, was previously u_index.html. Copy
    placed in doc subdirectory
  - tools.html : SCSI and storage tools reference, copy placed in
    doc subdirectory
  - sg3_utils.8 : add a new man page containing general information
    especially common exit status values
  - sg_sat_identify: added to examples directory (SAT passthrough test)
    - extend to pass through IDENTIFY PACKET DEVICE with '-p' option
  - sg_sat_chk_power: added to examples directory
  - sg_sat_smart_rd_data: added to examples directory
  - sg_chk_asc: added to utils directory to check asc_ascq codes
  - debian: stop placing archive directory under examples
    - add build_debian.sh script

Changelog for sg3_utils-1.20 [20060418] [svn: 68]
  - sg_logs: decode phy event descriptors in SAS port specific
    log page (sas2r03)
    - new parameter control byte format (spc4r03), subpages to come
  - update Makefile (linux) to install sg_io_linux.h + sg_linux_inc.h
  - sg_map26: fix for block device mapping in lk 2.6.16-rc1 and beyond
    - cope with sysfs removal of 'generic' symlink post lk 2.6.16,
      anticipate removal of 'tape' symlink
  - sg_dd, sgm_dd, sgp_dd: fix problem around 0x7fffffff blocks
  - sg_dd: fix read_long processing error (when 'coe=2' or 3)
    - expand 'coe=' to take 0...3 (invokes read long with 2 or 3)
    - allow for SG_GET_RESERVED_SIZE yielding 0, lk 2.6.16 feature
  - sgp_dd: add 'iflag=' and 'oflag=' arguments; signals (like sg_dd)
  - sgm_dd: add 'iflag=' and 'oflag=' arguments; signals (like sg_dd)
  - sg_get_config: double->dual renaming (mmc5r03)
  - sg_read: add 'dpo=' and 'fua=' options
    - allow 'count' < 0 (or 'bpt=0') for issuing zero block READs
    - allow for SG_GET_RESERVED_SIZE yielding 0, lk 2.6.16 feature
    - add 'no_dxfer=0|1' option
  - sg_modes: fix exit value when MODE SENSE fails
    - add '-e' to examine presence of page codes from 0x0 to 0x3e
  - sg_requests: add '--num=' and '--time' options for timing multiple
    invocations
  - sg_inq: fix vpd 0x83 designator code 8 name: "scsi name string"
  - sg_scan: if lk 2.6, use sysfs to find active sg device nodes
  - sg_map: if lk 2.6, use sysfs to find active sg device nodes
  - sg_ses: expand display element (per 05-011r1)
  - sg_start: add an '-i' option which is equivalent to '--imm=1'
  - sg_senddiag: update man page showing use of two scripts in
    examples directory (sdiag_sas_p0_cjtpat.txt and _p1_)
  - sg_lib: fix sg_get_sense_descriptors_str() case 9 (ATA Return)

Changelog for sg3_utils-1.19 [20060127] [svn: 66]
  - sg_start: accept '--' options (e.g. 'sg_start --stop')
    - add '--fl=<n>' option for jump to format layer (mmc5)
  - sg_logs: background scan log page, resync with sbc3r03
    - add '-scum' and '-sthr' for setting defaults
    - add device statistics log page (ssc + adc)
    - fix "last n" deferred errors/error events incrementing
    - partial addition of log subpages (spc4r03)
  - sg_get_config: sync features with mmc5 rev 02b
  - sg_wr_mode: mask out dpofua bit in mode select header
  - sg_inq: try harder with '-A' to identify ATA device
    - broaden meaning of '-d' option to decode ...
    - decode software interface id VPD page ('-p=84 -d')
    - decode device capabilities (ssc) VPD page ('-p=b0 -d')
  - sginfo: correct defect list handling ('-d' and '-G')
  - sg_verify: improve error processing (e.g. medium errors)
  - sg_ses: scsi target_initiator port additional element
     status (ses2r14)
  - many: arguments that currently accept '0x' or '0X' to
     indicate a hex number may alternatively take a trailing
     'h' or 'H' to indicate hex
  - sg_lib: update asc/ascq strings (spc4r03)
  - sg_lib+sg_cmds: make independent of linux via
    sg_pt.h function based interface.
    - linux pass through code placed in sg_pt_linux.c
    - rename sg_include.h to sg_linux_inc.h
    - linux specific code in sg_lib.[hc] moved to
      sg_io_linux.[hc]
  - port to FreeBSD: using sg_pt_freebsd.c
  - port to Tru64: using sg_pt_osf1.c
  - sg_cmds: add sg_ll_get_config(), sg_ll_format_unit(),
     sg_ll_reassign_blocks(), sg_ll_persistent_reserve_in+out(),
     sg_ll_read_long10(), sg_ll_verify10(), sg_ll_write_long10()
  - sg_persist: add "allow commands" to report capabilities
  - sg_persist_tst: (examples) takes device node as argument
  - sg_luns: add "security protocol" wlun

Changelog for sg3_utils-1.18 [20051118] [svn:63]
  - sg_map26: new utility to map sg devices in lk 2.6
  - sg_luns: luns > 16,384 (sam-4 rev 4)
  - sg_ses: bump fan speed field to 11 bits
    - SAS connector names (ses2r13)
  - sg_inq: add '-rr' option for "hdparm --Istdin"
  - sg_get_config: tracking mmc-5
  - sg_write_long: add support for COR_DIS bit
  - sg_cmds: add sg_ll_test_unit_ready_progress()
  - sg_turs: '-p' option shows progress
  - sg_dd: add 'iflag=' and 'oflag=' options
    - remove output of mode page info when verbose > 0
    - add control of DPO bit via iflag/oflag
  - sg_lib: add sg_get_pdt_str()
    - update asc/ascq strings
  - sg_modes + sginfo: add SAS(2) SSP shared mode subpage
  - doc: rename "html" directory to "doc"
  - Makefile: add 'libtool --finish' to install

Changelog for sg3_utils-1.17 [20050922] [svn: 60]
  - sg_inq: add '-a' option for ATA information VPD page
    - add '-b' option for Block limits VPD page (SBC)
    - add '-A' option for probing ATA or ATAPI device
    - increase raw ('-r') and verbose ('-v') output for
      ATA(PI) devices to 512 bytes (was 256 bytes)
    - output hex ('-H') and verbose response for ATA(PI)
      devices in 16 bit words (corrected for endianness)
      - output bytes if '-HH' option given
    - sync with spc4 rev 02
  - sg_lib: add dWordHex() and sg_is_big_endian()
    - sync asc/ascq with spc4 rev 02
  - sg_cmds: defensive prefill for inquiry commands
  - sg_opcodes: sync with spc4 rev 02 (add tmf I_T nexus reset)
  - sginfo: add EBACKERR in Informational exception mode page
    - add Background control mode page (SBC-3)
  - sgm_dd: add 'verbose=<n>' option

Changelog for sg3_utils-1.16 [20050810] [svn: 58]
  - sg_ident: new utility to report+set device identifier
  - sg_map: increase MAX_SG_DEVS from 256 to 2048
  - debian: new directory to support deb package builds
  - sg_get_config: add '--current' option, same as '--rt=1'
    - update for DVD+RW Dual Layer
  - sg_inq: add notes in source about use of SCSI INQUIRY
     - decode Management network addresses VPD page ('-m')
     - decode Mode page policy VPD page ('-M')
  - sginfo: increase device mapping capability (> 78 disks)
     - add '-r' option to scan /dev/raw* device nodes [Tim Hunt]
  - sg_dd: change bpt default value to 32 when bs >= 2048 bytes
  - sg_ses: mention SAF-TE in man page
  - sg_readcap: add '-b' option for brief output (2 hex numbers)
  - sg_cmds: add sg_ll_start_stop_unit(), sg_ll_prevent_allow(),
      sg_ll_report_dev_id() and sg_ll_set_dev_id()
  - sg_lib: add extra argument to sense print functions to enable
      the suppression of the raw output of the sense buffer
      - resid > 0 warnings now includes number actually fetched
  - sg_start: add '-load' and '-eject' options
    - default to start action when no other indication given
    - change -imm=0|1 option default to 0 (was 1)
  - gcc 4.0: cleanup warnings (apart from sgp_dd: revisit later)

Changelog for sg3_utils-1.15 [20050605] [svn: 56]
  - sg_cmds: sg_get_mode_page_controls(): improve error processing,
     add double fetch
  - sg_turs, sg_rbuf, sg_requests, sg_test_rwbuf, sg_format,
    sg_dd and sgm_dd: add O_NONBLOCK to open()
  - sgm_dd: switch to use SG_IO ioctl (that leaves only
     sgp_dd using the asynchronous sg write()/read() sequence)
  - sg_ses: sync with rev 12 changes
  - sg_map: extend to cope with sparse disk device names with
     up to 3 letters (e.g. /dev/sdaaa) [Nate Dailey]
  - sg_modes: add '-f' option to flexibly decode broken mode
     sense responses.
     - zero prefill response; stop decoding response after 3
       unit attention mode pages seen (i.e. malformed)
     - add '-L' option for LLBAA bit in msense 10 cdb
  - sg_reset: update man page
  - sg_inq: VPD page 0x83: output eui addresses in hex as well
  - Makefile: fix bug in rules for sgp_dd (when 'make dep' used)
  - sg_format: expand explanations in its man page
  - sg_inq, sg_logs, sg_modes, sg_opcodes, sg_rbuf, sg_readcap,
    sg_scan, sg_senddiag, sg_start and sg_turs: allow command
    line to take concaternated options
  - sg_start: add -start and -stop to parallel "1" and "0"
  - sg_senddiag: set pf bit with '-l' option

Changelog for sg3_utils-1.14 [20050506] [svn: 54]
  - sg_rmsn: new utility to read media serial number
  - sg_rtpg: add T_SUP bit report
  - sg_ses: ses-2 rev 11 changes (mainly to additional element status)
        - add 'bay number' to SAS additional element status
  - sg_modes: recognise attached enclosure and medium changer
  - sg_inq: spell out non-zero peripheral qualifiers
        - note VS bit preceding MultiP(ort) when latter set
        - VPD page 0x83: output naa addresses in hex as well
  - sginfo: recognise attached enclosure and medium changer
        - increase device mapping capability (to 78 disks)
          [Tim Hunt]
  - sg_senddiag: add option to send raw diagnostic page
  - sg_get_config: update some BD information
  - sg_reasign: add '-g' option to give grown defect list length
  - sg_dd: note default bpt value (128) may be too high for cd/dvds
  - sg_lib: sync with SPC-3 rev 22a [opcodes + asc/q]
        - add DID_IMM_RETRY and DID_REQUEUE [linux specific "host" bytes]
  - sg_cmds: add send+receive diagnostic, read defect data commands
        - add duration output on some commands when verbose > 2
  - spec: change to produce libsgutils (and -devel variant) as well as
          sg3_utils binary rpms
  - sdparm: new utility like hdparm but for SCSI disks (or other devices)
        - moved to its own package called: sdparm

Changelog for sg3_utils-1.13 [20050313] [svn: 52]
  - sg_format: new utility to format disks (perhaps change block size)
  - sg_ses: rename "device element" to "additional element" [SES-2 rev 10]
        - add SAS expander and connector elements; add download
          microcode and subenclosure nickname diagnostic pages
        - fix additional element descriptor for SAS
        - off by 1 error when no type descriptor text in config page
          <David dot Baldwin at anu dot edu dot au>
  - sg_logs: log page for background media scan results
  - sginfo: add "-flba64" option for outputting 64 bit lba defect lists
  - sg_get_config: additions for BD from MMC-5 rev 1b
  - sg_lib: add SG_LIB_CAT_ILLEGAL_REQ sense category
        - add sg_get_sense_progress_fld()
        - SPC-3 rev21d updates: report + set timestamp
        - sg_get_num() + sg_get_llnum(): switch to multipliers that
          are compatible with SI and with IEC 60027-2. Used modern
          GNU's dd command as guide.
        - report field replaceable unit code in fixed format
  - sg_dd: add logic to use read_long on unrecovered read errors when
           'coe' set, read just prior to error if 'coe' clear
        - both 'odir' and 'blk_sgio" are honoured on block devices
        - add 'verbose' switch, output some mode page info when verbose
        - print out elapsed time/throughput when signal received
        - add new web page discussing sg_dd, copy in html subdirectory
  - sg_read: add 'blk_sgio' and 'odir' options
  - sg_wr_mode: clear mode data length in mode select(10)
  - sg_test_rwbuf: add long options, allow test to run multiple times
  - sg_cmds: add sg_get_mode_page_types() [get current, changeable, etc]
  - llseek.c: add Makefile rule without "-std=c99", breaks on some archs

Changelog for sg3_utils-1.12 [20050121] [svn: 50]
  - sg_wr_mode: new utility to modify (i.e. write to) mode pages
  - sg_reassign: new utility: issues Reassign Blocks command
  - sg_rtpg: new utility: issues Report Target Port Groups command
             [Christophe Varoqui]
  - ATA IDENTIFY command misspelt as "IDENTITY" in several places
  - sginfo: tweak SAS mode pages to match sas 1.1 rev 07
        - add NV_DIS bit to disk caching mode page
  - sg_map: open /dev/nst* rather than /dev/st* (to stop spurious rewinds)
  - sg_lib: ATA return sense descriptor
        - add sg_get_sense_info_fld() to fetch info field from sense data
        - fix bug in sg_scsi_sense_desc_find()
        - add sense key specific decoding for fixed format sense data
  - sg_modes: extend '-p' option to allow '-p=<page_code>,<subpage_code>'
        - add '-A' option to output all mode pages and subpages
        - extend '-l' option to show subpages, selected command set pages
  - sg_inq: fix LUN WWN output in unit path report VPD page (emc)
            [Hergen Lange]
  - sg_get_config: some additions for DVD-R dual layer
  - sg_modes: show write protect (WP) and DpoFua flags for disks
  - sg_cmds: add llbaa argument to sg_ll_mode_sense10()

Changelog for sg3_utils-1.11 [20041126] [svn: 48]
  - sg_sync: new utility: invokes the synchronize cache command
  - sg_prevent: new utility: invokes the prevent allow medium removal command
  - sg_get_config: new utility: get configuration command for dvds and cds
  - sg_request: fix, allocation length wasn't set
  - sg_start: remove '-s', as start_stop_unit implicitly syncs caches
  - sg_ses: add SAS expander element type
  - sg_inq: add sanity check to unit serial number (VPD page 0x80)
        - output ANSI version string (e.g. "SPC-2", previously was number)
        - add '-s' option to decode SCSI Ports VPD page
  - sg_logs: decoding of format status and non-volatile cache log
        pages (0x8 and 0x17 in sbc-2)
  - sg_dd: handle compile error when O_DIRECT not defined
  - sginfo: tighten sanity checks around Unit serial number VPD page

Changelog for sg3_utils-1.10 [20041030] [svn: 46]
  - sg_readcap, sg_dd, sgm_dd, sgp_dd: fix sg_ll_readcap_10+16 (sg_cmds.c)
  - sg_luns: new utility to report luns
  - sg_logs: with '-t' (show temperature) ignore extra parameters in
        temperature log page (still show them with '-p=d')
  - sg_ses: clean argument sanity checks
  - sg_cmds: add more common command wrappers

Changelog for sg3_utils-1.09 [20041022] [svn: 44]
  - sg_ses: new utility to get status and set control on SES devices
  - sg_verify: new utility to verify block devices
  - sg_emc_trespass: new utility for EMC specific trespass mode page
  - sg_request: new utility that sends a REQUEST SENSE command
  - sg_logs: '-r' to reset to manufacturer's defaults
      - decode last n error events and last n deferred errors pages
      - add names of ADC log pages
  - sg_inq: update to SPC-3 rev 21
      - decode Extended INQUIRY data VPD page [0x86] {'-x'}
      - decode Unit Path Report VPD page [0xc0] (EMC) {'-P'}
  - sginfo: decode SAS protocol specific lu mode page
  - sg_err: convert to sg_lib + update to SPC-3 rev 21
      - change GPL to FreeBSD license
      - flag vendor specific asc/ascq ranges
  - libsgutils: library made from sg_lib.c and sg_cmds.c
    - rpm "spec" file additionally builds a "-devel" rpm with
      static libsgutils.a and sg_lib.h and sg_cmds.h
  - utils/hxascdmp.c: add FreeBSD license
  - sg_persist: additions to man page
      - add sg_persist_tst.sh example script to examples directory
  - sg_turs: add '-v' and '-V' options
  - sg_senddiag: add '-v' option

Changelog for sg3_utils-1.08 [20040831] [svn: 42]
  - sg_inq: fix noisy message when EVPD and raw modes set
      - for VPD page 0, list supported page names if known {'-e'}
      - add '-d' option to list version descriptors
  - sg_opcodes: numerically sort list of opcodes unless '-u' given
      - add '-a' to sort alphabetically list of opcode names
      - add '-t' to report supported task management functions
  - sg_persist: add 'register and move" PROUT service action
      - add transportId support, document in sg_persist.8 and example
  - sg_modes: handle subpage code for known pages (e.g. control extension)
      - clean up sense buffer handling (allow for descriptor format)
      - SPC-3 draft revision 20a updates
  - sg_write_long: new utility to exercise WRITE LONG command
  - sg_read_long: new utility to exercise READ LONG command
  - sg_err.c: fix compile errors when SG_KERNEL_INCLUDES defined in lk 2.6
      - sg_includes.h typedef of u64 for BLKGETSIZE64 ioctl in lk 2.4
      - add safe_strerror(), sg_scsi_normalize_sense(), sg_normalize_sense()
        and sg_scsi_sense_desc_find() functions
      - add more sense data descriptor format decoding
      - move multiple implementations of dStrHex() into sg_err.c
  - sg_logs: exit if SCSI INQUIRY fails (e.g. when applied to ATA disk)
  - sginfo: bug fixes and SPC-3 revision 20a updates
      - add '-E' option to access Control Extension mode (sub)page
  - sg_start: change '-d' switch to '-v' (verbose) switch for consistency
      - document extra power condition states in man page
  - sg_readcap: output rto_en and prot_en bits from long read capacity data
  - add COVERAGE file to list SCSI command coverage

Changelog for sg3_utils-1.07 [20040708] [svn: 40]
  - sginfo: clean up inquiry vendor,product,revision strings
      - '-Fhead': sort defect list by head
        Tom Steudten <steudten at mx dot ch>
  - rework sg_err for better command name coverage: service actions,
    variable length and peripheral device type
      - update asc,ascq codes to SPC-3 revision 19
  - move scsi_devfs_scan to archive directory
  - add sg_opcodes utility to list supported operation codes
  - add sg_persist utility to support persistent reservations
  - add '-i' option to sg_inq to decode device identification VPD page (0x83)
  - sg_inq tries an ATA IDENTIFY if SCSI INQUIRY fails
  - sg_dd, sgm_dd and sgp_dd calculate block device sizes (if count not given)
  - drop SG_GET_VERSION_NUM ioctl guard in most utilities

Changelog for sg3_utils-1.06 [20040426] [svn: 37]
  - sg_logs: some HBAs don't like odd transfer lengths so increment
      - do INQUIRY and output product strings
      - add ASCII rendering of the Protocol specific SAS page
      - add '-v' verbose option to output cdb
  - sg_scan: optionally take device file names (e.g. /dev/hdc and /dev/sda)
      - only request 36 byte INQUIRY responses
  - sg_err: add sg_decode_sense() function
  - sg_inq: update output (ref: SPC-3 t10/1416-d rev 17, 28 January 2004)
      - remove '-p' option to print out PCI address of host
      - add '-v' verbose option to output cdb
  - sginfo: allow '-u' to take hex arguments (prefixed by '0x'),
            when subpage value is 255 show multiple subpages
      - accept /dev/hd? ATAPI devices directly in lk 2.6
      - add '-t <pn>[,<spn>]' argument; like '-u' but decodes page
        if it recognizes it
      - drop '-L' argument
      - add cd/dvd, tape, SES, more disk and more SPC-3 decoded mode pages
      - add transport protocol decoded mode pages for SPI-4, FCP and SAS
  - sg_modes: print all subpages when '-subp=ff' is selected
      - do INQUIRY and output product strings
      - add '-v' verbose option to output cdb
  - Makefile: add -W compile flag and fix exposed warnings
  - .spec file: change to build on Mandrake without errors

Changelog for sg3_utils-1.05 [20031112] [svn: 35]
  - sginfo: major rework; add IE page, clean up control, cache +
        disconnect pages (as per SPC-3 and SBC-2).
      - when storing, update saved page (change from previous version)
      - use 10 byte mode sense and select by default (override with '-6')
      - mode subpage support
  - sg_dd, sgm_dd + sgp_dd:
      - 64 bit capable (read capacity; count, skip and seek values).
      - numerical arguments accept hex (prefixed by '0x' or '0X')
      - require bpt > 0
      - fix problem when reading /dev/null
  - sg_dd: Treat SIGUSR1 properly: print stats and continue;
  - sgp_dd: reduce READ CAPACITY response size to 8 bytes
  - sg_read: require bpt > 0
  - sg_test_rwbuf: switch from sg_header to sg_io_hdr interface
    N.B. After these changes no sg3_utils utilities (in the main directory)
    use the sg_header interface
  - sg_scan: switch from sg_header to sg_io_hdr interface
  - sg_senddiag: increase extended foreground timeout to 60 minutes
  - sg_inq: add names of peripheral device types
  - sg_readcap: show total size in bytes, MB, GB
  - sg_logs: read log pages twice (first time to get response length), for
    fragile HBAs; decode Seagate 0x37 + 0x3e pages; display pcbs
  - sg_modes: fix core dump when corrupted response, don't print extra pages
  - sg_map: increase sg device scanning from 128 to 256
  - change man page references from lk 2.5 to lk 2.6
  - examples/sg_iovec_tst: added testing sg_iovec (sg_io_hdr iovec's)
    [retrospective addition to this log: "#define __user" added into
     sg_include.h so user space programs aren't broken if they choose
     to include kernel header.]
  - utils/hxascdmp: add utility for displaying ASCII hex

Changelog for sg3_utils-1.04 [20030513] [svn: 33]
  - all remaining utilities in the main directory have man pages [thanks
    to Eric Schwartz <emschwar at debian dot org> for 7 man pages]
  - add CREDITS file
  - sg_simple1, sg_simple2, sg_simple3, sg_simple4, sg_simple16 and
    scsi_inquiry: moved to the examples directory
  - sg_debug: moved to the archive directory
  - sg_modes: add '-subp=<n>' for sub page code, suggests 6/10 byte
    alternative if bad opcode sense received, flip -cpf flag to -pf,
    add page names for most peripheral types
  - sg_turs: default '-n=' argument to 1, only when '-n=1' print error
    message in full
  - sg_logs: print temperature "<not available>" for 255, '-t' switch
    for temperature (from either temperature or IE log page)
  - sg_dd: add '-odir=0|1' switch for O_DIRECT on block devices
  - sg_start: add '-imm', '-loej' and 'pc=<n>' switches plus man page
  - sg_readcap: add '-pmi' and 'lba=<n>' switches
  - open files O_NONBLOCK in sg_inq, sg_modes and sg_logs so they
    can be used on cd/dvd drivers when there is no disk present

Changelog for sg3_utils-1.03 [20030402] [svn: 30]
  - sg_senddiag: added, allows self tests and listing of diag pages
  - sg_start: changed to use SG_IO so works on block devices
  - sg_err: print out some "sense key specific" data [Trent Piepho]
  - sg_modes: add "-6" switch for force 6 byte MODE SENSE [Trent Piepho]
  - sg_modes: more information on page codes and controls
  - sg_inq, sg_modes, sg_logs, sg_senddiag: add man pages
  - sg_dd: add "append=0|1" switch for glueing together large files
  - note in README about utilities offered by scsirastools package

Changelog for sg3_utils-1.02 [20030101] [svn: 28]
  - sg_inq: check if cmddt or evpd bits ignored
  - sg_inq: warn -o=<n> not used for standard INQUIRY
  - sg_turs: add -t option to time Test Unit Ready commands
  - sg_errs: (used by most utilities) warn if sense buffer empty
  - sg_modes: make safe with block SG_IO (bypass SG_GET_SCSI_ID ioctl)
  - sg_logs: make safe with block SG_IO, self-test page work
  - sg_dd: add "blksg_io=" switch to experiment with block SG_IO
  - sg_read: now use SG_IO ioctl rather than sg write/read
  - sginfo: fix writing parameters, check for block devices that answer
    sg's ioctls, recognize "scd<n>" device names
  - sg_map: stop close error report on tape devices
  - sg_readcap: make safe with block SG_IO
  - sg_start: make safe with block SG_IO
  - sg_test_rwbuf: make safe with block SG_IO

Changelog for sg3_utils-1.01 [20020814] [svn: 27]
----------------------------
  - add raw switch ("-r") to sg_inq [Martin Schwenke]

Changelog for sg3_utils-1.00 [20020728] [svn: 26]
----------------------------
  - update sg_err [to SPC-3 T10/1416-D Rev 07 3 May 2002]
  - "sg_inq -cl" now outputs opcode names
  - add "continue on error" option to sg_dd
  - add _LARGEFILE64_SOURCE _FILE_OFFSET_BITS=64 defines to Makefile
  - drop 'gen' argument from sg_dd and friends, allow any file types
    except scsi tape device file names
  - treat of=/dev/null as special (skip write). Accept of=. as alias
    for of=/dev/null
  - decode various log pages in sg_logs
  - add 'dio' argument to sgm_dd for testing "zero copy" copies

Changelog for sg3_utils-0.99 [20020317]
----------------------------
  - add 'fua' and 'sync' arguments to sg_dd, sgp_dd and sgm_dd
  - improve sg_inq, add "-cl" and "-36" arguments
  - add sg_modes + sg_logs for MODE SENSE and LOG SENSE queries
  - add rescan-scsi-bus.sh [Kurt Garloff] to archive directory

Changelog for sg3_utils-0.98 [20020216]
----------------------------
  - move sg_reset back from archive to main directory + build
  - sprintf() to snprintf() changes
  - add "time=<n>" argument to sg_dd, sgp_dd and sgm_dd to time transfer
  - add man pages for sgm_dd and sg_read, update sg_dd and sgp_dd man pages
  - add "cdbsz=" argument to sg_dd, sgp_dd, sgm_dd + sg_read
  - add "gen=0|1" argument to sg_dd

Changelog for sg3_utils-0.97 [20011223]
----------------------------
  - move isosize to archive since introduced into util-linux-2.10s

Changelog for sg3_utils-0.96 [20011221]
----------------------------
  - add '-p' switch to sg_inq to provide PCI slot_name
  - add '-n' switch to scsi_inquiry for non-blocking open
  - new sgm_dd (dd variant) using mmap-ed IO
  - sg_rbuf now has a '-m' argument to select mmap-ed IO
  - sg_rbuf now has a '-t' switch to do timing + throughput calculation
  - add sg_simple4 to demonstrate mmap-ed IO on an INQUIRY response
  - add sg_simple16 to do a READ_16 (16 byte SCSI READ command)
  - mmap-ed IO requires sg version 3.1.22 or later
  - add sg_read to read multiple times starting at same offset

Changelog for sg3_utils-0.95 [20010915]
----------------------------
  - make sg_dd, sgp_dd and archive/sgq_dd warn if dio selected but
    /sys/module/sg/parameters/allow_dio is '0'
  - sg_map can now do any INQUIRY (when '-i' argument given)
  - expand example in scsi_inquiry

Changelog for sg3_utils-0.94 [20010419]
----------------------------
  - add sg_start, documented in README.sg_start [Kurt Garloff]
  - add osst support in sg_map [Kurt Garloff]
  - improvements to sginfo [Kurt Garloff]

Changelog for sg3_utils-0.93 [20010415]
----------------------------
  - more include file fine tuning
  - some "dio" work sg_rbuf
  - extend sgp_dd so "continue on error" works on normal files
  - introduce sg_include.h to encapsulate sg include problems
  - add scsi_devfs_scan
  - add sg_bus_xfer to archive directory
  - more error info in sginfo

Changelog for sg3_utils-0.92 [20010116]
----------------------------
  - change sg_err.c output from stdout to stderr
  - change sg_debug to call system("cat /proc/scsi/sg/debug");
  - fix in+out totals in sg_dd and sgp_dd when partial transfers
  - lower include dependencies in sg_err.h
  - add sgq_dd + Makefile to archive directory

Changelog for sg3_utils-0.91 [20001221]
----------------------------
  - signalling handling added to sg_dd (and documented in sg_dd.8)
  - add man page for sg_rbuf (and a small change to its code)
  - add "-d" switch to isosize and cope with > 2 GB (and man page)

Changelog for sg3_utils-0.90
----------------------------
  - switch from dated versioning. Previous version was sg3_utils001012.
    Arbitrarily start at package version 0.90 . Start Changelog.
  - incorporate Kurt Garloff's patches from Suse scsi.spm source rpm
    compilation:
    - add Kurt Garloff's sg_test_rwbuf utility to read and write to disk
      buffer
    - clean up Makefile to include a "make install" (and also add a
      "make uninstall").
    - add "-uno" switch to sginfo
  - make raw and sg devices equally acceptable to sg_dd and sgp_dd.
    [Raw devices still not as fast as sg devices doing disk to disk
    copies in sgp_dd but this may be improved soon. Still faster than
    using dd!]
  - change lseek() in sg_dd and sgp_dd to _llseek() [using code borrowed
    from fdisk] so big disks can be properly offset with 'skip' and
    'seek' arguments. [This change is significant for raw devices and
    normal files since sg devices already use 31 bit block addressing.]
  - rename sg_s3_inq to sg_inq. This utility allows the INQUIRY response
    to be decoded as per SCSI 3 and 4. Also can probe VPD and CmdDt pages.
  - change multiplier suffixes on sg_dd, sgp_dd and sg_turs so lower case
    "k, m, g" are powers of 2 while "K, M, G" are powers of 10. This idea
    borrowed from lmdd (lmbench suite)
  - retire a few more less used utilities into the archive directory.
  - add man pages for sg_dd, sgp_dd and sg_map
