speed47 / dvdisaster

A tool providing additional ECC protection for optical media (unofficial version)
https://dvdisaster.jcea.es
GNU General Public License v3.0
275 stars 20 forks source link

Clarify the consequences of end user repairing with a mismatched defect management option #98

Closed jjr90 closed 1 month ago

jjr90 commented 1 month ago

Hello,

So the documentation and program basically say "don't forget!", with no explanation of the risks or failure modes involved.

We can't control who will be repairing the discs, or whether the creation docs will be kept with them, or even my own future memory (some discs will have DM and some won't).

Q: What can be said about attempting to repair an augmented image with the wrong state of --no-bdr-defect-management?

I did a naive test of all 4 combinations (mismatching both ways x with/without a bad sector), and it "worked", which obviously won't extrapolate to N bad sectors, and empirical tests don't prove things anyway..

-> It would be really valuable to know which of the following statements are accurate:

1) dvdisaster data carries enough self-validation that it's safe to attempt repair both with and without --no-bdr-defect-management, regardless of the flag's state on creation. i.e. The image won't be corrupted by specifying the wrong mode. 2) Deficiency A: Repairing a DM image in no-DM mode may fail to detect or repair some bad sectors. 3) Deficiency B: Repairing a no-DM image in DM mode may fail to detect or repair some bad sectors. 4) False positive A: Repairing a DM image in no-DM mode may report sectors as bad that are actually good. 5) False positive B: Repairing a no-DM image in DM mode may report sectors as bad that are actually good.

It would be really interesting if (1) is true and (2) is false (as if "promising it extra data" has no effect on recovery if that data doesn't exist), because then it's optimal to ALWAYS repair with --no-bdr-defect-management unless the user is 100% sure of the right mode. (I assume there's at least a time cost to the larger size.)

If (1) is true and (4-5) are both false (i.e. dvdisaster will never report a bad sector unless it's actually bad), then I can at least modify dvdisaster to:

If only (1) is true, then I'll have to make the suggestion to the user regardless of the outcome. If (1) is false, well.. that would be scary...

Sorry this was so long.. thanks for your time,

jjr90 commented 1 month ago

I'm going to close this is as "answered by source code" and delete some of my premature comments.

If anyone else has this issue, you can reopen it and I'll take time to fill it in.

Also, auto-detection by cycling both modes is possible to do cleanly and seems to work reliably under tests.

I don't want to do a PR unless anyone wants it, as I had to update the codebase to Linux Kernel style for my own sanity using clang-format, which means anything I submit would touch the entire file w/o maintaining separate branches. (Sorry)