tape: fix write_media_set_label - move to correct position

This commit is contained in:
Dietmar Maurer 2020-12-18 12:07:22 +01:00
parent 0ec79339f7
commit d108b610fd
1 changed files with 17 additions and 0 deletions

View File

@ -193,6 +193,17 @@ impl LinuxTapeHandle {
Ok(()) Ok(())
} }
fn mtfsf(&mut self, count: i32) -> Result<(), Error> {
let cmd = mtop { mt_op: MTCmd::MTFSF, mt_count: count, };
unsafe {
mtioctop(self.file.as_raw_fd(), &cmd)
}.map_err(|err| format_err!("tape fsf {} failed - {}", count, err))?;
Ok(())
}
/// Set tape compression feature /// Set tape compression feature
pub fn set_compression(&self, on: bool) -> Result<(), Error> { pub fn set_compression(&self, on: bool) -> Result<(), Error> {
@ -354,6 +365,12 @@ impl TapeDriver for LinuxTapeHandle {
fn write_media_set_label(&mut self, media_set_label: &MediaSetLabel) -> Result<(), Error> { fn write_media_set_label(&mut self, media_set_label: &MediaSetLabel) -> Result<(), Error> {
let file_number = self.current_file_number()?;
if file_number != 1 {
self.rewind()?;
self.mtfsf(1)?; // skip label
}
let file_number = self.current_file_number()?; let file_number = self.current_file_number()?;
if file_number != 1 { if file_number != 1 {
bail!("write_media_set_label failed - got wrong file number ({} != 1)", file_number); bail!("write_media_set_label failed - got wrong file number ({} != 1)", file_number);