From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 853C61FF389 for ; Wed, 22 May 2024 19:24:33 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E4AF61258F; Wed, 22 May 2024 19:24:50 +0200 (CEST) Message-ID: Date: Wed, 22 May 2024 19:24:15 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta To: Proxmox Backup Server development discussion , Dominik Csapak References: <20240514141248.1614306-1-d.csapak@proxmox.com> <20240514141248.1614306-2-d.csapak@proxmox.com> Content-Language: en-GB, de-AT From: Thomas Lamprecht Autocrypt: addr=t.lamprecht@proxmox.com; keydata= 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 DrEx In-Reply-To: <20240514141248.1614306-2-d.csapak@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.053 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [mam.rs, drive.rs, mod.rs, proxmox.com] Subject: Re: [pbs-devel] [PATCH proxmox-backup 2/2] tape: write informational MAM attributes on tapes X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" Am 14/05/2024 um 16:12 schrieb Dominik Csapak: > namely: > > Vendor: Proxmox > Name: Backup Server > Version: current running package version > User Label Text: the label text > Media Pool: the current media pool > > write it on labeling and when writing a new media-set to a tape. > > While we currently don't use this info for anything, this can help users > to identify tapes, even with different backup software. > > If we need it in the future, we can e.g. make decisions based on these > fields (e.g. the version). > > On format, delete them again. > > Note that some VTLs don't correctly delete the attributes from the > virtual tapes. > > Signed-off-by: Dominik Csapak > --- > pbs-tape/Cargo.toml | 1 + > pbs-tape/src/sg_tape.rs | 39 ++++++++++++++++++++++ > pbs-tape/src/sg_tape/mam.rs | 61 +++++++++++++++++++++++++++++++++- > src/api2/tape/drive.rs | 2 ++ > src/tape/drive/lto/mod.rs | 6 ++++ > src/tape/drive/mod.rs | 5 +++ > src/tape/drive/virtual_tape.rs | 4 +++ > 7 files changed, 117 insertions(+), 1 deletion(-) > > diff --git a/pbs-tape/Cargo.toml b/pbs-tape/Cargo.toml > index 970315b7a..f4110706b 100644 > --- a/pbs-tape/Cargo.toml > +++ b/pbs-tape/Cargo.toml > @@ -34,4 +34,5 @@ proxmox-schema = { workspace = true, features = [ "api-macro" ] } > proxmox-router = { workspace = true, features = ["cli", "server"] } > > pbs-api-types.workspace = true > +pbs-buildcfg.workspace = true > pbs-config.workspace = true > diff --git a/pbs-tape/src/sg_tape.rs b/pbs-tape/src/sg_tape.rs > index f30481b31..058c14ae9 100644 > --- a/pbs-tape/src/sg_tape.rs > +++ b/pbs-tape/src/sg_tape.rs > @@ -295,6 +295,8 @@ impl SgTape { > self.erase_media(fast)? > } > > + self.clear_mam_attributes(); > + > Ok(()) > } > } > @@ -1048,6 +1050,43 @@ impl SgTape { > > Ok(status) > } > + > + /// Tries to write useful attributes to the MAM like Vendor/Application/Version > + pub fn write_mam_attributes(&mut self, label: Option, pool: Option) { > + let version = format!( > + "{}-{}", > + pbs_buildcfg::PROXMOX_PKG_VERSION, > + pbs_buildcfg::PROXMOX_PKG_RELEASE > + ); > + let mut attribute_list: Vec<(u16, &[u8])> = vec![ > + (0x08_00, b"Proxmox"), > + (0x08_01, b"Backup Server"), This is not the product (or application) name though, that is "Proxmox Backup Server"... I made a follow-up for that (and a few smaller style issues): https://git.proxmox.com/?p=proxmox-backup.git;a=commit;h=e50448e4ecd0bd9e8d54d8024aaa60967bbf0c84 What your commit did not mention is why you skip setting a few others, like I could imagine that the following would have some use: - DATE AND TIME LAST WRITTEN - TEXT LOCALIZATION IDENTIFIER (Strings are UTF-8 in rust, and we do not explicitly keep them in ASCII or the like FWICT) - OWNING HOST TEXTUAL NAME (nodename/FQDN might be interesting to see) - APPLICATION FORMAT VERSION (always good to have) Not so sure from top of my head about the UIDS, i.e., if we even have something that can be easily mapped to this. > + (0x08_02, version.as_bytes()), > + ]; > + if let Some(ref label) = label { > + attribute_list.push((0x08_03, label.as_bytes())); > + } > + > + if let Some(ref pool) = pool { > + attribute_list.push((0x08_08, pool.as_bytes())); > + } > + > + for (id, data) in attribute_list { > + if let Err(err) = write_mam_attribute(&mut self.file, id, data) { > + log::warn!("could not set MAM Attribute {id:x}: {err}"); > + } > + } > + } > + > + // clear all custom set mam attributes > + fn clear_mam_attributes(&mut self) { > + for attr in [0x08_00, 0x08_01, 0x08_02, 0x08_03, 0x08_08] { meh, gets easily out of sync with above and tape code is really a huge mess with all those hex codes sprinkled uncommented all over the place instead of using actual constants, but that part is pre-existing.. _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel