Age | Commit message (Collapse) | Author | Lines |
|
FreeBSD doesn't allow creating sockets using mknod(2). Instead, one has to use socket(2)
and bind(2). Add appropriate logic to the examples and add a test case.
|
|
fuse.ko has supported FALLOC_FL_KEEP_SIZE and FALLOC_FL_PUNCH_HOLE at this
moment and more modes may be supported in the future.
fallocate(2) supports modes while posix_fallocate(2) does not, so this
makes lo_fallocate use fallocate(2) instead.
Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com>
|
|
lo_create() did not honour CACHE_NEVER in lo_create(), which has an effect
on how I/O is performed after the open.
The value of CACHE_ALWAYS, which results in setting fi->keep_cache, only
has an effect for the state of the cache at open, and since the file was
just created the cache is always empty. Hence setting this doesn't have an
effect on lo_create(), but keep it for symmetry with lo_open().
|
|
Fixes: #338.
|
|
If do_readdir() calls do_lookup(), but the latter fails, we still have
to return any entries that we already stored in the readdir buffer to
avoid leaking inodes.
do_lookup() may fail if e.g. we reach the file descriptor limit.
|
|
|
|
|
|
The passthrough example filesystem can be used for validating the API
and the implementation in the FUSE kernel module.
|
|
Fixes: #319.
|
|
For '.' and '..' entries only the file type in e.attr.st_mode and the inode
number in e.attr.st_ino are used. But it's prudent to at least initialize
the other fields of struct fuse_entry_param as well, instead of using
random values from the stack.
|
|
Caching can be controlled with the following options:
"cache=never": disable caching
"cache=normal": enable caching but also refresh after the timeout
"cache=always": never refresh cache
The timeout can be controlled with the "timeout=SEC" option, where SEC is
the number of seconds and can be an arbitrary non-negative floating point
number.
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
|
|
The extended attribute functionality is enabled with the "xattr" option
(default) and disabled with the "no_xatt" option.
New operations added:
- getxattr
- listxattr
- setxattr
- removexattr
Caveat: none of these operations will work on a symbolic link, because it's
difficult to implement that without races that can result in incorrect
operation.
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
|
|
Conditionally enable flock() locking on underlying filesystem, based on the
flock/no_flock options. Default is "no_flock", meaning locking will be
local to the fuse filesystem and won't be propagated to the filesystem
passed through.
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
|
|
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
|
|
Add method forget_multi() to forget multiple inodes in a single message.
Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
|
|
Right now, passthrough_ll will use "/" as source directory for passthrough.
We need more flexibility where user can specify path of directory to be
passed through. Hence add an option "source=<source-dir>".
Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
|
|
New operations added:
- mkdir
- mknod
- symlink
- link
- unlink
- rmdir
- rename
- setattr
- fsyncdir
- flush
- fsync
- statfs
- fallocate
Caveats:
- The utimes(2) family of syscalls will fail on symlinks on 4.18 and
earlier kernels. Hoping to add support to later kernels.
- The link(2) and linkat(2) system calls will fail on symlinks unless running
with privileges (CAP_DAC_READ_SEARCH).
Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
|
|
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
|
|
Like all the other passthrough examples.
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
|
|
Kernel is not expecting an elevated lookup count for the "." and ".."
entries when doing READDIRPLUS.
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
|
|
Otherwise it may crash when running multithreaded.
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
|
|
No functional difference expected, but should still follow the standard.
http://pubs.opengroup.org/onlinepubs/009695399/functions/calloc.html
|
|
|
|
Fixes: #208.
|
|
|
|
This fixes issue #191 (where the test was done by simply adding
FUSE_CAP_WRITEBACK_CACHE without adjusting the flags in the
open() call).
Fixes: #191.
|
|
As the comment says, this made it compile but not work. If there is a
need, we can add these checks to meson.build to only build this file
if the prerequisites are satisfied.
|
|
|
|
Fixes: #185.
|
|
|
|
|
|
|
|
We can consider changing the code to drop the requirement if it
turns out that there's a system where this isn't given.
Fixes issue #167.
|
|
|
|
|
|
Otherwise building w/o optimization (-O0) fails.
passthrough_ll.c: In function 'lo_readlink':
passthrough_ll.c:251:11: error: 'PATH_MAX' undeclared (first use in this function)
char buf[PATH_MAX + 1];
(gcc v5.3.0 in Alpine Linux v3.4.6 x86_64 w/ musl-libc v1.1.14.)
|
|
If we want to do, what system would do anyway upon program termination,
then let's try to be a bit more scrupulous.
|
|
root lo_inode's next and prev were not set early enough, which led to
accessing addr 0x8 (or 0x4, depending on ptr size) when setting prev
variable in lo_free(lo.root.next), because lo.root.next was NULL.
|
|
Fixes: #81.
|
|
We now only list options that are potentially useful for an
end-user (and unlikely to accidentally break a file system). The full
list of FUSE options has been moved to the documentation of the
fuse_new() and fuse_session_new() functions.
|
|
Instead of using command line options to modify struct fuse_conn_info
before and after calling the init() handler, we now give the file system
explicit control over this.
|
|
This option really affects the behavior of the session loop, not the
low-level interface. Therefore, it does not belong in the fuse_session
object.
|
|
Also, added more comments for the same purpose.
|