Lösung 1:
Wie üblich bedeuten stundenlange Fehlerbehebung nichts, aber das Posten einer Frage in einem öffentlichen Forum offenbart das Problem sofort.
Es gibt einen Fehler in Stenc 1.0.7, der einen Absturz verursacht, wenn Sie --detail
verwenden auf einem leeren Band. Ich habe versucht, den Autor mit einer Lösung zu kontaktieren, kann ihn aber nicht erreichen.
Es scheint, dass dieser Absturz das Laufwerk in einem inkonsistenten Zustand zurücklässt, in dem es sich weigert, weitere Schlüssel zu akzeptieren. Den Fehler beheben und dann stenc --detail
ausführen ohne absturz scheint das problem behoben zu sein. Ich kann jetzt beliebige Tasten beliebig oft setzen und es gab keine weiteren Probleme.
Wenn jemand anderes das gleiche Problem hat, in stenc-1.0.7/sec/scsiencrypt.cpp
in Zeile 176 steht dort delete status;
. Sie müssen direkt darunter eine neue Zeile hinzufügen, die status=NULL;
lautet . Dies behebt einen Double-Free-Fehler, der den Absturz verursacht hat.
--- a/src/scsiencrypt.cpp
+++ b/src/scsiencrypt.cpp
@@ -174,6 +174,7 @@ SSP_NBES* SSPGetNBES(string tapeDevice,bool retry){
if(status->nbes.encryptionStatus!=0x01)break;
if(moves>=MAX_TAPE_READ_BLOCKS)break;
delete status;
+ status=NULL; //double free bug fix
if(!moveTape(tapeDevice,1,true))break;
moves++;
status=SSPGetNBES(tapeDevice,false);
Lösung 2:
Beginnend mit CentOS 7.3 oder 7.4 (7.2 funktioniert) bin ich auf einen weiteren Illegal Request Error gestoßen, der zufällig erscheint, wenn ich versuche, die Verschlüsselung zu aktivieren.
Ich habe herausgefunden, dass einige Reservebits im SCSI-Befehl nicht richtig initialisiert sind. Beim Setzen von #define DEBUGSCSI
man sieht, dass diese Bits bei jedem Aufruf variieren.
Fügen Sie den folgenden memset()
hinzu in scsiencrypt.cpp
um es zu beheben:
SCSIWriteEncryptOptions():
...
SSP_KAD kad;
=> memset(&kad,0,sizeof(kad));
kad.type=0x00;
Lösung 3:
Ich verbrachte einen Tag damit, zu debuggen, warum unser Quantum LTO7 HH-Laufwerk immer wieder einen Sense-Fehler ausgab, als wir die Verschlüsselung darauf mit einem vollständig gepatchten stenc
konfigurierten 1.0.7, unabhängig von den beim Hochladen verwendeten Optionen.
Schließlich haben wir herausgefunden, dass es in unserem Fall daran liegt, dass wir beim Generieren des Schlüssels einen Schlüsseldeskriptor festlegen – einen Schlüssel mit stenc -g 256 -k test.key -kd TESTKEY
generieren und dann mit stenc -f /dev/nst0 -e on -k test.key -a 1
hochladen würde fehlschlagen, während stenc -g 256 -k test.key
dann würde das Hochladen mit demselben Befehl erfolgreich sein. Hoffe, das hilft jemandem!