From 0.9.3 to 0.9.4, Massimiliano Ghilardi 2012-04-15:
  all:
    * testing IN PROGRESS on 'nilfs2' and 'ocfs2' file systems
    * some changes to compile on FreeBSD - still NOT finished!

  fsattr:
    * new program, used for fallocate() speedup on ext4 file system.
      it removes the 'fallocate' flag (actually named 'uninit')
      from all files inside an unmounted ext4 file system

  fsmove:
    * added option --io=prealloc to fallocate() target files
      instead of moving them from source to target.
      it's much faster and 100% safe, unlike default --io=posix
      that incrementally moves source files during work
      and cannot move them back in case of 'disk full' errors.

  fsremap:
    * UNFINISHED: added options --io=prealloc, --mount-point-device=DIR
      and --mount-point-loop-file=DIR
      used together with fsmove option --io=prealloc:
      in addition to the normal setup (i.e. scanning loop file and zero file)
      they assume target files (inside loop file) are preallocated
      and their contents still reside in the corresponding source
      files (inside device)
    * FIXME: support replaying preallocation


From 0.9.2 to 0.9.3, Massimiliano Ghilardi 2012-03-27:
  fsremap:
    * added automatic checkpointing to persistence file
    * new option '--resume-job=NUMBER' to resume interrupted jobs
      from persistence file. works even if job was interrupted
      by power failure, kill -9, or similar catastrophic events
    * default directory for secondary storage and log files is now
      /var/tmp/fstransform/fsremap.job.<N>
      to better conform with FHS
    * changed all options '--OPTION ARG' to '--OPTION=ARG'
      to conform with GNU guidelines
    * renamed option '--umount-cmd CMD' to '--cmd-umount=CMD'
      to use same convention as fstransform

  fstransform:
    * added cleanup in case of errors
    * now works also if device to transform is not mounted
    * default log file is now /var/tmp/fstransform/fstransform.log.$$
      to better conform with FHS
    * added options '--list-source-file-systems' and '--list-target-file-systems'
      simplifies integration with other programs (gparted...) as they do not need
      to guess which file systems combinations are supported by fstransform


From 0.9.1 to 0.9.2, Massimiliano Ghilardi 2012-03-08:
  all:
    * added explicit copyright statement to all source files

  fsmove:
    * added program description to '--help' output

  fsremap:
    * added check that last device block to be written is actually writeable.
      Reason: at least on Linux, if a filesystem is smaller than its
      containing device, it often limits to its own length the writable blocks
      in the device.
    * added program description to '--help' output

  fstransform:
    * renamed 'fstransform.sh' to 'fstransform'
    * added check that source and target file systems are among the
      tested ones: minix ext2 ext3 ext4 reiserfs jfs xfs
    * added options '--help' and '--force-untested-file-systems'


From 0.9.0 to 0.9.1, Massimiliano Ghilardi 2012-02-13:
  fsremap:
    * fixed build errors on some Linux flavors (typically rpm-based ones)
    * fixed internal error on 32-bit platforms while remapping devices > 4GB

  fstransform:
    * option '--show-time' is now enabled by default,
      use '--show-time=no' to disable


From 0.3.7 to 0.9.0, Massimiliano Ghilardi 2012-02-06:
  all:
    * replaced Eclipse-generated makefiles with automake+autoconf ones.
      new 'configure' script also autodetects required C functions,
      headers and types

    * added warning to README about transforming to 'xfs'
      a device more than 90% full

  fsmove:
    * added progress report and estimated time left

  fsremap:
    * zero-file is now optional. if not specified, fsremap performs
      an irreversible remapping

  fstransform:
    * added option '--show-time' to print time-of-day before each message
    * added option '--irreversible' to skip creating zero-file

  fstransform and fsremap:
    * added option '--no-questions' to run automatically without asking
      any confirmation.

    * added safety checks for devices with odd-sized last block:
      now fstransform creates a loop-file with length = device size
      _rounded_down_ to file-system block size,
      and fsremap refuses to run if loop-file length exceeds device size
      _rounded_down_ to file-system block size


From 0.3.6 to 0.3.7, Massimiliano Ghilardi 2012-01-21:
  fsremap:
    * fixed a bug in the routine to show progress percentage.
      This bug cause fsremap to crash while remapping the device,
      leaving your data UNUSABLE.

      For this reason, PLEASE DO NOT USE FSTRANSFORM VERSION 0.3.6


From 0.2.8 to 0.3.6, Massimiliano Ghilardi 2012-01-21:
  fsmove:
    * added periodic checks for enough free space in both the source
      and target file-systems

  fsremap:
    * improved the routine to show progress percentage

      This routine was found to be bugged and crash while remapping
      the device, leaving your data UNUSABLE.

      For this reason, PLEASE DO NOT USE FSTRANSFORM VERSION 0.3.6

    * added check and workaround for device lengths not multiples of block size
    * added check and workaround for incomplete information sometimes returned
      by ioctl(FS_IOC_FIEMAP)

  fstransform:
    * added script 'fstransform.sh', it executes automatically
      all the steps needed to perform a full file-system transformation
