Commit Graph

262 Commits

Author SHA1 Message Date
Antonio SJ Musumeci
e6a6ab967b update how it works 2019-08-20 20:13:25 -04:00
Tanachat Nilanon
38919add61
Update README.md
Fixed typo: changed ' to `
2019-08-14 23:57:56 -07:00
Ionuț Ciocîrlan
86bda61aa7
fix some grammar and typos 2019-08-01 14:35:00 +03: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
80d56ac94e add support for POSIX ACLs 2019-05-19 18:17:55 -04:00
Antonio SJ Musumeci
810871d2df update support section of README 2019-05-12 23:57:15 -04:00
Antonio SJ Musumeci
5883020784 tweak docs 2019-05-10 11:54:41 -04:00
Antonio SJ Musumeci
825fcf7f35 cleanup and rework build system 2019-05-03 09:42:15 -04:00
Antonio SJ Musumeci
3288d834a9 add reference to 32bit mmap kernel bug 2019-04-23 20:01:36 -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
38037feab7 replace {attr,entry,negative}_timeout references 2019-02-23 01:39:28 -05: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
1d48dba0b7 add discord server to docs 2019-02-17 14:46:50 -05:00
trapexit
5a1a60742e
Merge pull request #574 from trapexit/opts
remove `defaults`, hard code atomic_o_trunc, big_writes, and default_…
2019-01-30 22:53:35 -05:00
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.
2019-01-30 22:46:21 -05:00
Antonio SJ Musumeci
f4a06cae18 fix <> escaping in argument list 2019-01-24 11:15:55 -05:00
Antonio SJ Musumeci
5be7e007ce add statfs cache 2019-01-23 23:06:07 -05:00
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).
2019-01-22 09:21:15 -05:00
Antonio SJ Musumeci
a13b822543 add mention of noforget argument for NFS exports 2019-01-21 18:41:19 -05:00
Antonio SJ Musumeci
9fd3b968fc make ioctl on directories use open policy 2019-01-18 22:41:52 -05:00
Antonio SJ Musumeci
a57c680cc8 clarify descriptions regarding funcitons and those without policies 2019-01-15 10:18:57 -05:00
Antonio SJ Musumeci
3a1213435f add more info on different caching techniques 2019-01-15 09:39:39 -05:00
Antonio SJ Musumeci
7eefb58ff7 misc doc updates 2019-01-09 11:25:06 -05:00
Antonio SJ Musumeci
0b5a0d1228 update README regarding valid ENOSPC errors 2019-01-07 09:20:34 -05:00
Antonio SJ Musumeci
aa56e12040 mention mv quirk in known issues 2019-01-06 13:24:12 -05:00
Antonio SJ Musumeci
40969402e8 misc README updates 2018-12-12 15:48:53 -05:00
Antonio SJ Musumeci
7d9458fdd1 change xattr setting notsup to nosys 2018-11-19 23:30:39 -05:00
Antonio SJ Musumeci
680f8194f9 add ability to change statfs behavior 2018-11-05 21:33:27 -05:00
Antonio SJ Musumeci
7524e57262 rename NW (no write) to NC (no create) 2018-11-01 23:37:45 -04:00
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.
2018-11-01 23:13:49 -04:00
Antonio SJ Musumeci
8eacb008b3 misc updates to docs 2018-10-31 10:22:40 -04:00
Antonio SJ Musumeci
1885a82cce remove libattr dependency 2018-10-09 13:50:45 -04:00
Antonio SJ Musumeci
65f482e483 add ability to turn on/off xattr support at runtime 2018-10-09 08:41:31 -04:00
Antonio SJ Musumeci
93f7d7d927 add link_cow feature
When enabled if a regular file is opened which has a link count > 1 it will
copy the file to a temporary file and rename over the original. Effectively
breaking the link. This behavior is similar to cow-shell and other LD_PRELOAD
based "CoW" solutions.
2018-10-06 22:05:05 -04:00
Antonio SJ Musumeci
f8563369bc add security_capability option 2018-09-30 23:30:53 -04:00
Antonio SJ Musumeci
057eafef7f add comment regarding tar error 2018-09-06 08:28:21 -04:00
Antonio SJ Musumeci
587ab62583 tweak docs, add FAQ regarding vendoring of libfuse 2018-08-20 13:40:01 -04:00
Andrey Mazo
756d4ff0ff
Makefile: option for building with system libfuse
Add INTERNAL_FUSE variable to control linking against
bundled libfuse vs external/system libfuse.
If external libfuse is requested,
`pkg-config` is used to obtain CFLAGS/LIBS/LDFLAGS and
to check that the provided external libfuse is >= 2.9.7.

This might hopefully get mergerfs closer to inclusion into distros.

Link: https://github.com/trapexit/mergerfs/issues/431
Link: https://bugs.gentoo.org/587956#c6
2018-08-20 00:05:58 +03:00
Antonio SJ Musumeci
fc52f89ddc add FAQ entry on hard links 2018-08-18 22:10:23 -04:00
trapexit
b1ecc58114
Merge pull request #491 from trapexit/inode_docs
add details regarding use_ino
2018-07-25 17:29:06 -04:00
Antonio SJ Musumeci
39d5ab8e83 add details regarding use_ino 2018-07-25 17:28:36 -04:00
Antonio SJ Musumeci
c005463111 change examples to use /mnt rather than /tmp 2018-05-04 09:00:27 -04:00
Antonio SJ Musumeci
e521833cec bump change date on readme and rebuild man 2018-03-09 21:12:52 -05:00
trapexit
906702de77
add hard_remove details and comment on unionfs 2018-03-03 13:24:49 -05:00
Andrew Simmons
b4a003c5a8
Remove duplicate word in README 2018-01-18 15:38:16 -05:00
trapexit
b48054fa2c
add XRP to support list 2017-12-21 09:47:53 -05:00
trapexit
d8f05ac8ae
add BCH, ETH, & LTC donation addresses 2017-12-20 22:11:26 -05:00
Antonio SJ Musumeci
7d93d5917e add explination in FAQ about what mergerfs is / is not 2017-11-15 16:39:25 -05:00
Antonio SJ Musumeci
7207e7fdd6 faq answer on epmfs 2017-11-07 14:48:38 -05:00
Antonio SJ Musumeci
f72bb1e1ed update FAQ and misc tweaks 2017-11-07 08:59:49 -05:00
Antonio SJ Musumeci
bd14f33c31 add support info and how mergerfs works section 2017-11-05 13:43:33 -05:00
Antonio SJ Musumeci
9104f25c09 misc updates to docs 2017-08-06 14:33:59 -04:00
Antonio SJ Musumeci
c1d85ef825 expand support section of readme 2017-07-30 16:52:29 -04:00
Antonio SJ Musumeci
cc1f07ef39 add info on creating a caching behavior 2017-07-23 19:59:11 -04:00
Antonio SJ Musumeci
75ed37a11a add setting of thread pool size 2017-07-02 23:50:39 -04:00
Antonio SJ Musumeci
a2bddec8c7 add 'ignore path preserving on rename' feature 2017-06-30 00:01:00 -04:00
Antonio SJ Musumeci
de0985c135 add libfuse 2.9.7 to repo and build against libfuse.a 2017-06-02 11:25:25 -04:00
Antonio SJ Musumeci
87c2f2f9dc add nullrw feature to facilitate benchmarking 2017-05-26 18:11:18 -04:00
Antonio SJ Musumeci
6a7675f2bf symlinkify: file -> symlink-to-original-file after timeout 2017-05-05 00:14:04 -04:00
Antonio SJ Musumeci
215f129a2a explicitly define path preservation, better explain move issues 2017-04-03 14:35:08 -04:00
Antonio SJ Musumeci
bb4ec913c6 fix incorrect section header syntax 2017-04-03 12:05:51 -04:00
Antonio SJ Musumeci
cf2cb54e2a add info on inodes running out to faq on filled drives 2017-03-13 13:42:46 -04:00
Antonio SJ Musumeci
94ebccc6ed try to clarify how path preserving policies work and other tweaks to docs 2017-03-11 15:07:48 -05:00
Antonio SJ Musumeci
4e7e74d6f0 update docs to include dropcacheonclose and warn about directory mtime 2017-02-18 20:05:06 -05:00
Antonio SJ Musumeci
9cc9bb9de2 misc document updates 2017-01-31 19:10:54 -05:00
Antonio SJ Musumeci
16e7c72e99 update documentation, focus on explaining double caching & direct_io 2017-01-19 11:49:52 -05:00
Antonio SJ Musumeci
c8fa51c81a support setting of inodes (using use_ino option)
creates a 64bit inode value from the underlying device value + original inode

final_ino = orig_ino | (dev << 32)

not perfect but given few filesystems use 64bit inodes nor is st_dev more than 16bit usually it should be fine
2016-12-14 18:53:21 -05:00
Antonio SJ Musumeci
5f7a168d0b note that mergerfs should be run as root 2016-12-06 17:04:10 -05:00
Colin Yates
897f20bff8 minor correction of spelling mistake
:%s/cateogry/category/g
2016-10-24 09:32:41 +01:00
Antonio SJ Musumeci
cd90193deb add some more explination to the FAQ 2016-10-19 09:38:48 -04:00
Antonio SJ Musumeci
cd71af8c5b add mergerfs.ctl and scorch to tooling section 2016-10-13 11:02:20 -04:00
Antonio SJ Musumeci
3fb7f8919a add EDQUOT to errors which trigger moveonenospc 2016-10-06 13:54:57 -04:00
Antonio SJ Musumeci
b1f2e94a2f add information about page cache kernel panic bug
https://lkml.org/lkml/2016/9/14/527
2016-09-14 11:20:13 -04:00
Jens Dieskau
158dda9f23 Fix minor typo 2016-09-03 22:33:36 +02:00
Antonio SJ Musumeci
0fceb8e0a3 add epall and eprand policies 2016-08-01 16:08:02 -04:00
Antonio SJ Musumeci
47f184a944 fix typo and clarify feature 2016-07-26 09:09:10 -04:00
Antonio SJ Musumeci
a93ab6c2f5 add existing path first found policy. closes #289 2016-07-11 20:42:56 -04:00
Antonio SJ Musumeci
30cdfa64b8 reiterate path preserving policies 2016-06-07 20:51:18 -04:00
Antonio SJ Musumeci
6dc6fde641 update info on mmap bug and when it was fixed 2016-05-17 16:09:22 -04:00
Antonio SJ Musumeci
be6341e6f0 create eplus (existing path, least used space) policy. closes #273 2016-05-07 15:15:51 -04:00
Antonio SJ Musumeci
f7d3e8bf47 create lus (least used space) policy. closes #273 2016-05-07 14:59:42 -04:00
Antonio SJ Musumeci
74ed1b09ee faq update on direct writes 2016-05-03 11:44:04 -04:00
Antonio SJ Musumeci
d0414d7c78 clean up information regarding fstab 2016-04-27 07:13:05 -04:00
Antonio SJ Musumeci
ef8d8f306e add fsname to readme 2016-04-25 16:58:18 -04:00
Antonio SJ Musumeci
cd15b7a66a further tweak language regarding policies wrt create category 2016-04-13 13:06:35 -04:00
Antonio SJ Musumeci
8643d35ebf make policy descriptions more explicit 2016-04-13 12:45:49 -04:00
Antonio SJ Musumeci
1cfe1c3715 tweak doc language 2016-04-06 14:57:02 -04:00
Antonio SJ Musumeci
dbb13ef7ad add details of mmap cache bug 2016-04-03 16:56:47 -04:00
Antonio SJ Musumeci
90ca14afff add dual mount suggestion to mmap problem 2016-03-15 16:44:49 -04:00
Antonio SJ Musumeci
cfaf812c62 add details regarding rtorrent, mmap, and direct_io 2016-03-15 08:24:35 -04:00
Antonio SJ Musumeci
0c6c69e02e update readme to include mergerfs.dedup 2016-03-11 18:03:22 -05:00
Antonio SJ Musumeci
309cfee52b change tar.gz build url 2016-03-11 16:55:10 -05:00
Antonio SJ Musumeci
4928944167 clarify that rename uses the create policy to make decisions 2016-03-04 20:32:52 -05:00
Antonio SJ Musumeci
59b08a5bc3 change tooling names and add guide link 2016-03-03 10:46:53 -05:00
Antonio SJ Musumeci
779143f4b6 add minfreespace checks to policy ff's create and remove fwfs
fwfs is now covered by ff with the minfreespace and readonly checks
2016-02-29 18:06:59 -05:00
Antonio SJ Musumeci
4d7148cdd1 update readme with minfreespace and readonly details 2016-02-29 15:14:31 -05:00
Antonio SJ Musumeci
a698a8a545 update / tweak readme 2016-02-21 18:30:25 -05:00
Antonio SJ Musumeci
a4e60d7471 add eplfs info to readme 2016-02-18 13:32:30 -05:00
Antonio SJ Musumeci
3a51ceb327 add some "why mergerfs instead of X" sections to the FAQ 2016-02-11 15:51:22 -05:00
Antonio SJ Musumeci
681f3d7492 add section to readme about trash directories 2016-02-11 15:07:55 -05:00
Antonio SJ Musumeci
0bac344c8b add information on fixing libfuse crashes 2016-02-01 09:45:40 -05:00
Antonio SJ Musumeci
853769bd7c general tweaks to readme 2016-01-21 12:47:13 -05:00
Antonio SJ Musumeci
93397ea170 remove incorrect warning about race condition with mkdir/mknod 2016-01-20 17:07:33 -05:00
Antonio SJ Musumeci
25265f4e85 dedup based on full statvfs struct rather than fsid. closes #183 2016-01-20 16:44:05 -05:00
Antonio SJ Musumeci
de776b7cf0 remove tooling from repo. closes #198 2016-01-19 16:29:51 -05:00
Antonio SJ Musumeci
8a5c5240f2 replace srcpoints with srcmounts 2016-01-12 16:27:47 -05:00
Antonio SJ Musumeci
a3e6a0352d rework rename algo to minimize likelihood of EXDEV being returned. closes #187 2016-01-12 16:23:12 -05:00
Antonio SJ Musumeci
8a651b0372 add support section to readme and manpage 2015-10-29 15:27:05 -04:00
Antonio SJ Musumeci
02df44129d update info on Samba client EXDEV issue 2015-10-16 08:30:54 -04:00
Antonio SJ Musumeci
fe7960974d fix typo 2015-10-14 08:07:05 -04:00
Antonio SJ Musumeci
873c4a9840 add link to gvfs-fuse patch 2015-10-14 06:48:40 -04:00
Antonio SJ Musumeci
4df9b2e6f1 add documentation on SMB client EXDEV / EIO issue 2015-10-14 00:27:26 -04:00
Antonio SJ Musumeci
a10de2aaf9 update build dependencies for Fedora 2015-10-13 09:07:38 -04:00
Antonio SJ Musumeci
40f569be37 rewrite gid cache system
Uses fixed storage so as to not require C++11 local thread storage or memory allocation.
2015-10-11 15:01:57 -04:00
Antonio SJ Musumeci
f6d396c30d audit (and fix) file permissions and ownership. closes #148 2015-10-06 00:37:03 -04:00
Antonio SJ Musumeci
5808ab7795 move on enospc when writing feature. closes #141
This feature mimics the standard mhddfs behavior but is more thorough.
If a write fails and the errno is set to ENOSPC then mergerfs will (if
the feature is enabled) attempt to move the file to the drive with
the most free space but only if it has enough room for the file plus
the amount to be written. If that transfer is successful it will then
unlink the original file and attempt the previously failed write again.

The copy includes copying the path and file including the acls, owners,
attributes, extended attributes, and timestamps.
2015-09-25 15:14:17 -04:00
Antonio SJ Musumeci
4e5578de9c make note about escaping glob tokens more explicit 2015-09-25 13:48:03 -04:00
Antonio SJ Musumeci
4b375faf12 include rpm-build in Fedora dependencies 2015-09-24 17:59:49 -04:00
Antonio SJ Musumeci
9542e6340b include link to release page in readme 2015-09-24 15:07:39 -04:00
Antonio SJ Musumeci
de583b70f7 clean up options listing 2015-09-23 16:42:36 -04:00
Antonio SJ Musumeci
8bf0f755e1 create summary feature section
And tweak intro.
2015-09-22 12:46:47 -04:00
Antonio SJ Musumeci
5850fbe3f1 bump README date 2015-09-14 22:45:45 -04:00
Antonio SJ Musumeci
e0cf97261c include default_permissions in default arguments
closes #130
2015-09-14 22:12:24 -04:00
Antonio SJ Musumeci
f4e3f28153 change README regarding setgroups cache and new rwlock ugid fallback 2015-09-14 19:33:30 -04:00
Antonio SJ Musumeci
08c0c2dfae fix typo in README. closes #134 2015-09-14 19:05:42 -04:00
Antonio SJ Musumeci
b194272e39 add notes on permissions and errors to readme 2015-09-08 18:06:32 -04:00
Antonio SJ Musumeci
c131310c55 include known issues section to readme 2015-09-07 19:58:10 -04:00
Antonio SJ Musumeci
08d07b71e1 add building of rpm 2015-09-05 18:41:18 -04:00
Antonio SJ Musumeci
305f190f09 add basic instructions for building on Fedora 2015-09-05 16:34:59 -04:00
Antonio SJ Musumeci
bc77b0fd2a add minfreespace check to epmfs create policy 2015-09-01 22:28:35 -04:00
Antonio SJ Musumeci
1f1e481075 rework rename
Return EXDEV if directories of tragets differ. If the old and new path exist in the same directory first rename each old found by the policy and then unlink/rmdir any new on a drive which didn't rename. The unlink/rmdir will occur only if there were no rename errors. Any failures of unlink/rmdir are ignored. The last rename error is returned.
2015-09-01 18:32:31 -04:00
Antonio SJ Musumeci
bbc75f6ff1 create errno policies for simulating errors. closes #107 2015-08-27 22:38:23 -04:00
Antonio SJ Musumeci
e73ea33e9c format README better for man pages 2015-08-07 20:59:43 -04:00
Antonio SJ Musumeci
95192511b1 update README regarding options 2015-08-05 12:29:53 -04:00
Antonio SJ Musumeci
b3109ac506 add minfreespace to xattr interface 2015-07-05 19:36:23 -04:00
Antonio SJ Musumeci
d079856e09 add info on lfs and fwfs policies and minfreespace option 2015-07-03 10:49:18 -04:00
Antonio SJ Musumeci
c101430b98 rework category -> fuse function table 2015-07-03 10:49:18 -04:00
Antonio SJ Musumeci
ad7ce487bb fix readme typos and misc formatting 2015-06-05 20:13:24 -04:00
Antonio SJ Musumeci
fe0f442c3d add Tips and FAQ section to readme 2015-06-05 19:52:31 -04:00
Antonio SJ Musumeci
1879c9c4a9 update readme with defaults option info 2015-06-04 23:19:49 -04:00
Antonio SJ Musumeci
74c334c372 add default policies for categories and description of all 2015-03-10 18:53:06 -04:00
Antonio SJ Musumeci
08366a35be match cli options to xattrs 2015-03-10 18:44:45 -04:00
Antonio SJ Musumeci
c022741ffb revert removal of 'all' policy and relevant behavior. closes #54 2015-03-05 21:01:22 -05:00
Antonio SJ Musumeci
12f393a55e per FUSE function policies. closes #52, #53 2015-02-23 20:02:50 -05:00
Antonio SJ Musumeci
d30cae217b add user.mergerfs.allpaths and user.mergerfs.relpath to getxattr 2015-02-07 18:27:47 -05:00