[PATCH 1/1] libfuse: don't put HAVE_STATX in a public header

Darrick J. Wong
2025-09-16T00:41:48Z

fuse.h and fuse_lowlevel.h are public headers, don't expose internal
build system config variables to downstream clients. This can also lead
to function pointer ordering issues if (say) libfuse gets built with
HAVE_STATX but the client program doesn't define a HAVE_STATX.

Get rid of the conditionals in the public header files to fix this.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
include/fuse.h | 2 --
include/fuse_lowlevel.h | 2 --
example/memfs_ll.cc | 2 +-
example/passthrough.c | 2 +-
example/passthrough_fh.c | 2 +-
example/passthrough_ll.c | 2 +-
6 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/include/fuse.h b/include/fuse.h
index 06feacb070fbfb..209102651e9454 100644
--- a/include/fuse.h
+++ b/include/fuse.h
@@ -854,7 +854,6 @@ struct fuse_operations {
*/
off_t (*lseek) (const char *, off_t off, int whence, struct fuse_file_info *);

-#ifdef HAVE_STATX
/**
* Get extended file attributes.
*
@@ -865,7 +864,6 @@ struct fuse_operations {
*/
int (*statx)(const char *path, int flags, int mask, struct statx *stxbuf,
struct fuse_file_info *fi);
-#endif
};

/** Extra context that may be needed by some filesystems
diff --git a/include/fuse_lowlevel.h b/include/fuse_lowlevel.h
index dc4ec07e6dbb00..a6cce014391aec 100644
--- a/include/fuse_lowlevel.h
+++ b/include/fuse_lowlevel.h
@@ -1327,7 +1327,6 @@ struct fuse_lowlevel_ops {
void (*tmpfile) (fuse_req_t req, fuse_ino_t parent,
mode_t mode, struct fuse_file_info *fi);

-#ifdef HAVE_STATX
/**
* Get extended file attributes.
*
@@ -1343,7 +1342,6 @@ struct fuse_lowlevel_ops {
*/
void (*statx)(fuse_req_t req, fuse_ino_t ino, int flags, int mask,
struct fuse_file_info *fi);
-#endif
};

/**
diff --git a/example/memfs_ll.cc b/example/memfs_ll.cc
index edda34b4e43d39..7055a434a439cd 100644
--- a/example/memfs_ll.cc
+++ b/example/memfs_ll.cc
@@ -6,7 +6,7 @@
See the file GPL2.txt.
*/

-#define FUSE_USE_VERSION 317
+#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 18)

#include <algorithm>
#include <stdio.h>
diff --git a/example/passthrough.c b/example/passthrough.c
index fdaa19e331a17d..1f09c2dc05df1e 100644
--- a/example/passthrough.c
+++ b/example/passthrough.c
@@ -23,7 +23,7 @@
*/

-#define FUSE_USE_VERSION 31
+#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 18)

#define _GNU_SOURCE

diff --git a/example/passthrough_fh.c b/example/passthrough_fh.c
index 0d4fb5bd4df0d6..6403fbb74c7759 100644
--- a/example/passthrough_fh.c
+++ b/example/passthrough_fh.c
@@ -23,7 +23,7 @@
* \include passthrough_fh.c
*/

-#define FUSE_USE_VERSION 31
+#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 18)

#define _GNU_SOURCE

diff --git a/example/passthrough_ll.c b/example/passthrough_ll.c
index 5ca6efa2300abe..8a5ac2e9226b59 100644
--- a/example/passthrough_ll.c
+++ b/example/passthrough_ll.c
@@ -35,7 +35,7 @@
*/

#define _GNU_SOURCE
-#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 12)
+#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 18)

#include <fuse_lowlevel.h>
#include <unistd.h>