aboutsummaryrefslogtreecommitdiffstats
path: root/lib/mount.c
AgeCommit message (Collapse)AuthorLines
2025-09-19fuse_log: Add __attribute__((format(printf, ) and fix warningsBernd Schubert-1/+1
fuse_log() did not have that attribute and so compilers didn't give warnings for plain printf(). Add the attribute and fix related warnings. Signed-off-by: Bernd Schubert <bernd@bsbernd.com>
2025-06-27license: s/COPYING/GPL2.txt, s/COPYING.LIB/LGPL2.txtizxl007-1/+1
Signed-off-by: izxl007 <zeng.zheng@zte.com.cn>
2025-04-15mount: Add FUSE_KERN_DEVICE env variable to specify fuse kernel deviceMeng Lu Wang-2/+5
For kernel development it might be necessary to load a module with renamed symbols and renamed /dev/<devicenode>. Reason is that for example ubuntu kernels have fuse compiled in and it is not possible to replace it at run time. And fuse might also be used for other file systems - a different device node is then needed. Also consolidate device path handling and remove unnecessary string duplication in mount_fuse() in fusermount.c. Signed-off-by: Meng Lu Wang <mwang@ddn.com>
2025-02-19mount: fix closing stdout/err and error logsVassili Tchersky-10/+11
Don't spawn a setuid children with FD 1&2 closed. Check status and not errno after posix_spawn(p). Add comments to fix later error checking, as posix_spawn(p) returns non-zero status only if clone/vfork/rfork fails. If only setup (open, dup2) or execve fails, the forked process exit with 127 but posix_spawn returns zero. Signed-off-by: Vassili Tchersky <vt+git@vbc.su>
2025-01-13Identify the FD hold by parent processZegang-0/+17
Issue: There is no directly way to get the FD hold by parent process which asked do fuse mount. Use Case: For auto_unmount case, identify the FD can easy to close the FD and make automatically unmount manually and explicitly. The FD[1] can be got via getenv(FUSE_COMMFD2_ENV). One potential use case is to satisfy FD-Leak checks. Solution: Add an extra env _FUSE_COMMFD2 to store the FD. This will provide a easy way to get the FD via FUSE_COMMFD2_ENV. Signed-off-by: Zegang Luo <zegang.luo@qq.com>
2024-07-29Pass through nosymfollow mount optionTyler Hall-0/+5
This option is handled in VFS. Added in Linux 5.10 dab741e0e02bd3c4f5e2e97be74b39df2523fc6e Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
2024-03-07posix_spawn style updatesBernd Schubert-32/+64
- This adds a wrapper function for the call sequence of posix_spawn and posix_spawnp. - Replaces perror() with fuse_log - the latter can be redirected through the file system log function and gives better end user friendly output - other minor changes, like variable renames - no functional change
2024-03-07Use posix_spawn instead of fork+execMatthias Goergens-93/+89
Client code might allocate a lot of memory before starting the mount. Fork is slow for processes that are using a lot of memory. But posix_spawn fixes that. Another issue with fork is if the process is also doing RDMA - this might lead to data corruption, as least if memory used for RDMA is not marked with MADV_DONTFORK. At least with linux kernels before 5.12. Also see https://blog.nelhage.com/post/a-cursed-bug/ for more details Change by Bernd: This also prepares the new fusermount option "--comm-fd", but keeps the previous way to pass the parameter as env variable. In a future release (exact data to be determined) we are going to remove usage of the env variable and will switch to the new parameter.
2024-02-24Passthrough options starting with "x-" to mtab (#894)Matthew-0/+6
This implements #651, tested with bindfs. "x-*" options are comments meant to be interpreted by userspace. #651 is about some 3rd party mount options like 'x-gvfs-notrash'. This also removes the test if /etc/mtab is a symlink. This test was added in commit 5f28cd15ab43c741f6d116be4d3a9aa5d82ab385 and the corresponding ChangeLog entry in this commit points to mount issues for read-only mtab. However, in all recent Linux distributions /etc/mtab is a symlink to /proc/self/mounts and never writable. In fact, util-linux 2.39 (libmount) entirely removed support for a writable mtab. At least since util-linux 2.19 (10-Feb-2011) /run/mount/utab is used as replacement for userspace mount entries..
2023-05-12Do not pass unsupported mount options to the kernel.Nikolaus Rath-13/+0
The filesystem daemon is responsible for implementing eg. st_atime updates, so passing options like relatime to the kernel results in them being silently ignored. Instead, such options need to be interpreted (and filtered out) by the filesystem daemon.
2023-04-12Fuse mount: make auto_unmount compatible with suid/dev mount options (#762)Matthias Görgens-7/+66
* Fuse mount: make auto_unmount compatible with suid/dev mount options > When you run as root, fuse normally does not call fusermount but uses > the mount system call directly. When you specify auto_unmount, it goes > through fusermount instead. However, fusermount is a setuid binary that > is normally called by regular users, so it cannot in general accept suid > or dev options. In this patch, we split up how fuse mounts as root when `auto_unmount` is specified. First, we mount using system calls directly, then we reach out to fusermount to set up auto_unmount only (with no actual mounting done in fusermount). Fixes: #148
2023-04-06Fix MS_LAZYTIME not defined on uclibc and move all MS_* and UMOUNT_* (#753)Giulio Benetti-1/+2
as well as <sys/mount.h> inclusion to new fuse_mount_compat.h file. Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
2023-03-20Add more time mount options to fusermount / fix lazytimeBernd Schubert-2/+2
Previous patch had forgotten fusermount. And also had "lazyatime" instead of "lazytime".
2023-03-19Add more time mount optionsBernd Schubert-0/+16
These are especially needed for xfstests, but also useful in general.
2023-01-28Install a the configure_file (config.h) and use in headersBernd Schubert-1/+1
This addresses: https://github.com/libfuse/libfuse/issues/724 HAVE_LIBC_VERSIONED_SYMBOLS configures the library if to use versioned symbols and is set at meson configuration time. External filesystems (the main target, actually) include fuse headers and the preprocessor then acts on HAVE_LIBC_VERSIONED_SYMBOLS. Problem was now that 'config.h' was not distributed with libfuse and so HAVE_LIBC_VERSIONED_SYMBOLS was never defined with external tools and the preprocessor did the wrong decision. This commit also increases the the minimal meson version, as this depends on meson feature only available in 0.50 <quote 'meson' > WARNING: Project specifies a minimum meson_ version '>= 0.42' but uses features which were added in newer versions: * 0.50.0: {'install arg in configure_file'} </quote> Additionally the config file has been renamed to "fuse_config.h" to avoid clashes - 'config.h' is not very specific.
2023-01-02update mount.c, in order to pass through -n.Ciaran-0/+1
autofs uses automount, which calls fuse, during an sshfs call. fuse complains about -n being an unknown option (ref. https://github.com/libfuse/libfuse/issues/715) this one line edit provides the command to be accepted, and pass through, allowing autofs-automount to operate on the mount, even though it is already in the mtab, given the nature of autofs/automount.
2019-09-04Introduce callback for loggingStefan Hajnoczi-10/+10
Introduce an API for custom log handler functions. This allows libfuse applications to send messages to syslog(3) or other logging systems. See include/fuse_log.h for details. Convert libfuse from fprintf(stderr, ...) to log_fuse(level, ...). Most messages are error messages with FUSE_LOG_ERR log level. There are also some debug messages which now use the FUSE_LOG_DEBUG log level. Note that lib/mount_util.c is used by both libfuse and fusermount3. Since fusermount3 does not link against libfuse, we cannot call fuse_log() from lib/mount_util.c. This file will continue to use fprintf(stderr, ...) until someone figures out how to split it up. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2017-08-01Fix compiler warnings of gcc-5.4.xBanglang-1/+1
Signed-off-by: Banglang <banglang.huang@foxmail.com>
2016-12-23Set IGNORE_MTAB when running under NetBSDNikolaus Rath-2/+0
Apparently, NetBSD does not have /etc/mtab. Setting IGNORE_MTAB in this case makes the code a little nicer. See also https://github.com/libfuse/libfuse/pull/123
2016-11-29Improve documentation of fuse_session_unmountNikolaus Rath-1/+2
2016-11-28Rename more things from fuse to fuse3Przemysław Pawełczyk-4/+4
2016-11-22Make handling of -oallow_root easier to understandNikolaus Rath-15/+2
-oallow_root is handled in userspace, and requires passing -oallow_other to the kernel. This patch should make the code easier to understand and avoid the confusion that gave rise to issue #86.
2016-10-28Renamed fusermount / mount.fuse to fusermount3 / mount.fuse3Nikolaus Rath-1/+1
2016-10-27Add max_read to fuse_conn_infoNikolaus Rath-0/+7
Eventually, this setting should be negotiated in the filesystem's init() handler (like e.g. max_write). However, this requires corresponding changes in the FUSE kernel module. In preparation for this (and to allow a transition period) we already allow (and require) filesystems to set the value in the init() handler in addition to the mount option. The end-goal is tracked in issue #91.
2016-10-16Inlined fuse_mount_help() into fuse_lowlevel_help().Nikolaus Rath-10/+0
Both the BSD and Linux implementation actually accept mostly the same FUSE-specific mount options. Up to now, the BSD help function appended the output of ``mount_fusefs --help``, but looking at http://www.unix.com/man-page/freebsd/8/mount_fusefs/ this is likely more confusing than helpful (since the user is not actually invoking mount_fusefs directly, most of the options don't make sense).
2016-10-15Make --help output more suitable for end-userNikolaus Rath-6/+3
We now only list options that are potentially useful for an end-user (and unlikely to accidentally break a file system). The full list of FUSE options has been moved to the documentation of the fuse_new() and fuse_session_new() functions.
2016-10-15Removed -o nonempty optionNikolaus Rath-11/+0
This brings the default behavior in-line with that of the regular `mount` command.
2016-10-15Drop -o large_read mount optionNikolaus Rath-2/+0
This was only relevant for 2.4 kernels. Fixes #92.
2016-10-04fuse_mount_help(): clarify that listed options are FUSE specificNikolaus Rath-1/+1
We also accept a number of mount options that are common to all file systems (nosuid, nodev, ro, etc).
2016-10-02Extended per-file comments.Nikolaus Rath-0/+2
This should make more clear what file contains code for what purpose.
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-49/+49
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-01Improve documentation of argument parsing.Nikolaus Rath-0/+2
2016-03-29Whitespace cleanup.Nikolaus Rath-7/+7
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.
2015-08-12libfuse: fix warning mount.c:receive_fd()Miklos Szeredi-1/+1
Reported by Albert Berger
2014-07-15fusermount, libfuse: send value as unsigned in "user_id=" and "group_id="Miklos Szeredi-1/+1
...options. Uids/gids larger than 2147483647 would result in EINVAL when mounting the filesystem. This also needs a fix in the kernel.
2013-07-26Print help on stdout instead of stderrMiklos Szeredi-1/+1
2013-06-21libfuse: set FD_CLOEXEC also when receiving device fd from fusermountMiklos Szeredi-0/+3
2013-06-20libfuse: fix multiple close of device fdMiklos Szeredi-7/+8
- 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
2013-02-20libfuse: use O_CLOEXEC flag when opening /dev/fuse deviceRichard W.M. Jones-1/+7
2013-02-08libfuse: pass security context options to kernelDalvik Khertel-0/+4
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.
2012-07-19Remove compat functionsMiklos Szeredi-15/+0
2012-07-19Remove old symbol versionsMiklos Szeredi-3/+0
2012-07-04libfuse: mark some data constantMiklos Szeredi-1/+1
2011-08-31Don't ignore --disable-mtabMiklos Szeredi-0/+2
If configured with --disable-mtab then don't call mount(8) from libfuse to update the mtab. Reported by: James Sierp
2011-04-15libfuse: Added support for auto_unmount optionMax Krasnyansky-8/+27
This change adds support for "auto_unmount" option to libfuse. auto_umount option unmounts the fs automatically on application termination, whether normal or not (segfault, etc). When auto_unmount option is specified libfuse will alway use fusermount for mounting the fs. This change is selfcontained but for complete functionaly it requires auto_unmount support in fusermount tool.
2011-03-30Initialize the variable properly before passing to any functionLaszlo Papp-0/+1
2011-03-30Check the negative return value after an open syscallLaszlo Papp-2/+4
2010-09-28Fix option escaping for fusermount.Miklos Szeredi-1/+1
If the "fsname=" option contained a comma then the option parser in fusermount was confused (Novell bugzilla #641480). Fix by escaping commas when passing them over to fusermount. Reported by Jan Engelhardt