libfuse
|
#include <fuse.h>
Data Fields | |
int | set_gid |
int | set_uid |
int | set_mode |
double | entry_timeout |
double | negative_timeout |
double | attr_timeout |
int | intr |
int | intr_signal |
int | remember |
int | hard_remove |
int | use_ino |
int | readdir_ino |
int | direct_io |
int | kernel_cache |
int | auto_cache |
int | no_rofd_flush |
int | ac_attr_timeout_set |
int | nullpath_ok |
int | parallel_direct_writes |
int | show_help |
Configuration of the high-level API
This structure is initialized from the arguments passed to fuse_new(), and then passed to the file system's init() handler which should ensure that the configuration is compatible with the file system implementation.
int fuse_config::ac_attr_timeout_set |
double fuse_config::attr_timeout |
int fuse_config::auto_cache |
int fuse_config::direct_io |
This option disables the use of page cache (file content cache) in the kernel for this filesystem. This has several affects:
Internally, enabling this option causes fuse to set the direct_io
field of struct fuse_file_info
- overwriting any value that was put there by the file system.
double fuse_config::entry_timeout |
int fuse_config::hard_remove |
The default behavior is that if an open file is deleted, the file is renamed to a hidden file (.fuse_hiddenXXX), and only removed when the file is finally released. This relieves the filesystem implementation of having to deal with this problem. This option disables the hiding behavior, and files are removed immediately in an unlink operation (or in a rename operation which overwrites an existing file).
It is recommended that you not use the hard_remove option. When hard_remove is set, the following libc functions fail on unlinked files (returning errno of ENOENT): read(2), write(2), fsync(2), close(2), f*xattr(2), ftruncate(2), fstat(2), fchmod(2), fchown(2)
int fuse_config::intr_signal |
int fuse_config::kernel_cache |
This option disables flushing the cache of the file contents on every open(2). This should only be enabled on filesystems where the file data is never changed externally (not through the mounted FUSE filesystem). Thus it is not suitable for network filesystems and other intermediate filesystems.
NOTE: if this option is not specified (and neither direct_io) data is still cached after the open(2), so a read(2) system call will not always initiate a read operation.
Internally, enabling this option causes fuse to set the keep_cache
field of struct fuse_file_info
- overwriting any value that was put there by the file system.
double fuse_config::negative_timeout |
The timeout in seconds for which a negative lookup will be cached. This means, that if file did not exist (lookup returned ENOENT), the lookup will only be redone after the timeout, and the file/directory will be assumed to not exist until then. A value of zero means that negative lookups are not cached.
int fuse_config::no_rofd_flush |
int fuse_config::nullpath_ok |
If this option is given the file-system handlers for the following operations will not receive path information: read, write, flush, release, fallocate, fsync, readdir, releasedir, fsyncdir, lock, ioctl and poll.
For the truncate, getattr, chmod, chown and utimens operations the path will be provided only if the struct fuse_file_info argument is NULL.
int fuse_config::parallel_direct_writes |
Allow parallel direct-io writes to operate on the same file.
FUSE implementations which do not handle parallel writes on same file/region should NOT enable this option at all as it might lead to data inconsistencies.
For the FUSE implementations which have their own mechanism of cache/data integrity are beneficiaries of this setting as it now open doors to parallel writes on the same file (without enabling this setting, all direct writes on the same file are serialized, resulting in huge data bandwidth loss).
int fuse_config::readdir_ino |
If use_ino option is not given, still try to fill in the d_ino field in readdir(2). If the name was previously looked up, and is still in the cache, the inode number found there will be used. Otherwise it will be set to -1. If use_ino option is given, this option is ignored.
int fuse_config::remember |
Normally, FUSE assigns inodes to paths only for as long as the kernel is aware of them. With this option inodes are instead remembered for at least this many seconds. This will require more memory, but may be necessary when using applications that make use of inode numbers.
A number of -1 means that inodes will be remembered for the entire life-time of the file-system process.
int fuse_config::set_gid |
int fuse_config::set_mode |
int fuse_config::set_uid |
int fuse_config::show_help |
int fuse_config::use_ino |
Honor the st_ino field in the functions getattr() and fill_dir(). This value is used to fill in the st_ino field in the stat(2), lstat(2), fstat(2) functions and the d_ino field in the readdir(2) function. The filesystem does not have to guarantee uniqueness, however some applications rely on this value being unique for the whole filesystem.
Note that this does not affect the inode that libfuse and the kernel use internally (also called the "nodeid").