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 [20221112] [svn: r983]
  - 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
    - allow --page selection with --inhex=FN
  - 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
    - see sg_lib below for two new exit status values
  - sg_stream_ctl: fix --get indexing
  - sg_read_block_limits: fix granularity value
     - add --mloi option
  - 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
    - add sg_ll_read_block_limits_v2() for MLOI bit
    - https://github.com/doug-gilbert/sg3_utils/pull/32 added
      with tweaks; adds SG_LIB_CAT_STANDBY and
      SG_LIB_CAT_UNAVAILABLE which refine the 'not ready'
      exit status. Useful for sg_turs
  - 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)
  - remove archive directory (and its contents)
  - 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
