* [pbs-devel] [PATCH proxmox 0/2] sys: rustc 1.80/IO-safety compat
@ 2024-08-05 11:59 Fabian Grünbichler
2024-08-05 11:59 ` [pbs-devel] [PATCH proxmox 1/2] sys: adapt to IO Safety changes in rustc Fabian Grünbichler
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Fabian Grünbichler @ 2024-08-05 11:59 UTC (permalink / raw)
To: pbs-devel
these two commits make proxmox-sys usable with rustc 1.80, which enables
IO-safety (additional checks in debug mode when dropping OwnedFDs).
Fabian Grünbichler (2):
sys: adapt to IO Safety changes in rustc
sys: make fd::cwd crate-internal
proxmox-sys/src/fd.rs | 6 +++---
proxmox-sys/src/fs/dir.rs | 4 ++--
2 files changed, 5 insertions(+), 5 deletions(-)
--
2.39.2
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
^ permalink raw reply [flat|nested] 4+ messages in thread* [pbs-devel] [PATCH proxmox 1/2] sys: adapt to IO Safety changes in rustc 2024-08-05 11:59 [pbs-devel] [PATCH proxmox 0/2] sys: rustc 1.80/IO-safety compat Fabian Grünbichler @ 2024-08-05 11:59 ` Fabian Grünbichler 2024-08-05 11:59 ` [pbs-devel] [PATCH proxmox 2/2] sys: make fd::cwd crate-internal Fabian Grünbichler 2024-08-06 11:54 ` [pbs-devel] applied-series: [PATCH proxmox 0/2] sys: rustc 1.80/IO-safety compat Wolfgang Bumiller 2 siblings, 0 replies; 4+ messages in thread From: Fabian Grünbichler @ 2024-08-05 11:59 UTC (permalink / raw) To: pbs-devel `OwnedFd`s are now (rustc 1.80+) checked for validity when dropped in a debug build, to catch usage after closing. Unfortunately those checks don't account for the special value `AT_FDCWD` (-100) which is not a "real" FD, but a magic constant used by many libc functions to signify operations starting at the current working directory. changing our `cwd` helper to open the CWD for real, instead of just returning the magic value that pretends to be an FD, works around those limitations with the least API churn. Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com> --- technically the changed return type is a breaking change, but see next patch.. proxmox-sys/src/fd.rs | 6 +++--- proxmox-sys/src/fs/dir.rs | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/proxmox-sys/src/fd.rs b/proxmox-sys/src/fd.rs index ad12e663..073dd08d 100644 --- a/proxmox-sys/src/fd.rs +++ b/proxmox-sys/src/fd.rs @@ -2,9 +2,9 @@ use std::os::unix::io::AsRawFd; -use nix::fcntl::OFlag; use nix::sys::stat::Mode; use nix::NixPath; +use nix::{fcntl::OFlag, sys::stat}; use std::os::unix::io::{FromRawFd, OwnedFd, RawFd}; @@ -23,8 +23,8 @@ pub fn change_cloexec(fd: RawFd, on: bool) -> Result<(), anyhow::Error> { Ok(()) } -pub fn cwd() -> OwnedFd { - unsafe { OwnedFd::from_raw_fd(libc::AT_FDCWD) } +pub fn cwd() -> Result<OwnedFd, nix::Error> { + open(".", OFlag::O_DIRECTORY, stat::Mode::empty()) } pub fn open<P>(path: &P, oflag: OFlag, mode: Mode) -> Result<OwnedFd, nix::Error> diff --git a/proxmox-sys/src/fs/dir.rs b/proxmox-sys/src/fs/dir.rs index 807a00ad..a7a95b02 100644 --- a/proxmox-sys/src/fs/dir.rs +++ b/proxmox-sys/src/fs/dir.rs @@ -120,7 +120,7 @@ fn create_path_do( } Some(Component::CurDir) => { let _ = iter.next(); - crate::fd::cwd() + crate::fd::cwd()? } Some(Component::ParentDir) => { let _ = iter.next(); @@ -128,7 +128,7 @@ fn create_path_do( } Some(Component::Normal(_)) => { // simply do not advance the iterator, heavy lifting happens in create_path_at_do() - crate::fd::cwd() + crate::fd::cwd()? } None => bail!("create_path on empty path?"), }; -- 2.39.2 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [pbs-devel] [PATCH proxmox 2/2] sys: make fd::cwd crate-internal 2024-08-05 11:59 [pbs-devel] [PATCH proxmox 0/2] sys: rustc 1.80/IO-safety compat Fabian Grünbichler 2024-08-05 11:59 ` [pbs-devel] [PATCH proxmox 1/2] sys: adapt to IO Safety changes in rustc Fabian Grünbichler @ 2024-08-05 11:59 ` Fabian Grünbichler 2024-08-06 11:54 ` [pbs-devel] applied-series: [PATCH proxmox 0/2] sys: rustc 1.80/IO-safety compat Wolfgang Bumiller 2 siblings, 0 replies; 4+ messages in thread From: Fabian Grünbichler @ 2024-08-05 11:59 UTC (permalink / raw) To: pbs-devel it's not used by anything outside of proxmox-sys. Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com> --- alternatively, could also be inlined completely.. proxmox-sys/src/fd.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxmox-sys/src/fd.rs b/proxmox-sys/src/fd.rs index 073dd08d..8d85bd2e 100644 --- a/proxmox-sys/src/fd.rs +++ b/proxmox-sys/src/fd.rs @@ -23,7 +23,7 @@ pub fn change_cloexec(fd: RawFd, on: bool) -> Result<(), anyhow::Error> { Ok(()) } -pub fn cwd() -> Result<OwnedFd, nix::Error> { +pub(crate) fn cwd() -> Result<OwnedFd, nix::Error> { open(".", OFlag::O_DIRECTORY, stat::Mode::empty()) } -- 2.39.2 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [pbs-devel] applied-series: [PATCH proxmox 0/2] sys: rustc 1.80/IO-safety compat 2024-08-05 11:59 [pbs-devel] [PATCH proxmox 0/2] sys: rustc 1.80/IO-safety compat Fabian Grünbichler 2024-08-05 11:59 ` [pbs-devel] [PATCH proxmox 1/2] sys: adapt to IO Safety changes in rustc Fabian Grünbichler 2024-08-05 11:59 ` [pbs-devel] [PATCH proxmox 2/2] sys: make fd::cwd crate-internal Fabian Grünbichler @ 2024-08-06 11:54 ` Wolfgang Bumiller 2 siblings, 0 replies; 4+ messages in thread From: Wolfgang Bumiller @ 2024-08-06 11:54 UTC (permalink / raw) To: Fabian Grünbichler; +Cc: pbs-devel applied series & bumped sys _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-08-06 11:54 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-08-05 11:59 [pbs-devel] [PATCH proxmox 0/2] sys: rustc 1.80/IO-safety compat Fabian Grünbichler 2024-08-05 11:59 ` [pbs-devel] [PATCH proxmox 1/2] sys: adapt to IO Safety changes in rustc Fabian Grünbichler 2024-08-05 11:59 ` [pbs-devel] [PATCH proxmox 2/2] sys: make fd::cwd crate-internal Fabian Grünbichler 2024-08-06 11:54 ` [pbs-devel] applied-series: [PATCH proxmox 0/2] sys: rustc 1.80/IO-safety compat Wolfgang Bumiller
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.