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:
http://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html#Basic-concepts
"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,Antonio.