aboutsummaryrefslogtreecommitdiff
path: root/lib/fuse.c
Commit message (Collapse)AuthorAge
* Clarified purpose of helper.c, moved *version() to fuse.cGravatar Nikolaus Rath2016-10-04
|
* Merge master fuse_chan into fuse_session.Gravatar Nikolaus Rath2016-10-03
| | | | | | | | | | | | | | | | | | 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 :-).
* Merged fuse_mt.c into fuse.cGravatar Nikolaus Rath2016-10-02
| | | | There is no point in having a separate file for a 10 line function.
* Extended per-file comments.Gravatar Nikolaus Rath2016-10-02
| | | | | This should make more clear what file contains code for what purpose.
* Don't handle --help and --version in fuse_session_new().Gravatar Nikolaus Rath2016-10-02
| | | | | | | | | | | | | | | | | | | 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.
* Add section headings for --help outputGravatar Nikolaus Rath2016-10-02
| | | | Also, do not include "General options" in usage message.
* Turn struct fuse_chan into an implementation detailGravatar Nikolaus Rath2016-10-02
| | | | | | | | | | | | | | | | | | | | | 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.
* Renamed fuse_lowlevel_new() to fuse_session_new().Gravatar Nikolaus Rath2016-10-02
|
* Introduce separate mount/umount functions for low-level API.Gravatar Nikolaus Rath2016-10-02
|
* Turned fuse_session_{process,receive}_buf into wrapper functions.Gravatar Nikolaus Rath2016-10-02
|
* Improve documentation of argument parsing.Gravatar Nikolaus Rath2016-10-01
|
* Whitespace cleanup.Gravatar Nikolaus Rath2016-03-29
| | | | | | 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.
* Inlined fuse_chan_fdGravatar Nikolaus Rath2016-03-29
|
* libfuse: fix handling of '.' and '..' in highlevel readdirplusGravatar Miklos Szeredi2015-02-26
|
* libfuse: highlevel API: fix directory file handle passed to ioctl() methodGravatar Miklos Szeredi2014-07-21
| | | | Reported by Eric Biggers
* libfuse: add flags to ->rename()Gravatar Miklos Szeredi2014-07-15
| | | | See renameat2() system call in linux-3.15 and later kernels.
* Initilaize stat buffer passed to ->getattr() and ->fgetattr()Gravatar Miklos Szeredi2014-03-26
| | | | | | to zero in all cases. Reported by Daniel Iwan.
* libfuse: implement readdirplus for high-level APIGravatar Eric Wong2014-03-05
| | | | | | | | | | 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.
* fuse: use dlsym() instead of relying on ld.so constructor functionsGravatar Fabrice Bauzac2014-02-04
|
* Merge remote-tracking branch 'origin/fuse_2_9_bugfix'Gravatar Miklos Szeredi2013-08-26
|\
| * Add missing includesGravatar Daniel Thau2013-08-26
| | | | | | | | This allows compiling fuse with musl.
* | Change generation and nlookup from 'unsigned long' to 'uint64_t'Gravatar Miklos Szeredi2013-08-26
| |
* | Print help on stdout instead of stderrGravatar Miklos Szeredi2013-07-26
| |
* | libfuse: clean up struct fuse_file_infoGravatar Miklos Szeredi2013-07-18
| | | | | | | | | | | | Remove 'fh_old' which was an ABI compatibility field for a long time. Make 'writepage' a bitfield.
* | libfuse: remove fuse_chan_bufsize()Gravatar Miklos Szeredi2013-06-21
| | | | | | | | | | | | | | Remove fuse_chan_bufsize() from the lowlevel API. fuse_session_receive_buf() is now responsible for allocating memory for the buffer.
* | libfuse: remove fuse_chan_(send|receive)Gravatar Miklos Szeredi2013-06-21
| | | | | | | | | | | | | | 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.
* | libfuse: replace fuse_session_next_chanGravatar Miklos Szeredi2013-06-21
| | | | | | | | | | Replace fuse_session_next_chan() with fuse_session_chan(), as multiple channels per session were never actually supported and probably never will.
* | Merge branch 'fuse_2_9_bugfix'Gravatar Miklos Szeredi2013-03-19
|\|
* | fix fi->fh format stringsGravatar Miklos Szeredi2013-02-21
| |
* | Fix nodeid format stringsGravatar Miklos Szeredi2013-02-21
| |
| * Add "nopath" to help.Gravatar Miklos Szeredi2013-02-18
| |
* | libfuse: remove deprecated fuse_operations.utime_omit_okGravatar Miklos Szeredi2013-02-08
| |
* | libfuse: remove deprecated fuse_operations.utime()Gravatar Miklos Szeredi2013-02-08
| |
* | libfuse: remove deprecated fuse_operations.getdir()Gravatar Miklos Szeredi2013-02-08
| |
* | libfuse: remove deprecated fuse_exited()Gravatar Miklos Szeredi2013-02-08
| |
* | libfuse: remove deprecated fuse_read_cmd(), fuse_process_cmd()Gravatar Miklos Szeredi2013-02-08
| |
* | libfuse: remove deprecated fuse_set_getcontext_func()Gravatar Miklos Szeredi2013-02-08
| |
* | libfuse: remove deprecated fuse_invalidate()Gravatar Miklos Szeredi2013-02-08
| |
* | libfuse: remove deprecated fuse_is_lib_option()Gravatar Miklos Szeredi2013-02-08
| |
* | libfuse-fix-fs-cleanupGravatar Miklos Szeredi2013-02-07
| | | | | | | | | | | | | | This fixes a segmentation fault if command-line option parsing fails during initialization. Reported by Eric Wong
* | libfuse: add poll_events to fuse_file_infoGravatar Enke Chen2013-02-07
| | | | | | | | | | Make requested poll events available to the filesystem. If the requested eventsare not available, then this field is zero.
* | libfuse: fix fuse_get_context() in non fuse threadsGravatar Miklos Szeredi2013-02-05
| | | | | | | | | | | | | | | | 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
* | Merge branch 'fuse_2_9_bugfix'Gravatar Miklos Szeredi2013-02-04
|\|
| * libfuse: fix the 'remember' optionGravatar Madan Valluri2013-02-04
| | | | | | | | | | | | | | | | | | | | | | | | 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(+)
| * libfuse: fix crash in unlock_path()Gravatar Ratna_Bolla@dell.com2013-02-04
| | | | | | | | | | | | | | | | | | | | | | | | 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
| * Fix deadlock in libfuseGravatar Miklos Szeredi2012-10-01
| | | | | | | | | | | | | | Running "svn update" on a fuse filesystem could deadlock because of a bug in the way the paths are locked. Reported by Kazuaki Anami
| * Fix missing config.h in buffer.cGravatar Miklos Szeredi2012-08-24
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Merge branch 'fuse_2_9_bugfix'Gravatar Miklos Szeredi2012-08-14
|\|
| * Zero out node when allocating from a slab.Gravatar Miklos Szeredi2012-08-14
| | | | | | | | Fix compile warning when not using node slab.
| * Fix "fuse internal error: node NNN not found"Gravatar Miklos Szeredi2012-08-14
| | | | | | | | | | | | | | | | | | | | 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