* Tue Mar 10 17:30:00 AEST 2026 Mark Harvey <markh794@gmail.com>
- A hugh patch set to add LTFS support. Many thanks to QuentinLoriaux

* Tue Mar 10 16:30:00 AEST 2026 Mark Harvey <markh794@gmail.com>
- mhvtl.ko: Various updates to keep track of recent mainline changes
- add GET/SET TIMESTAMP OP code support
- fix for Logical Block Protection

* Mon Mar 10 12:11:00 AEST 2025 Mark Harvey <markh794@gmail.com>
- Remove reference to Nutanix as I no longer work there
- Implement Logical Block Protection for LTO emulations
- mhvtl.ko: Update to support recent kernel changes
- more 32/64bit cast fixes (Raspberry-Pi) & x86_64
- Fix issue with helper script creating WORM media (Thanks Gaurav Malhotra)
- Initial LTO-9 emulation (Thanks Gwen Dawes)
- daemon exit strategy change - reduce possibility of shutdown during inflight I/O
- Fix READ POSITION
- Implement VHF log page
- Reduce calls to fflush() unless in debug mode

* Fri Mar 10 16:30:00 AEST 2023 Mark Harvey <markh794@gmail.com> <mark.harvey@nutanix.com>
- review of all utilities and use '-m <barcode>' the standard option
- Add support for 'INQUIRY_DATA_HAS_CHANGED'
- Added 'Extended Inquiry Data VPD page for Ultrium
- Add SELinux ACL so systemctl scripts will work if SELinux is enforcing
- mhvtl.ko: Various improvements to suit recent kernel changes (thanks Lee Duncan and Tamas Revesz)
- mhvtl.ko: Change initiator ID from 15 to -1 (resolves conflict if target also configured with ID 15)
- mhvtl.ko: Remove printk in favour of pr_* calls
- pre-package mhvtl.ko source into /usr/lib/firmware/mhvtl/ and add wrapper script 'mhvtl_kernel_mod_build' to extract, compile and install
- Various 64bit/32bit casts fixed.
- Updated Vagrant to use AlmaLinux, RockyLinux, CentOS, OpenSuse, Ubuntu

* Thu Mar 10 10:30:00 AEST 2022 Mark Harvey <markh794@gmail.com> <mark.harvey@nutanix.com>
- Updated default drives in library 10 from LTO4/LTO5 to LTO6 & LTO8
- Added initial support for Data Integrity Validation (via Logical Block Protection) - IBM LTO6,LTO7 & LTO8 with this release.
- mhvtl.ko: Various updates to match the latest kernels
- Additional checks for Vagrant build on CentOS, Ubuntu and OpenSUSE
- Improve tape load/unload handshake to make it more robust
- Improve handling of missing slot numbers in library_contents.xx
- Makefile - Move variables to a common location (config.mk)
- SEND DIAGNOSTICS: Implement basic sanity check for SSC devices
- VERIFY(6) op code support
- Update install instructions with sg3_utils vs sg3-utils package names
- LTO-6 media load to match LTO standards (LTO8 cannot read LTO6 media)
- New utility 'preload_tape' bypassing need to write via /dev/st*
- Add missing 'ENCRYPTION capable' bit for LTO6, 7 & 8 media
- systemd device config: Best effort, log errors via klog
- Obligatory spelling fixes
- Bump version to 1.7 : Beginning of LBP, VERIFY(6) and SEND DIAGNOSTICS support

* Thu Oct 07 10:40:00 AEST 2021 Mark Harvey <markh794@gmail.com> <mark.harvey@nutanix.com>
- rename list.h to avoid generic name conflict
- rename scsi.h to avoid generic name conflict
- rename log.h to avoid generic name conflict
- Exclude __builtin_cpu_supports() on non x86_64 CPU types
- Fix spelling of retrieving
- mhvtl.ko: Define SG_SEGMENT_SZ only if not defined
- Increase default kmem_cache bounce buffer size to 64k
- mhvtl.ko: kernel module oops on PPC
- mhvtl.ko: Log errors if they occur
- mhvtl.ko: Correct compiler warning about printf var sizes
- mhvtl.ko: Simplify file_inode()
- mhvtl.ko: Use _safe version of list_for_each_entry
- mhvtl.ko: Limit number of outstanding queued commands
- mhvtl.ko: Log minor number with other ioctl info
- mhvtl.ko: clean up noisy logging at level 2
- mhvtl.ko: Initialise outstanding op struct before adding to list
- mktape: Set default version string based from MHVTL_VERSION
- Update LTO-8 media denisty codes
- Security Protocol OUT: Fix null pointer check
- Fix routine to extract barcode from string
- Fix typos in mktape man page
- dump_tape: Fix segfault due to local variable conflict
- Use bounce buffer if tape block size is larger than request buffer
- Remove unused scsi_host_template field
- mhvtl.ko: Compile on RedHat 8.x kernel
- mhvtl.ko: reinstate HAVE_UNLOCKED_IOCTL
- mhvtl.ko: Remove reference to DRIVER_SENSE
- Update function names with 'mhvtl_' prefix
- Update kernel /sys/ location to suit new pseudo name space
- OOM: /proc/<pid>/oom_adj is deprecated. Using oom_score_adj.
- systemd: Update Makefile to include systemd install path
- mhvtl.spec: Update to build a package on CentOS8

* Tue Mar 10 09:00:00 AEST 2020 Mark Harvey <markh794@gmail.com> <mark.harvey@nutanix.com>
- Fix kernel module oops/panic due to race between placing OP ready for user space before all variable were initialised
- Add ccan version of crc32c routine which includes CPU optimisations for sse4.2 capabile CPUs

* Sun Oct 06 12:20:00 AEST 2019 Mark Harvey <markh794@gmail.com> <mark.harvey@nutanix.com>
- Fix kernel copy_to_user()/copy_from_user() to use white-listed buffer
- Fix kernel compile for 5.0+ kernels

* Wed Apr 10 10:30:30 AEST 2019 Mark Marvey <markh794@gmail.com> <mark.harvey@nutanix.com>
- Fix long standing bug on media unload
- Added CRC32 checks for each block written/read
- allow kernel module to compile on 5.0 kernels
- Add example on how to configure LIO pscsi (passthru) driver with mhVTL
- Fix parsing args in dump_tape

* Thu Mar 28 14:30:30 AEST 2019 Mark Marvey <markh794@gmail.com> <mark.harvey@nutanix.com>
- Create virtual media on rpm install
- Fixed a couple typos in spec file (one from several years ago)
- Don’t overwrite /etc/mhvtl/* but install as ‘rpmnew’
- Replace SUSE specific rpm macros with hand crafted ’systemctl’ commands.
- systems-generators dir needed munging for CentOS7
- Include ‘ChangeLog’ as part of the tar ball - the time/date build on man pages is dependant

* Thu Nov 29 15:42:24 PST 2018 Lee Duncan <lduncan@suse.com>
- Many changes to support systemd:
  - Removed /etc/init.d/mhvtl script
  - Config files are now generated at install time, not the first
    time the service is run
  - Created service files and templates, and a generator
  - Updated INSTALL file with sytemd info
  - removed build_library_config and mhvtl init script
  - Updated man pages and doc/index.html
  - Updated make files
  - created generate_device_conf and generate_library_contents, called at
    'make install' time, to take the place of what the init file used to do
  - updated SPEC file for systemd
  - updated example scripts
  - fixed asprintf calls to check return values (to make compiler happy)
  - added some arguments and better arg parsing to vtltape and vtllibray
- moved some .gitignore entries around, to be more local
- Bumped version to 1.5-5
- Fixed config file error in library_contents.* where VERSION was missing

* Thu Sep 7 2014 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.5-2
- Fix vtllibrary segfault using 'default' emulation
- Correct slot mappings for L180/L700 emulation
- Correct slot mappings for SL500 emulation
- Increase max serial number length to 15 chars
- More accurate emulation of IBM TS3100/3200 inquiry page bits
- Fix bug with 'edit_tape' not understanding the 'null' media type

* Thu May 1 2014 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.5-1
- Fix bug with vpd pages 0x80 & 0x83 in library personality modules.

* Sun Apr 13 2014 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.5-0
- Introduce library personality modules - limited emulations
- Resolve bug with more than 1260 slots
- Rename mhvtl bus type so scsi_debug & mhvtl can load together.

* Sun Oct 20 2013 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.4-10
- Various cleanups due to static code check 'smatch'
- Fix TapeAlert bit offsets
- Return bit/byte offset for sense INVALID FIELD IN CDB/PARAMS
- Fix returned data size when 0 data is requested (kernel module fix)
- SSC - Fix op code 0Fh (read reverse) incorrectly set to 'reserve'
- SMC - Ability to keep library media change persistant across restarts
- SSC - Implement 'read media serial number' op code
- Fix 'make_vtl_media' script to understand IBM 03592 media type

* Thu Aug 29 2013 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.4-9
- SSC -> MODE SELECT overhaul.
- Sanitize delay values introduced in 1.4-8
- daemons now open /dev/mhvtlXX nodes in exclusive mode
- Code cleanup based on Valgrind - memory leaks and unused file handles
- Correctly set SCSI revision field for T10000B
- SMC -> Adjust behaviour if 'Scalar' library defined
 set 'BarC' field in inquiry page and
 pad "Full Firmware Revision" field with compile time/date

* Sat Jun 29 2013 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.4-8
- Add additional fields in MAM for multi-partition support capability
- MODE SELECT fixes
- Solaris 11.1 st mode select
- Make virtual media more resilient against disk full conditions
- Add additional error checking between kernel and userspace ioctl
- Add ability to introduce delays in load/unload/position/thread/rewind op codes
- Add 16byte CDB locate command support
- Minor kernel module tweeks - increase timeout & error checking on ioctl()

* Fri Mar 22 2013 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.4-7
- Add DLT7000/DLT8000 emulation
- Record 'last load' data in MAM
- New utility 'edit_tape' which will allow modificiation of media 'meta data'
- Prevent and log possibility of READ ELEMENT STATUS overflowing data buffer
- Set 'POWERON-RESET' if library re-configured via HUP signal
- Update 'minor' number from 'unsigned char' to 'unsigned int' which removes
 max number of device nodes at 256
- Rework READ ELEMENT STATUS - Simplify code and correct bug where incorrect
 byte count returned.
- Add 'support' for specifying 9x40 and DLT media via barcode suffix
- Update kernel module to prevent overflow if DEF_MAX_MINOR_NO reached.
- Update kernel module to allow up to 1024 minor numbers
- Update kernel module vers to 0.18.12, vers date 20130310-0
- off-by-one fix of compression mode page
- Fix 'READ POSITION' ssc op code
- Helper scripts for NetBackup added
 - drive_stats.pl (parse 'scsi_command' output and email on tape unload)
 - vlt_endeject_notify.pl (NetBackup Vault helper)

* Sat Jan 31 2013 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.4-6
- Return correct TAPE CAPACITY log page
- Fix overflow TAPE CAPACITY log page
- Fix potential vtltape segfault when 'block position back'
- New utility 'edit_tape' to update virtual media metadata

* Sat Jan 12 2013 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.4-5
- Added support for LTO-6
- Fix EOM handling
- Fix data returned in TAPE CAPACITY log page

* Thu Sep 13 2012 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.4-4
- Fix a build issue on older (SLES9) linux distributions
- Silence a compiler warning about uninitialised var 'month' in quantum PM
- Note: 1.4-2 & 1.4-3 never made it as released packages.

* Wed Sep 12 2012 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.4-3
- Add 'performance' counter to vtllibrary
- Fix off-by-one error in LOG SELECT
- Implement LOG reset via PCR bit in LOG SELECT

* Sat Sep 01 2012 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.4-2
- Add 'performance' counter to each SCSI op code logged

* Wed Aug 08 2012 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.4-1
- Bug fix:
  Fix dump_tape to understand new library subdirectory format
  Fix vtlcmd to understand new library subdirectory format

* Wed Aug 01 2012 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.4-0
- Allow 'default' personality module to load all media R/W
- Add IBM half-hight INQUIRY string match
- vtltape: Update log entry regarding media capacity depending on capabilities
- vtltape: Make the backoff algrithm value configurable
- Add SDLT600 & SDLT320 personality module
- mhvtl.ko: Silence install 'depmod' error
- Move standard inquiry info into memory structure
- Default media belonging to a library in a subdir
- Remove kmod-mhvtl.spec
- Rename 'mhvtl' package as 'mhvtl-utils'
- Use ELRepo spec file
- Move 'make install' from RPM to Makefile

* Fri Jun 15 2012 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.3-0
- Move 'on disk' unique functions into its own shared lib (libvtlcart.so)
- HP Ultrium VPD page data update to match HP documentation
- IBM Ultrium VPD page 0xC0 & 0xC1 update to match IBM documentation
- Fix SPIN return status
- Add helper functions for moving media within library
  (in prep for library partition manager)
- Add ability to set/clear APPEND ONLY status from user (vtlcmd)

* Wed Apr 04 2012 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.2-3
- Fix segfault in AIT4 when attempting to access Security Protocol IN/OUT
- No need to fail in virtual media parent directory exists
- Add more descriptive debug messages for log/mode page lookups

* Thu Mar 22 2012 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.2-2
- Changed defaults so fifo is not enabled. If fifo not used, it will
  block writing process (i.e. hang daemons)
- Improved MODE SELECT / SENSE to support 'changeable field bitmaps
- Started implementing ALLOW OVERWRITE support (incomplete)
- Fixed INQUIRY string match for STK T10000A

* Sat Jan 21 2012 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.2-1
- Fix memory leak in lzo decompression routine.

* Fri Jan 20 2012 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.2-0
- Ability to specify zlib or lzo compression.
  via 'vtlcmd' at runtime.
      'vtlcmd <> compression lzo'
      'vtlcmd <> compression zlib'
  /etc/mhvtl/device.conf entry
      ' Compression type: lzo'
      ' Compression type: zlib'

* Sat Dec 24 2011 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.1-1
- Clean up IPC resources when finished with them
- Simplify fifo reference counting
- Start including Scientific Linux patches (Still need to include kmod RPM)
- Fix 'make install' on Ubuntu
- Various log message cleanups

* Sun Oct 09 2011 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.1
- Added real time state notification.
  '-f <fifo name>' (Set in build_library_config)
  Defaults to all daemons using the same 'named pipe'
  Each entry is prefixed with '<index>:' and text to the change of state.
- MODE SENSE for LTO devices update the 'media type' field.
- LOG SENSE page 0x0c (Sequential Access Device Page) updates with valid data

* Sun Sep 11 2011 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.0.1
- Added mode page 25h (vendor specific) for IBM LTO3/4/5
  This allows the Windows IBM Tape Driver to load correctly (connected via
  iSCSI)
- Attempt to correct file permission/ownership when media is created manually
- A HUP signal to the vtllibrary daemon will cause it to re-read its config
  from the /etc/mhvtl/library_contents.XX file. (So you can change the slot
  config without having to re-start the daemon).

* Sun Sep 04 2011 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 1.00.00
- Re-worked MODE SENSE/SELECT data structures into a linked list.
- Re-worked LOG SENSE/SELECT data structures into a linked list.
- Added support for sub-page MODE information.
- Added STK 9x40 drive emulations.
- Removed dead code from kernel driver.
- Add working REPORT DENSITY support to the SSC.
  This change required the personality modules to define the list of supported
  densities. The media density is defined at 'mktape' time.
  Hence, the optional 'media load' rules in device.conf are now redundent
  and not used.
  BUT: The option to load any media into any drive is also gone.

* Sat Jun 25 2011 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.17
- Improvements
  - Kernel module compile warning since 2.6.33
- Bug fixes
  - Test MAP port open before moving media
  - Fix buffer overflow in vtllibrary (product_id)
  - Return correct sense from space op code

* Sun May 22 2011 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.16
- Improvements
  - Cleaning media behaves more like real (IBM LTO4) drive.
  - Implement OPEN/CLOSE IMPORT/EXPORT element OP code (Thanks Sebastian)
  - Kernel module support for 2.6.39 (Thanks Sebastian)
- Bug fixes
  - SPACE op code - Space to end-of-data fixed (Thanks Sebastian)
    This fixes an issue triggered using Oracle Backup
  - REQUEST SENSE - Return correct data.
  - SPOUT - Return check_condition on some error paths
  - Cleaning Media - Return 'not ready' instead of 'good' when loaded
  - Don't write FILEMARKS to WORM or Cleaning media

* Wed May 04 2011 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.15
- Improvements
  - Implemented 'Personality Module' for each drive type
    (many cleanups due to 'PM' change fallout thanks to Sebastian)
  - Increase max barcode length to 16 chars
- Bug fixes
  - Inquiry no longer incorrectly reports support for TrmIOP and CmdQue
  - Fixed block read/writes corruption if 'multiple blocks' specified
  - Fix Device Capabilities mode page - Don't advertise EXCHANGE MEDIUM support

* Thu Mar 17 2011 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.14
- Bug fixes:
  - kernel module build fixes for Linux kernel 2.6.37 and greater
- Improvements
  - Add STK T10000C media/drive support
  - Always log 'fatal' errors
  - Cleanup to mhvtl.spec
  - Catch signals to prevent daemon terminating early.

* Thu Jan 11 2011 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.13
- Bug fixes:
  - SMC read element status. Return correct length.
  - SMC read element status. Handle request for 'any' slot type.
  - SSC log page. Byte-swap Bytes Read/Written.
  - vtltape: Return ILLEGAL REQUEST for unsupported OP codes.
  - Density code updates.
  - Increased sense buffer from 38 bytes to 96 bytes.

* Wed Nov 17 2010 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.12
- Bug fixes:
  - Silence 'which setuidgid' test
  - Fix compile on 2.6.34 kernel
  - ERASE only from BOT
  - Test SPACE '0' blocks/filemarks before moving
  - Fix REQUEST SENSE returned size
  - Implement SILI bit test
  - Check if ERASE WORM media is allowed
  - Only support SPIN/SPOUT for LTO-4/5, T10K and 3592E05/6 drive types
  - Fix REQUEST SENSE page length. Previously only returning 8 bytes.
- Improvements
  - Re-organised code in vtllibrary to use a big jump table
  - Fix LTO5 media density reporting
  - Match HP ULTRIUM 4-SCSI
  - Ability to create DDS specific media
    (still need to find correct density codes for DDS)

* Thu Sep 23 2010 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.11
- Bug fix: Off-by-one if a re-position & then overwrite a filemark.
  Caused TSM & HP Dataprotector all sorts of problems.
- Export kernel module 'major' number via /sys/bus/pseudo/drivers/mhvtl/major
- Remove external script to create device nodes. Each daemon creates its own
  device node at startup. Uses 'kernel module' major no. sys interface.
- Fix potential NULL pointer usage in REQUEST SENSE
- VPD page 0x83 NAA field fix
- VPD page length fix (only 0x50 bytes in size not 0x52)
- Hopefully removed last reference to /proc
- Use setuidgid if availble instead of 'su $USER -c <vtltape|vtllibrary>'
- Add kernel module RPM spec file for RedHat
- Add Gentoo build

* Wed Sep 01 2010 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.10
- Correct incorrect usage of & vs &&
- Fix TapeAlert.
  Error where the flags were not being set due to an earlier change.
- Add extra verbage around positioning information. Trying to track down
  a problem with HP Dataprotector when it spaces back a block.
- Make tape media & drive type loading logs more readable.
- New utility 'tapeexerciser' which I've been using to track down the
  Dataprotector issue. A simple & basic 'st ioctl()' test utility.
- Fix 'is vtl running' logic in rc script. Was broken if USER == root

* Wed Jul 09 2010 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.9
- Fix WORM media support - Bug report from Albert Pauw
- Complete LTO5 media support

* Wed Jun 23 2010 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.8
- Several Security Protocol IN updates - thanks Albert Pauw
  * Return certificate data
  * Correct length for 'KEY FORMATS'
  * Correct length for SPIN SUPPORTED PAGES
- Fix kernel compile on RedHat AS4
- Media/drive matching now 'dynamic' and defined in device.conf
- Added man page for device.conf
- Fix media corruption when media is 'formatted'
- Add LTO5 & SDLT-S4 drive/media types
- Handle INQUIRY correctly after media change (return SAM_STAT_GOOD)
- Updated rc script so all devices created on Target & LUN. i.e. Don't use
  channel. Some application software has trouble if only the channel is unique.

* Sat May 08 2010 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.7
- Allow media sizes larger than 2G on 32bit platforms
- Implement STK vendor unique op code 'LOAD DISPLAY' -> logs via syslog.
- Fix core dump on invalid data in NAA strings.
- Support VENDOR ID for SMC device with embedded spaces

* Thu May 02 2010 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.6
- Support VENDOR ID with embedded spaces
- Fix 'vtlcmd list map'
- Fix import of media via MAP (off-by-one)
- Return TapeCapacity LOG SENSE in bytes/KB/MB depending on drive type
- Honour MAP status (return error if MAP is open and robot attempts to
  move media in/out of MAP)
- General cleanup of kernel module (thanks to Herbert Stadler)
- Relax dependencies on /proc in faviour of /sys

* Thu Apr 01 2010 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.5
- Silence warning regarding local_irq_save() - Thanks to Norm Lunda
- Re-work param parsing used by vtlcmd - Thanks to Herbert Stadler
- Fix homepage URL

* Fri Mar 05 2010 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.4
- Fix syntax in rc script. Reported by Nabil
  That's what I get for rushing a fix out (ELEMENT STATUS) without testing
  everything..

* Thu Mar 04 2010 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.3
- Test media mounted before REWIND (TSM seems to ignore previous TUR)
- Make creation of media home dir more robust
- Add queue depth callback - Defaults to 32.
- Conversion script of old config files to new format
- Fix problem with size of ELEMENT STATUS DATA length. Thanks to Norm Lunde.

* Thu Jan 28 2010 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.2
- Add support for multiple libraries on single host
- pack MAM struct so it's 1024 bytes on both 32 & 64bit hosts
- Updated URL after google moved it

* Wed Dec 16 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.16.11
- Add tests for media/drive type. i.e. Only allow LTO media in LTO drives.
- New defination for 'Compression:' in device.conf (Thanks Kevan Rehm)
  ' Compression: factor [1-9] enabled [0|1]'
        Where factor : 1 Fastest compression -> 9 Best compression
             enabled : 0 => Compression disabled, 1 => Compression enabled

* Tue Dec 15 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.1
- Fix data silent data corruption.
- Add tests for media/drive type. i.e. Only allow LTO media in LTO drives.
- Increased max number of LUNs from 7 to 32
- Changed ' Compression: factor X enabled Y' to same as 0.16 branch.
  ' Compression: factor [1-9] enabled [0|1]'
        Where factor : 1 Fastest compression -> 9 Best compression
             enabled : 0 => Compression disabled, 1 => Compression enabled

* Tue Dec 01 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.18.0
- Kevan Rehm reworked media format. The 'old' format suffered from performance
  problems. The larger the defined tape capacity, the longer it took to
  seek/position due to the sequential walk of header structures.

  The new tape format consists of three files.
   .data - Data file.
   .indx - Arrary of one header structure per written tape block or filemark.
   .meta - MAM, followed by meta header structure, followed by variable length
           of filemark block numbers
   Each Physical Cartridge Label (PCL) is located under its own directory
   MHVTL_HOME_PATH/<PCL>/

* Sun Nov 29 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.16.9
- Check string length in device.conf and abort if too long.
- Compression now working.
  Set up via MODE SELECT op code.
  Set default compression in device.conf 'Compression: X'
   Where 0 is off, 9 is max.
- Defaults with SPECTRA/PYTHON library
- Fix kernel module compile on 2.6.31+ (Ubuntu 9.10)
- Fix kernel silent data corruption
- Set kernel ENABLE_CLUSTERING to enable > 512k blocks on x86_64
- SPIN/SPOUT: Return correct list of supported pages.

* Tue Nov 10 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.16.8
- Reworked READ ELEMENT STATUS (Thanks to Kevan Rehm)
- Fix EOD header size.
- Makefile rework.
  Honour PREFIX & DESTDIR.
  User/group name defined.
  Home paths for data files & config files defined.
  Add compression support (disabled by default).

* Thu Oct 9 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.16.7
  Fix REPORT ELMEMENT STATUS for All elements. TSM was core dumping.
  Reported and fixed by Bernardo Clavijo.
  Re-worked Media Access Port.
   Now requires 'vtlcmd library open map' before media can be removed and
   'vtlcmd library close map' for the Medium Transport Element to place
   media into the MAP.

* Thu Oct 1 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.16.6
  Fixed output of 'dump_tape' utility

* Wed Sep 16 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.16.5
  Fixed verbosity test in MHVTL_DBG macro (again)

* Tue Sep 15 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.16.4
  More logging cleanups
  Fixed verbosity test in MHVTL_DBG macro

* Wed Sep 02 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.16.3
  Reworked logging using a macros MHVTL_DBG.
  Increased max block size to kernel max (from 256k)

* Sat Aug 15 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.16.2
  Changed/updated load MAP() functionality.
  Previous implementation re-read config file and parsed the MAP slots.
  This is 'interactive' using the vtlcmd command.
   e.g. vtlcmd library load map BARCODE
  Corrected NAA field in VPD page 0x83. This was a hard coded string.
   Now reads entry from /etc/mhvtl/device.conf
	' NAA: 11:22:33:44:ab:cd:ef:03' (8 octet value)
  Remove dependency on sg3_utils

* Wed Aug 05 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.16.1
  Fixed kernel module oops on lu removal - Many thanks to Jean-Francois
  Added loadMap() to vtllibrary.

* Tue Jul 09 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.16.0
- Moved INQUIRY into userspace.
  Re-jigged all helper scripts.
  Still need to do dynamic config of : vpd pages & mode pages.
- Added pseudo encryption support (SPIN/SPOUT op codes)
- kernel module will oops if unloaded and re-loaded..

* Fri Jan 02 2009 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.15.10
- Removed kfifo from data path for SCSI OP codes which originate at the target
- Add simple SCSI Persistent Reserve
- Major change to kernel module. Replaced queued_command_arr[] with linked list

* Thu Nov 27 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.15.9
- Re-fixed WRITE ATTRIBUTE bug forcing a rewind of media.
- Fixed build for PPC64 platform
- Add special reserved barcode 'NOBAR' to indicate a slot is full but
  contains no barcode.

* Fri Nov 21 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.15.8
- Added initial SECURITY PROTOCOL code

* Tue Nov 19 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.15.7
- Merge READ ATTRIBUTES fixes from Raymond Gilson

* Sun Nov 16 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.15.6
- Fixed bug where WRITE ATTRIBUTE was causing media to rewind.
- Increase default buffer size of SMC from 512k to 1024k - Ability to handle
  more (twice the) slots

* Fri Nov 14 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.15.5
- sg structure changed between 2.6.23 and 2.6.24 causing the kernel module
  to no longer build on latest kernel.

* Fri Apr 04 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.15.4
- Kernel module change. Default type is SDLT600 instead of IBM TD3 as there is
  confusion on the windows side of things regarding IBM Drivers vs IBM for
  Tivoli vs Symantec Tape Drivers.
  Maybe the QUANTUM SDLT600 will behave better ??
  Only time will tell...

* Fri Mar 28 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.15.3
- Return 'block descriptor data' on a MODE SENSE 'page 0' instead of an error.

* Mon Mar 10 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.15.2
  Re-org of the source code.
  - Placed user-space code in directory ./usr
  - Moved kernel drivers from ./kernel-driver/linux-2.6 to ./kernel
  Yet another 'tunable' option. Set the firmware release to "string" by
  # echo "5400" > /sys/bus/pseudo/drivers/vtl/firmware

* Thu Mar 06 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.15.1
  Ability to define default media size in /etc/vtl/vtl.conf

* Wed Mar 05 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Name change as 'vtl' is was deemed too generic.
  Renamed to 'mhvtl' as this is being used by Symantec's Roseville office and
  is as good a name as any.
- With the new name comes a new version 0.15.0

* Tue Feb 19 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.14.1
  Cleaned up compile time warnings on x86_64 platform.
  Added sg_utils and zlib as RPM 'requires' packages.

* Thu Feb 14 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.14.0
- With the ability to define device serial numbers, I thought it was time
  to increase vers from 0.12 to 0.14
- Cleaned up helper scripts.

* Fri Feb 08 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12.37
- Added ability to set serial number via new utility 'vtl_set_sn -q X'
  The serial number is read from /etc/vtl/library_config for each 'Drive X:'
  e.g.
   Drive 2: SN20034
   Drive 3: SN20035
  If there is no serial number defined in library_config file, and the
  serial prefix has been set, then this will be used. Otherwise the old &
  trusted method of calculating based on HBA#, ID# & LUN.

* Wed Feb 06 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12.36
- Added another config file /etc/vtl/vtl.conf
- Added ability to set a serial number prefix for devices.
- Added ability to set the buffer size used by SSC devices.
- Added ability to set/clear logging levels within vtl.conf

* Sat Feb 02 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-35
- Fix post uninstall
  check for group & passwd entries before attempting to run groupdel/userdel

* Sat Jan 08 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-34
  Changes to kernel module & rc scripts.
- Default kernel module load reporting the library only.
- The rc scripts now update the number of required tape devices depending on
  the contents of /etc/vtl/library_contents
- Using the max_luns or num_tgts the library can consist of different drives
  or all the same drive type.
- Deleted x86_64 patch as it is no longer needed.

* Fri Jan 04 2008 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Reserved vers 0.12-33
  A special build with only 5 IBM drives.

* Wed Dec 19 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-32
- Changed user 'vtl' home directory to /opt/vtl
  Otherwise there can be problems starting the vtl s/w if /home is an
  automount and can't mount /home.
- Changed kernel module Makefile
  To compile on Debian or Ubuntu systems "make ubuntu=1"
  To compile on SuSE or RedHat systems "make"

* Tue Oct 16 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-31
- No code changes. As sysdup has crashed and management have decided not to
  replaced the two failed drives in the RAID 5 system, I've changed the
  home of this project to my google homepage.

* Tue Oct 16 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-30
- vtl kernel module: - bumped to 0.12.14 20071015-0
- Another bug fix in the kernel module. This time copying data from user-space
  in an unsafe manner. Last reason for kernel oops ??
- Make library module startup more robust by clearing out message Q at start
  time.
- Set vtl startup to 'on' at package install time.

* Wed Oct 10 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-28
- vtl kernel module: - bumped to 0.12.14 20071010-0
- Many updates to error handling condition.

* Wed Sep 26 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-26
- vtl kernel module: - bumped to 0.12.14 20070926-0
  Moved memory alloc from devInfoReg() to vtl_slave_alloc() - I now don't get
  those horrible "Debug: sleeping function called from invalid context"

* Tue Sep 25 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-25
- Resolved an issue where virtual media was being corrupted when performing
  erase operation.

* Sat Sep 22 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-24
- On corrupt media load, return NOT READY/MEDIUM FORMAT CORRUPT

* Fri Sep 21 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-23
- vtl kernel module bug fix - resolved a race condition with my usage of
  copy_to_user()/copy_from_user() and c_ioctl() routines.
  Thanks to Ray Schafer for finding and being able to reproduce race.

* Fri Aug 24 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-22
- Set correct directory ownership and permissions at post install time
  for /opt/vtl

* Wed Aug 01 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-21
- Corrected warnings identified by sparse

* Sat Apr 07 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-20
- Calls to tune kernel behaviour of out-of-memory always return 'success'.
  Found out the hard way, earlier kernel versions do not support this feature.
- Added check for return status from build_library_config in rc script

* Sat Mar 31 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-19
- Added conditional x86_64/amd64 to vtl.spec so it builds correctly on x86_64
  platforms.

* Wed Mar 28 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-18
- Improved (slightly) checking of MAM header on media open.
  At least made it 32/64 bit friendly.

* Thu Mar 24 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-17
- Added 'Out Of Memory killer tuning to both vtltape and vtllibrary.
- Added 'tags' as a target in Makefile, i.e. 'make tags'
  TAGS will be removed with a 'make distclean'

* Thu Mar 13 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-16
- Added -D_LARGEFILE64 switch to Makefile to allow a more portable way of
  opening files > 2G. There should be no need for the x86_64 patch any more.
  Needs testing.

* Thu Feb 22 2007 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-14
- Added 'ERASE(6)' command as a result of bug report from Laurent Dongradi.
  NetBackup "bplabel -erase -l " command failing.

* Thu Sep 07 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-13
- Just updated some time/date in kernel module. Nothing major.

* Tue Sep 05 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-12
  Shared library (libvxscsi.so) conflict with Symantec VRTSvxvm-common-4.1.20
  so I've renamed mine to libvtlscsi.so
  Should build correctly on an x86_64 RPM system now.

* Thu Aug 31 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-10 (skipped numbering between -5 & -10
  Changed interface between user-space and kernel, hence need kernel module
  version 0.12.10
  The change is to support 'auto sense', where the sense buffer is sent straight
  after the data (if sense data is valid).
  Need to fix: Way of specifying size of sense buffer. Currently defined in
  kernel src (vtl.c) and user-space header vx.h. It would be nice to have this
  defined in one place only.
- Updated rc script to check kernel version before starting user-space daemons.

* Wed Jul 05 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-5
- Updated man pages to reflect name changes from vxtape/vxlibrary to
  vtltape/vtllibrary
- Removed any vxtape/vxlibrary binaries from build process

* Tue Jul 04 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-4
- Fixed (Well tested) kernel makefile compile on SLES 9 and suse 9.3
  i.e. Kernel versions 2.6.5-7.191-smp & 2.6.11.4-21.12-smp
  Hacked scsi.h include file and added #if KERNEL_VERSION conditional compile
  around kfifo.[ch] if below 2.6.10
- Attempt to improve install/startup on RedHat AS4 + SLES9

* Sun Jul 02 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.12-0
- Forked this version from main tree. Main branch is 0.13.x which will continue
  to be work-in-progress for removal of kfifo routines.
- 0.12-x is to be current 'stable' branch.

* Fri May 19 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.10-13
- Added TapeUsage & TapeCapacity log parameters. Even thou I'm specifying these
  pages are not supported, BackupExec still probes for them and barfs on the
  scsi error returned.

* Thu May 18 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.10-12
- Re-worked the READ ELEMENT STATUS command with the idea of adding the extra
  options which appear to be required by BackupExec.

* Wed May 10 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped vers to 0.10-10
- Fixed bug introduced in vtllibrary where I broke the inventory function.

* Tue May 09 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Changed poll of 'getting SCSI command' to use ioctl instead of kfifo.
  Requires kernel module dated > 20060503-0

* Sun Apr 30 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Fixed typo in rc script where trying to set permissions on /dev/vx? instead
  of /dev/vtl?

* Sat Apr 29 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Changed logic on WIRTE-FILEMARK SCSI command. Now only attempts to write
  filemarks if greater the 0 filemarks specified.
- Added check for SuSE-release and use '{user|group}add --system' switch
  otherwise {user|group}add without the --system switch.
- Bumped version to 0.10-6

* Thu Apr 27 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Seek to EndOfData bug where the tape daemon would loop over the last block
  and never return.

* Sat Apr  5 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Changed the kernel module from 'vx_tape' to vtl (no real impact to user space
- daemons) however changing /dev/ entries from /dev/vx? to /dev/vtl due to name
- space clash with VERITAS StorageFoundation (VxVM/VxFS)

* Sat Apr  1 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Bumped version to 0.9 as this has the start of a working Solaris port.

* Thu Mar 24 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Added extra logging for mode_sense command if verbose > 2

* Thu Mar 10 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Start of Solaris kernel port.
- Moved kernel driver into seperate subdir.
- Added some 'ifdef Solaris' to source code.

* Thu Feb 22 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Added check to make sure RPM_BUILD_ROOT is not / when attempting to remove.
- Shutdown daemons before package removal

* Thu Feb 16 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Added ALLOW/DENY MEDIUM REMOVAL SCSI cmd to vxlibrary daemon.
- Added Extend/Retract checking to MOVE MEDIUM SCSI cmds.

* Thu Feb 14 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Made RPM create system account of 'vtl' & group of 'vtl' before install.

* Thu Feb 11 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- bump vers from 0.7 to 0.8
- Rename /opt/vx_media to /opt/vtl
- Rename /etc/vxlibrary to /etc/vtl
- RPM install now creates vtl user & group
- rc script now installs a default library config file in /etc/vtl/

* Thu Feb  2 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Teach me for not testing fully. Resolved bug where no data was written.

* Thu Feb  2 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Improvements to handling of cleaning media.

* Wed Jan  3 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Added a new man page vtl, which aims to document how this package hangs
  together.
- Corrected a couple of hard-coded paths in rc scripts

* Wed Jan  3 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Moved source man pages into separate man directory.
- Updated version of user-mode utilities to that of the kernel module (v0.7)

* Tue Jan  3 2006 Mark Harvey <markh794@gmail.com> <mark_harvey@symantec.com>
- Added man pages.

