aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorLines
2024-10-30Correct arg documentation for FUSE_READLINKBernd Schubert-1/+1
It does not have an in-argument.
2024-10-29build(deps): bump github/codeql-action from 3.26.13 to 3.27.0dependabot[bot]-2/+2
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.13 to 3.27.0. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/f779452ac5af1c261dce0346a8f964149f49322b...662472033e021d55d94146f66f6058822b0b39fd) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
2024-10-29build(deps): bump actions/checkout from 4.2.1 to 4.2.2dependabot[bot]-5/+5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.1 to 4.2.2. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871...11bd71901bbe5b1630ceea73d27597364c9af683) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
2024-10-20codeql workflow: Switch from pip to aptBernd Schubert-2/+2
On some runs: Run pip install --break-system-packages -r requirements.txt .... no such option: --break-system-packages Error: Process completed with exit code 2. On other runs it refuses to install and asks for that option as it refuses to override system packages. Also require ubuntu-latest only, as MacOS is not supported at all by libfuse.
2024-10-20Update libfuse-operations.txt for FUSE_SYMLINKBernd Schubert-2/+2
2024-10-14Create codeql.ymlBernd Schubert-0/+80
2024-10-14fuse_buf_size fix for SIZE_MAXleipeng-4/+4
2024-10-11Add libfuse util strtol wrapperJoanne Koong-21/+66
Add a wrapper around strtol for more rigorous error checking and convert uses of atoi and strtol to use this instead.
2024-10-11build(deps): bump actions/checkout from 4.2.0 to 4.2.1dependabot[bot]-4/+4
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/d632683dd7b4114ad314bca15554477dd762a938...eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
2024-10-11ignore mtab on androidDaniel Rosenberg-1/+1
Updating the mtab on Android fails due to differences in toybox's mount command. Setting IGNORE_MTAB avoids that issue. Signed-off-by: Daniel Rosenberg <drosen@google.com>
2024-10-04build(deps): bump actions/checkout from 4.1.7 to 4.2.0dependabot[bot]-4/+4
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 4.2.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/692973e3d937129bcbf40652eb9f2f61becf3332...d632683dd7b4114ad314bca15554477dd762a938) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
2024-09-28fuse_lowlevel FUSE_INIT: Simplify the max_write/bufsize logicBernd Schubert-5/+9
max_write can be limited by se->op.init() and by the buffer size, we use the minimum of these two. Required se->bufsize is then set according to the determined max_write. The current thread will have the old buffer size, though, as it already had to the allocation to handle the FUSE_INIT call (unless splice is used and ths variable and related buffer is not used at all). The given bufsize is just a hint for minimum size, allocation could be actually larger (for example to get huge pages).
2024-09-28fuse_lowlevel FUSE_INIT: group bufsize and max_write adjustmentsBernd Schubert-12/+12
The further these lines are separated from each other the harder it is to read the code. There shouldn't be any code change behavior here.
2024-09-28Change FUSE_MAX_MAX_PAGES to FUSE_DEFAULT_MAX_PAGES_LIMITJoanne Koong-4/+10
A recent upstream patch [1] changed FUSE_MAX_MAX_PAGES to FUSE_DEFAULT_MAX_PAGES_LIMIT. Update libfuse to use FUSE_DEFAULT_MAX_PAGES_LIMIT as well instead of FUSE_MAX_MAX_PAGES. [1] https://lore.kernel.org/linux-fsdevel/20240923171311.1561917-1-joannelkoong@gmail.com/T/#t
2024-09-28Initialize session buffer size to value set by sysctlJoanne Koong-1/+24
Currently in libfuse, the buffer size for a fuse session is capped at 1 MiB on a 4k page system. A recent patch upstream [1] was merged that allows the max number of pages per fuse request to be dynamically configurable through the /proc/sys interface (/proc/sys/fs/fuse/max_pages_limit). This commit adds support for this on the libfuse side to set the fuse session buffer to take into account the max pages limit set in /proc/sys/fs/fuse/max_pages_limit. If this sysctl does not exist (eg older kernels), it will default to old behavior (using FUSE_MAX_MAX_PAGES (256) as the max pages limit). This allows for things like bigger write buffers per request. [1] https://lore.kernel.org/linux-fsdevel/20240923171311.1561917-1-joannelkoong@gmail.com/T/#t
2024-09-25ABI check: Use base commit / branch of a PR for ABI comparisonBernd Schubert-5/+2
The base commit is needed for comparison when a PR has multiple commits.
2024-09-24Libfuse check ABI differences with 'abidiff'Bernd Schubert-0/+67
2024-09-23add version check for the fuse_loop_cfg* operationsyangyun-2/+13
fuse_loop_cfg* operations are introduced in fuse version 312 and can not be used in an early version. Also fix some typo.
2024-09-19passthrough_hp: Use fuse_loop_cfg_set_max_threads()Bernd Schubert-1/+1
fuse_loop_cfg_set_idle_threads() was by accident and setting it might cause a performance issue.
2024-09-16fusermount: Close file descriptors with close_range() if possibleBernd Schubert-1/+26
close_range() is much more efficient. Also remove the lower limit of 3 and set it to 0, as 0 to 1 might have been closed by the application and might be valid.
2024-09-16fusermount: close inherited fdsMJ Harvey-1/+19
When using the auto_unmount option, the fusermount3 watchdog process retains any inherited file descriptors. This PR ensures they are closed. Reason is that FDs that are kept open for a long time might cause issues for applications using libfuse, for example if these expect a pipe close, but the pipe is kept open through the inherited file descriptor. See for example: https://github.com/cvmfs/cvmfs/issues/3645 Signed-off-by: MJ Harvey <mharvey@jumptrading.com> Signed-off-by: Bernd Schubert <bschubert@ddn.com>
2024-09-13example/passthrough_hp: Set keep_cache and noflush in sfs_createBernd Schubert-2/+3
These flags should be also set for O_CREAT
2024-09-13example/passthrough_hp: No auto FOPEN_DIRECT_IO in passthrough modeBernd Schubert-22/+27
sfs_open and sfs_create set fi->direct_io (FOPEN_DIRECT_IO) when O_DIRECT is given, in order to benefit from a shared inode lock in kernel, i.e. to get parallel DIO writes. However, kernel side disabled passthrough when FOPEN_DIRECT_IO is set. Reads/writes had been totally failing in this case for O_DIRECT as sfs_write_buf() and sfs_read() have a sanity check. That sanity check could be modified, but for performance passthrough is better than parallel DIO, hence, we only want automatic FOPEN_DIRECT_IO for O_DIRECT when passthrough is not enabled. Fixes: https://github.com/libfuse/libfuse/issues/1027 This also fixes automatically switching to FOPEN_DIRECT_IO for O_DIRECT in sfs_create().
2024-09-12getattr: Make use of FUSE_GETATTR_FH in lowlevel examplesBernd Schubert-7/+8
High level examples were already using it, but not lowlevel. Also update the documentation.
2024-09-05Bump codespell-project/actions-codespell from 2.0 to 2.1dependabot[bot]-1/+1
Bumps [codespell-project/actions-codespell](https://github.com/codespell-project/actions-codespell) from 2.0 to 2.1. - [Release notes](https://github.com/codespell-project/actions-codespell/releases) - [Commits](https://github.com/codespell-project/actions-codespell/compare/94259cd8be02ad2903ba34a22d9c13de21a74461...406322ec52dd7b488e48c1c4b82e2a8b3a1bf630) --- updated-dependencies: - dependency-name: codespell-project/actions-codespell dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
2024-08-26remove unused headers in example/poll_clientyangyun-1/+0
fuse_config.h is used in libfuse internally. This may confuse developers that fuse_config.h is used in the examples.
2024-08-21Rearrange util/fusermount.c umount_fuse_locked() so thatNorman Wilson-2/+4
umount2 is called with privs dropped, not raised. This works around a clash with NFS permissions: if FUSE mounted on NFS client directory with root_squash in effect, and some directory in the path leading to the mount point denies permissions to others, umount2 will fail because userid 0 cannot search it. Since drop_privs merely sets the file- system user- and group-ID without changing the CAP_SYS_ADMIN capability needed to unmount a file system (which fusermount has because it is set-user-ID root), umount2 works fine.
2024-08-19Fix FUSE_USE_VERSION in example/notify_store_retrieve.cyangyun-1/+1
This is an addition to commit e75d2c54a347. This example sets FUSE_USE_VERSION = 34 but uses fuse_loop_cfg_* APIs, which is not allowed since these APIs are not introduced in version 34.
2024-08-07doc/libfuse-operations: Fix FUSE_STATX in_args[1] descriptionJoanne Koong-1/+1
2024-08-02Fix program-path in util/parse-backtrace and dump_stack functionBernd Schubert-4/+4
The option to the path of the binary had been accidentally removed in the scripts that can parse backtraces. The dump_stack() function had left over debug messages.
2024-08-01example/passthrough_hp: Remove unused includesBernd Schubert-4/+0
Fix some clang-tidy warnings. Signed-off-by: Bernd Schubert <bschubert@ddn.com>
2024-08-01Fix FUSE_USE_VERSION in example/Bernd Schubert-3/+3
This is an addition to commit a8f1ae35af66, which introduced the 312 API, but didn't set the right API version in all examples. Signed-off-by: Bernd Schubert <bschubert@ddn.com>
2024-08-01synchronize fuse_kernel.h with linux-6.10Bernd Schubert-1/+17
Signed-off-by: Bernd Schubert <bschubert@ddn.com>
2024-07-30example/passthrough_hp: Fix . and .. readdir lookup countBernd Schubert-5/+7
Commit 170edc6a8ef0 added dot and dotdot (. and ..) to readdir results, but introduced an issue when max number of entries was reached - lookup count must not be decreased without doing the lookup. With ext4 as underlying file system readir seems to return . and .. at random offsets and randomly failed xfstests for me. This also fixes indentation, as passthrough_hp.cc does not follow the linux indentation style (if we decide to fix this, it needs to be done for the entire file). Signed-off-by: Bernd Schubert <bschubert@ddn.com>
2024-07-30Add a script to parse backtracesBernd Schubert-0/+114
2024-07-29Add MS_NOSYMFOLLOW compat definitionBernd Schubert-1/+8
After commit 54466d2c426b compilation was failing on my debian VM.
2024-07-29Pass through nosymfollow mount optionTyler Hall-0/+7
This option is handled in VFS. Added in Linux 5.10 dab741e0e02bd3c4f5e2e97be74b39df2523fc6e Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
2024-07-29Gate #include <execinfo.h> behind #ifdef HAVE_BACKTRACENils-1/+4
execinfo.h is unnecessary if HAVE_BACKTRACE is not defined. This increases portability for systems without execinfo.h
2024-07-17fuse_log: initialize sys_log_level variable to avoid compiler warningJoanne Koong-2/+2
2024-07-14Add RAMFS to fusermount permitted mount targetsBernd Schubert-0/+1
Addresses issue https://github.com/libfuse/libfuse/issues/982
2024-07-14Add syslog and fatal signal handler featureBernd Schubert-32/+229
I see random ENOTCONN failures in xfstest generic/013 and generic/014 in my branch, but earliest on the 2nd run - takes ~12hours to get the issue, but then there are no further information logged. ENOTCONN points to a daemon crash - I need backtraces and a core dump. This adds optional handling of fatal signals to print a core dump and optional syslog logging with these new public functions: fuse_set_fail_signal_handlers() In addition to the existing fuse_set_signal_handlers(). This is not enabled together with fuse_set_signal_handlers(), as it is change in behavior and file systems might already have their own fatal handlers. fuse_log_enable_syslog Print logs to syslog instead of stderr fuse_log_close_syslog Close syslog (for now just does closelog()) Code in fuse_signals.c is also updated, to be an array of signals, and setting signal handlers is now down with a for-loop instead of one hand coded set_one_signal_handler() per signal.
2024-07-09xfstests: Add '-odev' to passthrough mount optionsBernd Schubert-1/+1
generic/434 and generic/184 are testing device files and fail because fuse sets 'nodev' by default.
2024-07-08passthrough_hp: include . and .. in readdirJoanne Koong-5/+10
generic/401 fails currently because it checks that "." and ".." are listed as directory entries. Include "." and ".." as listed directory entries in passthrough_hp's readdir implementation. Signed-off by: Joanne Koong <joannelkoong@gmail.com>
2024-07-08example/notify_inval_entry.c: improve comment readabilitydesertwitch-2/+2
Follow the same format as other arguments passed to example commands.
2024-07-08example/notify_inval_entry.c: fix example command in commentsdesertwitch-1/+1
Notifications should be enabled here, but present command example would disable them.
2024-07-03Add list of libfuse (kernel) operationsBernd Schubert-0/+418
This is to document operations and to also list their in/out arguments. This list was auto generated and only partly verified, use with care. Not all operations are supported by libfuse yet.
2024-07-03Annotate ABI sensitivness for some data structuresBernd Schubert-5/+16
These are not all ABI sensitive data structures yet. Also some space vs tab indentation issues are corrected.
2024-07-03high-level: add fmask and dmask optionsgandalfs_cat-5/+27
dmask: umask applied to directories fmask: umask applied to non-directories to get "typical" permission bits for regular files (0644) and directories (0755), a single umask option is not sufficient (or well, it isn't the way fuse implements it) there is precident for separate umask and dmask options in other filesystems (see for example fat: https://github.com/torvalds/linux/tree/master/fs/fat) this addition should not affect backward-compatibility; the original umask option retains the same meaning, but non-zero fmask or dmask will override it.
2024-06-25Add nullptr check in fuse_session_mountBernd Schubert-0/+10
The pointer did not have any sanity check. Addresses https://github.com/libfuse/libfuse/issues/979
2024-06-25Use off_t instead of loff_tCismonX-3/+1
Since we're already enforcing 64-bit off_t, using loff_t makes no difference. Also loff_t is Linux-only, which breaks compatibility for *BSD.