Hi Marco,

Marco Marques wrote:
In the Intel once a bad read sector is found I get several "Kernel ATA"
errors and ddrescue continues to try to read.
Despite the fact the HDD is now "offline and out of the system",
ddrescue tries to continue with no sucess.

After every read error ddrescue verifies that the input file is still there. If the name exists and the read() call does not set 'errno' to EINVAL, ddrescue continues reading. Maybe ddrescue should also stop on EBADF and maybe on ESPIPE and ENXIO? (I have no idea what value the device driver will return to mean that the drive is "offline and out of the system").

In the Jmicron controller I get different situation :
Although still getting the same "Kernel ATA" errors but now ddrescue
aborts with :
"ddrescue: Unaligned read error. Is sector size correct ?"

This is because in this case read() is setting 'errno' to EINVAL, which in direct mode usually means an incorrect sector size.

So in order to proceed I have to completly shutdown the system in order
to access the HDD and proceed with the data recovery .
( Rebooting does not allow the system to recover access to the HDD ...)

I think drescue can't help here.

With this specific HDD I did found some other strange behaviour where
the -i flag was being ignored ...
In one of the trials I call the "-i 500GiB" but ddrescue simply ignored
it as it started to read from a lower value

This is a bug in ddrescue. As you can read in the manual:

"Ddrescue will never try to read any data outside of the rescue domain except when unaligned direct disc access is requested (see Direct disc access). If it does, please, report it as a bug."

Please, try to reproduce the problem using the option '--log-reads=FILE', and then send me the exact command line you used and the FILE (compressed) so that I can find out what the problem is. Thanks.

Is the "-s" flag mandatory ?

No. If you do not specify a size, ddrescue reads up to the end of the file.

Before ddrescue aborts I get "read errors: yyy " but in the next
ddrescue call it becomes 0 .
it would be useful to have some kind of totaliser (failed , read error )
as also have some kind of human readable info
( number of opening tries to the file ) in the mapfile related to
previous ddrescue calls .

This requires a change of format in the mapfile and may be confusing or even annoying. For example, if "read errors:" keeps the previous value, the 'N' in '--max-read-errors=N' needs to be increased in each call. (Or the syntax of 'N' be also changed). So it needs some justification and careful thinking.

Best regards,

Reply via email to