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.

Changelog for sg3_utils-1.12 [20050121]
  - 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]
  - 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]
  - 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]
  - 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 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]
  - 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]
  - 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]
  - 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]
  - 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]
  - 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]
  - 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]
  - 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]
----------------------------
  - add raw switch ("-r") to sg_inq [Martin Schwenke]

Changelog for sg3_utils-1.00 [20020728]
----------------------------
  - 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
    /proc/scsi/sg/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 suport 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 EVPD 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
