| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
Mount can be used with an "-o context=" option in order to specify a
mountpoint-wide SELinux security context different from the default context
provided by the active SELinux policy.
This is useful in order to enable users to mount multiple sshfs targets under
distinct contexts, which is my main motivation for getting this patch mainlined.
Closes: #36
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Up to now, the Changelog has essentially been a (manually maintained)
copy of the git commit history. This doesn't seem to have any point
other than following the GNU coding standards. I believe it's much
better to use the Changelog to summarize the release-to-release
changes that are most important for users, so this is what we'll do
from now on.
|
|
|
|
| |
Reported by Albert Berger
|
|
|
|
| |
Reported by Jose R. Guzman
|
| |
|
|
|
|
| |
Found by Tavis Ormandy (CVE-2015-3202).
|
|
|
|
|
|
| |
to properly restore the default signal handler.
Reported by: Chris Johnson <johnsocg@gmail.com>
|
|
|
|
|
|
| |
and fuse_notify_delete()
Reported by Han-Wen Nienhuys
|
|
|
|
|
|
| |
to zero in all cases.
Reported by Daniel Iwan.
|
|
|
|
| |
Reported by Eric Biggers
|
|
|
|
|
| |
...options. Uids/gids larger than 2147483647 would result in EINVAL when
mounting the filesystem. This also needs a fix in the kernel.
|
|
|
|
| |
This allows compiling fuse with musl.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
| |
Exiting a worker my race with cancelling that same worker. This caused a
segmenation fault.
Reported and tested by Anatol Pomozov
|
|
|
|
|
|
| |
Next version of automake (1.14) removes support for the deprecated filename
http://lists.gnu.org/archive/html/autotools-announce/2013-01/msg00000.html
|
|
|
|
|
| |
AM_CONFIG_HEADER has been deprecated for years and autotools 1.13
removes this macros at all.
|
|
|
|
|
|
|
| |
Apparently new versions of util-linux umount return with an exit status of 1
even if the "--fake" option is recognised (despite being documented otherwise).
Check this condition and don't complain about util-linux version.
|
|
|
|
|
|
|
|
|
|
|
|
| |
The lru list was not initialized for the "/" path. This resulted in
remove_node_lru() crashing on LOOKUP-DOTDOT.
Patch by Madan Valluri.
--
ChangeLog | 4 ++++
lib/fuse.c | 4 ++++
2 files changed, 8 insertions(+)
|
|
|
|
|
|
|
|
|
|
|
|
| |
Patch by Ratna Manoj.
queue_element_unlock() should set ->first_locked and ->second_locked to false.
Discovered with 'fs_racer'. The assert(wnode->treelock == TREELOCK_WRITE) in
unlock_path() was hit within minutes.
Miklos: simplified patch
|
| |
|
|
|
|
|
|
|
| |
Running "svn update" on a fuse filesystem could deadlock because of a bug in the
way the paths are locked.
Reported by Kazuaki Anami
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Due to an oversight, splice will never actually be used for i/o. Someone forgot
to #include "config.h" in lib/buffer.c (in fact almost no files include that
header). As a result, even though configure detects splice support and puts
HAVE_SPLICE in config.h, buffer.c is always compiled as if there is no splice
support.
Also add #include "config.h" to fuse.c and fuse_lowlevel.c. These currently
include it indirectly through fuse_misc.h, but we don't want to depend on that.
Reported by Matthew Gabeler-Lee
|
|
|
|
|
|
|
|
|
|
| |
Commit 4dc7e675bb (Don't unhash name in FORGET) broke the forget logic in a
subtle way, resulting in "fuse internal error: node NNN not found" and causing
the filesystem daemon to abort.
Fix by incrementing the node refcount if nlookup goes from zero to one.
Reported by Kyle Lippincott
|
|
|
|
|
|
| |
Use quotation marks when assigning shell variable.
This broke by 384496dd02cfd9a74b95d62ce0d23a31a7af3730, most likely by mistake.
|
| |
|
|
|
|
|
|
|
|
| |
The failure path of try_get_path2() erronously tried to free the "path1" value
(an address on the stack) instead of the allocated string pointed to by "path1".
This caused the library to crash.
Reported by Itay Perl
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
mkdir_p is deprecated since automake 1.12.1 (see automake commit
7a1eb9ff9027929687f12905e131f6fda3fa6d0c).
MKDIR_P should be used instead of mkdir_p.
This is available since autoconf 2.59d (2006-06-05), by calling
AC_PROG_MKDIR_P.
The mkdir_p workaround was not working anyway for out-of-tree builds,
since the ../mkinstalldirs path would be incorrect.
|
|
|
|
|
|
|
| |
When building out-of-tree, install fails since it tries to copy
mount.fuse binary from source directory.
Patch initially from Damien Thébault (SoftAtHome)
|
|
|
|
|
|
| |
fallocate filesystem operation preallocates media space for the given file.
If fallocate returns success then any subsequent write to the given range
never fails with 'not enough space' error.
|
|
|
|
| |
Reported by Luciano Dalle Ore
|
|
|
|
|
|
|
|
| |
Linking to a library that uses threads requires the application to be linked
with -pthreads otherwise some pthread functions will be linked to stubs in
glibc. So move -pthread from Libs.private to Libs in fuse.pc.
Reported by Werner Fink
|
| |
|
| |
|
|
|
|
|
| |
If the filesystem sets this flag then ->utimens() will receive UTIME_OMIT and
UTIME_NOW values as specified in utimensat(2).
|
|
|
|
|
| |
Check protocol version before sending notifications and return -ENOSYS if a
particular notification is not supported.
|
|
|
|
| |
Requested by Jan Engelhardt
|
|
|
|
|
| |
Lifted from the Debian package. The man pages were written by Daniel Baumann
and Bastien Roucaries
|
|
|
|
|
|
|
|
|
|
| |
This partially reverts commit 4b2157c44e6ad7e692fcffb7450143e83151d36b.
Remove mmap/munmap suppor as this missed the interface changes for Linux-3.3
(API version 7.18).
Only revert the mmap/munmap bits and leave the retrieve_reply API fix in place
as well as the optimization in fuse_send_data_iov_fallback().
|
|
|
|
|
|
| |
MacOSX uses MachO binary format that does not support symbols.
This change comes from fuse4x project (fuse implementation for macosx).
|
| |
|
|
|
|
| |
Fix memory leak caused by a missing fuse_request_free() in fuse_reply_data().
|
|
|
|
|
|
|
| |
This resulted in ENOENT being returned for unlinked but still open files if the
kernel sent a FORGET request for the parent directory.
Discovered with fs_racer in LTP.
|
|
|
|
|
|
| |
Ville Silventoinen reported that fs_racer in LTP triggered a hang in
wait_on_path(). This bug was caused by try_get_path() not resetting "ticket" on
permanent failure.
|