Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package fuse-overlayfs for openSUSE:Factory checked in at 2026-01-01 14:59:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fuse-overlayfs (Old) and /work/SRC/openSUSE:Factory/.fuse-overlayfs.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fuse-overlayfs" Thu Jan 1 14:59:16 2026 rev:22 rq:1324854 version:1.16 Changes: -------- --- /work/SRC/openSUSE:Factory/fuse-overlayfs/fuse-overlayfs.changes 2025-06-04 20:27:35.634597839 +0200 +++ /work/SRC/openSUSE:Factory/.fuse-overlayfs.new.1928/fuse-overlayfs.changes 2026-01-01 14:59:18.694702800 +0100 @@ -1,0 +2,6 @@ +Wed Dec 24 10:51:23 UTC 2025 - Andreas Stieger <[email protected]> + +- update to 0.16: + * fix incorrect directory entries due to unstable iteration order + +------------------------------------------------------------------- Old: ---- v1.15.tar.gz New: ---- v1.16.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fuse-overlayfs.spec ++++++ --- /var/tmp/diff_new_pack.bNfgSd/_old 2026-01-01 14:59:20.626782038 +0100 +++ /var/tmp/diff_new_pack.bNfgSd/_new 2026-01-01 14:59:20.638782530 +0100 @@ -17,7 +17,7 @@ Name: fuse-overlayfs -Version: 1.15 +Version: 1.16 Release: 0 Summary: FUSE implementation for overlayfs License: GPL-2.0-or-later ++++++ v1.15.tar.gz -> v1.16.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuse-overlayfs-1.15/.github/workflows/release.yaml new/fuse-overlayfs-1.16/.github/workflows/release.yaml --- old/fuse-overlayfs-1.15/.github/workflows/release.yaml 2025-05-08 08:36:11.000000000 +0200 +++ new/fuse-overlayfs-1.16/.github/workflows/release.yaml 2025-11-05 11:28:52.000000000 +0100 @@ -15,25 +15,33 @@ - run: echo "SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)" >> $GITHUB_ENV - uses: docker/setup-buildx-action@v2 - name: Cache var-cache-apt - uses: actions/cache@v3 + uses: actions/[email protected] with: path: var-cache-apt key: var-cache-apt-${{ hashFiles('Containerfile.cross') }} - name: Cache var-lib-apt - uses: actions/cache@v3 + uses: actions/[email protected] with: path: var-lib-apt key: var-lib-apt-${{ hashFiles('Containerfile.cross') }} - name: inject var-cache-apt into docker - uses: reproducible-containers/[email protected] + uses: reproducible-containers/[email protected] with: cache-source: var-cache-apt - cache-target: /var/cache/apt + cache-map: | + { + "var-cache-apt": "/var/cache/apt", + "var-lib-apt": "/var/lib/apt" + } - name: inject var-lib-apt into docker - uses: reproducible-containers/[email protected] + uses: reproducible-containers/[email protected] with: cache-source: var-lib-apt - cache-target: /var/lib/apt + cache-map: | + { + "var-cache-apt": "/var/cache/apt", + "var-lib-apt": "/var/lib/apt" + } - name: "Build binaries from Containerfile.cross" run: docker buildx build -o /tmp/fuse-overlayfs-builds --build-arg SOURCE_DATE_EPOCH --platform=amd64,arm64,arm,s390x,ppc64le,riscv64 -f Containerfile.cross . - name: "Create /tmp/artifact" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuse-overlayfs-1.15/Containerfile.cross new/fuse-overlayfs-1.16/Containerfile.cross --- old/fuse-overlayfs-1.15/Containerfile.cross 2025-05-08 08:36:11.000000000 +0200 +++ new/fuse-overlayfs-1.16/Containerfile.cross 2025-11-05 11:28:52.000000000 +0100 @@ -4,10 +4,10 @@ # --build-arg SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) \ # --platform=amd64,arm64,arm,s390x,ppc64le,riscv64 \ # -f Containerfile.cross . -FROM --platform=$BUILDPLATFORM tonistiigi/xx:1.2.1 AS xx -FROM --platform=$BUILDPLATFORM ubuntu:jammy-20230804 AS fuse-overlayfs +FROM --platform=$BUILDPLATFORM tonistiigi/xx:1.8.0 AS xx +FROM --platform=$BUILDPLATFORM ubuntu:questing AS fuse-overlayfs ADD --chmod=0755 \ - https://raw.githubusercontent.com/reproducible-containers/repro-sources-list.sh/v0.1.0/repro-sources-list.sh \ + https://raw.githubusercontent.com/reproducible-containers/repro-sources-list.sh/v0.1.4/repro-sources-list.sh \ /usr/local/bin/repro-sources-list.sh RUN \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ @@ -34,7 +34,7 @@ if xx-info is-cross; then gcc="gcc-$(xx-info triple)"; fi; \ apt-get install -y "${gcc}" "libfuse3-dev:${darch}" RUN ./autogen.sh && \ - LIBS="-ldl" LDFLAGS="-static" ./configure --host=$(xx-info) && \ + PKG_CONFIG_PATH="/usr/lib/$(xx-info)/pkgconfig" LIBS="-ldl" LDFLAGS="-static" ./configure --host=$(xx-info) && \ make && mkdir /out && cp fuse-overlayfs /out && \ file /out/fuse-overlayfs | grep "statically linked" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuse-overlayfs-1.15/NEWS new/fuse-overlayfs-1.16/NEWS --- old/fuse-overlayfs-1.15/NEWS 2025-05-08 08:36:11.000000000 +0200 +++ new/fuse-overlayfs-1.16/NEWS 2025-11-05 11:28:52.000000000 +0100 @@ -1,3 +1,8 @@ +* fuse-overlayfs-1.16 + +- main: fix incorrect directory entries due to unstable iteration + order. + * fuse-overlayfs-1.15 - main: lookup upperdir only for created directories. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuse-overlayfs-1.15/configure.ac new/fuse-overlayfs-1.16/configure.ac --- old/fuse-overlayfs-1.15/configure.ac 2025-05-08 08:36:11.000000000 +0200 +++ new/fuse-overlayfs-1.16/configure.ac 2025-11-05 11:28:52.000000000 +0100 @@ -1,5 +1,5 @@ AC_PREREQ([2.69]) -AC_INIT([fuse-overlayfs], [1.15], [[email protected]]) +AC_INIT([fuse-overlayfs], [1.16], [[email protected]]) AC_CONFIG_SRCDIR([main.c]) AC_CONFIG_HEADERS([config.h]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuse-overlayfs-1.15/main.c new/fuse-overlayfs-1.16/main.c --- old/fuse-overlayfs-1.15/main.c 2025-05-08 08:36:11.000000000 +0200 +++ new/fuse-overlayfs-1.16/main.c 2025-11-05 11:28:52.000000000 +0100 @@ -2308,6 +2308,17 @@ return (struct ovl_dirp *) (uintptr_t) fi->fh; } +/* Comparison function for qsort to ensure stable directory entry order. + Entries are sorted by name to guarantee consistent offsets across + multiple opendir sessions. */ +static int +compare_nodes_by_name (const void *a, const void *b) +{ + struct ovl_node *node_a = *(struct ovl_node **) a; + struct ovl_node *node_b = *(struct ovl_node **) b; + return strcmp (node_a->name, node_b->name); +} + static int reload_tbl (struct ovl_data *lo, struct ovl_dirp *d, struct ovl_node *node) { @@ -2341,6 +2352,16 @@ d->tbl[counter++] = it; } + /* Sort the directory entries by name to ensure stable offsets. + + The kernel FUSE layer caches directory listings using offsets as + identifiers. If entries change positions between opendir sessions + (which can happen when nodes are freed and recreated between loads), + the kernel may incorrectly skip or duplicate entries. + + Sorting ensures the same filename always appears at the same offset. */ + qsort (&d->tbl[2], counter - 2, sizeof (struct ovl_node *), compare_nodes_by_name); + return 0; }
