| Age | Commit message (Collapse) | Author | Lines | 
|---|
|  | When not using the readdir_plus mode, the d_type was not returned,
and the use_ino flag was not used for returning d_ino.
This patch fixes the returned values for d_ino and d_type by readdir(3)
The test for the returned value of d_ino has been adjusted to also
take the d_type into consideration and to check the returned values in
both basic readdir and readdir_plus modes. This is done by executing
the passthrough test twice.
Co-authored-by: Jean-Pierre André <jpandre@users.sourceforge.net> | 
|  | - Test added for all passthrough examples.
- passthrough.c uses offset==0 mode. The others don't.
- passthrough.c changed to set FUSE_FILL_DIR_PLUS to make the test pass.
- This fixes #583. | 
|  | In test_syscalls.c, several funcs have potential fd leakage
problems. This patch will fix them.
Signed-off-by: Zhiqiang Liu <liuzhiqiang26@huawei.com>
Signed-off-by: Haotian Li <lihaotian9@huawei.com> | 
|  |  | 
|  |  | 
|  |  | 
|  | Fixes warning under 32-bit. | 
|  | IN a bunch of comments we say 'under the terms of the GNU GPL', make
it clear this is GPLv2 (as LICENSE says).
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> | 
|  | Upgrade pip to fix [*]:
  [66/66] Linking target example/passthrough_hp.
  Traceback (most recent call last):
    File "/usr/lib/python3.5/runpy.py", line 174, in _run_module_as_main
      mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
    File "/usr/lib/python3.5/runpy.py", line 133, in _get_module_details
      return _get_module_details(pkg_main_name, error)
    File "/usr/lib/python3.5/runpy.py", line 109, in _get_module_details
      __import__(pkg_name)
    File "/usr/local/lib/python3.5/dist-packages/pytest/__init__.py", line 6, in <module>
      from _pytest.assertion import register_assert_rewrite
    File "/usr/local/lib/python3.5/dist-packages/_pytest/assertion/__init__.py", line 7, in <module>
      from _pytest.assertion import rewrite
    File "/usr/local/lib/python3.5/dist-packages/_pytest/assertion/rewrite.py", line 24, in <module>
      from _pytest.assertion import util
    File "/usr/local/lib/python3.5/dist-packages/_pytest/assertion/util.py", line 14, in <module>
      import _pytest._code
    File "/usr/local/lib/python3.5/dist-packages/_pytest/_code/__init__.py", line 2, in <module>
      from .code import Code  # noqa
    File "/usr/local/lib/python3.5/dist-packages/_pytest/_code/code.py", line 28, in <module>
      import pluggy
    File "/usr/local/lib/python3.5/dist-packages/pluggy/__init__.py", line 16, in <module>
      from .manager import PluginManager, PluginValidationError
    File "/usr/local/lib/python3.5/dist-packages/pluggy/manager.py", line 11, in <module>
      import importlib_metadata
    File "/usr/local/lib/python3.5/dist-packages/importlib_metadata/__init__.py", line 9, in <module>
      import zipp
  ImportError: No module named 'zipp'
  The command "test/travis-build.sh" exited with 1.
[*] https://travis-ci.org/libfuse/libfuse/builds/651523034
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> | 
|  | tst_rmdir and tst_unlink now pass for passthrough_hp.
Previously, tst_rmdir and tst_unlink created the directory / file
using src_dir, causing the test to fail as the cache was stale.
Now, the src_dir is optional. When cache is enabled, tst_rmdir
and tst_unlink do not provide a src_dir, forcing the test to
use mnt_dir itself. | 
|  | This currently causes hangs if the test fails, cf issue #459. | 
|  | Recent GCC releases have warnings related to common strncpy(3) bugs.
These warnings can be avoided by explicitly NUL-terminating the buffer
or using memcpy(3) when the intention is to copy just the characters
without the NUL terminator.
This commit fixes the following warnings:
  [1/27] Compiling C object 'test/9f86d08@@test_syscalls@exe/test_syscalls.c.o'.
  In function ‘test_socket’,
      inlined from ‘main’ at ../test/test_syscalls.c:1899:9:
  ../test/test_syscalls.c:1760:2: warning: ‘strncpy’ output may be truncated copying 108 bytes from a string of length 1023 [-Wstringop-truncation]
   1760 |  strncpy(su.sun_path, testsock, sizeof(su.sun_path));
        |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  [2/27] Compiling C object 'lib/76b5a35@@fuse3@sha/fuse.c.o'.
  ../lib/fuse.c: In function ‘add_name’:
  ../lib/fuse.c:968:2: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
    968 |  strncpy(s, name, len);
        |  ^~~~~~~~~~~~~~~~~~~~~
  ../lib/fuse.c:944:15: note: length computed here
    944 |  size_t len = strlen(name);
        |               ^~~~~~~~~~~~
  [3/27] Compiling C object 'lib/76b5a35@@fuse3@sha/fuse_lowlevel.c.o'.
  ../lib/fuse_lowlevel.c: In function ‘fuse_add_direntry’:
  ../lib/fuse_lowlevel.c:288:2: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
    288 |  strncpy(dirent->name, name, namelen);
        |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../lib/fuse_lowlevel.c:276:12: note: length computed here
    276 |  namelen = strlen(name);
        |            ^~~~~~~~~~~~
  ../lib/fuse_lowlevel.c: In function ‘fuse_add_direntry_plus’:
  ../lib/fuse_lowlevel.c:381:2: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
    381 |  strncpy(dirent->name, name, namelen);
        |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../lib/fuse_lowlevel.c:366:12: note: length computed here
    366 |  namelen = strlen(name);
        |            ^~~~~~~~~~~~
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | 
|  | Readdir caching means that direct modifications to the source
directory will not be seen immediately, so the test becomes flaky.
Fixes: #416. | 
|  | We are no longer using the capfd mechanism. | 
|  | py.test's capture plugin does not work reliably when used by
other fixtures. Therefore, implement our own version. | 
|  | 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. | 
|  | passthrough_hp puts emphasis and performance and correctness, rather
than simplicity. | 
|  |  | 
|  | sprintf(3)/snprintf(3) destination buffers need to be large enough
so that gcc doesn't warn -Wformat-truncation= or -Wformat-overflow=
when source buffer size is 1024 bytes.
--
../test/test_syscalls.c:1445:47: warning: '%s' directive output may be truncated writing 1 byte into a region of size between 0 and 1023 [-Wformat-truncation=]
 #define PATH(p)  (snprintf(path, sizeof path, "%s/%s", testdir, p), path)
                                               ^~~~~~~
../test/test_syscalls.c:1458:19:
  res = mkdir(PATH("a"), 0755);
                   ~~~
Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@gmail.com> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | 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. |