From 9790eabfeb6bc6554d6b58b608c6e33b558397a6 Mon Sep 17 00:00:00 2001 From: Santhosh Raju Date: Fri, 3 Jul 2026 00:58:50 +0200 Subject: [PATCH] Fixes the NetBSD statvfs structure to NetBSD 10.0+ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changes: 1. Fixed statvfs struct in new API - Changed f_spare from [u32; 4] to [u64; 4] (16 → 32 bytes) - Added f_mntfromlabel field ([c_char; 1024]) 2. Added symbol versioning for syscalls - Added __getmntinfo90 link_name for getmntinfo() - Added __statvfs190 link_name for statvfs() - Added __fstatvfs190 link_name for fstatvfs() --- src/new/netbsd/sys/statvfs.rs | 6 ++---- src/unix/bsd/netbsdlike/netbsd/mod.rs | 2 +- src/unix/mod.rs | 2 ++ 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/new/netbsd/sys/statvfs.rs b/src/new/netbsd/sys/statvfs.rs index eee3766300ce6..9ff371b77347b 100644 --- a/src/new/netbsd/sys/statvfs.rs +++ b/src/new/netbsd/sys/statvfs.rs @@ -35,13 +35,11 @@ s! { pub f_namemax: c_ulong, pub f_owner: crate::uid_t, - // This type is updated in a future version - f_spare: [u32; 4], + f_spare: [u64; 4], pub f_fstypename: [c_char; _VFS_NAMELEN], pub f_mntonname: [c_char; _VFS_MNAMELEN], pub f_mntfromname: [c_char; _VFS_MNAMELEN], - // Added in NetBSD10 - // pub f_mntfromlabel: [c_char; _VFS_MNAMELEN], + pub f_mntfromlabel: [c_char; _VFS_MNAMELEN], } } diff --git a/src/unix/bsd/netbsdlike/netbsd/mod.rs b/src/unix/bsd/netbsdlike/netbsd/mod.rs index 2b7a937f2d2e7..11fa124406946 100644 --- a/src/unix/bsd/netbsdlike/netbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/netbsd/mod.rs @@ -2249,7 +2249,7 @@ extern "C" { ntargets: size_t, hint: *const c_void, ) -> c_int; - #[link_name = "__getmntinfo13"] + #[link_name = "__getmntinfo90"] pub fn getmntinfo(mntbufp: *mut *mut crate::statvfs, flags: c_int) -> c_int; pub fn getvfsstat(buf: *mut crate::statvfs, bufsize: size_t, flags: c_int) -> c_int; diff --git a/src/unix/mod.rs b/src/unix/mod.rs index 59fd7254441f4..2ca466d4dd635 100644 --- a/src/unix/mod.rs +++ b/src/unix/mod.rs @@ -1619,8 +1619,10 @@ extern "C" { pub fn sem_trywait(sem: *mut sem_t) -> c_int; pub fn sem_post(sem: *mut sem_t) -> c_int; #[cfg_attr(gnu_file_offset_bits64, link_name = "statvfs64")] + #[cfg_attr(target_os = "netbsd", link_name = "__statvfs190")] pub fn statvfs(path: *const c_char, buf: *mut crate::statvfs) -> c_int; #[cfg_attr(gnu_file_offset_bits64, link_name = "fstatvfs64")] + #[cfg_attr(target_os = "netbsd", link_name = "__fstatvfs190")] pub fn fstatvfs(fd: c_int, buf: *mut crate::statvfs) -> c_int; #[cfg_attr(target_os = "netbsd", link_name = "__sigemptyset14")]