Thanks to visit codestin.com
Credit goes to github.com

Skip to content

DAOS-623 build: Merge tag 'fuse-3.17.4'#10

Merged
jolivier23 merged 107 commits intomasterfrom
jvolivie/update_fused
Sep 19, 2025
Merged

DAOS-623 build: Merge tag 'fuse-3.17.4'#10
jolivier23 merged 107 commits intomasterfrom
jvolivie/update_fused

Conversation

@jolivier23
Copy link

@jolivier23 jolivier23 commented Sep 17, 2025

Update fused with fuse-3.17.4
Remove Jenkinsfile

dependabot bot and others added 30 commits December 28, 2024 00:08
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.27.9 to 3.28.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@df409f7...48ab28a)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
This fixes commit
a5eb7f2 "Enable parallel direct writes on the same file"
and restores the ABI by moving the parallel_direct_writes
bit.

Given that there were already several releases with this commit
we will still need an so version bump.

Signed-off-by: Bernd Schubert <[email protected]>
This fixes commit
dad15ae "Add no_rofd_flush mount option"
and restores the ABI by moving the no_rofd_flush field.

Given that there were already several releases with this commit
we will still need an so version bump.

Signed-off-by: Bernd Schubert <[email protected]>
Enforce 32-bit integers for struct fuse_config and
add future ABI fields to that struct.

Signed-off-by: Bernd Schubert <[email protected]>
Enforce 32 bit integers for #struct fuse_file_info'.

Signed-off-by: Bernd Schubert <[email protected]>
pahole was showing a 4 byte hole - add another padding to
fill that hole.

Signed-off-by: Bernd Schubert <[email protected]>
Now that we know the exact size of the integer we can
use a single bit and reserve the other bits.

Signed-off-by: Bernd Schubert <[email protected]>
Add a flags and reserved fields to struct fuse_file_info
and add a static assert on the size.

Also add another static assert for 'struct fuse_conn_info'

Signed-off-by: Bernd Schubert <[email protected]>
Should be used internally only, but is still in a common file -
we better use arch independent values.

Signed-off-by: Bernd Schubert <[email protected]>
We don't want FUSE_MAXOP calculated at compilation time,
as the ABI limit is CUSE_INIT - better use that value
directly.

Signed-off-by: Bernd Schubert <[email protected]>
The previous fields are left for ABI compatibility, although
it is not beautiful to add that complexity when we have to increase
the so-version as we had ABI breakage anyway.

example/printcap is simplified to use an array, as every line would
have needed to be modified anyway. Missing 'FUSE_CAP_PASSTHROUGH'
was added.

Signed-off-by: Bernd Schubert <[email protected]>
We have multiple ABI breakages - increase the .so version.

Signed-off-by: Bernd Schubert <[email protected]>
Increase the .so version, but also change back to previous ABI
In cache=always mode, set keep_cache flag in opendir(), same as done
in open() and same as passthrough_hp does in opendir().

In the default cache=auto mode, use readdir cache, but do not set
keep_cache, same as regular files use page cache for an open file,
but do not keep_cache for a new open.

Note that passthrough_hp by default behaves the same as passthrough_ll
cache=always mode and supports the cache=never mode with --nocache, but
it does not support the equivalent of cache=auto mode.

Signed-off-by: Amir Goldstein <[email protected]>
Running on the 'master' is not enough, actions also
need to run on release branches.

Signed-off-by: Bernd Schubert <[email protected]>
checkpatch.pl has a list of mispelled words and the codespell test
fails on that.

Signed-off-by: Bernd Schubert <[email protected]>
- The MAINTAINERS test is not valid for libfuse.
- Correct the base commit

Signed-off-by: Bernd Schubert <[email protected]>
Actually checkpatch.pl already checks for "Signed-off-by"
and also handles merge commits - no need for duplicate
logic.

Signed-off-by: Bernd Schubert <[email protected]>
After pulling latest code, memfs_ll build would fail because it
builds with C++11.

Changing the default of cpp_std in meson.build is not enough to fix this
problem even if user runs 'meson setup --reconfigure'.

I had to run 'meson setup -Dcpp_std= --reconfigure' to fix the build
as mentioned in this meson issue:
mesonbuild/meson#8062 (comment)

Signed-off-by: Amir Goldstein <[email protected]>
passthrough example supports the --plus command line argument to reply
to readdirplus with fill_dir_plus and unspecified (0) fill offsets.

As explained in this comment:
libfuse#896 (comment)
passthrough example needs a few more changes to be able to test commit
dd95d13 ("fix readdirplus when filler is called with zero offset (libfuse#896))

With the changes in this commit, readdirplus without fill offsets
can be tested to verify the readdirplus fix above with command line:

passthrough --plus -o auto_cache,modules=subdir,subdir=/src /mnt

Signed-off-by: Amir Goldstein <[email protected]>
Commit dd95d13 ("fix readdirplus when filler is called with zero offset
(libfuse#896)) broke readdirplus with passthrough example command:

    passthrough -o auto_cache,modules=subdir,subdir=/src /mnt

The /src directory looks like this:

    ~# ls -l /src
    total 0
    drwx------ 3 root root 60 Jan  2 17:51 testdir

And the fuse directory looks like this:

    ~# ls -l /mnt
    total 0
    d--------- 0 root root 0 Jan  1  1970 testdir

Because readdir_fill_from_list() ignores the fact that filesystem
did not pass the FUSE_FILL_DIR_PLUS flag with valid stat info.

Signed-off-by: Amir Goldstein <[email protected]>
Commit 58f85bf ("Add in the libfuse version a program...")
forgot to add a fuse_main_real function for libfuse compilations
that are not symboled. That is now added in compat.c.

Signed-off-by: Bernd Schubert <[email protected]>
_fuse_new() is not supposed to be called by external users
outside of internal functions or static inlined functions.

This also removes several functions from lib/fuse_versionscript
which where added and exported by
commit 58f85bf ("Add in the libfuse version a program...)
as these are libfuse internal only.

Signed-off-by: Bernd Schubert <[email protected]>
giuliobenetti and others added 27 commits April 15, 2025 00:50
linux/close_range.h is only available since kernel 5.9 and
torvalds/linux@60997c3
resulting in the following build failure:

../util/fusermount.c:40:10: fatal error: linux/close_range.h: No such file or directory

So let's check for header presence and emit HAVE_LINUX_CLOSE_RANGE_H
accordingly and check for it when including <linux/close_range.h> and
calling close_range() instead of checking for close_range() function in
meson and check against HAVE_CLOSE_RANGE.

Signed-off-by: Giulio Benetti <[email protected]>
At the moment build fails due to lack of static_assert:
https://gitlab.com/jolivain/buildroot/-/jobs/9606292537
this means that the check per date is not enough, so let's use meson to
check if static_assert() is present or not and simplify
fuse_static_assert() definition by only checking HAVE_STATIC_ASSERT.

Signed-off-by: Giulio Benetti <[email protected]>
These are several buf size fixes

1) Set bufsize when HAVE_SPLICE is not defined. Addresses
libfuse#1184

2) Check in the read retry condition for bufsize, i.e. the value
passed to read and not for the buf->mem_size. Using buf->mem_size
can be startup racy. Additionally we now also set bufsize on
allocation to avoid these races.

3) Allocation and value assigned needs to follow the pattern

bufsize = se->bufsize;
buf_alloc(bufsize, internal)
buf->mem_size = bufsize;

I.e. bufsize has to be retrieved first, as se->bufsize might
change at anytime - the value used for allocation and
must not differ from the value actually used.

This also tries to set large sizes in passthrough_hp, to catch
issues in xfstests - though requires to set
/proc/sys/fs/fuse/max_pages_limit

Signed-off-by: Bernd Schubert <[email protected]>
Newer gccs now use -Werror=redundant-decls which means that anyone
including fuse.h is getting an error of:

/usr/include/fuse3/fuse.h:959:5: error: redundant redeclaration of ‘fuse_main_real_versioned’ [-Werror=redundant-decls]
  959 | int fuse_main_real_versioned(int argc, char *argv[],
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/fuse3/fuse.h:885:5: note: previous declaration of ‘fuse_main_real_versioned’ with type ‘int(int,  char **, const struct fuse_operations *, size_t,  struct libfuse_version *, void *)’ {aka ‘int(int,  char **, const struct fuse_operations *, long unsigned int,  struct libfuse_version *, void *)’}
  885 | int fuse_main_real_versioned(int argc, char *argv[],
      |     ^~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Ben Dooks <[email protected]>
This commit enables splice moves by default, unless the caller opts into
nosplice.

Signed-off-by: Joanne Koong <[email protected]>
The high-level interface triggers flag conversion twice: once in the
high-level init and once in the low-level init. This caused false
"both 'want' and 'want_ext' are set" errors when using
fuse_set_feature_flag() or fuse_unset_feature_flag().

The existing check for duplicate conversion only worked when 32-bit
flags were set directly. When using the preferred flag manipulation
functions, conn->want and the lower 32 bits of conn->want_ext
would differ, triggering the error.

Fix this by synchronizing conn->want with the lower 32 bits of
conn->want_ext after conversion, ensuring consistent state for
subsequent calls.

Closes: libfuse#1171

Signed-off-by: Bernd Schubert <[email protected]>
Since pthread_setname_np() is the only pthread function that requires NPTL
and it basically only set thread name, let's check if pthread_setname_np()
does exist, otherwise let's not call pthread_setname_np() to shrink
dependencies.

Signed-off-by: Giulio Benetti <[email protected]>
Commit dae1184 ("Add syslog and fatal signal handler feature")
added fuse_set_fail_signal_handlers() which can store
"se". But as fuse_set_signal_handlers() also stores the object
storing it was made conditionally if not set already.

As per libfuse#1182 this
breaks some applications like osspd, that have multiple
sessions and rely on the right order and that the last
call of fuse_set_signal_handlers() wins.

Special thanks to Sébastien Noel to debug this issue.

Closes: libfuse#1182
Signed-off-by: Bernd Schubert <[email protected]>
Several meson tests were incorrectly failing

Checking for function "static_assert" : NO (cached)
Checking for function "pthread_setname_np" : NO (cached)
Check usable header "#include <linux/close_range.h>" : NO (cached)

These functions get now tested with compilation tests
and get found on my system.

Checking if "static_assert check" compiles: YES
Checking if "pthread_setname_np check" compiles: YES
Checking if "close_range check" compiles: YES

Signed-off-by: Bernd Schubert <[email protected]>
Signed-off-by: Giulio Benetti <[email protected]>
Unfortunately while cross-compiling with build tools like Buildroot it
happens to have repeated flags or anything that could lead to a warning.
This way the check fails because of a warning not related to the special
function. So let's use cc.links() and increase minimum meson_version to
0.60 since cc.links() has been added during that version.

Signed-off-by: Giulio Benetti <[email protected]>
there are too many issues with conn->want and conn->want_ext
conversion, for now just log a warning, but setting both
flags is now not fatal anymore.

Signed-off-by: Bernd Schubert <[email protected]>
Needed by follow up commits. container_of is actually
just moved/consolidated to util.h.

Signed-off-by: Bernd Schubert <[email protected]>
(cherry picked from commit c5a032b)
fuse_apply_conn_info_opts() was applying to 'want_ext',
which would cause conflicts with 'want' if the application
applied its own flags to 'conn->want'.

Solution is:
    - to move fuse_{set,unset,get}_feature_flag and
      convert_to_conn_want_ext() to fuse_lowlevel.c and
      to define them as part of the public API, although
      convert_to_conn_want_ext() should not be used - it is
      currently needed to be a public function due as it needs
      to be defined for the tests.

Related to libfuse#1171 and
libfuse#1172.

Closes: libfuse#1171
Signed-off-by: Bernd Schubert <[email protected]>
(cherry picked from commit baadab0)
Remove redundant mutex lock acquisition in the truncate() method to
prevent deadlock. The issue occurs when memfs_setattr() already holds
the mutex lock and then calls truncate(), which attempts to acquire
the same lock again.

Signed-off-by: Long Li <[email protected]>
(cherry picked from commit b96c738)
This is a long standing issue, a system could have unmounted
/path/to/mnt and then fuse-client/kernel would send FUSE_DESTROY,
which would then again try a umount.

Given that FUSE_DESTROY is async, that umount might arrive
any time later and might possibly unmount a wrong mount point.
A warning as in issue libfuse#1286 is just minor to that.

Code wise this uses atomics to free the char *, as FUSE_DESTROY
might race with a signal and a double free might be possible
without proctection. A lock might run into the same issue,
if the signal would arrive at the wrong time a double lock
would be possible.

Additionally, fuse_session_mount() is updated, to first
duplicatate the pointer and to then do the kernel mount -
reverting the kernel mount in case of strdup() failure
is much harder.

Closes: libfuse#1286
Signed-off-by: Bernd Schubert <[email protected]>
(cherry picked from commit d825377)
This fixes commit 82bcd81
That commit had removed HAVE_LINUX_CLOSE_RANGE in meson generation,
but didn't remove the usage in fusermount.c - fusermount was then
not using the close_range syscall.

Closes: libfuse#1284
Signed-off-by: Bernd Schubert <[email protected]>
(cherry picked from commit 194023c)
BT_STACK_SZ and backtrace_buffer are not used when
HAVE_BACKTRACE is undefined. Wrap them in #ifdef
to avoid a build warning:

../lib/fuse_signals.c:31:14: warning: 'backtrace_buffer' defined but not used [-Wunused-variable]
   31 | static void *backtrace_buffer[BT_STACK_SZ];
      |              ^~~~~~~~~~~~~~~~

Signed-off-by: Georgi Valkov <[email protected]>
(cherry picked from commit 6787608)
Signed-off-by: Georgi Valkov <[email protected]>
Do not attempt to update /run/mount/utab if it doesn't exist.
Note: if this path ever changes, utab updates will break.

Fixes the following error when mounting iPhone using ifuse:
ifuse /mnt --container com.httpstorm.httpstorm
mount: mounting ifuse on /mnt failed: Invalid argument

On OpenWRT by default mount-utils is not installed and utab
does not exist. /bin/mount is a symlink to /bin/busybox and
does not support updating of utab. If mount-utils is installed:
/run/mount/ exists, but does not contain utab.
The mount-utils instance is under /usr/bin/mount, so a hard-coded
call to /bin/mount will still fail. Using /usr/bin/mount succeeds
but does not create utab.

[1] libfuse#1247

Signed-off-by: Georgi Valkov <[email protected]>
(cherry picked from commit 3793b17)
Signed-off-by: Georgi Valkov <[email protected]>
Closes: libfuse#1310
Signed-off-by: CismonX <[email protected]>
(cherry picked from commit 42b9b3b)
These checks are meant for libfuse maintainers only,
and should not be exposed to users.

Signed-off-by: CismonX <[email protected]>
(cherry picked from commit a63fc71)
Signed-off-by: Bernd Schubert <[email protected]>
Update fused with fuse-3.17.4

Change-Id: I2e9933cffefc8b2c10d7a244b7909701afa9e6f0
Signed-off-by: Jeff Olivier <[email protected]>
@jolivier23 jolivier23 requested a review from a team as a code owner September 17, 2025 19:09
@jolivier23 jolivier23 merged commit 698d6b4 into master Sep 19, 2025
4 of 7 checks passed
@jolivier23 jolivier23 deleted the jvolivie/update_fused branch September 19, 2025 16:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.