| Age | Commit message (Collapse) | Author | Lines | 
|---|
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | There is no gcc-6 package anymore. | 
|  |  | 
|  |  | 
|  | The unprivileged option allows to run the FUSE file system process
without privileges by dropping capabilities and preventing them from
being re-acquired via setuid / fscaps etc. To accomplish this,
mount.fuse sets up the `/dev/fuse` file descriptor and mount itself
and passes the file descriptor via the `/dev/fd/%u` mountpoint syntax
to the FUSE file system. | 
|  |  | 
|  | Using fuse_session_exit() followed by fuse_session_unmount() ensures
that a proper cleanup and shutdown is performed. | 
|  |  | 
|  | 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. | 
|  | Fixes: #224 | 
|  | Linux performs the dir loop check (rename(a, a/b/c)
    or rename(a/b/c, a), etc.) in kernel. Unfortunately
    other systems do not perform this check (e.g. FreeBSD).
    This results in a deadlock in get_path2, because libfuse
    did not expect to handle such cases.
    We add a check_dir_loop function that performs the dir
    loop check in user mode and enable it on systems that
    need it. | 
|  |  | 
|  |  | 
|  | Newest Meson requires Python 3.5 which isn't available in Trusty.
Pip version pin no longer necessary. | 
|  | DragonFlyBSD has no "bsd" in uname, so add 'dragonfly' to conditionals.
-- e.g. uname(1) in DragonFlyBSD
[root@ ~]# uname
DragonFly
[root@ ~]# python -c "import sys; print(sys.platform)"
dragonfly5 | 
|  | Travis support recommends to install specific pip
version to work around problems in new environment. | 
|  |  | 
|  |  | 
|  |  | 
|  | This seems to be unsupported. However, me may also be
doing it wrong. I've asked on the freebsd-fs list for help. | 
|  |  | 
|  |  | 
|  | It's just too much pain to keep it working. | 
|  | That way, we run only tests that are supported by the running kernel. | 
|  |  | 
|  | The previous name didn't make much sense. | 
|  | 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. | 
|  |  | 
|  |  | 
|  | Preserving other attributes doesn't hurt, and --preserve
is not supported under FreeBSD. | 
|  | Doesn't work on FreeBSD, and not strictly necessary. | 
|  |  | 
|  |  | 
|  | 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. | 
|  | There is a proper meson-mode now. | 
|  | The previous code didn't actually go through the mountpoint at all. | 
|  |  | 
|  |  | 
|  | Since RELEASE requests are asynchronous, it is possible that libfuse
still considers the file to be open when userspace has closed it, so
that a successive unlink() call from userspace actually triggers
a rename(). We avoid the resulting test failure by re-trying a few
times.
Fixes: #157. | 
|  |  | 
|  | Hopefully this helps debugging issue #157. | 
|  | This should help debugging issue #157. | 
|  | Slightly increases coverage of examples/passthrough_ll.c (which
supports open for reading, but not for writing). | 
|  |  | 
|  |  |