aboutsummaryrefslogtreecommitdiff
path: root/lib
Commit message (Collapse)AuthorAge
* Added fuse_session_fd()Gravatar Nikolaus Rath2016-10-02
| | | | Fixes #59.
* Merged fuse_session.c into fuse_lowlevel.cGravatar Nikolaus Rath2016-10-02
| | | | | | 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.
* 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.
* fuse_mount_opts: don't keep max_read= option.Gravatar Nikolaus Rath2016-10-02
| | | | There is no consumer of it down the line.
* 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
|
* Tell emacs to use tabs for linkerscript.Gravatar Nikolaus Rath2016-10-02
|
* 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.
* Improve documentation of argument parsing.Gravatar Nikolaus Rath2016-10-01
|
* fuse_lowlevel_notify_*: take struct fuse_session instead of struct fuse_chanGravatar Nikolaus Rath2016-09-27
| | | | | | | | | | | 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.
* Dropped fuse_unmount_compat22Gravatar Nikolaus Rath2016-09-27
| | | | | This function was for backwards compatibility in FUSE 2.x, and is no longer exposed by FUSE 3.
* add error checking to setuid calls (#66)Gravatar Alex Richman2016-07-21
|
* libfuse/fuse_daemonize: wait until daemon child process is ready (#55)Gravatar Hendrik Brueckner2016-06-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mounting a FUSE file system remotely using SSH in combination with pseudo-terminal allocation (-t), results in "Transport endpoint is not connected" errors when trying to access the file system contents. For example: # ssh -t root@localhost "cmsfs-fuse /dev/disk/by-path/ccw-0.0.0190 /CMSFS" Connection to localhost closed. # ls /CMSFS ls: cannot access '/CMSFS': Transport endpoint is not connected The cmsfs-fuse main program (which can also be any other FUSE file system) calls into the fuse_main() libfuse library function. The fuse_main() function later calls fuse_daemonize() to fork the daemon process to handle the FUSE file system I/O. The fuse_daemonize() function calls fork() as usual. The child proceeds with setsid() and then redirecting its file descriptors to /dev/null etc. The parent process, simply exits. The child's functions and the parent's exit creates a subtle race. This is seen with an SSH connection. The SSH command above calls cmsfs-fuse on an allocated pseudo-terminal device (-t option). If the parent exits, SSH receives the command completion and closes the connection, that means, it closes the master side of the pseudo-terminal. This causes a HUP signal being sent to the process group on the pseudo-terminal. At this point in time, the child might not have completed the setsid() call and, hence, becomes terminated. Note that fuse daemon sets up its signal handlers after fuse_daemonize() has completed. Even if the child has the chance to disassociate from its parent process group to become it's own process group with setsid(), the child still has the pseudo-terminal opened as stdin, stdout, and stderr. So the pseudo-terminal still behave as controlling terminal and might cause a SIGHUP at closing the the master side. To solve the problem, the parent has to wait until the child (the fuse daemon process) has completed its processing, that means, has become its own process group with setsid() and closed any file descriptors pointing to the pseudo-terminal. Closes: #27 Reported-by: Ofer Baruch <oferba@il.ibm.com> Reviewed-by: Gerald Schaefer <gerald.schaefer@de.ibm.com> Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
* Inlined calculate_dirent*_size functionsGravatar Nikolaus Rath2016-06-05
|
* Don't use IFTODT macro.Gravatar Nikolaus Rath2016-06-05
| | | | | | | | | 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.
* Inlined fuse_add_direntGravatar Nikolaus Rath2016-06-05
|
* Merge branch 'add-dirent-strlen3' of git://github.com/trapexit/libfuse into ↵Gravatar Nikolaus Rath2016-06-04
|\ | | | | | | trapexit-add-dirent-strlen3
| * remove double calculation of filename length and dirent sizeGravatar Antonio SJ Musumeci2016-05-12
| |
* | lib/fuse_lowlevel.c: fix small typo in fuse_ll_help (#44)Gravatar David Sheets2016-05-11
| | | | | | s/disable remove file locking/disable remote file locking/
* | 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
| |
* | Inlined fuse_chan_{send, recv}Gravatar Nikolaus Rath2016-03-29
| |
* | cuse_lowlevel.setup(): fix double free of local variable 'args'Gravatar Winfried Koehler2016-03-11
|/ | | | Signed-off-by: Winfried Koehler <w_scan@gmx-topmail.de>
* Initialize padding to zero.Gravatar Nikolaus Rath2016-01-14
| | | | This should prevent some valgrind warnings.
* Merge branch 'clone_fd'Gravatar Miklos Szeredi2015-09-29
|\
* \ Merge git://git.code.sf.net/u/xophmeister/fuseGravatar Miklos Szeredi2015-08-14
|\ \
| * | Canonicalised whitespace and added ChangeLog entryGravatar Christopher Harrison2015-08-12
| | |
* | | libfuse: fix warning mount.c:receive_fd()Gravatar Miklos Szeredi2015-08-12
| | | | | | | | | | | | Reported by Albert Berger
| * | Added fuse_pkgversion functionGravatar Christopher Harrison2015-07-30
|/ / | | | | | | Returns the full PACKAGE_VERSION string, per autoconf
* | libfuse: fix possible memory leakGravatar Miklos Szeredi2015-06-29
| | | | | | | | Reported by Jose R. Guzman
* | libfuse: fix exec environment for mount and umountGravatar Miklos Szeredi2015-05-22
| | | | | | | | Found by Tavis Ormandy (CVE-2015-3202).
| * 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: get ref for reqGravatar Miklos Szeredi2015-05-18
| | | | | | | | | | | | While the request lives don't free the channel associated with the request, the answer will need to be written on the channel.
| * libfuse: refcount fuse_chan objectsGravatar Miklos Szeredi2015-05-18
|/ | | | | New functions: fuse_chan_get(), fuse_chan_put(). Removed function: fuse_chan_destroy().
* libfuse: add FUSE_CAP_NO_OPEN_SUPPORT flag to ->init()Gravatar Miklos Szeredi2015-04-23
|
* libfuse: fix handling of '.' and '..' in highlevel readdirplusGravatar Miklos Szeredi2015-02-26
|
* libfuse: fix fuse_remove_signal_handlers()Gravatar Miklos Szeredi2015-02-26
| | | | | | to properly restore the default signal handler. Reported by: Chris Johnson <johnsocg@gmail.com>
* 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.
* libfuse: allow setting ctime in ->setattr()Gravatar Miklos Szeredi2014-07-15
|
* libfuse: add "time_gran" optionGravatar Miklos Szeredi2014-07-15
| | | | | | This allows the filesystem to specify the time granularity it supports when the kernel is responsible for updating times ("writeback_cache" option).
* fusermount, libfuse: send value as unsigned in "user_id=" and "group_id="Gravatar Miklos Szeredi2014-07-15
| | | | | ...options. Uids/gids larger than 2147483647 would result in EINVAL when mounting the filesystem. This also needs a fix in the kernel.
* 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.
* Allocate buffer when splicing from the fuse deviceGravatar Miklos Szeredi2014-02-27
| | | | Was broken by commit 561d7054d856 "libfuse: remove fuse_chan_bufsize()".