ขอบคุณ @kasperd ฉันได้ทำการตรวจสอบเพิ่มเติมและนี่ก็เป็นปัญหา ปรากฎว่าคุณสมบัตินี้เรียกว่า EWEOM (การเตือนล่วงหน้าสิ้นสุดสื่อ) และหมายถึงเครื่องหมายที่วางอยู่บนเทปโดยผู้ผลิตเทปดังนั้นมันจึงไม่ใช่ไดรฟ์ที่ติดตามว่าสปูลเทปมีจำนวนเท่าใด
ฉันเขียนโปรแกรมปะแก้สำหรับmbuffer
โปรแกรมที่ฉันใช้เพื่อเขียนลงบนเทปและแน่นอนว่า ณ จุดที่ฉันถึงจุดสิ้นสุดของเทปฉันพบ ENOSPC
ข้อผิดพลาดในการสลับwrite()
สาย แต่ฉันสามารถเขียนข้อมูลเพิ่มเติมได้ ในกรณีของฉันข้อมูลค่อนข้างมาก - ระหว่าง 8 และ 19 GiB ขึ้นอยู่กับการบีบอัดข้อมูลที่ไม่บีบอัดได้มาก
น่าสนใจหลังจากถึงเครื่องหมาย EWEOM ความเร็วในการเขียนเทปจะลดลงอย่างมาก มันเกือบจะลดลงครึ่งหนึ่งจาก 80MB / วินาทีลงเหลือประมาณ 47MB / วินาที สิ่งนี้ดูเหมือนจะไม่เป็นปัญหาข้อมูลเนื่องจากไดรฟ์ได้รับการบำรุงรักษา 80MB / วินาทีเป็นเวลาหลายชั่วโมงก่อนถึงจุดนี้ คุณสามารถได้ยินเสียงมอเตอร์ไดรฟ์ที่ทำงานด้วยความเร็วที่ช้าลงและการเขียนทับเทปทั้งหมดเพื่อให้ส่วนนี้ถูกเขียนใหม่ไม่ได้เพิ่มความเร็ว (ดังนั้นจึงไม่ใช่กรณีของการเขียนครั้งแรกที่ช้าลงเหมือนตอนเริ่มต้น เทปใหม่)
ฉันไม่สามารถหาเอกสารใด ๆ เกี่ยวกับเมื่อเครื่องหมายของ EWEOM ควรปรากฏบนเทปดังนั้นฉันไม่แน่ใจว่าเป็นมาตรฐานหรือไม่ ทั้งหมดที่ฉันสามารถหาได้คือการอ้างอิงที่คลุมเครือกับ LTO-6/7 ไดรฟ์ซึ่งเพิ่มขึ้นเป็น 5% ของพื้นที่เทปซึ่งดูเหมือนจะมาก บางทีนี่อาจเป็นการอนุญาตให้ล้างบัฟเฟอร์ขนาดใหญ่เนื่องจากความเร็วในการเขียนสูงของเทป
เท่าที่ลินุกซ์ API ไปบรรทัดที่เกี่ยวข้องอยู่ในst.c
รหัสที่มาขับเทป SCSIและคำอธิบายของพฤติกรรมนี้อยู่ในเอกสารของไดรเวอร์st