cleanup: move tape SCSI code to src/tape/drive/lto/sg_tape/

This commit is contained in:
Dietmar Maurer 2021-04-09 11:33:33 +02:00
parent c287b28725
commit 109ccd300f
9 changed files with 81 additions and 91 deletions

View File

@ -47,6 +47,7 @@ use crate::{
LabelUuidMap, LabelUuidMap,
MamAttribute, MamAttribute,
LtoDriveAndMediaStatus, LtoDriveAndMediaStatus,
Lp17VolumeStatistics,
}, },
tape::restore::{ tape::restore::{
fast_catalog_restore, fast_catalog_restore,
@ -71,7 +72,6 @@ use crate::{
drive::{ drive::{
TapeDriver, TapeDriver,
LtoTapeHandle, LtoTapeHandle,
Lp17VolumeStatistics,
open_lto_tape_device, open_lto_tape_device,
media_changer, media_changer,
required_media_changer, required_media_changer,

View File

@ -223,3 +223,62 @@ pub struct LtoDriveAndMediaStatus {
#[serde(skip_serializing_if="Option::is_none")] #[serde(skip_serializing_if="Option::is_none")]
pub medium_wearout: Option<f64>, pub medium_wearout: Option<f64>,
} }
#[api()]
/// Volume statistics from SCSI log page 17h
#[derive(Default, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub struct Lp17VolumeStatistics {
/// Volume mounts (thread count)
pub volume_mounts: u64,
/// Total data sets written
pub volume_datasets_written: u64,
/// Write retries
pub volume_recovered_write_data_errors: u64,
/// Total unrecovered write errors
pub volume_unrecovered_write_data_errors: u64,
/// Total suspended writes
pub volume_write_servo_errors: u64,
/// Total fatal suspended writes
pub volume_unrecovered_write_servo_errors: u64,
/// Total datasets read
pub volume_datasets_read: u64,
/// Total read retries
pub volume_recovered_read_errors: u64,
/// Total unrecovered read errors
pub volume_unrecovered_read_errors: u64,
/// Last mount unrecovered write errors
pub last_mount_unrecovered_write_errors: u64,
/// Last mount unrecovered read errors
pub last_mount_unrecovered_read_errors: u64,
/// Last mount bytes written
pub last_mount_bytes_written: u64,
/// Last mount bytes read
pub last_mount_bytes_read: u64,
/// Lifetime bytes written
pub lifetime_bytes_written: u64,
/// Lifetime bytes read
pub lifetime_bytes_read: u64,
/// Last load write compression ratio
pub last_load_write_compression_ratio: u64,
/// Last load read compression ratio
pub last_load_read_compression_ratio: u64,
/// Medium mount time
pub medium_mount_time: u64,
/// Medium ready time
pub medium_ready_time: u64,
/// Total native capacity
pub total_native_capacity: u64,
/// Total used native capacity
pub total_used_native_capacity: u64,
/// Write protect
pub write_protect: bool,
/// Volume is WORM
pub worm: bool,
/// Beginning of medium passes
pub beginning_of_medium_passes: u64,
/// Middle of medium passes
pub middle_of_tape_passes: u64,
/// Volume serial number
pub serial: String,
}

View File

@ -38,15 +38,13 @@ use crate::{
MamAttribute, MamAttribute,
LtoDriveAndMediaStatus, LtoDriveAndMediaStatus,
LtoTapeDrive, LtoTapeDrive,
Lp17VolumeStatistics,
}, },
tape::{ tape::{
TapeRead, TapeRead,
TapeWrite, TapeWrite,
drive::{ drive::{
TapeDriver, TapeDriver,
TapeAlertFlags,
Lp17VolumeStatistics,
mam_extract_media_usage,
}, },
file_formats::{ file_formats::{
PROXMOX_BACKUP_MEDIA_SET_LABEL_MAGIC_1_0, PROXMOX_BACKUP_MEDIA_SET_LABEL_MAGIC_1_0,

View File

@ -8,6 +8,18 @@ use anyhow::{bail, format_err, Error};
use endian_trait::Endian; use endian_trait::Endian;
use nix::fcntl::{fcntl, FcntlArg, OFlag}; use nix::fcntl::{fcntl, FcntlArg, OFlag};
mod encryption;
pub use encryption::*;
mod volume_statistics;
pub use volume_statistics::*;
mod tape_alert_flags;
pub use tape_alert_flags::*;
mod mam;
pub use mam::*;
use proxmox::{ use proxmox::{
sys::error::SysResult, sys::error::SysResult,
tools::io::{ReadExt, WriteExt}, tools::io::{ReadExt, WriteExt},
@ -16,6 +28,7 @@ use proxmox::{
use crate::{ use crate::{
api2::types::{ api2::types::{
MamAttribute, MamAttribute,
Lp17VolumeStatistics,
}, },
tape::{ tape::{
BlockRead, BlockRead,
@ -25,14 +38,6 @@ use crate::{
BlockedWriter, BlockedWriter,
BlockedReader, BlockedReader,
}, },
drive::{
TapeAlertFlags,
Lp17VolumeStatistics,
read_mam_attributes,
read_tape_alert_flags,
read_volume_statistics,
set_encryption,
},
}, },
tools::sgutils2::{ tools::sgutils2::{
SgRaw, SgRaw,

View File

@ -11,7 +11,7 @@ use crate::{
api2::types::MamAttribute, api2::types::MamAttribute,
tools::sgutils2::SgRaw, tools::sgutils2::SgRaw,
tape::{ tape::{
drive::TapeAlertFlags, drive::lto::TapeAlertFlags,
}, },
}; };

View File

@ -2,15 +2,14 @@ use std::io::Read;
use std::os::unix::io::AsRawFd; use std::os::unix::io::AsRawFd;
use anyhow::{bail, format_err, Error}; use anyhow::{bail, format_err, Error};
use serde::{Serialize, Deserialize};
use endian_trait::Endian; use endian_trait::Endian;
use proxmox::{ use proxmox::tools::io::ReadExt;
api::api,
tools::io::ReadExt,
};
use crate::tools::sgutils2::SgRaw; use crate::{
api2::types::Lp17VolumeStatistics,
tools::sgutils2::SgRaw,
};
/// SCSI command to query volume statistics /// SCSI command to query volume statistics
/// ///
@ -54,66 +53,6 @@ struct LpParameterHeader {
parameter_len: u8, parameter_len: u8,
} }
#[api()]
/// Volume statistics from SCSI log page 17h
#[derive(Default, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub struct Lp17VolumeStatistics {
/// Volume mounts (thread count)
pub volume_mounts: u64,
/// Total data sets written
pub volume_datasets_written: u64,
/// Write retries
pub volume_recovered_write_data_errors: u64,
/// Total unrecovered write errors
pub volume_unrecovered_write_data_errors: u64,
/// Total suspended writes
pub volume_write_servo_errors: u64,
/// Total fatal suspended writes
pub volume_unrecovered_write_servo_errors: u64,
/// Total datasets read
pub volume_datasets_read: u64,
/// Total read retries
pub volume_recovered_read_errors: u64,
/// Total unrecovered read errors
pub volume_unrecovered_read_errors: u64,
/// Last mount unrecovered write errors
pub last_mount_unrecovered_write_errors: u64,
/// Last mount unrecovered read errors
pub last_mount_unrecovered_read_errors: u64,
/// Last mount bytes written
pub last_mount_bytes_written: u64,
/// Last mount bytes read
pub last_mount_bytes_read: u64,
/// Lifetime bytes written
pub lifetime_bytes_written: u64,
/// Lifetime bytes read
pub lifetime_bytes_read: u64,
/// Last load write compression ratio
pub last_load_write_compression_ratio: u64,
/// Last load read compression ratio
pub last_load_read_compression_ratio: u64,
/// Medium mount time
pub medium_mount_time: u64,
/// Medium ready time
pub medium_ready_time: u64,
/// Total native capacity
pub total_native_capacity: u64,
/// Total used native capacity
pub total_used_native_capacity: u64,
/// Write protect
pub write_protect: bool,
/// Volume is WORM
pub worm: bool,
/// Beginning of medium passes
pub beginning_of_medium_passes: u64,
/// Middle of medium passes
pub middle_of_tape_passes: u64,
/// Volume serial number
pub serial: String,
}
fn decode_volume_statistics(data: &[u8]) -> Result<Lp17VolumeStatistics, Error> { fn decode_volume_statistics(data: &[u8]) -> Result<Lp17VolumeStatistics, Error> {

View File

@ -2,21 +2,9 @@
mod virtual_tape; mod virtual_tape;
mod tape_alert_flags;
pub use tape_alert_flags::*;
mod volume_statistics;
pub use volume_statistics::*;
mod encryption;
pub use encryption::*;
mod lto; mod lto;
pub use lto::*; pub use lto::*;
mod mam;
pub use mam::*;
use std::os::unix::io::AsRawFd; use std::os::unix::io::AsRawFd;
use std::path::PathBuf; use std::path::PathBuf;
@ -57,6 +45,7 @@ use crate::{
TapeWrite, TapeWrite,
TapeRead, TapeRead,
MediaId, MediaId,
drive::lto::TapeAlertFlags,
file_formats::{ file_formats::{
PROXMOX_BACKUP_MEDIA_LABEL_MAGIC_1_0, PROXMOX_BACKUP_MEDIA_LABEL_MAGIC_1_0,
PROXMOX_BACKUP_MEDIA_SET_LABEL_MAGIC_1_0, PROXMOX_BACKUP_MEDIA_SET_LABEL_MAGIC_1_0,