aboutsummaryrefslogtreecommitdiff
path: root/lib/fuse_i.h
Commit message (Collapse)AuthorAge
* Don't use external symbol names in internal filesGravatar Nikolaus Rath2017-09-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* directly call fuse_new_31() instead of fuse_new() internallyGravatar userwithuid2017-08-14
| | | | this fixes building with lto, which failed since commit 503e32d01e4db00e90d7acfd81ab05386559069f
* Make handling of -oallow_root easier to understandGravatar Nikolaus Rath2016-11-22
| | | | | | -oallow_root is handled in userspace, and requires passing -oallow_other to the kernel. This patch should make the code easier to understand and avoid the confusion that gave rise to issue #86.
* Add support for more detailed error codes from main loopGravatar Nikolaus Rath2016-11-16
|
* Add max_read to fuse_conn_infoGravatar Nikolaus Rath2016-10-27
| | | | | | | | | | Eventually, this setting should be negotiated in the filesystem's init() handler (like e.g. max_write). However, this requires corresponding changes in the FUSE kernel module. In preparation for this (and to allow a transition period) we already allow (and require) filesystems to set the value in the init() handler in addition to the mount option. The end-goal is tracked in issue #91.
* Inlined fuse_mount_help() into fuse_lowlevel_help().Gravatar Nikolaus Rath2016-10-16
| | | | | | | | | Both the BSD and Linux implementation actually accept mostly the same FUSE-specific mount options. Up to now, the BSD help function appended the output of ``mount_fusefs --help``, but looking at http://www.unix.com/man-page/freebsd/8/mount_fusefs/ this is likely more confusing than helpful (since the user is not actually invoking mount_fusefs directly, most of the options don't make sense).
* Unify handling of fuse_conn_info optionsGravatar Nikolaus Rath2016-10-15
| | | | | | Instead of using command line options to modify struct fuse_conn_info before and after calling the init() handler, we now give the file system explicit control over this.
* Make -o clone_fd into a parameter of session_loop_mt().Gravatar Nikolaus Rath2016-10-13
| | | | | | This option really affects the behavior of the session loop, not the low-level interface. Therefore, it does not belong in the fuse_session object.
* Move session options into sub-structGravatar Nikolaus Rath2016-10-13
| | | | | | | The session options are used only once to determine the proper conn->want flags. It is nice to have them clearly separated from the other struct fuse_session members that are used throughout the life of the file system.
* Removed 'async_read' field in fuse_conn_infoGravatar Nikolaus Rath2016-10-10
| | | | This is redundant with the capability flags in `wants` and `capable`.
* Removed ``-o big_writes`` optionGravatar Nikolaus Rath2016-10-08
| | | | | | This option is obsolete and should always be enabled. File systems that want to limit the size of write requests should use the ``-o max_write=<N>`` option instead.
* Removed obsolete, unused *f member from struct fuse_session.Gravatar Nikolaus Rath2016-10-05
|
* Merge fuse_ll into fuse_session (part 1)Gravatar Nikolaus Rath2016-10-04
| | | | | Merged the structures, and replaced fuse_ll with fuse_session in all type definitions.
* 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 :-).
* Store struct fuse_session* in struct fuse_reqGravatar Nikolaus Rath2016-10-03
|
* 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.
* Turned fuse_session_{process,receive}_buf into wrapper functions.Gravatar Nikolaus Rath2016-10-02
|
* Inlined fuse_session_new()Gravatar Nikolaus Rath2016-10-02
| | | | This function is only used in one place.
* libfuse: add "clone_fd" optionGravatar Miklos Szeredi2015-05-18
| | | | | This creates a separate device file descriptor for each processing thread, which might improve performance.
* libfuse: refcount fuse_chan objectsGravatar Miklos Szeredi2015-05-18
| | | | | New functions: fuse_chan_get(), fuse_chan_put(). Removed function: fuse_chan_destroy().
* fuse: use dlsym() instead of relying on ld.so constructor functionsGravatar Fabrice Bauzac2014-02-04
|
* libfuse: Add "async_dio" and "writeback_cache" optionsGravatar Miklos Szeredi2014-01-29
| | | | | Asynchronous direct I/O is supported by linux kernels 3.13 and later, writeback caching is supported by 3.14 and later.
* libfuse: remove session and chan abstractionsGravatar Miklos Szeredi2013-06-21
| | | | | | There's actually just one type of channel and session, so we don't need the generic callback functions.
* 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: clean up fuse_chanGravatar Miklos Szeredi2013-06-21
| | | | | | | | | | | | Clean up fuse_chan related interfaces. Remove the following from the lowlevel library API: struct fuse_chan_ops; fuse_chan_new(); fuse_chan_session(); fuse_chan_recv(); fuse_chan_send();
* libfuse: clean up fuse_sessionGravatar Miklos Szeredi2013-06-21
| | | | | | | | | | Clean up fuse_session related interfaces. Remove the following from the lowlevel library API: struct fuse_session_ops; fuse_session_new(); fuse_session_process(); fuse_session_data();
* libfuse: fix multiple close of device fdGravatar Miklos Szeredi2013-06-20
| | | | | | | | | | | | - fuse_kern_unmount closes handle (e.g. 19) - a thread in my process opens a file - the OS assigns newly freed handle (i.e. 19) - fuse_kern_chan_destroy closes the same handle (i.e. 19) - a thread in my process opens another file - the OS assigns newly freed handle (i.e. 19) - * MAYHEM * Reported by Dan Greenfield
* libfuse: remove struct fuse_cmdGravatar Miklos Szeredi2013-02-08
|
* libfuse: allow disabling adaptive readdirplusGravatar Eric Wong2013-02-07
| | | | | | | | | | | This switches the -o no_readdirplus option to a tristate string: -o readdirplus=(yes|no|auto) Telling the kernel to always use readdirplus is beneficial to filesystems (e.g. GlusterFS) where the cost to perform readdir and readdirplus are identical. The default remains "auto" (if supported).
* libfuse: add readdirplus support in fuse_lowlevel_opsGravatar Feng Shuo2013-02-07
| | | | | | | | | | | | | | | | | This patch implements readdirplus support in FUSE usersapce. It adds a new fuse lowlevel operations fuse_lowleve_ops::readdir_plus, corespoding mount options and helper functions to maintain buffer. [From: Eric Wong <normalperson@yhbt.net>] This makes our terminology consistent with NFS and our kernel module, as well as reducing user/developer confusion in the command-line. Note: I'm keeping "fuse_add_direntry_plus" since that is less standardized in its use than "readdirplus" for now. Signed-off-by: Feng Shuo <steve.shuo.feng@gmail.com>
* libfuse: Add '[no_]auto_inval_data' mount optionGravatar Feng Shuo2013-02-06
| | | | | | | | | | | Several caching logic changes have been made on the kernel side to better support network-based fuse filesystems. These include kernel side mtime checking and read path cache revalidation. The new caching logic is enabled through the FUSE_AUTO_INVAL_DATA init flag. Export this to the user via the '[no_]auto_inval_data' mount option. Signed-off-by: Feng Shuo <steve.shuo.feng@gmail.com>
* Remove compat functionsGravatar Miklos Szeredi2012-07-19
|
* Add ->flock() operation to low and high level interfacesGravatar Miklos Szeredi2011-07-06
| | | | | | | | | | This fixes problems with emulating flock() with POSIX locking. Reported by Sebastian Pipping. As with lock/setlk/getlk most filesystems don't need to implement this, as the kernel takes care of file locking. The only reason to implement locking operations is for network filesystems which want file locking to work between clients.
* add "remember" optionGravatar therealneworld@gmail.com2011-06-02
| | | | | This works similar to "noforget" except that eventually the node will be allowed to expire from the cache.
* Fix ioctl ABIGravatar Miklos Szeredi2011-05-19
| | | | | Fix the ambiguity of ioctl ABI on the kernel/userspace boundary for 32bit vs. 64bit userspace
* Disable splice by defaultGravatar Miklos Szeredi2011-05-19
| | | | | | Disable splice by default, add "splice_read", "splice_write" and "splice_move" options. Keep the "no_splice_*" variants, which can disable splice even if the filesystem explicitly enables it.
* libfuse: add retrieve requestGravatar Miklos Szeredi2010-11-08
| | | | Retrieve data stored in the kernel buffers for a given inode.
* libfuse: support zero copy writes in lowlevel interfaceGravatar Miklos Szeredi2010-11-08
| | | | | | | | | | Add new ->write_buf() method to low level interface. This allows passig a generic buffer, either containing a memory buffer or a file descriptor. This allows implementing zero copy writes. Add fuse_session_receive_buf() and fuse_session_process_buf() which may be used in event loop implementations to replace fuse_chan_recv() and fuse_session_process() respectively.
* libfuse: add buffer interfaceGravatar Miklos Szeredi2010-07-12
| | | | | | | | Add a generic buffer interface for use with I/O. Buffer vectors are supplied and each buffer in the vector may be a memory pointer or a file descriptor. The fuse_reply_fd() interface is converted to using buffers.
* Add fuse_reply_fd() reply function to the low level interfaceGravatar Miklos Szeredi2010-06-17
|
* * Add missing fuse_session_data to versionscriptGravatar Miklos Szeredi2009-08-18
| | | | | | * Make sure all global symbols are prefixed with "fuse_" or "cuse_" * Released 2.8.0
* CUSE patches from Tejun Heo (add new files)Gravatar Miklos Szeredi2009-06-18
|
* CUSE patches from Tejun HeoGravatar Miklos Szeredi2009-06-18
|
* change indentingGravatar Miklos Szeredi2007-12-12
|
* Clarify licence version to be "LGPLv2" for the libraryGravatar Miklos Szeredi2007-10-16
|
* update copyright datesGravatar Miklos Szeredi2007-04-25
|
* interrupt supportGravatar Miklos Szeredi2006-09-07
|
* fixGravatar Miklos Szeredi2006-03-17
|
* fixGravatar Miklos Szeredi2006-02-15
|