| Commit message (Collapse) | Author | Age |
|
|
|
|
| |
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).
|
| |
|
| |
|
|
|
|
| |
Together with the previous commit, this fixes #156.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Since os.path.join() interprets leading slashes, we were
actually never accessing the mountpoint and doing all the
tests in the source directory.
Fixes: #139
|
|
|
|
|
| |
That way, we are not drowning in messages when a test would also fail
without debugging enabled.
|
| |
|
|
|
|
|
|
| |
This appeared to work because of an unrelated bug that caused us to
actually never access the mountpoint at all and do all tests on the
lower filesystem. This issue will be fixed in a separate commit.
|
|
|
|
|
| |
There is no reason why so many tests require the file system
to support unlink() and/or rmdir().
|
|
|
|
|
| |
Ensure that we are really creating a new file.
Don't attempt to write, we do that in tst_open_write().
|