@Kasperd sayesinde daha fazla araştırma yaptım ve bu gerçekten problemdi. Bu özelliğe EWEOM (Ortamın Erken Uyarı Sonu) denir ve bant üreticisi tarafından kasete yerleştirilen bir işaretçiyi ifade eder, bu nedenle bantın ne kadar biriktirildiğini takip eden sürücü değildir.
mbuffer
Kasete yazmak için kullandığım program için bir yama yazdım ve kasetin sonuna ulaştığım noktada ENOSPC
, alternatif write()
aramalarda hatalar alıyorum, ancak daha fazla veri yazmaya devam edebilirim. Benim durumumda, çok daha fazla veri - çok sıkıştırılamayan verilerimin sıkıştırılmasına bağlı olarak 8 ile 19 GiB arasında.
İlginçtir ki, EWEOM işaretine ulaşıldıktan sonra, kaset yazma hızı önemli ölçüde düşer. Neredeyse 80MB / sn'den yaklaşık 47MB / sn'ye kadar yarıya iner. Sürücü bu noktadan önceki saatlerde 80MB / sn'yi koruduğu için bu bir veri sorunu gibi görünmüyor. Tahrik motorunun daha düşük bir hızda çalıştığını duyabilir ve tüm bant üzerinden yeniden yazabilirsiniz, böylece bu bölüm yeniden yazılır, hızı arttırmaz (bu nedenle, ilk yazma işleminin başlangıcındaki gibi daha yavaş olması bir durum değildir yeni bant.)
EWEOM işaretçisinin bantta ne zaman görünmesi gerektiği hakkında herhangi bir belge bulamıyorum, bu yüzden standart olup olmadığından emin değilim. Bulabildiğim tek şey, LTO-6/7 sürücülerine belirsiz bir referanstır, bu da bant alanının% 5'i kadar arttı, ki bu çok gibi görünüyor. Belki de bu, bandın yüksek yazma hızı nedeniyle büyük arabelleklerin temizlenmesine izin vermektir.
Linux API'sine gelince, ilgili satır st.c
SCSI teyp sürücüsü kaynak kodundadır ve bu davranışın açıklaması st
sürücü belgelerinde yer almaktadır .