Browse Source

Merge pull request #1119 from trapexit/useino

Remove use_ino option and make behavior same as if set
pull/1120/head
trapexit 2 years ago
committed by GitHub
parent
commit
0b2afda30e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 24
      README.md
  2. 4
      libfuse/lib/fuse.c
  3. 4
      src/option_parser.cpp

24
README.md

@ -90,11 +90,11 @@ start with one of the following option sets.
#### You need `mmap` (used by rtorrent and many sqlite3 base software) #### You need `mmap` (used by rtorrent and many sqlite3 base software)
`allow_other,use_ino,cache.files=partial,dropcacheonclose=true,category.create=mfs`
`allow_other,cache.files=partial,dropcacheonclose=true,category.create=mfs`
#### You don't need `mmap` #### You don't need `mmap`
`allow_other,use_ino,cache.files=off,dropcacheonclose=true,category.create=mfs`
`allow_other,cache.files=off,dropcacheonclose=true,category.create=mfs`
See the mergerfs [wiki for real world deployments](https://github.com/trapexit/mergerfs/wiki/Real-World-Deployments) for comparisons / ideas. See the mergerfs [wiki for real world deployments](https://github.com/trapexit/mergerfs/wiki/Real-World-Deployments) for comparisons / ideas.
@ -122,9 +122,6 @@ These options are the same regardless of whether you use them with the `mergerfs
the file. An attempt to move the file to that branch will occur the file. An attempt to move the file to that branch will occur
(keeping all metadata possible) and if successful the original is (keeping all metadata possible) and if successful the original is
unlinked and the write retried. (default: false, true = mfs) unlinked and the write retried. (default: false, true = mfs)
* **use_ino**: Causes mergerfs to supply file/directory inodes rather
than libfuse. While not a default it is recommended it be enabled so
that linked files share the same inode value.
* **inodecalc=passthrough|path-hash|devino-hash|hybrid-hash**: Selects * **inodecalc=passthrough|path-hash|devino-hash|hybrid-hash**: Selects
the inode calculation algorithm. (default: hybrid-hash) the inode calculation algorithm. (default: hybrid-hash)
* **dropcacheonclose=BOOL**: When a file is requested to be closed * **dropcacheonclose=BOOL**: When a file is requested to be closed
@ -284,7 +281,7 @@ To make it easier to include multiple branches mergerfs supports [globbing](http
``` ```
# mergerfs -o allow_other,use_ino /mnt/disk\*:/mnt/cdrom /media/drives
# mergerfs -o allow_other /mnt/disk\*:/mnt/cdrom /media/drives
``` ```
The above line will use all mount points in /mnt prefixed with **disk** and the **cdrom**. The above line will use all mount points in /mnt prefixed with **disk** and the **cdrom**.
@ -293,7 +290,7 @@ To have the pool mounted at boot or otherwise accessible from related tools use
``` ```
# <file system> <mount point> <type> <options> <dump> <pass> # <file system> <mount point> <type> <options> <dump> <pass>
/mnt/disk*:/mnt/cdrom /mnt/pool fuse.mergerfs allow_other,use_ino 0 0
/mnt/disk*:/mnt/cdrom /mnt/pool fuse.mergerfs allow_other 0 0
``` ```
**NOTE:** the globbing is done at mount or when updated using the runtime API. If a new directory is added matching the glob after the fact it will not be automatically included. **NOTE:** the globbing is done at mount or when updated using the runtime API. If a new directory is added matching the glob after the fact it will not be automatically included.
@ -334,7 +331,7 @@ Note that this does *not* affect the inode that libfuse
and the kernel use internally (also called the "nodeid"). and the kernel use internally (also called the "nodeid").
``` ```
In the future the `use_ino` option will probably be removed as this feature should replace the original libfuse inode calculation strategy. Currently you still need to use `use_ino` in order to enable `inodecalc`.
As of version 2.35.0 the `use_ino` option has been removed. mergerfs should always be managing inode values.
### fuse_msg_size ### fuse_msg_size
@ -982,7 +979,6 @@ echo 3 | sudo tee /proc/sys/vm/drop_caches
* This document is very literal and thorough. Unless there is a bug things work as described. If a suspected feature isn't mentioned it doesn't exist. If certain libfuse arguments aren't listed they probably shouldn't be used. * This document is very literal and thorough. Unless there is a bug things work as described. If a suspected feature isn't mentioned it doesn't exist. If certain libfuse arguments aren't listed they probably shouldn't be used.
* Ensure you're using the latest version. Few distros have the latest version. * Ensure you're using the latest version. Few distros have the latest version.
* **use_ino** will only work when used with mergerfs 2.18.0 and above.
* Run mergerfs as `root` (with **allow_other**) unless you're merging paths which are owned exclusively and fully by the same user otherwise strange permission issues may arise. mergerfs is designed and intended to be run as `root`. * Run mergerfs as `root` (with **allow_other**) unless you're merging paths which are owned exclusively and fully by the same user otherwise strange permission issues may arise. mergerfs is designed and intended to be run as `root`.
* If you don't see some directories and files you expect, policies seem to skip branches, you get strange permission errors, etc. be sure the underlying filesystems' permissions are all the same. Use `mergerfs.fsck` to audit the drive for out of sync permissions. * If you don't see some directories and files you expect, policies seem to skip branches, you get strange permission errors, etc. be sure the underlying filesystems' permissions are all the same. Use `mergerfs.fsck` to audit the drive for out of sync permissions.
* If you still have permission issues be sure you are using POSIX ACL compliant filesystems. mergerfs doesn't generally make exceptions for FAT, NTFS, or other non-POSIX filesystem. * If you still have permission issues be sure you are using POSIX ACL compliant filesystems. mergerfs doesn't generally make exceptions for FAT, NTFS, or other non-POSIX filesystem.
@ -1039,7 +1035,6 @@ NFS does not like out of band changes. That is especially true of inode values.
Be sure to use the following options: Be sure to use the following options:
* noforget * noforget
* use_ino
* inodecalc=path-hash * inodecalc=path-hash
@ -1086,10 +1081,6 @@ This is the same issue as with Samba. `rename` returns `EXDEV` (in our case that
To create a `$topdir/.Trash` directory as defined in the standard use the [mergerfs-tools](https://github.com/trapexit/mergerfs-tools) tool `mergerfs.mktrash`. To create a `$topdir/.Trash` directory as defined in the standard use the [mergerfs-tools](https://github.com/trapexit/mergerfs-tools) tool `mergerfs.mktrash`.
#### tar: Directory renamed before its status could be extracted
Make sure to use the `use_ino` option.
#### Supplemental user groups #### Supplemental user groups
@ -1163,7 +1154,7 @@ Depends on what features you want. Generally speaking there are no "wrong" setti
That said, for the average person, the following should be fine: That said, for the average person, the following should be fine:
`-o use_ino,cache.files=off,dropcacheonclose=true,allow_other,category.create=mfs`
`-o cache.files=off,dropcacheonclose=true,allow_other,category.create=mfs`
#### Why are all my files ending up on 1 drive?! #### Why are all my files ending up on 1 drive?!
@ -1177,7 +1168,7 @@ This catches a lot of new users off guard but changing the default would break t
#### Do hardlinks work? #### Do hardlinks work?
Yes. You need to use `use_ino` to support proper reporting of inodes but they work regardless. See also the option `inodecalc`.
Yes. See also the option `inodecalc` for how inode values are calculated.
What mergerfs does not do is fake hard links across branches. Read the section "rename & link" for how it works. What mergerfs does not do is fake hard links across branches. Read the section "rename & link" for how it works.
@ -1348,7 +1339,6 @@ Yes, however if you do anything which may changes files out of band (including f
Be sure to use the following options: Be sure to use the following options:
* noforget * noforget
* use_ino
* inodecalc=path-hash * inodecalc=path-hash

4
libfuse/lib/fuse.c

@ -67,7 +67,6 @@ struct fuse_config
int remember; int remember;
int debug; int debug;
int nogc; int nogc;
int use_ino;
int set_mode; int set_mode;
int set_uid; int set_uid;
int set_gid; int set_gid;
@ -1404,8 +1403,6 @@ set_stat(struct fuse *f,
uint64_t nodeid, uint64_t nodeid,
struct stat *stbuf) struct stat *stbuf)
{ {
if(!f->conf.use_ino)
stbuf->st_ino = nodeid;
if(f->conf.set_mode) if(f->conf.set_mode)
stbuf->st_mode = (stbuf->st_mode & S_IFMT) | (0777 & ~f->conf.umask); stbuf->st_mode = (stbuf->st_mode & S_IFMT) | (0777 & ~f->conf.umask);
if(f->conf.set_uid) if(f->conf.set_uid)
@ -3708,7 +3705,6 @@ static const struct fuse_opt fuse_lib_opts[] =
FUSE_LIB_OPT("threads=%d", read_thread_count,0), FUSE_LIB_OPT("threads=%d", read_thread_count,0),
FUSE_LIB_OPT("read-thread-count=%d", read_thread_count,0), FUSE_LIB_OPT("read-thread-count=%d", read_thread_count,0),
FUSE_LIB_OPT("process-thread-count=%d", process_thread_count,-1), FUSE_LIB_OPT("process-thread-count=%d", process_thread_count,-1),
FUSE_LIB_OPT("use_ino", use_ino,1),
FUSE_OPT_END FUSE_OPT_END
}; };

4
src/option_parser.cpp

@ -174,6 +174,8 @@ parse_and_process_kv_arg(Config::Write &cfg_,
return 0; return 0;
ef(key == "cache.open") ef(key == "cache.open")
return 0; return 0;
ef(key == "use_ino")
return 0;
if(cfg_->has_key(key) == false) if(cfg_->has_key(key) == false)
return 1; return 1;
@ -282,8 +284,6 @@ usage(void)
" -o cache.negative_entry=INT\n" " -o cache.negative_entry=INT\n"
" Negative file name lookup cache timeout in\n" " Negative file name lookup cache timeout in\n"
" seconds. default = 0\n" " seconds. default = 0\n"
" -o use_ino Have mergerfs generate inode values rather than\n"
" autogenerated by libfuse. Suggested.\n"
" -o inodecalc=passthrough|path-hash|devino-hash|hybrid-hash\n" " -o inodecalc=passthrough|path-hash|devino-hash|hybrid-hash\n"
" Selects the inode calculation algorithm.\n" " Selects the inode calculation algorithm.\n"
" default = hybrid-hash\n" " default = hybrid-hash\n"

Loading…
Cancel
Save