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
