From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 76546655D6 for ; Thu, 23 Jul 2020 11:38:29 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6BAF7276EB for ; Thu, 23 Jul 2020 11:38:29 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 53873276DF for ; Thu, 23 Jul 2020 11:38:28 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 18B1043320 for ; Thu, 23 Jul 2020 11:38:28 +0200 (CEST) From: Mira Limbeck To: pbs-devel@lists.proxmox.com Date: Thu, 23 Jul 2020 11:38:24 +0200 Message-Id: <20200723093824.20056-2-m.limbeck@proxmox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200723093824.20056-1-m.limbeck@proxmox.com> References: <20200723093824.20056-1-m.limbeck@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.189 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods NO_DNS_FOR_FROM 0.379 Envelope sender has no MX or A DNS records RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record Subject: [pbs-devel] [PATCH 2/2] replace O_TMPFILE file creation with tempfile() 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: , X-List-Received-Date: Thu, 23 Jul 2020 09:38:29 -0000 To make the proxmox-backup-client work under WSL replace all occurences of open() with O_TMPFILE with the custom tempfile() function. Signed-off-by: Mira Limbeck --- src/bin/proxmox_backup_client/catalog.rs | 20 ++++---------------- src/client/backup_reader.rs | 20 ++++---------------- src/client/backup_writer.rs | 14 +++----------- 3 files changed, 11 insertions(+), 43 deletions(-) diff --git a/src/bin/proxmox_backup_client/catalog.rs b/src/bin/proxmox_backup_client/catalog.rs index 1c0865e6..34f00ec4 100644 --- a/src/bin/proxmox_backup_client/catalog.rs +++ b/src/bin/proxmox_backup_client/catalog.rs @@ -1,4 +1,3 @@ -use std::os::unix::fs::OpenOptionsExt; use std::io::{Seek, SeekFrom}; use std::sync::Arc; @@ -8,6 +7,7 @@ use serde_json::Value; use proxmox::api::{api, cli::*}; use proxmox_backup::tools; +use proxmox_backup::tools::tempfile::tempfile; use proxmox_backup::client::*; @@ -101,11 +101,7 @@ async fn dump_catalog(param: Value) -> Result { let mut reader = BufferedDynamicReader::new(index, chunk_reader); - let mut catalogfile = std::fs::OpenOptions::new() - .write(true) - .read(true) - .custom_flags(libc::O_TMPFILE) - .open("/tmp")?; + let mut catalogfile = tempfile()?; std::io::copy(&mut reader, &mut catalogfile) .map_err(|err| format_err!("unable to download catalog - {}", err))?; @@ -190,11 +186,7 @@ async fn catalog_shell(param: Value) -> Result<(), Error> { true, ).await?; - let mut tmpfile = std::fs::OpenOptions::new() - .write(true) - .read(true) - .custom_flags(libc::O_TMPFILE) - .open("/tmp")?; + let mut tmpfile = tempfile()?; let (manifest, _) = client.download_manifest().await?; @@ -218,11 +210,7 @@ async fn catalog_shell(param: Value) -> Result<(), Error> { let most_used = index.find_most_used_chunks(8); let chunk_reader = RemoteChunkReader::new(client.clone(), crypt_config, most_used); let mut reader = BufferedDynamicReader::new(index, chunk_reader); - let mut catalogfile = std::fs::OpenOptions::new() - .write(true) - .read(true) - .custom_flags(libc::O_TMPFILE) - .open("/tmp")?; + let mut catalogfile = tempfile()?; std::io::copy(&mut reader, &mut catalogfile) .map_err(|err| format_err!("unable to download catalog - {}", err))?; diff --git a/src/client/backup_reader.rs b/src/client/backup_reader.rs index b0b43c38..ae0e5495 100644 --- a/src/client/backup_reader.rs +++ b/src/client/backup_reader.rs @@ -2,7 +2,6 @@ use anyhow::{format_err, Error}; use std::io::{Read, Write, Seek, SeekFrom}; use std::fs::File; use std::sync::Arc; -use std::os::unix::fs::OpenOptionsExt; use chrono::{DateTime, Utc}; use futures::future::AbortHandle; @@ -11,6 +10,7 @@ use serde_json::{json, Value}; use proxmox::tools::digest_to_hex; use crate::backup::*; +use crate::tools::tempfile::tempfile; use super::{HttpClient, H2Client}; @@ -148,11 +148,7 @@ impl BackupReader { name: &str, ) -> Result, Error> { - let mut tmpfile = std::fs::OpenOptions::new() - .write(true) - .read(true) - .custom_flags(libc::O_TMPFILE) - .open("/tmp")?; + let mut tmpfile = tempfile()?; self.download(name, &mut tmpfile).await?; @@ -174,11 +170,7 @@ impl BackupReader { name: &str, ) -> Result { - let mut tmpfile = std::fs::OpenOptions::new() - .write(true) - .read(true) - .custom_flags(libc::O_TMPFILE) - .open("/tmp")?; + let mut tmpfile = tempfile()?; self.download(name, &mut tmpfile).await?; @@ -202,11 +194,7 @@ impl BackupReader { name: &str, ) -> Result { - let mut tmpfile = std::fs::OpenOptions::new() - .write(true) - .read(true) - .custom_flags(libc::O_TMPFILE) - .open("/tmp")?; + let mut tmpfile = tempfile()?; self.download(name, &mut tmpfile).await?; diff --git a/src/client/backup_writer.rs b/src/client/backup_writer.rs index 7e5adb3c..39912b50 100644 --- a/src/client/backup_writer.rs +++ b/src/client/backup_writer.rs @@ -1,5 +1,4 @@ use std::collections::HashSet; -use std::os::unix::fs::OpenOptionsExt; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::{Arc, Mutex}; @@ -17,6 +16,7 @@ use proxmox::tools::digest_to_hex; use super::merge_known_chunks::{MergedChunkInfo, MergeKnownChunks}; use crate::backup::*; use crate::tools::format::HumanByte; +use crate::tools::tempfile::tempfile; use super::{HttpClient, H2Client}; @@ -408,11 +408,7 @@ impl BackupWriter { known_chunks: Arc>>, ) -> Result { - let mut tmpfile = std::fs::OpenOptions::new() - .write(true) - .read(true) - .custom_flags(libc::O_TMPFILE) - .open("/tmp")?; + let mut tmpfile = tempfile()?; let param = json!({ "archive-name": archive_name }); self.h2.download("previous", Some(param), &mut tmpfile).await?; @@ -443,11 +439,7 @@ impl BackupWriter { known_chunks: Arc>>, ) -> Result { - let mut tmpfile = std::fs::OpenOptions::new() - .write(true) - .read(true) - .custom_flags(libc::O_TMPFILE) - .open("/tmp")?; + let mut tmpfile = tempfile()?; let param = json!({ "archive-name": archive_name }); self.h2.download("previous", Some(param), &mut tmpfile).await?; -- 2.20.1