v1.0
====

- Rewrite in Rust
- Multithreaded tools
- Higher performance io engines (optional io_uring async engine)
- thin_dump/restore now retains sharing
- thin_metadata_pack/unpack

v0.9.0
======

- New support tools: thin_metadata_{pack,unpack}.
- thin_check can now check metadata snapshots.
- some metadata space map bug fixes.
- thin_check --auto-repair
- Stop thin_dump --repair/thin_repair ignoring under populated nodes.


v0.7.5
======

- Fix a bug that stopped cache_restore working with metadata version 2.

v0.7.4
======

- Update this file ;)

v0.7.3
======

- Improve error messages if XML given as input to tools that expect metadata.
  There seems to be some confusion between XML and the metadata.

- Add --override-mapping-root debug option to thin_dump.  This can be useful
  when investigating damaged metadata.

- More functional tests.

v0.7.2
======

- Fix segfault in restore tools when given a tiny metadata file (< 4k).

- Lots more work on the functional tests.

- Fix a couple of unit test regressions

- Man page updates.

- Rewrite man pages in a text format.  Simpler than writing directly in nroff.

v0.7.1
======

- Fix a few bugs in block_cache.

- Ditch Ruby/Cucumber for the functional tests.  Now written in Scheme.

- Be more aggressive about flushing dirty blocks from the block cache.  Very
  little performance impact.

- Optimisations in space_map_disk (small performance improvement for restore
  tools).

v0.7.0
======

- switch to C++11.  This may cause problems with v. old versions of g++.

- support cache metadata format 2

- support custom emitter plugins for thin_dump.

- thin_dump --dev-id; allows the user to dump just the devices they're
  interested in.

- cache_writeback; Use for offline decommission of a cache.

- thin_scan/thin_ll_dump/restore dev tools.

- --enable-dev-tools configure option.  Use this for the extra tools.

- thin_delta, various bug fixes.

- various changes to the block cache.

- thin_show_duplicates; a development only tool that scans block devices to
  calculate the level of data duplication.  Uses either fixed block sizes or
  context sensitive.

v0.6.3
======

- Improve error messages if output file doesn't exist or is tiny.

v0.6.2
======

- Fix bug in thin_delta
- Fix recent regression in thin_repair.
- Force g++-98 dialect
- Fix bug in thin_trim

v0.6.1
======

Fix bug in thin_dump when using metadata snaps.

v0.6.0
======

thin_ls

v0.5.6
======

era_invalidate may be run on live metadata if the --metadata-snap option is given.

v0.5.5
======

You may now give the --metadata_snap option to thin_delta without specifying where the snap is.

Update man pages to make it clearer that most tools shouldn't be run on live metadata.

Fix some bugs in the metadata reference counting for thin_check.

v0.5.1
======

Fix bug where the tools would crash if given a very large metadata
device to restore to.

v0.5
====

- thin_delta, thin_trim
- --clear-needs-check flag for cache_check
- space map checking for thin check

v0.4
====

- All tools switch to using libaio.  This gives a large performance
  boost, especially to the write focused tools like thin_restore.

- Added a progress monitor to thin_restore, cache_restore and era_restore

- Added a --quiet/-q option to *_restore to turn off the progress bar

- Removed variable hint size support from cache tools.  The kernel
  still only supports a fixed 32bit width.  This will have a side
  effect of reducing the executable sizes due to less template
  instatiation.

- Tools rolled into a single executable to save space.

- Fixed some bugs when walking bitsets (possibly effecting cache_dump
  and cache_check).
