]> git.proxmox.com Git - proxmox-backup.git/commitdiff
tape: status - show thape alert flags
authorDietmar Maurer <dietmar@proxmox.com>
Mon, 4 Jan 2021 12:15:30 +0000 (13:15 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Mon, 4 Jan 2021 12:15:30 +0000 (13:15 +0100)
src/api2/types/tape/drive.rs
src/bin/proxmox-tape.rs
src/tape/drive/linux_tape.rs

index d2e565a1ed4a993ce4081cbcecbdec2201e251de..f42e3da0574eb6f2f66f5ecc3b568d27dcc96563 100644 (file)
@@ -179,6 +179,9 @@ pub struct LinuxDriveAndMediaStatus {
     pub density: Option<TapeDensity>,
     /// Status flags
     pub status: String,
+    /// Tape Alert Flags
+    #[serde(skip_serializing_if="Option::is_none")]
+    pub alert_flags: Option<String>,
     /// Current file number
     #[serde(skip_serializing_if="Option::is_none")]
     pub file_number: Option<u32>,
index 8d762e2d565167ae882e02b63330fc54f3d968c2..23ea17dc89c9ad88194a642886bab9ad45cc6efd 100644 (file)
@@ -592,6 +592,7 @@ fn status(
         .column(ColumnConfig::new("blocksize"))
         .column(ColumnConfig::new("density"))
         .column(ColumnConfig::new("status"))
+        .column(ColumnConfig::new("alert-flags"))
         .column(ColumnConfig::new("file-number"))
         .column(ColumnConfig::new("block-number"))
         .column(ColumnConfig::new("manufactured").renderer(render_epoch))
index fcf4c7ef3a3498e05a3cadf669e18f2498752b75..b2e3d69ec5da266f769090b705b8693ceb74c82e 100644 (file)
@@ -209,10 +209,15 @@ impl LinuxTapeHandle {
 
         let drive_status = self.get_drive_status()?;
 
+        let alert_flags = self.tape_alert_flags()
+            .map(|flags| format!("{:?}", flags))
+            .ok();
+
         let mut status = LinuxDriveAndMediaStatus {
             blocksize: drive_status.blocksize,
             density: drive_status.density,
             status: format!("{:?}", drive_status.status),
+            alert_flags,
             file_number: drive_status.file_number,
             block_number: drive_status.block_number,
             manufactured: None,
@@ -222,13 +227,14 @@ impl LinuxTapeHandle {
 
         if  drive_status.tape_is_ready() {
 
-            let mam = self.cartridge_memory()?;
+            if let Ok(mam) = self.cartridge_memory() {
 
-            let usage = mam_extract_media_usage(&mam)?;
+                let usage = mam_extract_media_usage(&mam)?;
 
-            status.manufactured = Some(usage.manufactured);
-            status.bytes_read = Some(usage.bytes_read);
-            status.bytes_written = Some(usage.bytes_written);
+                status.manufactured = Some(usage.manufactured);
+                status.bytes_read = Some(usage.bytes_read);
+                status.bytes_written = Some(usage.bytes_written);
+            }
         }
 
         Ok(status)