From b41cc820662307ce7670aaf775786919b820b03d Mon Sep 17 00:00:00 2001 From: ginnyTheCat Date: Fri, 23 May 2025 22:48:28 +0200 Subject: [PATCH] Update statx to Linux 6.11 --- src/backend/libc/c.rs | 7 ++++--- src/backend/linux_raw/c.rs | 7 ++++--- src/fs/constants.rs | 2 -- src/fs/statx.rs | 14 +++++++++++++- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/backend/libc/c.rs b/src/backend/libc/c.rs index 17f00b72f..cc5f572aa 100644 --- a/src/backend/libc/c.rs +++ b/src/backend/libc/c.rs @@ -494,14 +494,15 @@ pub(super) use readwrite_pv64v2::{preadv64v2 as preadv2, pwritev64v2 as pwritev2 mod statx_flags { pub(crate) use linux_raw_sys::general::{ STATX_ALL, STATX_ATIME, STATX_BASIC_STATS, STATX_BLOCKS, STATX_BTIME, STATX_CTIME, - STATX_DIOALIGN, STATX_GID, STATX_INO, STATX_MNT_ID, STATX_MODE, STATX_MTIME, STATX_NLINK, - STATX_SIZE, STATX_TYPE, STATX_UID, + STATX_DIOALIGN, STATX_GID, STATX_INO, STATX_MNT_ID, STATX_MNT_ID_UNIQUE, STATX_MODE, + STATX_MTIME, STATX_NLINK, STATX_SIZE, STATX_SUBVOL, STATX_TYPE, STATX_UID, + STATX_WRITE_ATOMIC, }; pub(crate) use linux_raw_sys::general::{ STATX_ATTR_APPEND, STATX_ATTR_AUTOMOUNT, STATX_ATTR_COMPRESSED, STATX_ATTR_DAX, STATX_ATTR_ENCRYPTED, STATX_ATTR_IMMUTABLE, STATX_ATTR_MOUNT_ROOT, STATX_ATTR_NODUMP, - STATX_ATTR_VERITY, + STATX_ATTR_VERITY, STATX_ATTR_WRITE_ATOMIC, }; } #[cfg(feature = "fs")] diff --git a/src/backend/linux_raw/c.rs b/src/backend/linux_raw/c.rs index 4dc9c8cd7..9ed6ab2c6 100644 --- a/src/backend/linux_raw/c.rs +++ b/src/backend/linux_raw/c.rs @@ -357,14 +357,15 @@ pub(crate) use reboot_symbols::*; mod statx_flags { pub(crate) use linux_raw_sys::general::{ STATX_ALL, STATX_ATIME, STATX_BASIC_STATS, STATX_BLOCKS, STATX_BTIME, STATX_CTIME, - STATX_DIOALIGN, STATX_GID, STATX_INO, STATX_MNT_ID, STATX_MODE, STATX_MTIME, STATX_NLINK, - STATX_SIZE, STATX_TYPE, STATX_UID, + STATX_DIOALIGN, STATX_GID, STATX_INO, STATX_MNT_ID, STATX_MNT_ID_UNIQUE, STATX_MODE, + STATX_MTIME, STATX_NLINK, STATX_SIZE, STATX_SUBVOL, STATX_TYPE, STATX_UID, + STATX_WRITE_ATOMIC, }; pub(crate) use linux_raw_sys::general::{ STATX_ATTR_APPEND, STATX_ATTR_AUTOMOUNT, STATX_ATTR_COMPRESSED, STATX_ATTR_DAX, STATX_ATTR_ENCRYPTED, STATX_ATTR_IMMUTABLE, STATX_ATTR_MOUNT_ROOT, STATX_ATTR_NODUMP, - STATX_ATTR_VERITY, + STATX_ATTR_VERITY, STATX_ATTR_WRITE_ATOMIC, }; } #[cfg(any( diff --git a/src/fs/constants.rs b/src/fs/constants.rs index 5f1063428..1f4a44a01 100644 --- a/src/fs/constants.rs +++ b/src/fs/constants.rs @@ -347,8 +347,6 @@ mod tests { #[cfg(not(libc))] // not in libc yet check_renamed_struct_field!(Statx, statx, stx_atomic_write_segments_max); #[cfg(linux_raw)] - check_renamed_struct_field!(Statx, statx, __spare1); - #[cfg(linux_raw)] check_renamed_struct_field!(Statx, statx, __spare3); } } diff --git a/src/fs/statx.rs b/src/fs/statx.rs index f1d995ec3..4e63d91ae 100644 --- a/src/fs/statx.rs +++ b/src/fs/statx.rs @@ -44,7 +44,7 @@ pub struct Statx { pub stx_atomic_write_unit_min: u32, pub stx_atomic_write_unit_max: u32, pub stx_atomic_write_segments_max: u32, - pub(crate) __spare1: [u32; 1], + pub stx_dio_read_offset_align: u32, pub(crate) __spare3: [u64; 9], } @@ -114,6 +114,15 @@ bitflags! { /// `STATX_DIOALIGN` (since Linux 6.1) const DIOALIGN = c::STATX_DIOALIGN; + /// `STATX_MNT_ID_UNIQUE` (since Linux 6.8) + const MNT_ID_UNIQUE = c::STATX_MNT_ID_UNIQUE; + + /// `STATX_SUBVOL` (since Linux 6.10) + const SUBVOL = c::STATX_SUBVOL; + + /// `STATX_WRITE_ATOMIC ` (since Linux 6.11) + const WRITE_ATOMIC = c::STATX_WRITE_ATOMIC; + /// `STATX_ALL` const ALL = c::STATX_ALL; @@ -154,6 +163,9 @@ bitflags! { /// `STATX_ATTR_DAX` const DAX = c::STATX_ATTR_DAX as u64; + /// `STATX_ATTR_WRITE_ATOMIC` + const WRITE_ATOMIC = c::STATX_ATTR_WRITE_ATOMIC as u64; + /// const _ = !0; }