Package: mergerfs Version: 2.31.0-1 Severity: important Tags: patch upstream X-Debbugs-Cc: linu...@gmail.com
Dear Maintainer, The https://github.com/trapexit/mergerfs/pull/878 patch released as a part of mergerfs-2.32.3 upstream could be applied to the 2.31.0-1 version currently packaged in Debian bullseye to resolve the $subj issue. See https://github.com/trapexit/mergerfs/issues/877 and https://midnight-commander.org/ticket/4226 for additional background information. Alternatively, please consider packaging the latest upstream release. It contains several other fixes not related to this bug. -- System Information: Debian Release: 11.0 APT prefers testing-security APT policy: (500, 'testing-security'), (500, 'testing') Architecture: amd64 (x86_64) Kernel: Linux 5.10.0-7-amd64 (SMP w/4 CPU threads) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages mergerfs depends on: ii fuse 2.9.9-5 ii libc6 2.31-12 ii libfuse2 2.9.9-5 ii libgcc-s1 10.2.1-6 ii libstdc++6 10.2.1-6 mergerfs recommends no packages. mergerfs suggests no packages. -- no debconf information
Description: reset dentry buffer when rewind'ed Merge https://github.com/trapexit/mergerfs/pull/878 from mergerfs-2.32.3 that fixes duplicate file and directory names in Midnight Commander. Origin: upstream, https://github.com/trapexit/mergerfs/pull/878. Bug: https://github.com/trapexit/mergerfs/issues/877. Last-Update: 2021-06-07 --- mergerfs-2.31.0.orig/src/fuse_readdir_linux.cpp +++ mergerfs-2.31.0/src/fuse_readdir_linux.cpp @@ -66,6 +66,8 @@ namespace l uint64_t namelen; struct linux_dirent64 *d; + fuse_dirents_reset(buf_); + buf = (char*)g_DENTS_BUF_POOL.alloc(); if(buf == NULL) return -ENOMEM; --- mergerfs-2.31.0.orig/src/fuse_readdir_plus_linux.cpp +++ mergerfs-2.31.0/src/fuse_readdir_plus_linux.cpp @@ -70,6 +70,8 @@ namespace l fuse_entry_t entry; struct linux_dirent64 *d; + fuse_dirents_reset(buf_); + buf = (char*)g_DENTS_BUF_POOL.alloc(); entry.nodeid = 0; --- mergerfs-2.31.0.orig/src/fuse_readdir_plus_posix.cpp +++ mergerfs-2.31.0/src/fuse_readdir_plus_posix.cpp @@ -72,6 +72,8 @@ namespace l uint64_t namelen; fuse_entry_t entry; + fuse_dirents_reset(buf_); + entry.nodeid = 0; entry.generation = 0; entry.entry_valid = entry_timeout_; --- mergerfs-2.31.0.orig/src/fuse_readdir_posix.cpp +++ mergerfs-2.31.0/src/fuse_readdir_posix.cpp @@ -67,6 +67,8 @@ namespace l string fullpath; uint64_t namelen; + fuse_dirents_reset(buf_); + for(size_t i = 0, ei = branches_.size(); i != ei; i++) { int rv;