remove .fuse_hidden file creation

addresses #521

mergerfs is written using libfuse's high level API. The HLAPI forces a certain
behavior with regard to unlinking or rename overwriting of open files. It
renames the file to .fuse_hiddenXXXXXX and when incoming requests refer
to the unlinked file it will use path based calls and use that path.

This behavior leads to rmdirs failing or some software noticing
the .fuse_hidden files.

This patch changes the HLAPI and removes entirely the .fuse_hidden behavior.

See the README for more.
This commit is contained in:
Antonio SJ Musumeci 2019-03-03 23:26:20 -05:00
parent 46be946672
commit 6ecc618d83
23 changed files with 880 additions and 299 deletions

View file

@ -20,6 +20,8 @@
#include "fs_base_chown.hpp"
#include "fs_base_fadvise.hpp"
#include "fs_base_fallocate.hpp"
#include "fs_base_fchmod.hpp"
#include "fs_base_fchown.hpp"
#include "fs_base_ftruncate.hpp"
#include "fs_base_stat.hpp"
#include "fs_base_utime.hpp"
@ -109,7 +111,7 @@ namespace fs
if(rv == -1)
return -1;
rv = fs::utime(dst_fd_,src_st);
rv = fs::futime(dst_fd_,src_st);
if(rv == -1)
return -1;