badblocks hat einen Test "random". Damit muss er jedes Byte einzeln übertragen.
Also den Test ins Script eingebaut und - jede Menge badblocks! Zigtausend. Über eSATA und über USB.
Damned. Alles nur Schrott!
Dann fiel mir auf, dass da gerade Zahlen vorkommen, 4000 Blocks oder 8000 Blocks. Außerdem stellte ich fest, dass die Größe des blocks_at_once-Parameter das Ergebnis beeinflußt wenn er durch 8 teilbar ist (bs & ~7). Das sollte aber nicht mein Problem sein und schon gar nicht diese Fehler verursachen.
Also habe ich mir von sourceforge die neueste Version kompiliert und voila, Schrott wieder okay.
Die e2fsprogs fackeln übrigens nicht lange und setzen sich mit "make install" in die erste Reihe mit /sbin, /bin usw. und überschreiben ihre buggy-Vorgänger.
Jetzt läuft also der random Test genauso wie die Mustertests.
Nächste Woche schließe ich eSATA mal normgerecht mit unter 1m Gesamtlänge an.
Außerdem habe ich bei dem Script noch den hdparm-Ausdruck angepasst, denn über USB herrscht da schon die nächste Eiszeit:
drive temperature (celsius) is: under -20
drive temperature in range: yes
(zum Glück ist das drive ja bis -40 Grad spezifiziert
Und die Status-Ausgabe enthält jetzt auch die Anzahl gelesener Blocks, damit sie bequem mit der Anzahl eventueller bad blocks verglichen werden kann.
Code: Alles auswählen
Checking for bad blocks in read-write mode
From block 709549655 to 709793843
Testing with random pattern: done
Reading and comparing: done
Pass completed, 0 bad blocks found. (0/0/0 errors)
30/30: 953MB (244.189 blocks) in 64s ==> 14MB/s [0:48:58]
44 degrees Celsius
bb-test-2013-07-06.pl 37278
Wieso aber smartctl CRC-Fehler meldet und dann trotzdem sinnvolle Daten ausgibt bleibt mir weiterhin schleierhaft!