|
From: | Antonio Diaz Diaz |
Subject: | Re: [Bug-ddrescue] Question & suggestion |
Date: | Tue, 06 Mar 2012 18:14:37 +0100 |
User-agent: | Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.7.11) Gecko/20050905 |
Hello David, address@hidden wrote:
I am trying to rescue a drive (120GB) which has large blocks of errors then blocks of readable data. What I want to do is to try and read a large block (1MB) of data, if it fails then skip on by 1MB and try again. So I launched ddrescue with -c 1024 (which should read 512K chunks as I understand it). But I am not seeing what I expect in syslog, I would expect to see failed to read sector @ n, followed by failed to read sector @ n+1024 in the error areas, but the sector numbers go up by varying amounts, sometimes only a few 10's of sectors. It showing 40+minutes since last successful read so it doesn't seem to be reading any good data (or is that the last time an entire block was read without error?).
The amount skipped by ddrescue on a read error (or on a slow read) is quite variable. It depends on the previous history of read successes and failures.
On the first read error, ddrescue skips 'skipbs' bytes (currently defined as "max( 65536, 16 * hardbs )"). Then it reduces the skip_size every good read and doubles it every failed read.
A change that could achieve more or less what you want without modifying the default behaviour would be to redefine 'skipbs' as "max( 65536, softbs )"
BTW, the "x minutes since last successful read" means since the last time ddrescue managed to read something, even if it was 1 single byte.
Suggestion Where a source drive goes offline during recovery is it possible to identify this from the returned error code and abort ddrescue, rather than filling the log up with failed sectors? EG on IDE I got DID_Invalid & on usb I get drive offline. I think the logic should be 'media error code' carry on, device / drive error 'abort'...
DDrescue is device-agnostic and does not even try to access low-level device error codes.
Ddrescue already stops if the drive dissapears from /dev (see example 7 in the manual), but if the drive does not dissapear, the only way of stopping it in case of total drive error is with --max-error-rate. See also the --try-again option.
Regards, Antonio.
[Prev in Thread] | Current Thread | [Next in Thread] |