| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a code simplification patch.
- It confines most of the implementation channel implementation into
fuse_loop_mt (which is its only user).
- It makes it more obvious in the code that channels are only ever used
when using -o clone_fd and multi-threaded main loop.
- It simplies the definition of both struct fuse_session and struct
fuse_chan.
- Theoretically it should result in (minuscule) performance
improvements when not using -o clone_fd.
- Overall, it removes a lot more lines of source code than it adds :-).
|
|
|
|
| |
There is no point in having a separate file for a 10 line function.
|
|
|
|
|
| |
This should make more clear what file contains code for what
purpose.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Help and version messages can be generated using the new
fuse_lowlevel_help(), fuse_lowlevel_version(), fuse_mount_help(), and
fuse_mount_version() functions.
The fuse_parse_cmdline() function has been made more powerful
to do this automatically, and is now explicitly intended only
for low-level API users.
This is a code simplication patch. We don't have to parse for --help and
--version in quite as many places, and we no longer have a low-level
initialization function be responsible for the (super-high level) task
of printing a program usage message.
In the high-level API, we can now handle the command line parsing
earlier and avoid running other initialization code if we're just going
to abort later on.
|
|
|
|
| |
Also, do not include "General options" in usage message.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The only struct fuse_chan that's accessible to the user application is
the "master" channel that is returned by fuse_mount and stored in struct
fuse_session.
When using the multi-threaded main loop with the "clone_fd" option, each
worker thread gets its own struct fuse_chan. However, none of these are
available to the user application, nor do they hold references to struct
fuse_session (the pointer is always null).
Therefore, any presence of struct fuse_chan can be removed
without loss of functionality by relying on struct fuse_session instead.
This reduces the number of API functions and removes a potential source
of confusion (since the new API no longer looks as if it might be
possible to add multiple channels to one session, or to share one
channel between multiple sessions).
Fixes issue #17.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Applied (whitespace-cleanup) to each file. Having whitespace changes
in the VCS is ugly, but it ensures that in the future committers
can run this function to *avoid* commiting any whitespace.
|
| |
|
| |
|
|
|
|
| |
Reported by Eric Biggers
|
|
|
|
| |
See renameat2() system call in linux-3.15 and later kernels.
|
|
|
|
|
|
| |
to zero in all cases.
Reported by Daniel Iwan.
|
|
|
|
|
|
|
|
|
|
| |
Reuse the old "readdir" callback, but add a flags argument, that has
FUSE_READDIR_PLUS in case this is a "plus" version. Filesystems can safely
ignore this flag, but if they want they can add optimizations based on it:
i.e. only retrieve the full attributes in PLUS mode.
The filler function is also given a flags argument and the filesystem can
set FUSE_FILL_DIR_PLUS if all the attributes in "stat" are valid.
|
| |
|
|\ |
|
| |
| |
| |
| | |
This allows compiling fuse with musl.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
Remove 'fh_old' which was an ABI compatibility field for a long time.
Make 'writepage' a bitfield.
|
| |
| |
| |
| |
| |
| |
| | |
Remove fuse_chan_bufsize() from the lowlevel API.
fuse_session_receive_buf() is now responsible for allocating memory for the
buffer.
|
| |
| |
| |
| |
| |
| |
| | |
Move the fuse_chan_ops.send and .receive implementations to fuse_lowlevel.c. The abstraction wasn't actually useful and made the the splice implementation more difficult.
Remove fuse_chan_ops.send and fuse_chan_ops.receive.
|
| |
| |
| |
| |
| | |
Replace fuse_session_next_chan() with fuse_session_chan(), as multiple
channels per session were never actually supported and probably never will.
|
|\| |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
This fixes a segmentation fault if command-line option parsing fails during
initialization.
Reported by Eric Wong
|
| |
| |
| |
| |
| | |
Make requested poll events available to the filesystem. If the requested
eventsare not available, then this field is zero.
|
| |
| |
| |
| |
| |
| |
| |
| | |
fuse_interrupted(), fuse_get_context(), etc... crashed in non-fuse threads.
Instead return false, NULL or error depending on the function.
Reported by Michael Berlin
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The lru list was not initialized for the "/" path. This resulted in
remove_node_lru() crashing on LOOKUP-DOTDOT.
Patch by Madan Valluri.
--
ChangeLog | 4 ++++
lib/fuse.c | 4 ++++
2 files changed, 8 insertions(+)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Patch by Ratna Manoj.
queue_element_unlock() should set ->first_locked and ->second_locked to false.
Discovered with 'fs_racer'. The assert(wnode->treelock == TREELOCK_WRITE) in
unlock_path() was hit within minutes.
Miklos: simplified patch
|
| |
| |
| |
| |
| |
| |
| | |
Running "svn update" on a fuse filesystem could deadlock because of a bug in the
way the paths are locked.
Reported by Kazuaki Anami
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Due to an oversight, splice will never actually be used for i/o. Someone forgot
to #include "config.h" in lib/buffer.c (in fact almost no files include that
header). As a result, even though configure detects splice support and puts
HAVE_SPLICE in config.h, buffer.c is always compiled as if there is no splice
support.
Also add #include "config.h" to fuse.c and fuse_lowlevel.c. These currently
include it indirectly through fuse_misc.h, but we don't want to depend on that.
Reported by Matthew Gabeler-Lee
|
|\| |
|
| |
| |
| |
| | |
Fix compile warning when not using node slab.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Commit 4dc7e675bb (Don't unhash name in FORGET) broke the forget logic in a
subtle way, resulting in "fuse internal error: node NNN not found" and causing
the filesystem daemon to abort.
Fix by incrementing the node refcount if nlookup goes from zero to one.
Reported by Kyle Lippincott
|