by Lawrence Rogers (2017-02-03):
- Update to 1.22-1
The option '-X, --exit-on-error' has been replaced by
'-X, --max-read-errors'. This introduces a backward incompatibility with
versions 1.19 to 1.21 in that option '-X' now requires an argument. The
long form '--exit-on-error' is still accepted, but will be removed in a
future version of ddrescue.
The new option '--max-slow-reads' has been added. It makes ddrescue exit
with status 1 if too many slow reads are encountered during the copying
The new option '--delay-slow' has been added. It sets the initial delay
before ddrescue starts checking for slow reads.
The new option '--reset-slow' has been added. It resets the slow reads
counter every time the read rate reaches or surpasses '--min-read-rate'.
The new option '--log-events' has been added. It logs all significant
events in a file, indicating the time, the percentage rescued, and a
message describing the event.
The new option '--mapfile-interval' has been added. It changes the
interval at which ddrescue saves and fsyncs the mapfile.
The new option '--pause-on-error' has been added. It makes (or
simulates) a pause after each read error.
The option '--pause' has been renamed to '--pause-on-pass'.
The option '--max-errors' has been renamed to '--max-bad-areas'.
Ddrescue now shows the number of read errors, the error rate and (if a
--min-read-rate is specified) the number of slow reads.
The 'current_pass' field has been added to the mapfile. This allows the
copying phase to resume instead of restart from pass 1. It also allows
the retrying phase to resume in the same direction it was interrupted.
Two new passes have been added to the copying phase.
Sometimes there is a significant difference in read speed and likelihood
of data recovery between blocks skipped due to slow areas, and blocks
skipped due to read failures. Two passes have been inserted after pass 2
that read the blocks skipped due to slow areas (if any) before the final
sweeping pass (which now is pass 5).
The '--cpass' option now accepts ranges of passes; '--cpass=1-4'.
The option '-K, --skip-size' now accepts sizes up to 1 EiB.
The initial skip size now defaults to (infile_size / 100_000) with a
minimum value of 64 KiB.
The minimum read rate of good non-tried areas is no longer reduced after
each pass, and now only affects passes 1 and 2.
During the trimming phase, if any edge of a non-trimmed block is already
adjacent to a bad sector, it is considered as already trimmed and is not
The 's' multiplier may now be appended to any of the other multipliers.
For example, 'ks' = kilosectors (1000 * sector_size), or
'Kis' = kibisectors (1024 * sector_size).
Options '--ask' and '-vv' now always show file size, even if model and
serial number are also shown.
Device model and serial number are now shown with '--ask' or '-vv' on
Cygwin. (Patch written by Christian Franke).
The tried size (non-trimmed + non-scraped + bad-sector sizes) is now
shown in the initial status.
The new option '-A, --annotate-mapfile' has been added to ddrescuelog.
It adds comments to a mapfile containing the positions and sizes of the
blocks in human-readable form.
by Lawrence Rogers (2016-03-18):
- Update to 1.21-1
* Version 1.21 released.
* mapbook.cc (Mapbook): Fix iobuf alignment.
(Reported by Heikki Tauriainen).
* Removed short option names '-1' and '-2'.
* Allow only regular files for '--log-rates' and '--log-reads'.
* Option '-D, --odirect' now works also in fill mode.
* rescuebook.cc (copy_block): Return 1 on unaligned read error.
Set e_code on any error if verify_on_error.
* Option '-X, --exit-on-error' has been extended to all phases.
* Assigned short name '-Z' to option '--max-read-rate'.
* mapbook.cc (update_mapfile): 'fsync' the mapfile every 5 minutes.
* Rescuebook: Show full range of sizes from non-tried to finished.
* rescuebook.cc (show_status): Show percent rescued.
* configure: Avoid warning on some shells when testing for g++.
* Makefile.in: Detect the existence of install-info.