Antonio SJ Musumeci
b4397f7f2e
add 'inodecalc' option to allow selection of inode calculation algo
4 years ago
Antonio SJ Musumeci
dbdd3e22fc
additional readdir refactor cleanup
Differences between readdir and getdents is minimal at best. Leaving code
for now to allow for possible expansion later.
4 years ago
Antonio SJ Musumeci
54c41c4994
rework config management
* Add standard way to do str2val and val2str conversion
* Add support for a config file
* Add support for reading and writing settings via ioctl
5 years ago
Antonio SJ Musumeci
698c4147fc
fix getdent name length calculation
5 years ago
Antonio SJ Musumeci
3a46ec9fab
fix filename hashing error
5 years ago
Antonio SJ Musumeci
9b2634a1e5
fix name length calculation for musc
5 years ago
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