diff --git a/libc-test/build.rs b/libc-test/build.rs index 3b924bd92eef..1398e9af6cd5 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -4391,6 +4391,14 @@ fn test_linux(target: &str) { // Not present in glibc "PR_SME_VL_LEN_MAX" | "PR_SME_SET_VL_INHERIT" | "PR_SME_SET_VL_ONE_EXEC" if gnu => true, + "STATX_DIOALIGN" // Added in linux 6.1 + | "STATX_MNT_ID_UNIQUE" // Added in Linux 6.8 + | "STATX_SUBVOL" // Added in Linux 6.10 + | "STATX_WRITE_ATOMIC" // Added in Linux 6.11 + | "STATX_ATTR_WRITE_ATOMIC" // Added in Linux 6.11 + | "STATX_DIO_READ_ALIGN" // Added in Linux 6.14 + => true, + // FIXME(linux): The below is no longer const in glibc 2.34: // https://github.com/bminor/glibc/commit/5d98a7dae955bafa6740c26eaba9c86060ae0344 "PTHREAD_STACK_MIN" | "SIGSTKSZ" | "MINSIGSTKSZ" if gnu => true, diff --git a/libc-test/semver/linux-gnu.txt b/libc-test/semver/linux-gnu.txt index 64e87bf9fc13..3f06561714eb 100644 --- a/libc-test/semver/linux-gnu.txt +++ b/libc-test/semver/linux-gnu.txt @@ -418,20 +418,25 @@ STATX_ATTR_IMMUTABLE STATX_ATTR_MOUNT_ROOT STATX_ATTR_NODUMP STATX_ATTR_VERITY +STATX_ATTR_WRITE_ATOMIC STATX_BASIC_STATS STATX_BLOCKS STATX_BTIME STATX_CTIME STATX_DIOALIGN +STATX_DIO_READ_ALIGN 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 STATX__RESERVED STA_CLK STA_CLOCKERR diff --git a/src/unix/linux_like/mod.rs b/src/unix/linux_like/mod.rs index 0d4d6f279059..26261db7272c 100644 --- a/src/unix/linux_like/mod.rs +++ b/src/unix/linux_like/mod.rs @@ -292,7 +292,12 @@ cfg_if! { pub stx_mnt_id: crate::__u64, pub stx_dio_mem_align: crate::__u32, pub stx_dio_offset_align: crate::__u32, - __statx_pad3: Padding<[crate::__u64; 12]>, + pub stx_subvol: crate::__u64, + pub stx_atomic_write_unit_min: crate::__u32, + pub stx_atomic_write_unit_max: crate::__u32, + pub stx_atomic_write_segments_max: crate::__u32, + pub stx_dio_read_offset_align: crate::__u32, + __statx_pad3: Padding<[crate::__u64; 9]>, } pub struct statx_timestamp { @@ -1683,6 +1688,10 @@ cfg_if! { pub const STATX_ALL: c_uint = 0x0fff; pub const STATX_MNT_ID: c_uint = 0x1000; pub const STATX_DIOALIGN: c_uint = 0x2000; + pub const STATX_MNT_ID_UNIQUE: c_uint = 0x4000; + pub const STATX_SUBVOL: c_uint = 0x_0000_8000; + pub const STATX_WRITE_ATOMIC: c_uint = 0x_0001_0000; + pub const STATX_DIO_READ_ALIGN: c_uint = 0x_0002_0000; pub const STATX__RESERVED: c_int = 0x80000000; pub const STATX_ATTR_COMPRESSED: c_int = 0x0004; pub const STATX_ATTR_IMMUTABLE: c_int = 0x0010; @@ -1693,6 +1702,7 @@ cfg_if! { pub const STATX_ATTR_MOUNT_ROOT: c_int = 0x2000; pub const STATX_ATTR_VERITY: c_int = 0x100000; pub const STATX_ATTR_DAX: c_int = 0x200000; + pub const STATX_ATTR_WRITE_ATOMIC: c_int = 0x400000; } }