Commit graph

282 commits

Author SHA1 Message Date
Antonio SJ Musumeci
6cc6524997 change category to enum class 2020-08-18 19:28:36 -04:00
Antonio SJ Musumeci
0371b047f9 change from fasthash64 to wyhash
wyhash has very good performance for small keys (our usecase) and
works on platforms with alignment concerns.

A user had an issue where fasthash64 lead to misaligned reads and
signal exceptions. wyhash does not have such issues and is faster.
2020-08-06 19:00:05 -04:00
Antonio SJ Musumeci
30d13b7f77 inodecalc: add 32bit versions of hashs 2020-08-03 19:42:06 -04:00
Antonio SJ Musumeci
5989d41a86 readdir: use getdents64 for compatibility with ARM64 2020-08-02 18:43:09 -04:00
Antonio SJ Musumeci
0709b2e447 add missing options to usage 2020-07-30 16:55:18 -04:00
Antonio SJ Musumeci
15a0aedd25 cleanup: move some config data structures to separate files 2020-07-29 21:42:43 -04:00
Antonio SJ Musumeci
a93bd9f7fa freebsd: misc cleanups to get freebsd compiling 2020-07-29 13:08:38 -04:00
Antonio SJ Musumeci
139e61efaa nfsopenhack: remove empty file check 2020-07-26 17:11:06 -04:00
Antonio SJ Musumeci
93218a343a NFS open/creat hack
A hack to work around non-POSIX NFS <-> FUSE behavior where it turns
an open(O_EXCL|O_CREAT,0444) into multiple calls that results in
EACCES.
2020-07-23 19:36:10 -04:00
Antonio SJ Musumeci
3ec137c4ad policy: add "most shared path" policies
Like path preserving but walks back the path till a match is found. Should
cover the usecase where someone wants a "less strict" form of path
preservation.
2020-07-21 16:31:08 -04:00
Andrea Gelmini
3a6738475a Fix typos 2020-07-20 13:01:33 +02:00
Andrea Gelmini
468d42088a Removed duplicated include 2020-07-20 12:51:44 +02:00
Antonio SJ Musumeci
08d267fc61 moveonenospc: enhance the feature to allow using a policy
Just like functions you can now set a policy for moveonfreenospc. This
allows for more flexibility.

For backwards compatibility moveonfreenospc=true is converted to
moveonfreenospc=mfs.

minfreespace does apply which is slightly different from original behavior.
2020-07-15 19:33:05 -04:00
Antonio SJ Musumeci
c0990644e8 remove unnecessary libfuse flags nopath, nullpath_ok, and utime_omit_ok 2020-07-08 19:25:23 -04:00
Antonio SJ Musumeci
b4397f7f2e add 'inodecalc' option to allow selection of inode calculation algo 2020-06-28 20:02:07 -04:00
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.
2020-06-27 23:17:21 -04:00
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
2020-06-18 18:54:25 -04:00
Antonio SJ Musumeci
698c4147fc fix getdent name length calculation 2020-03-12 23:45:20 -04:00
Antonio SJ Musumeci
3a46ec9fab fix filename hashing error 2020-03-07 12:09:40 -05:00
Antonio SJ Musumeci
9b2634a1e5 fix name length calculation for musc 2020-02-29 17:15:29 -05:00
Antonio SJ Musumeci
62873d2d3b use getdents64 on linux 2020-02-28 20:34:12 -05:00
Antonio SJ Musumeci
d119807adb restructure readdir, add readdir_plus
Does not enable READDIR_AUTO. Might add in the future.
2020-02-22 19:45:52 -05:00
Antonio SJ Musumeci
a646fe016d change inode conversion algo to reduce collision 2020-02-12 21:05:52 -05:00
Antonio SJ Musumeci
576ff3694e add cache.writeback to xattrs 2020-02-12 19:48:37 -05:00
Antonio SJ Musumeci
903d39f968 add writeback caching 2020-02-09 21:08:53 -05:00
Antonio SJ Musumeci
4d82ed9324 fix short writes on >2GB files when cloning file 2019-10-14 23:32:51 -04:00
Antonio SJ Musumeci
0fffabfbe3 only return 1 branch for rand/eprand policies 2019-09-07 17:25:06 -04:00
Antonio SJ Musumeci
50ad648ce4 initialize mutex to fix lockup 2019-09-07 14:10:36 -04:00
Antonio SJ Musumeci
4c4c27a93e set uid & gid when calling ioctl
Turns out certain ioctl calls check the effective user id (FS_IOC_SETFLAGS).
2019-06-17 13:37:15 -04:00
Antonio SJ Musumeci
5ca928e436 accept old arguments for backwards compatibility 2019-06-10 20:20:41 -04:00
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.
2019-06-03 21:01:19 -04:00
Antonio SJ Musumeci
8cb7195c3e add copy_file_range support 2019-06-03 07:12:05 -04:00
Antonio SJ Musumeci
529a953e30 add file caching across opens and runtime control 2019-05-30 00:10:08 -04:00
Antonio SJ Musumeci
ddf6a2f105 make async_read optional again 2019-05-28 15:57:50 -04:00
Antonio SJ Musumeci
2323c16316 add readdir caching 2019-05-23 22:11:33 -04:00
Antonio SJ Musumeci
1baa706d37 add symlink caching 2019-05-22 19:25:38 -04:00
Antonio SJ Musumeci
61cded5b34 fix for unlink race condition 2019-05-21 22:57:02 -04:00
Antonio SJ Musumeci
5f2221155c ensure parallel dirops is enabled if capable 2019-05-20 00:36:42 -04:00
Antonio SJ Musumeci
2b019b84b0 ensure async_aio is enabled if capable 2019-05-20 00:18:56 -04:00
trapexit
af1c0d78e8
Merge pull request #621 from trapexit/posix-acl
add support for POSIX ACLs
2019-05-19 18:26:49 -04:00
Antonio SJ Musumeci
80d56ac94e add support for POSIX ACLs 2019-05-19 18:17:55 -04:00
Antonio SJ Musumeci
1ca70521a4 remove 'remote' flock support 2019-05-19 17:34:56 -04:00
Antonio SJ Musumeci
e052446713 fix setting of fsname 2019-05-12 14:07:21 -04:00
Antonio SJ Musumeci
5883020784 tweak docs 2019-05-10 11:54:41 -04:00
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.
2019-04-13 21:41:51 -04:00
Antonio SJ Musumeci
2a075ead92 fall back to other file copy methods in clonefile 2019-04-13 15:08:13 -04:00
Antonio SJ Musumeci
b69819e4b2 ioctl: don't set outbufsz when not needed 2019-03-20 10:18:55 -04:00
Antonio SJ Musumeci
0918dfd117 make attr, entry, negative_entry cache timeouts runtime configurable 2019-02-23 01:03:20 -05:00
Antonio SJ Musumeci
95c0cc741d replace libfuse's autoconf with makefile 2019-02-18 21:36:32 -05:00
Antonio SJ Musumeci
7bf607bb6b fix FS_IOC_{GET,SET}{FLAGS,VERSION} ioctl calls 2019-02-17 11:48:19 -05:00