Problem with status X

All questions about how to use KryoFlux go here.
hydr0x
Posts: 104
Joined: Wed Dec 29, 2010 4:01 pm

Problem with status X

Post by hydr0x »

I think there's a bug regarding status X when it comes to retries. If a track is detected as status X after the first (or even multiple) retries, dtc currently stops retrying this track and skips to the next one. However, this is just wrong as long as the X detection is not 100% correct all the time. There should at least be an option to enforce the full number of retries (unless a definite good/green or modified/orange status is detected). This is similar to the problem of detecting tracks as unformatted just because the first read happened to be very bad.

This just happened to me and is the reason why I noticed this flaw:

First try:

Code: Select all

000a3ad4: motor=1
000a3ae8: side=1
000a3afd: track=36
000a3b11: stream=1
000a4013: stream=0
36.1    : frev: 75509, drift: 0.941 us, tfer: 363024 B/s, rpm: 300.823
36.1    : band: 1.945 us, 3.007 us, 4.012 us, 5.008 us?, 6.666 us?
36.1    : base: 1.002 us [99.184%], band: 1.945 us, 3.007 us, 4.012 us
36.1    : MFM: <error>, trk: 036, sec: 18, bad: 1, *X
36.1    : Bad sector found
000a4077: motor=1
000a408b: side=1
000a409f: track=37
000a40e5: motor=1
000a40f9: side=1
000a410d: track=36
000a4179: stream=1
000a4670: stream=0
36.1    : frev: 75534, drift: 0.516 us, tfer: 363334 B/s, rpm: 300.815
36.1    : band: 1.945 us, 3.007 us, 4.022 us, 5.025 us?, 6.693 us?
36.1    : base: 1.002 us [99.067%], band: 1.945 us, 3.007 us, 4.022 us
36.1    : MFM: <error>, trk: 036, sec: 18, mis: 1, *X
000a46d4: motor=1
000a46e8: side=0
000a46fd: track=37
000a4769: stream=1
000a4c01: stream=0
37.0    : frev: 75642, drift: 0.932 us, tfer: 362947 B/s, rpm: 300.812
37.0    : band: 1.945 us, 3.005 us, 3.956 us
37.0    : base: 1.002 us [98.841%], band: 1.945 us, 3.005 us, 3.956 us
37.0    : MFM: OK, trk: 037, sec: 18
000a4c65: motor=1
000a4c79: side=1
000a4c8e: track=37
000a4ca2: stream=1
000a518f: stream=0
37.1    : frev: 75413, drift: 0.749 us, tfer: 362715 B/s, rpm: 300.822
37.1    : band: 1.943 us, 3.008 us, 4.066 us, 4.811 us?, 6.687 us?
37.1    : base: 1.003 us [98.538%], band: 1.943 us, 3.008 us, 4.066 us
37.1    : MFM: <error>, trk: 037, sec: 18, bad: 1
37.1    : Bad sector found
000a51f3: motor=1
000a5207: side=1
000a521b: track=38
000a5261: motor=1
000a5275: side=1
000a5289: track=37
000a52f5: stream=1
000a57ed: stream=0
37.1    : frev: 75431, drift: 0.832 us, tfer: 362715 B/s, rpm: 300.817
37.1    : band: 1.943 us, 3.008 us, 4.099 us, 5.745 us?, 6.698 us?
37.1    : base: 1.003 us [98.176%], band: 1.943 us, 3.008 us, 4.099 us
37.1    : MFM: <error>, trk: 037, sec: 18, bad: 1
37.1    : Bad sector found
000a5851: motor=1
000a5865: side=1
000a5879: track=36
000a58bf: motor=1
000a58d3: side=1
000a58e7: track=37
000a5953: stream=1
000a5e4a: stream=0
37.1    : frev: 75442, drift: 0.907 us, tfer: 362715 B/s, rpm: 300.821
37.1    : band: 1.943 us, 3.008 us, 4.071 us, 5.905 us?, 6.722 us?
37.1    : base: 1.003 us [98.487%], band: 1.943 us, 3.008 us, 4.071 us
37.1    : MFM: <error>, trk: 037, sec: 18, bad: 1, *X
37.1    : Bad sector found
000a5eae: motor=1
000a5ec2: side=1
000a5ed6: track=38
000a5f1c: motor=1
000a5f30: side=1
000a5f44: track=37
000a5fb0: stream=1
000a64a5: stream=0
37.1    : frev: 75461, drift: 0.891 us, tfer: 363024 B/s, rpm: 300.820
37.1    : band: 1.943 us, 3.009 us, 4.086 us, 5.942 us?, 6.890 us?
37.1    : base: 1.003 us [98.317%], band: 1.943 us, 3.009 us, 4.086 us
37.1    : MFM: <error>, trk: 037, sec: 18, bad: 1, *X
37.1    : Bad sector found
000a6509: motor=1
000a651d: side=1
000a6531: track=36
000a6577: motor=1
000a658b: side=1
000a659f: track=37
000a660b: stream=1
000a6b01: stream=0
37.1    : frev: 75475, drift: 0.508 us, tfer: 363024 B/s, rpm: 300.817
37.1    : band: 1.942 us, 3.008 us, 4.055 us, 6.698 us?, 7.408 us?
37.1    : base: 1.003 us [98.661%], band: 1.942 us, 3.008 us, 4.055 us
37.1    : MFM: <error>, trk: 037, sec: 18, bad: 1, *X
37.1    : Bad sector found
000a6b65: motor=1
000a6b79: side=1
000a6b8d: track=38
000a6bd3: motor=1
000a6be7: side=1
000a6bfb: track=37
000a6c67: stream=1
000a7161: stream=0
37.1    : frev: 75474, drift: 0.816 us, tfer: 363024 B/s, rpm: 300.827
37.1    : band: 1.943 us, 3.008 us, 4.078 us, 4.590 us?, 6.698 us?
37.1    : base: 1.003 us [98.408%], band: 1.943 us, 3.008 us, 4.078 us
37.1    : MFM: <error>, trk: 037, sec: 18, bad: 1
37.1    : Bad sector found
000a71c5: motor=1
000a71d9: side=1
000a71ed: track=36
000a7233: motor=1
000a7247: side=1
000a725b: track=37
000a72c7: stream=1
000a77b8: stream=0
37.1    : frev: 75476, drift: 0.891 us, tfer: 363024 B/s, rpm: 300.827
37.1    : band: 1.943 us, 3.008 us, 4.055 us, 6.701 us?, 7.276 us?
37.1    : base: 1.003 us [98.659%], band: 1.943 us, 3.008 us, 4.055 us
37.1    : MFM: <error>, trk: 037, sec: 18, mis: 1, *X
000a781c: motor=1
000a7830: side=0
000a7845: track=38
000a788b: stream=1
000a7d48: stream=0
38.0    : frev: 75660, drift: 0.158 us, tfer: 363618 B/s, rpm: 300.814
38.0    : band: 1.942 us, 3.006 us, 4.064 us
38.0    : base: 1.002 us [98.587%], band: 1.942 us, 3.006 us, 4.064 us
38.0    : MFM: OK, trk: 038, sec: 18
000a7dac: motor=1
000a7dc0: side=1
000a7dd5: track=38
000a7de9: stream=1
000a82d8: stream=0
38.1    : frev: 75401, drift: 0.516 us, tfer: 362715 B/s, rpm: 300.817
38.1    : band: 1.944 us, 3.011 us, 4.194 us, 4.410 us?, 6.790 us?
38.1    : base: 1.004 us [97.096%], band: 1.944 us, 3.011 us, 4.194 us
38.1    : MFM: <error>, trk: 038, sec: 18, bad: 1
38.1    : Bad sector found
000a832a: motor=1
000a833e: side=1
000a8352: track=39
000a8398: motor=1
000a83ac: side=1
000a83c0: track=38
000a842c: stream=1
000a8934: stream=0
38.1    : frev: 75410, drift: 0.799 us, tfer: 362715 B/s, rpm: 300.830
38.1    : band: 1.944 us, 3.011 us, 4.153 us, 6.611 us?, 7.554 us?
38.1    : base: 1.004 us [97.559%], band: 1.944 us, 3.011 us, 4.153 us
38.1    : MFM: <error>, trk: 038, sec: 18, bad: 1, *X
38.1    : Bad sector found
000a8998: motor=1
000a89ac: side=1
000a89c0: track=37
000a8a06: motor=1
000a8a1a: side=1
000a8a2e: track=38
000a8a9a: stream=1
000a8f91: stream=0
38.1    : frev: 75411, drift: 0.516 us, tfer: 362715 B/s, rpm: 300.820
38.1    : band: 1.944 us, 3.010 us, 4.173 us, 4.568 us?, 6.730 us?
38.1    : base: 1.003 us [97.334%], band: 1.944 us, 3.010 us, 4.173 us
38.1    : MFM: <error>, trk: 038, sec: 18, bad: 1, *X
38.1    : Bad sector found
000a8ff5: motor=1
000a9009: side=1
000a901d: track=39
000a9063: motor=1
000a9077: side=1
000a908b: track=38
000a90f7: stream=1
000a95ed: stream=0
38.1    : frev: 75421, drift: 0.882 us, tfer: 362715 B/s, rpm: 300.818
38.1    : band: 1.944 us, 3.010 us, 4.180 us, 5.795 us?, 6.767 us?
38.1    : base: 1.003 us [97.256%], band: 1.944 us, 3.010 us, 4.180 us
38.1    : MFM: <error>, trk: 038, sec: 18, bad: 1, *X
38.1    : Bad sector found
000a9651: motor=1
000a9665: side=1
000a9679: track=37
000a96bf: motor=1
000a96d3: side=1
000a96e7: track=38
000a9753: stream=1
000a9c4a: stream=0
38.1    : frev: 75423, drift: 0.366 us, tfer: 362715 B/s, rpm: 300.828
38.1    : band: 1.944 us, 3.010 us, 4.166 us, 4.991 us?, 6.736 us?
38.1    : base: 1.003 us [97.412%], band: 1.944 us, 3.010 us, 4.166 us
38.1    : MFM: <error>, trk: 038, sec: 18, mis: 1, *X
000a9cea: motor=1
000a9cfe: side=0
000a9d13: track=39
000a9d59: stream=1
000aa1d8: stream=0
39.0    : frev: 75662, drift: 0.316 us, tfer: 363618 B/s, rpm: 300.796
39.0    : band: 1.942 us, 3.006 us, 3.988 us
39.0    : base: 1.002 us [99.157%], band: 1.942 us, 3.006 us, 3.988 us
39.0    : MFM: OK, trk: 039, sec: 18
000aa228: motor=1
000aa23c: side=1
000aa251: track=39
000aa265: stream=1
000aa768: stream=0
39.1    : frev: 75424, drift: 0.624 us, tfer: 362715 B/s, rpm: 300.821
39.1    : band: 1.944 us, 3.006 us, 4.079 us, 4.776 us?, 6.696 us?
39.1    : base: 1.002 us [98.433%], band: 1.944 us, 3.006 us, 4.079 us
39.1    : MFM: <error>, trk: 039, sec: 18, bad: 1
39.1    : Bad sector found
000aa7ce: motor=1
000aa7e2: side=1
000aa7f6: track=40
000aa83c: motor=1
000aa850: side=1
000aa864: track=39
000aa8d0: stream=1
000aadc5: stream=0
39.1    : frev: 75449, drift: 0.857 us, tfer: 362715 B/s, rpm: 300.817
39.1    : band: 1.943 us, 3.005 us, 4.081 us, 4.618 us?, 6.711 us?
39.1    : base: 1.002 us [98.408%], band: 1.943 us, 3.005 us, 4.081 us
39.1    : MFM: <error>, trk: 039, sec: 18, bad: 1
39.1    : Bad sector found
000aae2b: motor=1
000aae3f: side=1
000aae53: track=38
000aae99: motor=1
000aaead: side=1
000aaec1: track=39
000aaf2d: stream=1
000ab421: stream=0
39.1    : frev: 75474, drift: 0.142 us, tfer: 363024 B/s, rpm: 300.825
39.1    : band: 1.943 us, 2.981 us, 4.045 us, 5.769 us?, 6.695 us?
39.1    : base: 0.994 us [98.666%], band: 1.943 us, 2.981 us, 4.045 us
39.1    : MFM: <error>, trk: 039, sec: 18, mis: 1, *X
Second try:

Code: Select all

0010ac11: motor=1
0010ac25: side=1
0010ac3a: track=36
0010ac4e: stream=1
0010b13e: stream=0
36.1    : frev: 75642, drift: 0.250 us, tfer: 363644 B/s, rpm: 300.813
36.1    : band: 1.946 us, 3.001 us, 4.014 us
36.1    : base: 1.000 us [99.233%], band: 1.946 us, 3.001 us, 4.014 us
36.1    : MFM: OK, trk: 036, sec: 18
0010b1a2: motor=1
0010b1b6: side=0
0010b1cb: track=37
0010b211: stream=1
0010b6ce: stream=0
37.0    : frev: 75641, drift: 0.782 us, tfer: 363282 B/s, rpm: 300.804
37.0    : band: 1.945 us, 3.003 us, 3.961 us
37.0    : base: 1.001 us [98.915%], band: 1.945 us, 3.003 us, 3.961 us
37.0    : MFM: OK, trk: 037, sec: 18
0010b732: motor=1
0010b746: side=1
0010b75b: track=37
0010b76f: stream=1
0010bc5e: stream=0
37.1    : frev: 75624, drift: 0.674 us, tfer: 363644 B/s, rpm: 300.821
37.1    : band: 1.944 us, 3.003 us, 3.964 us
37.1    : base: 1.001 us [98.941%], band: 1.944 us, 3.003 us, 3.964 us
37.1    : MFM: OK, trk: 037, sec: 18
0010bcc2: motor=1
0010bcd6: side=0
0010bceb: track=38
0010bd31: stream=1
0010c1ef: stream=0
38.0    : frev: 75660, drift: 0.957 us, tfer: 363618 B/s, rpm: 300.797
38.0    : band: 1.944 us, 3.004 us, 4.058 us
38.0    : base: 1.001 us [98.682%], band: 1.944 us, 3.004 us, 4.058 us
38.0    : MFM: OK, trk: 038, sec: 18
0010c253: motor=1
0010c267: side=1
0010c27c: track=38
0010c290: stream=1
0010c780: stream=0
38.1    : frev: 75641, drift: 0.449 us, tfer: 363644 B/s, rpm: 300.814
38.1    : band: 1.944 us, 3.001 us, 4.187 us
38.1    : base: 1.000 us [97.286%], band: 1.944 us, 3.001 us, 4.187 us
38.1    : MFM: OK, trk: 038, sec: 18
0010c7e4: motor=1
0010c7f8: side=0
0010c80d: track=39
0010c853: stream=1
0010cd0f: stream=0
39.0    : frev: 75661, drift: 0.108 us, tfer: 363618 B/s, rpm: 300.802
39.0    : band: 1.943 us, 3.007 us, 3.974 us
39.0    : base: 1.002 us [99.008%], band: 1.943 us, 3.007 us, 3.974 us
39.0    : MFM: OK, trk: 039, sec: 18
0010cd73: motor=1
0010cd87: side=1
0010cd9c: track=39
0010cdb0: stream=1
0010d2a0: stream=0
39.1    : frev: 75643, drift: 0.191 us, tfer: 363644 B/s, rpm: 300.813
39.1    : band: 1.944 us, 3.001 us, 4.047 us
39.1    : base: 1.000 us [98.847%], band: 1.944 us, 3.001 us, 4.047 us
39.1    : MFM: OK, trk: 039, sec: 18
An inexperienced or unsuspecting user would never doubt the first dump. But even if he does, there's no guarantee a retry will help. I was just lucky that I was able to get proper reads on the second try, it could just as well still have detected X status and skipped those tracks.

User avatar
IFW
Posts: 3079
Joined: Mon Nov 08, 2010 2:42 pm

Re: Problem with status X

Post by IFW »

As long as you see a number for bad sectors (not 0), it should get retried - maybe it has already used up all retries?

hydr0x
Posts: 104
Joined: Wed Dec 29, 2010 4:01 pm

Re: Problem with status X

Post by hydr0x »

IFW wrote:As long as you see a number for bad sectors (not 0), it should get retried - maybe it has already used up all retries?
Was set to 100 retries in the log I posted. Looking at the log again I see what happened- As you can see from the log, it retries as long as bad sectors are found. However, once only missing are found, but no bad, dtc continues to the next track. This seems wrong to me and leads to this unwanted behavior.

User avatar
IFW
Posts: 3079
Joined: Mon Nov 08, 2010 2:42 pm

Re: Problem with status X

Post by IFW »

That's correct behavior since missing sectors can have many reasons and they are usually protection related.
However, there is another recent thread with a request for optionally treating missing sectors as bad; having that option should resolve this request as well.

hydr0x
Posts: 104
Joined: Wed Dec 29, 2010 4:01 pm

Re: Problem with status X

Post by hydr0x »

It's not correct in my opinion. Missing sectors should be confirmed by retries. As you can see from the example above, treating them as part of a possible copy protection upon the first read attempt is very error-prone. If all the retries confirm the same pattern of missing sectors, okay, then that's indeed likely protection. But you can't assume that after just one read.

User avatar
IFW
Posts: 3079
Joined: Mon Nov 08, 2010 2:42 pm

Re: Problem with status X

Post by IFW »

KF was originally meant for preserving copy-protected media - so retries on missing sectors would have been very annoying.
Anyway, as I said retry missing sectors option should work for this.

hydr0x
Posts: 104
Joined: Wed Dec 29, 2010 4:01 pm

Re: Problem with status X

Post by hydr0x »

IFW wrote:KF was originally meant for preserving copy-protected media - so retries on missing sectors would have been very annoying.
More annoying than creating wrong stream dumps without the user even suspecting it? :?

User avatar
IFW
Posts: 3079
Joined: Mon Nov 08, 2010 2:42 pm

Re: Problem with status X

Post by IFW »

No, of course not :)

User avatar
mr.vince
Posts: 2130
Joined: Tue Oct 05, 2010 5:48 pm

Re: Problem with status X

Post by mr.vince »

Maybe we switch it and make it the default? Since this is an edge case don't think many people would be annoyed.

User avatar
IFW
Posts: 3079
Joined: Mon Nov 08, 2010 2:42 pm

Re: Problem with status X

Post by IFW »

Starting with the next DTC release missing sectors will be treated as bad sectors and will be retried during read operations.
You will be able to disable this new behavior by specifying -tm0 as an additional parameter.

Post Reply