| Commit message (Collapse) | Author | Age |
|
|
|
|
| |
This function was for backwards compatibility in FUSE 2.x, and
is no longer exposed by FUSE 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".
|
|
|
|
|
|
|
| |
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).
|
|
|
|
|
| |
Started from most recent FUSE 2.9.7 ChangeLog, and added FUSE 3.0
changes based on inspection of total diff to master.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
| |
Fixes: #51
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|\
| |
| |
| | |
trapexit-add-dirent-strlen3
|
| | |
|
| | |
|
|\ \ |
|
|\ \ \ |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Fixes issue #39.
|
| | | | |
|
| |/ /
|/| |
| | | |
s/disable remove file locking/disable remote file locking/
|
| | | |
|
|\ \ \
| |/ /
|/| | |
|
| | |
| | |
| | |
| | |
| | | |
requirements (#29)
Remove leading _ on header guards to comply with reserved identifier requirements
|
| |\ \
| | | |
| | | | |
Fix spelling mistake in comment
|
| |/ / |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
Fixes issue #33.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | | |
|
| | | |
|
| | | |
|
|/| |
| | |
| | | |
doc fix: The f_frsize field is not ignored by the statfs operation
|
| | |
| | |
| | |
| | | |
Signed-off-by: Winfried Koehler <w_scan@gmx-topmail.de>
|
|/ /
| |
| |
| |
| | |
Apparently f_frsize has been passed on transparently since
2b4781100812d42e704c39c51303cd28ad3f9aa6 (Nov 28, 2005).
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
The GNU flavor merely requires to existence of some files (including
README, but we prefer README.md), so there seems to be little point
in using it.
|
| |
|
|
|
|
|
|
|
|
|
| |
Describe why manual copying of config.rpath is necessary, and fail
with a more helpful message if it can't be found.
Remove code for systems without autoreconf - it's apparently not used
by anyone since it has been broken for quite some time (there is no
`kernel` directory anymore).
|
| |
|
| |
|
|
|
|
| |
This should prevent some valgrind warnings.
|
| |
|
| |
|