Overview

This release introduces significant new features and fixes, including the Mount Manager and the Difference Engine for efficiently computing changes between two snapshot sets, or the system root file system and a snapshot set. Fixes include Stratis plugin performance enhancements and bug fixes for lvm2 device callouts.

Users should upgrade to v0.6.0 as soon as possible to take advantage of these enhancements.

Notes

  • It is now possible to mount individual snapshot sets and interact with them using the snapset {mount,umount}, snapset exec, and snapset shell commands. Snapshot sets are mounted under /run/snapm/mounts.
  • Comprehensive file system comparison is now available with the snapset diff and snapset diffreport commands. See snapm(8) and the user guide for more information.
  • The snapm.fsdiff API is considered unstable and may be subject to change in a future release.
  • The snapset diff --output-format=json JSON schema is also potentially subject to change and will be formalised in a future release.
  • The snapset diff/snapset diffreport command syntax is stable but output and formatting may change in future releases.
  • Future releases may include new content differs for specific file types and more comprehensive file type detection when libmagic is disabled.
  • Generating content diffs of large file system trees with many content changes may consume large amounts of memory: snapm will refuse to diff trees if VmRSS exceeds 33% of system memory after walking the filesystem. Caching is disabled if VmRSS exceeds 60% of system memory after computing diffs.

What's Changed

  • lvm2: Fix "no device" case for _is_lvm_device() and avoid no provider test if /boot is not a mount point by @bmr-cymru in #589
  • Add mount manager by @bmr-cymru in #541
  • snapm: fix renaming of snapshot sets with boot entries by @bmr-cymru in #591
  • schedule: fix timeline garbage collection by @bmr-cymru in #596
  • schedule: fix TIMELINE policy retention indexing when keep_x > len(x) by @bmr-cymru in #607
  • stratis: re-use initial DBus query for StratisSnapshot cache by @bmr-cymru in #615
  • container_tests: fix GcPolicyParamsTimeline.evaluate() tests edge case by @bmr-cymru in #628
  • Clean up and enhance progress implementation by @bmr-cymru in #646
  • doc: add missing snapm.manager._mounts to Sphinx docs by @bmr-cymru in #661
  • Fix progress message overflow, bar width, and BrokenPipeError handling by @bmr-cymru in #662
  • progress: clean up Progress and add Throbber classes by @bmr-cymru in #675
  • progress: Fix Throbber no_clear bug and add styles by @bmr-cymru in #679
  • mounts: fix incorrect SnapshotSet instead of name in name_map by @bmr-cymru in #684
  • snapm: add fsdiff snapshot set comparison facility by @bmr-cymru in #620
  • progress: cleanups and log integration by @bmr-cymru in #698
  • snapm: implement snapshot set comparison UI (snapm snapset diff) by @bmr-cymru in #707
  • snapm: address v0.6.0 feature/fix release blockers by @bmr-cymru in #759
  • snapm: fix "Computing diffs" progress bar flicker and at move detector progress by @bmr-cymru in #775
  • doc: add missing links, summary format and clarify defaults for output formats by @bmr-cymru in #779
  • fsdiff: catch EOFError on truncated cache file by @bmr-cymru in #782
  • fsdiff: move detector may mis-detect identical files as moves by @bmr-cymru in #784
  • fsdiff: optimize cache writing and add progress reporting by @bmr-cymru in #791
  • fsdiff: implement best-effort file type detection and "always exclude" paths by @bmr-cymru in #810

Known issues

There is one known issue for this release. Please see the wiki pages for more details, status, and workarounds:

This will be addressed in a future release.

Full Changelog: v0.5.2...v0.6.0