|
From: | Antonio Diaz Diaz |
Subject: | Re: [Bug-ddrescue] 2 Suggestions (bi-directional retry and user interruption exit code) |
Date: | Thu, 13 Feb 2014 19:00:13 +0100 |
User-agent: | Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.7.11) Gecko/20050905 |
Florian Sedivy wrote:
First of all I want to express my deepest appreciation for ddrescue. Although it follows a very simple concept (make a 1-to-1 copy), it is nevertheless continually refined year after year. Thank you very much!
You are welcome. :-)The concept may seem simple, but there is no limit to how clever (or idiotic) the algorithm may become.
I have two suggestions. First is a very simple change of the exit status after user interruption. Currently this is 0, which makes it indistinguishable from a finished run. In the context of a script and/ or loop it is very useful to catch a user interruption in order to exit the loop or script.
Ddrescue returns 0 when interrupted because I considered it an "user-finished run", not an error. But if a nonzero value is useful, I have no objection to it. Only that -1 does not seem an appropiate value, as the return value is usually an unsigned 8-bit number.
The other suggestion is about retry mode. I wish ddrescue could automatically alternate the reading direction for each pass when retrying 2 or more times.
Good idea. But no need of using negative numbers for it. I think a suffix letter is less confusing and allows for infinite alternation (-r-1i for example). From the 3 obvious candidates (a, i, r), I prefer 'i' (from invert) because 'a' is an hexadecimal digit and 'r' can be understood as reverse mode.
Also I would have liked to insert a 5 second pause between passes, but don't know how to accomplish that in a platform independent way and without messing up the read statistics.
Implementing a pause between passes is possible. For example it can be specified as a time interval after the number of retries and optional "inverting" letter. "-r20i,5s" could then make 20 alternating passes (10 forward, 10 backward) with a 5 second pause between passes.
[Prev in Thread] | Current Thread | [Next in Thread] |