Antonio SJ Musumeci
62873d2d3b
use getdents64 on linux
5 years ago
Antonio SJ Musumeci
d119807adb
restructure readdir, add readdir_plus
Does not enable READDIR_AUTO. Might add in the future.
6 years ago
Antonio SJ Musumeci
a646fe016d
change inode conversion algo to reduce collision
5 years ago
Antonio SJ Musumeci
576ff3694e
add cache.writeback to xattrs
5 years ago
Antonio SJ Musumeci
903d39f968
add writeback caching
5 years ago
Antonio SJ Musumeci
4d82ed9324
fix short writes on >2GB files when cloning file
5 years ago
Antonio SJ Musumeci
0fffabfbe3
only return 1 branch for rand/eprand policies
5 years ago
Antonio SJ Musumeci
50ad648ce4
initialize mutex to fix lockup
5 years ago
Antonio SJ Musumeci
4c4c27a93e
set uid & gid when calling ioctl
Turns out certain ioctl calls check the effective user id (FS_IOC_SETFLAGS).
5 years ago
Antonio SJ Musumeci
5ca928e436
accept old arguments for backwards compatibility
6 years ago
Antonio SJ Musumeci
7cbd88ac81
allow setting of 'max_pages' (via 'fuse_msg_size')
Linux 4.20 and above allow setting the number of pages per FUSE message
upto 256 (4K * 256 = 1MiB). This can greatly increase read and write
speeds depending on the workload.
6 years ago
Antonio SJ Musumeci
8cb7195c3e
add copy_file_range support
6 years ago
Antonio SJ Musumeci
529a953e30
add file caching across opens and runtime control
6 years ago
Antonio SJ Musumeci
ddf6a2f105
make async_read optional again
6 years ago
Antonio SJ Musumeci
2323c16316
add readdir caching
6 years ago
Antonio SJ Musumeci
1baa706d37
add symlink caching
6 years ago
Antonio SJ Musumeci
61cded5b34
fix for unlink race condition
6 years ago
Antonio SJ Musumeci
5f2221155c
ensure parallel dirops is enabled if capable
6 years ago
Antonio SJ Musumeci
2b019b84b0
ensure async_aio is enabled if capable
6 years ago
Antonio SJ Musumeci
80d56ac94e
add support for POSIX ACLs
6 years ago
Antonio SJ Musumeci
1ca70521a4
remove 'remote' flock support
6 years ago
Antonio SJ Musumeci
e052446713
fix setting of fsname
6 years ago
Antonio SJ Musumeci
5883020784
tweak docs
6 years ago
Antonio SJ Musumeci
6ecc618d83
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.
6 years ago
Antonio SJ Musumeci
2a075ead92
fall back to other file copy methods in clonefile
6 years ago
Antonio SJ Musumeci
b69819e4b2
ioctl: don't set outbufsz when not needed
6 years ago
Antonio SJ Musumeci
0918dfd117
make attr, entry, negative_entry cache timeouts runtime configurable
6 years ago
Antonio SJ Musumeci
95c0cc741d
replace libfuse's autoconf with makefile
6 years ago
Antonio SJ Musumeci
7bf607bb6b
fix FS_IOC_{GET,SET}{FLAGS,VERSION} ioctl calls
6 years ago
Antonio SJ Musumeci
940c323251
misc fixes for FreeBSD
6 years ago
Antonio SJ Musumeci
5ab7d2dd72
remove O_LARGEFILE
6 years ago
Antonio SJ Musumeci
9d9ee7b71d
general code cleanup
6 years ago
Antonio SJ Musumeci
c5b2415daf
remove `defaults`, hard code atomic_o_trunc, big_writes, and default_permissions
`defaults` is a value used by all filesystems and isn't passed through to
mergerfs when mounting via the fstab or the mount command. This led
to inconsistent application of options. atomic_o_trunc, big_writes, and
default_permissions should be enabled all the time anyway and splice_*
can lead to issues so they are not always enabled.
6 years ago
Antonio SJ Musumeci
5be7e007ce
add statfs cache
6 years ago
Antonio SJ Musumeci
7a057daa0c
add policy cache for 'open'
A fusepath -> basepath cache for `open` to limit the overhead of FUSE in 'open, read/write, close' patterns (such as Transmission).
6 years ago
Antonio SJ Musumeci
9fd3b968fc
make ioctl on directories use open policy
6 years ago
Antonio SJ Musumeci
87b2795f2b
set direct_io per open/create, now runtime configurable
6 years ago
Antonio SJ Musumeci
10f7f8bdea
optimize link_cow eligibility check
6 years ago
Antonio SJ Musumeci
dfa1c1ad6f
check minfreespace on newest policy create
6 years ago
Antonio SJ Musumeci
6ae68465cf
fix building on alpine w/ musl
6 years ago
Antonio SJ Musumeci
7d9458fdd1
change xattr setting notsup to nosys
6 years ago
Antonio SJ Musumeci
43b676a6e2
fix indexing of truncate targets
6 years ago
Antonio SJ Musumeci
c46134c03a
fix building on platforms without O_PATH
6 years ago
Antonio SJ Musumeci
3631ab7df2
optimize readdir file dedup
Use fasthash64 to hash filenames to uint64_t and store in khash
set. Significantly reduces malloc/free'ing and memory usage.
6 years ago
Antonio SJ Musumeci
680f8194f9
add ability to change statfs behavior
6 years ago
Antonio SJ Musumeci
7524e57262
rename NW (no write) to NC (no create)
6 years ago
Antonio SJ Musumeci
b55ebba4ed
add tagging branches RW/RO/NW
This allows users to tag a branch as readonly or not for writing regardless
of how the filesystem is mounted. Should simplify deployments and offer
more flexibility.
6 years ago
Antonio SJ Musumeci
9e0ab1f518
misc cleanups
6 years ago
Antonio SJ Musumeci
8a48b74cb4
policy return cleanup
6 years ago
Antonio SJ Musumeci
85026d5780
add FICLONE and copy_file_range to clonefile
If available FICLONE and copy_file_range will be tried in addition to sendfile
when copying data between two files. The fallback is a tradition read/write
loop. On systems that support these it should improve performance.
6 years ago