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) server-digest SHA256) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id C1B0BEFBA for ; Thu, 28 Sep 2023 13:50:17 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id AE6BF15911 for ; Thu, 28 Sep 2023 13:50:17 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Thu, 28 Sep 2023 13:50:15 +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 5C9AB48E42 for ; Thu, 28 Sep 2023 13:50:15 +0200 (CEST) From: Lukas Wagner To: pve-devel@lists.proxmox.com Cc: Lukas Wagner , Wolfgang Bumiller Date: Thu, 28 Sep 2023 13:50:07 +0200 Message-Id: <20230928115012.326777-3-l.wagner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230928115012.326777-1-l.wagner@proxmox.com> References: <20230928115012.326777-1-l.wagner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.031 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 Subject: [pve-devel] [PATCH v2 proxmox 2/7] sys: fs: let CreateOptions::apply_to take RawFd instead of File X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Sep 2023 11:50:17 -0000 Suggested-by: Wolfgang Bumiller Signed-off-by: Lukas Wagner --- proxmox-shared-memory/src/lib.rs | 4 ++-- proxmox-sys/src/fs/file.rs | 4 ++-- proxmox-sys/src/fs/mod.rs | 9 ++++----- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/proxmox-shared-memory/src/lib.rs b/proxmox-shared-memory/src/lib.rs index 4809bd0..3aa04cd 100644 --- a/proxmox-shared-memory/src/lib.rs +++ b/proxmox-shared-memory/src/lib.rs @@ -130,8 +130,8 @@ impl SharedMemory { // create temporary file using O_TMPFILE let mut file = match nix::fcntl::open(&dir_name, oflag | OFlag::O_TMPFILE, Mode::empty()) { Ok(fd) => { - let mut file = unsafe { File::from_raw_fd(fd) }; - options.apply_to(&mut file, &dir_name)?; + let file = unsafe { File::from_raw_fd(fd) }; + options.apply_to(fd, &dir_name)?; file } Err(err) => { diff --git a/proxmox-sys/src/fs/file.rs b/proxmox-sys/src/fs/file.rs index ac51389..5d74f31 100644 --- a/proxmox-sys/src/fs/file.rs +++ b/proxmox-sys/src/fs/file.rs @@ -135,12 +135,12 @@ pub fn make_tmp_file>( // use mkstemp here, because it works with different processes, threads, even tokio tasks let mut template = path.to_owned(); template.set_extension("tmp_XXXXXX"); - let (mut file, tmp_path) = match unistd::mkstemp(&template) { + let (file, tmp_path) = match unistd::mkstemp(&template) { Ok((fd, path)) => (unsafe { File::from_raw_fd(fd) }, path), Err(err) => bail!("mkstemp {:?} failed: {}", template, err), }; - match options.apply_to(&mut file, &tmp_path) { + match options.apply_to(file.as_raw_fd(), &tmp_path) { Ok(()) => Ok((file, tmp_path)), Err(err) => { let _ = unistd::unlink(&tmp_path); diff --git a/proxmox-sys/src/fs/mod.rs b/proxmox-sys/src/fs/mod.rs index ae54d78..8d790a4 100644 --- a/proxmox-sys/src/fs/mod.rs +++ b/proxmox-sys/src/fs/mod.rs @@ -1,12 +1,11 @@ //! File system related utilities -use std::fs::File; use std::path::Path; use anyhow::{bail, Error}; use nix::sys::stat; use nix::unistd::{Gid, Uid}; -use std::os::unix::io::{AsRawFd, RawFd}; +use std::os::unix::io::RawFd; #[cfg(feature = "acl")] pub mod acl; @@ -68,15 +67,15 @@ impl CreateOptions { self.owner(nix::unistd::ROOT) } - pub fn apply_to(&self, file: &mut File, path: &Path) -> Result<(), Error> { + pub fn apply_to(&self, fd: RawFd, path: &Path) -> Result<(), Error> { let mode: stat::Mode = self.perm.unwrap_or(stat::Mode::from_bits_truncate(0o644)); - if let Err(err) = stat::fchmod(file.as_raw_fd(), mode) { + if let Err(err) = stat::fchmod(fd, mode) { bail!("fchmod {:?} failed: {}", path, err); } if self.owner.is_some() || self.group.is_some() { - if let Err(err) = fchown(file.as_raw_fd(), self.owner, self.group) { + if let Err(err) = fchown(fd, self.owner, self.group) { bail!("fchown {:?} failed: {}", path, err); } } -- 2.39.2