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;

Reply via email to