| Commit message (Collapse) | Author | Age |
|
|
|
| |
Fix conditionals as per maintainer's request.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
`int sig` is acutually used, so `(void) sig;` is unneeded.
|
|
|
|
|
|
|
| |
Ensure that conf is always zero before it's read from to prevent
sporadic failure at startup if higher layers were build against
version 3.0
Signed-off-by: Ashley Pittman <ashley.m.pittman@intel.com>
|
|
|
| |
Fix spelling errors
|
|
|
|
|
|
|
|
|
| |
This change is bogus. fuse_module_factory_t is already a pointer
type. Additionally, if dlsym returns NULL, then you will be
dereferencing it causing a segfault. In my testing, a segfault will
happen even if dlsym returns successfully.
Thanks to Michael Theall for spotting!
|
|
|
|
|
|
| |
dlsym() resolves the location of the loaded symbol,
therefore dlsym() returns the type (fuse_module_factory_t *), not (fuse_module_factory_t).
Added pinter dereferencing to correctly refer the factory function.
|
|
|
|
|
| |
This was detected by using clang's undefined behavior sanitizer, but
didn't seem to cause problems in practice.
|
|
|
|
| |
Fixes: #207.
|
| |
|
|
|
|
|
|
| |
The old versions of these symbols were defined with version
tag FUSE_3.0, so this is what we have to use in the .symver
directive.
|
|
|
|
|
|
|
| |
According to "How to Write Shared Libraries" by Ulrich Drepper
(https://www.akkadia.org/drepper/dsohowto.pdf), the version script
should contain the exported name of the versioned symbol once in each
tag for which it has been defined by .symver.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The fuse_session_loop_mt() and fuse_loop_mt() symbols are only visible
when linking against the shared object. The code in lib/, however, is
compiled *into* the shared object and should thus use the internal
names of these functions.
Surprisingly enough, the code still worked before - but only when link
time optimization was disabled.
Unfortunately, we still can't compile with LTO because it seems that
enabling LTO somehow makes the tagged symbols vanish.
Without lto, we have:
$ nm lib/libfuse3.so | grep fuse_new
0000000000011070 T fuse_new_30
0000000000010a00 t fuse_new_31
0000000000011070 T fuse_new@FUSE_3.0
0000000000010a00 T fuse_new@@FUSE_3.1
and with LTO:
$ nm lib/libfuse3.so | grep fuse_new
0000000000019a70 T fuse_new_30
0000000000019270 t fuse_new_31
See also issue #198.
|
|
|
|
|
|
| |
This is what the Linux version does, and it fixes a
timeout under FreeBSD when the kernel sends a FUSE_DESTROY
request that is never answered.
|
| |
|
|
|
|
| |
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
|
|
|
|
| |
FreeBSD kernel does not support this.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 should simplify the code a lot. It also corrects a bug in
that the (former) add_default_fsname() function actually set
the -osubtype option.
|
|
|
|
|
|
| |
mount_bsd.c is only used when compiling for *BSD, and FreeBSD
is the only BSD that supports FUSE. So there really is no need
to check if this file is compiled under FreeBSD.
|
| |
|
| |
|
|
|
|
| |
Signed-off-by: Banglang <banglang.huang@foxmail.com>
|
|
|
|
|
| |
This function shouldn't be called when using a newer fuse
version, so we should not define it in that case.
|
|
|
|
|
|
|
| |
I believe this function call is resolved by the compiler, not
the linker, so this seems safer.
Thanks to Chris Clayton for spotting this.
|
|
|
|
|
| |
GCC 4.8 doesn't like to rename fuse_new_30 to fuse_new, if we
also define an implementation for fuse_new.
|
| |
|
|
|
|
|
| |
At least on Linux kernel 4.9, a value of zero gives more
than 1-sec accuracy.
|
|
|
|
| |
There is a proper meson-mode now.
|
|
|
|
| |
It's already set in meson.build as compiler flag.
|
|
|
|
|
|
| |
read() return value should always be positive or -1. However,
since we cast to unsigned a little later, it's clearer
to check for non-negativity.
|
|
|
|
|
|
|
|
| |
Some variables of different size and sign were getting compared
without any safe casting.
The build system also throws warnings at this and, being this
library used for filesystems, it's really important to ensure
stability.
|
|
|
| |
They were removed from source here: https://github.com/libfuse/libfuse/commit/73b6ff4b75cf1228ea61262c293fcb2fda5dfeea
|
|
|
|
|
|
| |
For example, FreeBSD doesn't have it.
Fixes: #173.
|
|
|
|
| |
Fixes: #160.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently libfuse has a hardcoded buffer limit to 128kib, while fuse
kernel module has a limit up to 32 pages.
This patch changes buffer limit to match the current page size, instead
of assuming 4096 bytes pages, enabling architectures with bigger pages
to use larger buffers, improving performance.
Also, add a new macro (HEADER_SIZE) to specify the space needed to
accommodate the header, making it easier to understand why those extra
4096 bytes are needed
Signed-off-by: Carlos Maiolino <cmaiolino-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
|
| |
|
| |
|