Solusi 1:
Seperti biasa, pemecahan masalah selama berjam-jam tidak berarti apa-apa, tetapi memposting pertanyaan di forum publik akan langsung mengungkapkan masalahnya.
Ada bug di stenc 1.0.7 yang menyebabkan crash jika Anda menggunakan --detail
pada kaset kosong. Saya telah mencoba menghubungi penulis dengan perbaikan tetapi tidak dapat menghubunginya.
Tampaknya crash ini membuat drive dalam keadaan tidak konsisten, di mana ia menolak untuk menerima kunci lebih lanjut. Memperbaiki bug dan kemudian menjalankan stenc --detail
tanpa crash tampaknya telah memperbaiki masalah. Sekarang saya dapat menyetel kunci berapa pun dan tidak ada masalah lebih lanjut.
Jika ada orang lain yang mengalami masalah yang sama, di stenc-1.0.7/sec/scsiencrypt.cpp
pada baris 176 tertulis delete status;
. Anda perlu menambahkan baris baru tepat di bawah ini yang bertuliskan status=NULL;
. Ini memperbaiki kesalahan bebas ganda yang menyebabkan kerusakan.
--- 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);
Solusi 2:
Dimulai dengan CentOS 7.3 atau 7.4 (7.2 berfungsi), saya menemukan Kesalahan Permintaan Ilegal lainnya yang muncul secara acak saat mencoba mengaktifkan enkripsi.
Saya menemukan bahwa beberapa bit cadangan dalam perintah SCSI tidak diinisialisasi dengan benar. Saat mengatur #define DEBUGSCSI
orang dapat melihat bahwa bit ini bervariasi pada setiap panggilan.
Tambahkan memset()
berikut di scsiencrypt.cpp
untuk memperbaikinya:
SCSIWriteEncryptOptions():
...
SSP_KAD kad;
=> memset(&kad,0,sizeof(kad));
kad.type=0x00;
Solusi 3:
Saya menghabiskan satu hari untuk men-debug mengapa drive Quantum LTO7 HH kami terus memberikan kesalahan Sense saat kami mengonfigurasi enkripsi di dalamnya menggunakan stenc
yang telah ditambal sepenuhnya 1.0.7, terlepas dari opsi yang digunakan saat mengunggahnya.
Akhirnya, kami menemukan bahwa dalam kasus kami, itu karena kami menyetel Key Descriptor saat membuat kunci – membuat kunci menggunakan stenc -g 256 -k test.key -kd TESTKEY
lalu mengunggahnya menggunakan stenc -f /dev/nst0 -e on -k test.key -a 1
akan gagal, sedangkan stenc -g 256 -k test.key
kemudian mengunggah menggunakan perintah yang sama akan berhasil. Semoga ini bisa membantu seseorang!