tape: cleanup - move tape file readers/writers into src/tape/file_formats folder

This commit is contained in:
Dietmar Maurer 2021-02-04 07:58:34 +01:00
parent a80d72f999
commit f47e035721
12 changed files with 33 additions and 27 deletions

View File

@ -57,7 +57,6 @@ use crate::{
TapeRead, TapeRead,
MediaId, MediaId,
MediaCatalog, MediaCatalog,
ChunkArchiveDecoder,
MediaPool, MediaPool,
Inventory, Inventory,
file_formats::{ file_formats::{
@ -67,6 +66,7 @@ use crate::{
PROXMOX_BACKUP_CONTENT_HEADER_MAGIC_1_0, PROXMOX_BACKUP_CONTENT_HEADER_MAGIC_1_0,
PROXMOX_BACKUP_CHUNK_ARCHIVE_MAGIC_1_0, PROXMOX_BACKUP_CHUNK_ARCHIVE_MAGIC_1_0,
MediaContentHeader, MediaContentHeader,
ChunkArchiveDecoder,
}, },
drive::{ drive::{
TapeDriver, TapeDriver,

View File

@ -45,8 +45,8 @@ use proxmox_backup::{
complete_media_set_uuid, complete_media_set_uuid,
file_formats::{ file_formats::{
PROXMOX_BACKUP_CONTENT_HEADER_MAGIC_1_0, PROXMOX_BACKUP_CONTENT_HEADER_MAGIC_1_0,
PROXMOX_BACKUP_CONTENT_NAME,
MediaContentHeader, MediaContentHeader,
proxmox_tape_magic_to_text,
}, },
}, },
}; };
@ -565,7 +565,7 @@ fn debug_scan(param: Value) -> Result<(), Error> {
Ok(header) => { Ok(header) => {
if header.magic != PROXMOX_BACKUP_CONTENT_HEADER_MAGIC_1_0 { if header.magic != PROXMOX_BACKUP_CONTENT_HEADER_MAGIC_1_0 {
println!("got MediaContentHeader with wrong magic: {:?}", header.magic); println!("got MediaContentHeader with wrong magic: {:?}", header.magic);
} else if let Some(name) = PROXMOX_BACKUP_CONTENT_NAME.get(&header.content_magic) { } else if let Some(name) = proxmox_tape_magic_to_text(&header.content_magic) {
println!("got content header: {}", name); println!("got content header: {}", name);
println!(" uuid: {}", header.content_uuid()); println!(" uuid: {}", header.content_uuid());
println!(" ctime: {}", strftime_local("%c", header.ctime)?); println!(" ctime: {}", strftime_local("%c", header.ctime)?);

View File

@ -40,15 +40,13 @@ use crate::{
}, },
file_formats::{ file_formats::{
PROXMOX_TAPE_BLOCK_SIZE, PROXMOX_TAPE_BLOCK_SIZE,
PROXMOX_BACKUP_MEDIA_SET_LABEL_MAGIC_1_0,
MediaSetLabel, MediaSetLabel,
MediaContentHeader, MediaContentHeader,
PROXMOX_BACKUP_MEDIA_SET_LABEL_MAGIC_1_0,
},
helpers::{
BlockedReader, BlockedReader,
BlockedWriter, BlockedWriter,
}, },
} },
}; };
fn run_sg_tape_cmd(subcmd: &str, args: &[&str], fd: RawFd) -> Result<String, Error> { fn run_sg_tape_cmd(subcmd: &str, args: &[&str], fd: RawFd) -> Result<String, Error> {

View File

@ -30,12 +30,12 @@ use crate::{
MediaSetLabel, MediaSetLabel,
MediaContentHeader, MediaContentHeader,
PROXMOX_BACKUP_MEDIA_SET_LABEL_MAGIC_1_0, PROXMOX_BACKUP_MEDIA_SET_LABEL_MAGIC_1_0,
BlockedReader,
BlockedWriter,
}, },
helpers::{ helpers::{
EmulateTapeReader, EmulateTapeReader,
EmulateTapeWriter, EmulateTapeWriter,
BlockedReader,
BlockedWriter,
}, },
}, },
}; };

View File

@ -1,4 +1,17 @@
//! File format definitions for data written to tapes //! File format definitions and implementations for data written to
//! tapes
mod blocked_reader;
pub use blocked_reader::*;
mod blocked_writer;
pub use blocked_writer::*;
mod chunk_archive;
pub use chunk_archive::*;
mod snapshot_archive;
pub use snapshot_archive::*;
use std::collections::HashMap; use std::collections::HashMap;
@ -33,8 +46,8 @@ pub const PROXMOX_BACKUP_CHUNK_ARCHIVE_ENTRY_MAGIC_1_0: [u8; 8] = [72, 87, 109,
pub const PROXMOX_BACKUP_SNAPSHOT_ARCHIVE_MAGIC_1_0: [u8; 8] = [9, 182, 2, 31, 125, 232, 114, 133]; pub const PROXMOX_BACKUP_SNAPSHOT_ARCHIVE_MAGIC_1_0: [u8; 8] = [9, 182, 2, 31, 125, 232, 114, 133];
lazy_static::lazy_static!{ lazy_static::lazy_static!{
/// Map content Uuid to human readable names. // Map content magic numbers to human readable names.
pub static ref PROXMOX_BACKUP_CONTENT_NAME: HashMap<&'static [u8;8], &'static str> = { static ref PROXMOX_TAPE_CONTENT_NAME: HashMap<&'static [u8;8], &'static str> = {
let mut map = HashMap::new(); let mut map = HashMap::new();
map.insert(&PROXMOX_BACKUP_MEDIA_LABEL_MAGIC_1_0, "Proxmox Backup Tape Label v1.0"); map.insert(&PROXMOX_BACKUP_MEDIA_LABEL_MAGIC_1_0, "Proxmox Backup Tape Label v1.0");
map.insert(&PROXMOX_BACKUP_MEDIA_SET_LABEL_MAGIC_1_0, "Proxmox Backup MediaSet Label v1.0"); map.insert(&PROXMOX_BACKUP_MEDIA_SET_LABEL_MAGIC_1_0, "Proxmox Backup MediaSet Label v1.0");
@ -44,6 +57,11 @@ lazy_static::lazy_static!{
}; };
} }
/// Map content magic numbers to human readable names.
pub fn proxmox_tape_magic_to_text(magic: &[u8; 8]) -> Option<String> {
PROXMOX_TAPE_CONTENT_NAME.get(magic).map(|s| String::from(*s))
}
/// Tape Block Header with data payload /// Tape Block Header with data payload
/// ///
/// All tape files are written as sequence of blocks. /// All tape files are written as sequence of blocks.

View File

@ -4,11 +4,5 @@ pub use emulate_tape_writer::*;
mod emulate_tape_reader; mod emulate_tape_reader;
pub use emulate_tape_reader::*; pub use emulate_tape_reader::*;
mod blocked_reader;
pub use blocked_reader::*;
mod blocked_writer;
pub use blocked_writer::*;
mod snapshot_reader; mod snapshot_reader;
pub use snapshot_reader::*; pub use snapshot_reader::*;

View File

@ -40,12 +40,6 @@ pub use media_pool::*;
mod media_catalog; mod media_catalog;
pub use media_catalog::*; pub use media_catalog::*;
mod chunk_archive;
pub use chunk_archive::*;
mod snapshot_archive;
pub use snapshot_archive::*;
mod pool_writer; mod pool_writer;
pub use pool_writer::*; pub use pool_writer::*;

View File

@ -16,15 +16,17 @@ use crate::{
MAX_CHUNK_ARCHIVE_SIZE, MAX_CHUNK_ARCHIVE_SIZE,
COMMIT_BLOCK_SIZE, COMMIT_BLOCK_SIZE,
TapeWrite, TapeWrite,
ChunkArchiveWriter,
SnapshotReader, SnapshotReader,
SnapshotChunkIterator, SnapshotChunkIterator,
MediaPool, MediaPool,
MediaId, MediaId,
MediaCatalog, MediaCatalog,
MediaSetCatalog, MediaSetCatalog,
file_formats::{
MediaSetLabel,
ChunkArchiveWriter,
tape_write_snapshot_archive, tape_write_snapshot_archive,
file_formats::MediaSetLabel, },
drive::{ drive::{
TapeDriver, TapeDriver,
request_and_load_media, request_and_load_media,