| Commit message (Collapse) | Author | Age |
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The bug occurs when a filesystem client reads a directory until the end,
seeks using seekdir() to some valid non-zero position and calls
readdir(). A valid 'struct dirent *' is expected, but NULL is returned
instead. Pseudocode demonstrating the bug:
DIR *dp = opendir("some_dir");
struct dirent *de = readdir(dp);
/* Get offset of the second entry */
long offset = telldir(dp);
/* Read directory until the end */
while (de)
de = readdir(de);
seekdir(dp, offset);
de = readdir(dp);
/* de must contain the second entry, but NULL is returned instead */
The reason of the bug is that when the end of directory is reached, the
kernel calls FUSE_READDIR op with an offset at the end of directory, so
the filesystem's .readdir callback never calls the filler function, and
we end up with dh->filled set to 1. After seekdir(), FUSE_READDIR is
called again with a new offset, but this time the filesystem's .readdir
callback is never called, and an empty reply is returned.
Fix by setting dh->filled to 1 only when zero offsets are given to
filler function.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
| |
Accept (and ignore) nofail mount option
|
|
|
| |
Fix spelling errors
|
| |
|
| |
|
|
|
|
| |
It's just too much pain to keep it working.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
We re-introduce the functionality of invalidating the caches for an
inode specified by path by adding a new routine
fuse_invalidate_path. This is useful for network-based file systems
which use the high-level API, enabling them to notify the kernel about
external changes.
This is a revival of Miklos Szeredi's original code for the
fuse_invalidate routine.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
cfg.has('HAVE_ICONV') was always true.
|
|
|
|
| |
this fixes building with lto, which failed since commit 503e32d01e4db00e90d7acfd81ab05386559069f
|
| |
|
|
|
|
| |
Doesn't work on FreeBSD, and not strictly necessary.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The kernel may set the FUSE_POSIX_ACL flag in the FUSE_INIT request to
notify the userspace daemon that the OS does support POSIX ACLs for FUSE
file systems. If the filesystem implementation wants to enable POSIX
ACLs, it has to reply with the FUSE_POSIX_ACL flag set. However, the
reply to the kernel never includes this flag, even if the implementation
expresses the need by setting the FUSE_CAP_POSIX_ACL flag in the
fuse_conn_info::want variable passed to its init callback. We modify the
library to handle requests for FUSE_CAP_POSIX_ACL correctly, i.e., set
the FUSE_POSIX_ACL flag in the FUSE_INIT reply to the kernel.
Signed-off-by: Marcin Sulikowski <marcin.sulikowski@editshare.com>
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
| |
Some filesystems don't track this for directories.
Fixes: #180.
|
| |
|
| |
|
|
|
|
| |
Fixes: #185.
|
| |
|
| |
|
|
|
|
|
| |
At least on Linux kernel 4.9, a value of zero gives more
than 1-sec accuracy.
|
| |
|
| |
|
|
|
|
| |
Fixes: #178.
|
| |
|
| |
|
| |
|
|
|
|
| |
Fixes: #160.
|
| |
|
| |
|
| |
|
| |
|
| |
|