aboutsummaryrefslogtreecommitdiffstats
path: root/lib/fuse_lowlevel.c
AgeCommit message (Collapse)AuthorLines
2016-10-03Store struct fuse_session* in struct fuse_reqNikolaus Rath-4/+5
2016-10-02Added fuse_session_fd()Nikolaus Rath-0/+5
Fixes #59.
2016-10-02Merged fuse_session.c into fuse_lowlevel.cNikolaus Rath-0/+94
This distinction no longer makes sens. fuse_lowlevel.c already contains several session related functions, and fuse_session.c contains various stuff that is more related to the channel interface.
2016-10-02Extended per-file comments.Nikolaus Rath-0/+3
This should make more clear what file contains code for what purpose.
2016-10-02Don't handle --help and --version in fuse_session_new().Nikolaus Rath-40/+27
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.
2016-10-02fuse_mount_opts: don't keep max_read= option.Nikolaus Rath-1/+0
There is no consumer of it down the line.
2016-10-02Add section headings for --help outputNikolaus Rath-2/+2
Also, do not include "General options" in usage message.
2016-10-02Turn struct fuse_chan into an implementation detailNikolaus Rath-24/+48
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.
2016-10-02Renamed fuse_lowlevel_new() to fuse_session_new().Nikolaus Rath-3/+3
2016-10-02Introduce separate mount/umount functions for low-level API.Nikolaus Rath-0/+36
2016-10-02Turned fuse_session_{process,receive}_buf into wrapper functions.Nikolaus Rath-1/+14
2016-10-02Inlined fuse_session_new()Nikolaus Rath-4/+5
This function is only used in one place.
2016-10-01Improve documentation of argument parsing.Nikolaus Rath-0/+1
2016-09-27fuse_lowlevel_notify_*: take struct fuse_session instead of struct fuse_chanNikolaus Rath-20/+20
The only struct fuse_chan that's available to the user application is the one that is returned by fuse_mount. However, this is also permanently available from struct fuse_session. A later patch will therefore remove struct fuse_chan from the public API completely. This patch prepares for this by changing the fuse_lowlevel_notify_* functions to take a struct fuse_session parameter instead of a struct fuse_chan parameter.
2016-06-05Inlined calculate_dirent*_size functionsNikolaus Rath-22/+7
2016-06-05Don't use IFTODT macro.Nikolaus Rath-7/+2
IFTODT is provided by libc to convert from mode_t (as included in e.g. struct fstat) to d_type (unsigned char element of struct dirent, as returned by e.g. readdir). However, fuse actually uses a different struct fuse_dirent with a "type" field of type uint32. In other words, the semantics of (struct fuse_dirent).type are not necessarily the same as those of (struct dirent).d_type.
2016-06-05Inlined fuse_add_direntNikolaus Rath-45/+39
2016-06-04Merge branch 'add-dirent-strlen3' of git://github.com/trapexit/libfuse into ↵Nikolaus Rath-27/+64
trapexit-add-dirent-strlen3
2016-05-12remove double calculation of filename length and dirent sizeAntonio SJ Musumeci-27/+64
2016-05-11lib/fuse_lowlevel.c: fix small typo in fuse_ll_help (#44)David Sheets-1/+1
s/disable remove file locking/disable remote file locking/
2016-03-29Whitespace cleanup.Nikolaus Rath-3/+3
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.
2016-03-29Inlined fuse_chan_fdNikolaus Rath-6/+6
2016-03-29Inlined fuse_chan_{send, recv}Nikolaus Rath-81/+60
2016-01-14Initialize padding to zero.Nikolaus Rath-0/+1
This should prevent some valgrind warnings.
2015-09-29Merge branch 'clone_fd'Miklos Szeredi-3/+6
2015-06-29libfuse: fix possible memory leakMiklos Szeredi-1/+1
Reported by Jose R. Guzman
2015-05-18libfuse: add "clone_fd" optionMiklos Szeredi-0/+2
This creates a separate device file descriptor for each processing thread, which might improve performance.
2015-05-18libfuse: get ref for reqMiklos Szeredi-1/+3
While the request lives don't free the channel associated with the request, the answer will need to be written on the channel.
2015-05-18libfuse: refcount fuse_chan objectsMiklos Szeredi-2/+1
New functions: fuse_chan_get(), fuse_chan_put(). Removed function: fuse_chan_destroy().
2015-04-23libfuse: add FUSE_CAP_NO_OPEN_SUPPORT flag to ->init()Miklos Szeredi-0/+2
2014-07-15libfuse: add flags to ->rename()Miklos Szeredi-1/+16
See renameat2() system call in linux-3.15 and later kernels.
2014-07-15libfuse: allow setting ctime in ->setattr()Miklos Szeredi-1/+4
2014-07-15libfuse: add "time_gran" optionMiklos Szeredi-1/+12
This allows the filesystem to specify the time granularity it supports when the kernel is responsible for updating times ("writeback_cache" option).
2014-02-27Allocate buffer when splicing from the fuse deviceMiklos Szeredi-6/+21
Was broken by commit 561d7054d856 "libfuse: remove fuse_chan_bufsize()".
2014-01-29libfuse: Add "async_dio" and "writeback_cache" optionsMiklos Szeredi-5/+28
Asynchronous direct I/O is supported by linux kernels 3.13 and later, writeback caching is supported by 3.14 and later.
2013-11-29Fix fuse_add_direntry_plus()Miklos Szeredi-15/+10
2013-08-26Merge remote-tracking branch 'origin/fuse_2_9_bugfix'Miklos Szeredi-0/+1
2013-08-26Add missing includesDaniel Thau-0/+1
This allows compiling fuse with musl.
2013-08-26Don't close -1 fd in fuse_chan_destroy()Miklos Szeredi-1/+3
Valgrind warns on close(-1). So don't do this (happens if fuse_chan_clearfd() was called on the channel).
2013-07-26Print help on stdout instead of stderrMiklos Szeredi-3/+3
2013-07-18libfuse: clean up struct fuse_file_infoMiklos Szeredi-15/+1
Remove 'fh_old' which was an ABI compatibility field for a long time. Make 'writepage' a bitfield.
2013-07-17Merge https://github.com/qknight/fuse-fuseMiklos Szeredi-0/+0
2013-07-02rewrote c++ style comments to c style coments mentioned by Miklos SzerediJoachim Schiele-0/+0
2013-06-21libfuse: remove session and chan abstractionsMiklos Szeredi-20/+32
There's actually just one type of channel and session, so we don't need the generic callback functions.
2013-06-21libfuse: remove fuse_chan_bufsize()Miklos Szeredi-22/+25
Remove fuse_chan_bufsize() from the lowlevel API. fuse_session_receive_buf() is now responsible for allocating memory for the buffer.
2013-06-21libfuse: remove fuse_chan_(send|receive)Miklos Szeredi-8/+60
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.
2013-06-21libfuse: clean up fuse_sessionMiklos Szeredi-16/+2
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();
2013-02-21Fix nodeid format stringsMiklos Szeredi-2/+2
2013-02-08libfuse: remove deprecated fuse_lowlevel_is_lib_option()Miklos Szeredi-5/+0
2013-02-07libfuse: allow disabling adaptive readdirplusEric Wong-4/+16
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).