Skip to content

Commit e6ed92d

Browse files
committed
Merge upstream libfuse fuse-3.18.2
# Conflicts: # .github/workflows/abicheck.yml # .github/workflows/checkpatch.yml # .github/workflows/codeql.yml # .github/workflows/codespell.yml # .github/workflows/iwyi-check.yml # .github/workflows/pr-ci.yml # AUTHORS # ChangeLog.rst # example/meson.build # example/passthrough.c # example/passthrough_hp.cc # include/fuse_common.h # lib/fuse.c # lib/fuse_i.h # lib/fuse_loop_mt.c # lib/fuse_lowlevel.c # lib/fuse_versionscript # lib/meson.build # lib/mount.c # lib/mount_bsd.c # lib/util.c # lib/util.h # meson.build # test/ci-build.sh # test/hello.c # test/meson.build # test/test_syscalls.c # test/test_write_cache.c # util/fusermount.c
2 parents 698d6b4 + 0338447 commit e6ed92d

96 files changed

Lines changed: 6684 additions & 2762 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dir-locals.el

Lines changed: 62 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,64 @@
11
((python-mode . ((indent-tabs-mode . nil)))
2-
(autoconf-mode . ((indent-tabs-mode . t)))
3-
(c++-mode . ((c-file-style . "k&r")
4-
(indent-tabs-mode . nil)
5-
(c-basic-offset . 4)
6-
(c-file-offsets .
7-
((block-close . 0)
8-
(brace-list-close . 0)
9-
(brace-list-entry . 0)
10-
(brace-list-intro . +)
11-
(case-label . 0)
12-
(class-close . 0)
13-
(defun-block-intro . +)
14-
(defun-close . 0)
15-
(defun-open . 0)
16-
(else-clause . 0)
17-
(inclass . +)
18-
(label . 0)
19-
(statement . 0)
20-
(statement-block-intro . +)
21-
(statement-case-intro . +)
22-
(statement-cont . +)
23-
(substatement . +)
24-
(topmost-intro . 0)))))
25-
(c-mode . ((c-file-style . "stroustrup")
26-
(indent-tabs-mode . t)
27-
(tab-width . 8)
2+
(c++-mode . ((c-file-style . "linux-kernel")
3+
(c-basic-offset . 8)
4+
(c-label-minimum-indentation . 0)
5+
(c-offsets-alist . (
6+
(arglist-close . c-lineup-arglist-tabs-only)
7+
(arglist-cont-nonempty .
8+
(c-lineup-gcc-asm-reg c-lineup-arglist-tabs-only))
9+
(arglist-intro . +)
10+
(brace-list-intro . +)
11+
(c . c-lineup-C-comments)
12+
(case-label . 0)
13+
(comment-intro . c-lineup-comment)
14+
(cpp-define-intro . +)
15+
(cpp-macro . -1000)
16+
(cpp-macro-cont . +)
17+
(defun-block-intro . +)
18+
(else-clause . 0)
19+
(func-decl-cont . +)
20+
(inclass . +)
21+
(inher-cont . c-lineup-multi-inher)
22+
(knr-argdecl-intro . 0)
23+
(label . -1000)
24+
(statement . 0)
25+
(statement-block-intro . +)
26+
(statement-case-intro . +)
27+
(statement-cont . +)
28+
(substatement . +)
29+
))
30+
(indent-tabs-mode . t)
31+
(show-trailing-whitespace . t)
32+
))
33+
(c-mode . ((c-file-style . "linux-kernel")
2834
(c-basic-offset . 8)
29-
(c-file-offsets .
30-
((block-close . 0)
31-
(brace-list-close . 0)
32-
(brace-list-entry . 0)
33-
(brace-list-intro . +)
34-
(case-label . 0)
35-
(class-close . 0)
36-
(defun-block-intro . +)
37-
(defun-close . 0)
38-
(defun-open . 0)
39-
(else-clause . 0)
40-
(inclass . +)
41-
(label . 0)
42-
(statement . 0)
43-
(statement-block-intro . +)
44-
(statement-case-intro . +)
45-
(statement-cont . +)
46-
(substatement . +)
47-
(topmost-intro . 0))))))
35+
(c-label-minimum-indentation . 0)
36+
(c-offsets-alist . (
37+
(arglist-close . c-lineup-arglist-tabs-only)
38+
(arglist-cont-nonempty .
39+
(c-lineup-gcc-asm-reg c-lineup-arglist-tabs-only))
40+
(arglist-intro . +)
41+
(brace-list-intro . +)
42+
(c . c-lineup-C-comments)
43+
(case-label . 0)
44+
(comment-intro . c-lineup-comment)
45+
(cpp-define-intro . +)
46+
(cpp-macro . -1000)
47+
(cpp-macro-cont . +)
48+
(defun-block-intro . +)
49+
(else-clause . 0)
50+
(func-decl-cont . +)
51+
(inclass . +)
52+
(inher-cont . c-lineup-multi-inher)
53+
(knr-argdecl-intro . 0)
54+
(label . -1000)
55+
(statement . 0)
56+
(statement-block-intro . +)
57+
(statement-case-intro . +)
58+
(statement-cont . +)
59+
(substatement . +)
60+
))
61+
(indent-tabs-mode . t)
62+
(show-trailing-whitespace . t)
63+
))
64+
)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
name: Bug report
3+
about: Create a report to help us improve
4+
title: ''
5+
labels: ''
6+
assignees: ''
7+
8+
---
9+
10+
**Describe the bug**
11+
A clear and concise description of what the bug is.
12+
13+
**To Reproduce**
14+
Steps to reproduce the behavior:
15+
16+
**Expected behavior**
17+
A clear and concise description of what you expected to happen.
18+
19+
**Screenshots**
20+
If applicable, add screenshots to help explain your problem.
21+
22+
**Desktop (please complete the following information):**
23+
- OS: [e.g. Debian]
24+
- Version [e.g. 12]
25+
26+
**Additional context**
27+
Add any other context about the problem here.

.github/ISSUE_TEMPLATE/issue-report.md

Lines changed: 0 additions & 16 deletions
This file was deleted.

.github/workflows/abicheck.yml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,18 @@ jobs:
2626
if: runner.os == 'Linux'
2727
run: |
2828
sudo apt-get update
29-
sudo apt-get -y install abigail-tools clang gcc
29+
sudo apt-get -y install abigail-tools clang gcc liburing-dev libnuma-dev
3030
31-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
31+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
3232
with:
3333
path: current
3434

35-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
35+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
3636
with:
3737
path: previous
3838
ref: ${{ github.event.pull_request.base.ref }}
3939

40-
- uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0
40+
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
4141
with:
4242
python-version: '3.12'
4343

@@ -59,7 +59,8 @@ jobs:
5959
- name: Run abidiff
6060
run: abidiff
6161
--no-added-syms
62-
--headers-dir1 previous/include/
63-
--headers-dir2 current/include/
64-
previous/build/lib/libfused.so
65-
current/build/lib/libfused.so
62+
--suppressions current/.github/workflows/abidiff_suppressions.abignore
63+
--headers-dir1 previous/include/
64+
--headers-dir2 current/include/
65+
previous/build/lib/libfuse3.so
66+
current/build/lib/libfuse3.so
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
name: 'libfuse ABI check against previous major release'
3+
4+
on:
5+
push:
6+
branches:
7+
- master
8+
- 'fuse-[0-9]+.[0-9]+*' # This will match branches like 3.17, 3.18, 4.0, etc.
9+
pull_request:
10+
branches:
11+
- master
12+
- 'fuse-[0-9]+.[0-9]+*'
13+
permissions:
14+
contents: read
15+
16+
jobs:
17+
abi:
18+
runs-on: '${{ matrix.os }}'
19+
strategy:
20+
matrix:
21+
os:
22+
- ubuntu-latest
23+
24+
steps:
25+
- name: Install dependencies (Ubuntu)
26+
if: runner.os == 'Linux'
27+
run: |
28+
sudo apt-get update
29+
sudo apt-get -y install abigail-tools clang gcc liburing-dev libnuma-dev
30+
31+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
32+
with:
33+
path: current
34+
fetch-depth: 0 # Fetch all history and tags
35+
36+
- name: Determine previous major release tag
37+
id: prev_release
38+
run: |
39+
cd current
40+
chmod +x .github/workflows/find_previous_release_tag.sh
41+
PREV_TAG=$(.github/workflows/find_previous_release_tag.sh)
42+
echo "prev_tag=$PREV_TAG" >> $GITHUB_OUTPUT
43+
44+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
45+
with:
46+
path: previous
47+
ref: ${{ steps.prev_release.outputs.prev_tag }}
48+
49+
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
50+
with:
51+
python-version: '3.12'
52+
53+
- name: Build current
54+
working-directory: current
55+
run: |
56+
pip install -r requirements.txt
57+
meson setup build --buildtype=debug
58+
meson compile -C build
59+
60+
- name: Build previous
61+
working-directory: previous
62+
run: |
63+
echo "Previous release tag: ${{ steps.prev_release.outputs.prev_tag }}"
64+
echo "Commit-id of previous release: $(git show HEAD)"
65+
pip install -r requirements.txt
66+
meson setup build --buildtype=debug
67+
meson compile -C build
68+
69+
- name: Run abidiff
70+
run: abidiff
71+
--no-added-syms
72+
--suppressions current/.github/workflows/abidiff_suppressions.abignore
73+
--headers-dir1 previous/include/
74+
--headers-dir2 current/include/
75+
previous/build/lib/libfuse3.so
76+
current/build/lib/libfuse3.so
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Suppression file for abidiff false positives in libfuse
2+
# This file suppresses ABI changes that are actually compatible but flagged by abidiff
3+
4+
[suppress_type]
5+
# Suppress the fuse_conn_info reserved array transformation
6+
# This change is ABI-compatible: uint32_t[16] -> uint16_t request_timeout + uint16_t[31]
7+
# Both use exactly 64 bytes (16*4 = 32*2 = 64 bytes)
8+
name = fuse_conn_info
9+
# Suppress changes to the reserved field that are size/offset related
10+
change_kind = size-or-offset-change
11+
has_data_member_inserted_at = offset_in_bits(512)
12+
13+
[suppress_type]
14+
# Also suppress the general struct size change for fuse_conn_info
15+
# since the total size remains the same (128 bytes) by a static assertion
16+
# in the code
17+
name = fuse_conn_info
18+
change_kind = size-change
19+
20+
[suppress_type]
21+
# Suppress ALL changes to fuse_operations struct
22+
# These are backward compatible due to the op_size mechanism in fuse_main()
23+
# Applications pass sizeof(struct fuse_operations) at compile time,
24+
# and the library uses memcpy(&fs->op, op, op_size) to safely copy only
25+
# the fields the application knows about. New fields remain NULL.
26+
name = fuse_operations
27+
has_data_member_inserted_at = end
28+
has_size_change = yes
29+
30+
[suppress_type]
31+
# Suppress ALL changes to fuse_lowlevel_ops struct
32+
# These are backward compatible due to the op_size mechanism in fuse_session_new()
33+
# Same pattern as fuse_operations - op_size controls safe copying
34+
name = fuse_lowlevel_ops
35+
has_data_member_inserted_at = end
36+
has_size_change = yes

.github/workflows/bsd.yaml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
# TODO: integrate into matrix.os in pr-ci.yml
3+
# TODO: add NetBSD and DragonFlyBSD
4+
name: 'Build (FreeBSD)'
5+
on:
6+
push:
7+
branches:
8+
- master
9+
- 'fuse-[0-9]+.[0-9]+*'
10+
pull_request:
11+
branches:
12+
- master
13+
- 'fuse-[0-9]+.[0-9]+*'
14+
15+
jobs:
16+
build_bsd:
17+
runs-on: ubuntu-latest
18+
name: Build under FreeBSD
19+
steps:
20+
- name: Checkout
21+
uses: actions/checkout@v6.0.1
22+
- name: Build
23+
uses: vmactions/freebsd-vm@v1
24+
with:
25+
usesh: true
26+
prepare: |
27+
pkg install -y meson ninja
28+
run: |
29+
mkdir build
30+
cd build
31+
meson setup ..
32+
ninja -v
33+
...

.github/workflows/checkpatch.yml

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
11
name: Checkpatch
22

33
on:
4-
push:
5-
branches:
6-
- master
74
pull_request:
5+
types: [opened, synchronize, reopened]
86
branches:
97
- master
10-
permissions:
11-
contents: read
128

139
jobs:
1410
checkpatch:
1511
runs-on: ubuntu-latest
1612
steps:
17-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
13+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
1814
with:
1915
fetch-depth: 0
2016
- name: Install dependencies
@@ -23,14 +19,23 @@ jobs:
2319
sudo apt-get install -y perl
2420
- name: Run checkpatch.pl
2521
run: |
22+
if [ -z "${{ github.base_ref }}" ]; then
23+
echo "Not a pull request, skipping checkpatch"
24+
exit 0
25+
fi
2626
git fetch origin ${{ github.base_ref }}
2727
base_commit=$(git merge-base origin/${{ github.base_ref }} HEAD)
2828
echo "Base commit: $base_commit"
2929
echo "Running checkpatch.pl on all commits in the PR:"
3030
git rev-list --reverse $base_commit..HEAD | while read commit; do
31+
# Skip dependabot commits - we do not have control over it
32+
if git log -1 --format='%ae' $commit | grep -q "dependabot"; then
33+
echo "Skipping dependabot commit: $commit"
34+
continue
35+
fi
3136
subject=$(git log -1 --format=%s $commit)
3237
echo "Checking commit: $commit - $subject"
33-
if ! ./checkpatch.pl --no-tree --ignore MAINTAINERS,SPDX_LICENSE_TAG,COMMIT_MESSAGE,FILE_PATH_CHANGES,EMAIL_SUBJECT,AVOID_EXTERNS,GIT_COMMIT_ID,ENOSYS_SYSCALL -g $commit; then
38+
if ! ./checkpatch.pl --max-line-length=100 --no-tree --ignore MAINTAINERS,SPDX_LICENSE_TAG,COMMIT_MESSAGE,FILE_PATH_CHANGES,EMAIL_SUBJECT,AVOID_EXTERNS,GIT_COMMIT_ID,ENOSYS_SYSCALL,ENOSYS,FROM_SIGN_OFF_MISMATCH,QUOTED_COMMIT_ID,PREFER_ATTRIBUTE_ALWAYS_UNUSED,PREFER_DEFINED_ATTRIBUTE_MACRO -g $commit; then
3439
echo "checkpatch.pl found issues in commit $commit - $subject"
3540
exit 1
3641
fi

0 commit comments

Comments
 (0)