Řešení 1:
Hodiny odstraňování problémů jako obvykle nic neznamenají, ale odeslání dotazu na veřejné fórum okamžitě odhalí problém.
Ve stenc 1.0.7 je chyba, která způsobuje pád, pokud použijete --detail
na prázdnou pásku. Snažil jsem se kontaktovat autora s opravou, ale nemohu ho sehnat.
Zdá se, že tento pád zanechá disk v nekonzistentním stavu, kdy odmítá přijmout další klíče. Oprava chyby a spuštění stenc --detail
zdá se, že problém vyřešil bez pádu. Nyní mohu nastavit libovolné klíče libovolný počet opakování a nebyly žádné další problémy.
Pokud má někdo jiný stejný problém, v stenc-1.0.7/sec/scsiencrypt.cpp
na řádku 176 je uvedeno delete status;
. Přímo pod to musíte přidat nový řádek, který zní status=NULL;
. Toto opravuje dvojitou chybu způsobující selhání.
--- 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);
Řešení 2:
Počínaje CentOS 7.3 nebo 7.4 (7.2 funguje) jsem narazil na další chybu Illegal Request Error, která se objevuje náhodně při pokusu o povolení šifrování.
Zjistil jsem, že některé rezervní bity v příkazu SCSI nejsou správně inicializovány. Při nastavení #define DEBUGSCSI
je vidět, že tyto bity se při každém volání liší.
Přidejte následující memset()
v scsiencrypt.cpp
jak to opravit:
SCSIWriteEncryptOptions():
...
SSP_KAD kad;
=> memset(&kad,0,sizeof(kad));
kad.type=0x00;
Řešení 3:
Strávil jsem den laděním, proč náš disk Quantum LTO7 HH neustále hlásil chybu Sense, když jsme na něm konfigurovali šifrování pomocí plně opraveného stenc
1.0.7, bez ohledu na možnosti použité při nahrávání.
Nakonec jsme přišli na to, že v našem případě je to proto, že jsme při generování klíče nastavili popisovač klíče – generování klíče pomocí stenc -g 256 -k test.key -kd TESTKEY
a poté jej nahrajte pomocí stenc -f /dev/nst0 -e on -k test.key -a 1
selže, zatímco stenc -g 256 -k test.key
pak by nahrání pomocí stejného příkazu bylo úspěšné. Doufám, že to někomu pomůže!