aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorLines
2016-10-03Don't crash if valgrind or libtool are not installed.Nikolaus Rath-3/+7
2016-10-02Run tests under valgrind when available.Nikolaus Rath-20/+46
Fixes #50.
2016-10-02Import os.path.join as pjoinNikolaus Rath-26/+27
Makes the code much shorter :-).
2016-10-02Added fuse_session_fd()Nikolaus Rath-1/+26
Fixes #59.
2016-10-02Document that client pid/gid/uid may be zero.Nikolaus Rath-2/+9
Fixes #67.
2016-10-02Merged fuse_session.c into fuse_lowlevel.cNikolaus Rath-114/+95
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-02Merged fuse_mt.c into fuse.cNikolaus Rath-26/+14
There is no point in having a separate file for a 10 line function.
2016-10-02Extended per-file comments.Nikolaus Rath-0/+24
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-290/+317
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-2/+0
There is no consumer of it down the line.
2016-10-02Add section headings for --help outputNikolaus Rath-13/+13
Also, do not include "General options" in usage message.
2016-10-02Edited comments for clarity.Nikolaus Rath-12/+9
2016-10-02Added test for fuse_lo-plus.Nikolaus Rath-0/+31
2016-10-02Run hello_ll single-threaded explicitly.Nikolaus Rath-0/+3
2016-10-02Fixed permissions of source files.Nikolaus Rath-0/+0
2016-10-02Turn struct fuse_chan into an implementation detailNikolaus Rath-327/+363
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-17/+21
2016-10-02Re-order declarations to reflect typical order of useNikolaus Rath-71/+73
2016-10-02Introduce separate mount/umount functions for low-level API.Nikolaus Rath-66/+111
2016-10-02Tell emacs to use tabs for linkerscript.Nikolaus Rath-0/+4
2016-10-02Turned fuse_session_{process,receive}_buf into wrapper functions.Nikolaus Rath-7/+26
2016-10-02Inlined fuse_session_new()Nikolaus Rath-23/+5
This function is only used in one place.
2016-10-01Improve documentation of argument parsing.Nikolaus Rath-3/+38
2016-09-27Added notes for libfuse hackers.Nikolaus Rath-0/+35
2016-09-27Documentation improvements.Nikolaus Rath-6/+10
2016-09-27Added TAGS to .gitignoreNikolaus Rath-0/+1
2016-09-27Fixed up permissions.Nikolaus Rath-0/+0
2016-09-27fuse_lowlevel_notify_*: take struct fuse_session instead of struct fuse_chanNikolaus Rath-30/+33
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-09-27Dropped fuse_unmount_compat22Nikolaus Rath-47/+0
This function was for backwards compatibility in FUSE 2.x, and is no longer exposed by FUSE 3.
2016-08-24Fixed typo.Nikolaus Rath-1/+1
2016-08-04Don't hardcode /sbin, /lib & /etcbobrofon-3/+3
Default values for MOUNT_FUSE_PATH, UDEV_RULES_PATH and INIT_D_PATH should be based on directory variables from GNU Coding Standarts. Directory variables left unexpanded because installation directory options may be changed via "make install prefix=/foo".
2016-07-23Disable thread sanitizer, use newer gcc.Nikolaus Rath-11/+18
There's no point in having tests failing all the time, we will re-enable thread sanitizer once we have figured out if the errors are bugs or false positives (and, if they are bugs, fixed them).
2016-07-23Updated ChangeLogNikolaus Rath-3690/+116
Started from most recent FUSE 2.9.7 ChangeLog, and added FUSE 3.0 changes based on inspection of total diff to master.
2016-07-23Include test suite in tarballNikolaus Rath-3/+5
2016-07-21add error checking to setuid calls (#66)Alex Richman-3/+21
2016-06-20libfuse/fuse_daemonize: wait until daemon child process is ready (#55)Hendrik Brueckner-0/+14
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>
2016-06-05Automatically run CI tests with clangNikolaus Rath-1/+8
Fixes: #51
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-13Add 'traceback' as suspicious test output pattern.Nikolaus Rath-1/+1
2016-05-13Added Travis integrationNikolaus Rath-0/+20
2016-05-13Merge remote-tracking branch 'origin/master'Nikolaus Rath-1/+1
2016-05-13Merge branch 'ioctl-test'Nikolaus Rath-83/+43
2016-05-13Add ioctl tests.Nikolaus Rath-0/+24
2016-05-13Fix ioctl exampleNikolaus Rath-83/+19
Fixes issue #39.
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-04-27Fixup commit 482a49c.Nikolaus Rath-1/+1