Firstly, thank you so much for creating such a remarkably effective tool. I
have a friend who has a bad habit of dropping laptops, and ddrescue has
helped a ton in the past.

Apologies that this is not a bug report, but simply a few questions
regarding the phase one "copying" algorithm. I'm sure that the information
is right in front of me in the source code, but I'm unfortunately not
familiar with C++.

>From the manual, the copying phase "read[s] the non-tried parts of the
input file, marking the failed blocks as non-trimmed and skipping beyond
them, until all the rescue domain is tried."

My reading of this is that ddrescue tries to copy the number of sectors
specified in --cluster-size as a block, and that the block is marked as
non-trimmed (*) or finished (+) in the logfile depending on the result.
Why, then, do I see some blocks marked as bad-sector (-) during the copying
phase? Shouldn't that not occur until the trimming phase, when the sectors
are read individually?

Secondly, I was wondering what relationship, if any, exists between
--cluster-size and --skip-size. If ddrescue tries and fails to copy a
block, is the next position calculated from the beginning or end of the
block that just failed? If it's calculated from the beginning, is it not
true that --skip-size should always be at least as large as --cluster-size,
as otherwise you'll be skipping into an already-tried block?

Thirdly, the manual states that "slow areas are also skipped and tried
later in additional passes (before trimming)." I was wondering how this is
reflected in the logfile. In other words, if a block is copied slowly, and
ddrescue skips ahead as a result, are the skipped blocks simply left as
non-tried?

Hope I didn't ask too many questions,
Bret Quigley
_______________________________________________
Bug-ddrescue mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-ddrescue

Reply via email to