Commit Graph

77 Commits

Author SHA1 Message Date
Bernd Schubert
8a3746fe0e Correct arg documentation for FUSE_READLINK
It does not have an in-argument.
2024-10-30 17:58:09 +01:00
Bernd Schubert
617109955c Update libfuse-operations.txt for FUSE_SYMLINK 2024-10-20 14:20:55 +02:00
Joanne Koong
2251a69223 doc/libfuse-operations: Fix FUSE_STATX in_args[1] description 2024-08-07 10:12:12 +02:00
Bernd Schubert
21b6ad2124 Add list of libfuse (kernel) operations
This is to document operations and to also list
their in/out arguments.
This list was auto generated and only partly verified,
use with care. Not all operations are supported by
libfuse yet.
2024-07-03 13:14:19 +02:00
gandalfs_cat
54b8cd6757 high-level: add fmask and dmask options
dmask: umask applied to directories
fmask: umask applied to non-directories

to get "typical" permission bits for regular files (0644) and directories (0755), a single
umask option is not sufficient (or well, it isn't the way fuse implements it)

there is precident for separate umask and dmask options in other
filesystems (see for example fat: https://github.com/torvalds/linux/tree/master/fs/fat)

this addition should not affect backward-compatibility; the original
umask option retains the same meaning, but non-zero fmask or
dmask will override it.
2024-07-03 12:50:06 +02:00
Bernd Schubert
e2df577a7c
Add more documentation for FUSE_CAP_EXPORT_SUPPORT (#917)
Add more documentation for FUSE_CAP_EXPORT_SUPPORT

Also remove the flag from passthrough_ll.c and passthrough_hp.cc
as these implementations do _not_ handle that flag. They just
cast fuse_ino_t to an inode and cause a heap buffer overflow
for unknown objects (simplest reproducer are the examples
in "man 2 open_by_handle_at", but to unmount/mount the file
system after name_to_handle_at and before open_by_handle_at).

Fixes https://github.com/libfuse/libfuse/issues/838

---------

Co-authored-by: Nikolaus Rath <Nikolaus@rath.org>
2024-04-02 23:52:18 +02:00
Matthias Görgens
36c2250d10
Fix doxygen deprecation warning (#774)
Before:

```
$ doxygen doc/Doxyfile
warning: Tag 'COLS_IN_ALPHA_INDEX' at line 707 of file 'doc/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag 'PERL_PATH' at line 1048 of file 'doc/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag 'CLASS_DIAGRAMS' at line 1061 of file 'doc/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag 'MSCGEN_PATH' at line 1070 of file 'doc/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag 'DOT_TRANSPARENT' at line 1207 of file 'doc/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Changing CLASS_GRAPH option to TEXT because obsolete option CLASS_DIAGRAM was found and set to NO.
/Users/matthias/prog/fuser/libfuse/include/fuse.h:934: warning: argument 'private_data' of command @param is not found in the argument list of fuse_new_31(struct fuse_args *args, const struct fuse_operations *op, size_t op_size, void *user_data)
/Users/matthias/prog/fuser/libfuse/include/fuse.h:934: warning: The following parameter of fuse_new_31(struct fuse_args *args, const struct fuse_operations *op, size_t op_size, void *user_data) is not documented:
  parameter 'user_data'
```

So let's try `doxygen -u doc/Doxyfile`.  After:

```
$ doxygen doc/Doxyfile
/Users/matthias/prog/fuser/libfuse/include/fuse.h:934: warning: argument 'private_data' of command @param is not found in the argument list of fuse_new_31(struct fuse_args *args, const struct fuse_operations *op, size_t op_size, void *user_data)
/Users/matthias/prog/fuser/libfuse/include/fuse.h:934: warning: The following parameter of fuse_new_31(struct fuse_args *args, const struct fuse_operations *op, size_t op_size, void *user_data) is not documented:
  parameter 'user_data'
```

The generated documentation `doc/html` does not differ.

For ease of review, here's a diff with all blank lines and comments removed via `grep -vE '^#|^$' doc/Doxyfile`

```
diff --git a/doc/Doxyfile.old b/doc/Doxyfile.new
index dbf469b..3f56d32 100644
--- a/doc/Doxyfile.old
+++ b/doc/Doxyfile.new
@@ -3,0 +4,2 @@ PROJECT_NUMBER         =
+PROJECT_BRIEF          =
+PROJECT_LOGO           =
@@ -5,0 +8,2 @@ CREATE_SUBDIRS         = NO
+CREATE_SUBDIRS_LEVEL   = 8
+ALLOW_UNICODE_NAMES    = NO
@@ -26,0 +31 @@ JAVADOC_AUTOBRIEF      = NO
+JAVADOC_BANNER         = NO
@@ -28,0 +34 @@ MULTILINE_CPP_IS_BRIEF = NO
+PYTHON_DOCSTRING       = YES
@@ -36,0 +43,5 @@ OPTIMIZE_OUTPUT_VHDL   = NO
+OPTIMIZE_OUTPUT_SLICE  = NO
+EXTENSION_MAPPING      =
+MARKDOWN_SUPPORT       = YES
+TOC_INCLUDE_HEADINGS   = 5
+AUTOLINK_SUPPORT       = YES
@@ -41,0 +53 @@ DISTRIBUTE_GROUP_DOC   = NO
+GROUP_NESTED_COMPOUNDS = NO
@@ -42,0 +55,2 @@ SUBGROUPING            = YES
+INLINE_GROUPED_CLASSES = NO
+INLINE_SIMPLE_STRUCTS  = NO
@@ -43,0 +58,2 @@ TYPEDEF_HIDES_STRUCT   = NO
+LOOKUP_CACHE_SIZE      = 0
+NUM_PROC_THREADS       = 1
@@ -45,0 +62,2 @@ EXTRACT_PRIVATE        = NO
+EXTRACT_PRIV_VIRTUAL   = NO
+EXTRACT_PACKAGE        = NO
@@ -49,0 +68 @@ EXTRACT_ANON_NSPACES   = NO
+RESOLVE_UNNAMED_PARAMS = YES
@@ -56,0 +76,2 @@ HIDE_SCOPE_NAMES       = NO
+HIDE_COMPOUND_REFERENCE= NO
+SHOW_HEADERFILE        = YES
@@ -57,0 +79,2 @@ SHOW_INCLUDE_FILES     = YES
+SHOW_GROUPED_MEMB_INC  = NO
+FORCE_LOCAL_INCLUDES   = NO
@@ -60,0 +84 @@ SORT_BRIEF_DOCS        = NO
+SORT_MEMBERS_CTORS_1ST = NO
@@ -62,0 +87 @@ SORT_BY_SCOPE_NAME     = NO
+STRICT_PROTO_MATCHING  = NO
@@ -72,0 +98,2 @@ FILE_VERSION_FILTER    =
+LAYOUT_FILE            =
+CITE_BIB_FILES         =
@@ -76,0 +104 @@ WARN_IF_DOC_ERROR      = YES
+WARN_IF_INCOMPLETE_DOC = YES
@@ -77,0 +106,2 @@ WARN_NO_PARAMDOC       = NO
+WARN_IF_UNDOC_ENUM_VAL = NO
+WARN_AS_ERROR          = NO
@@ -78,0 +109 @@ WARN_FORMAT            = "$file:$line: $text"
+WARN_LINE_FORMAT       = "at line $line of file $file"
@@ -82 +113,5 @@ INPUT_ENCODING         = UTF-8
-FILE_PATTERNS          = *.h *.c *.h *.dox
+INPUT_FILE_ENCODING    =
+FILE_PATTERNS          = *.h \
+                         *.c \
+                         *.h \
+                         *.dox
@@ -89 +124,2 @@ EXAMPLE_PATH           = example
-EXAMPLE_PATTERNS       = *.c *.h
+EXAMPLE_PATTERNS       = *.c \
+                         *.h
@@ -94,0 +131,3 @@ FILTER_SOURCE_FILES    = NO
+FILTER_SOURCE_PATTERNS =
+USE_MDFILE_AS_MAINPAGE =
+FORTRAN_COMMENT_AFTER  = 72
@@ -100,0 +140 @@ REFERENCES_LINK_SOURCE = YES
+SOURCE_TOOLTIPS        = YES
@@ -104 +143,0 @@ ALPHABETICAL_INDEX     = NO
-COLS_IN_ALPHA_INDEX    = 5
@@ -112 +151,10 @@ HTML_STYLESHEET        =
-GENERATE_HTMLHELP      = NO
+HTML_EXTRA_STYLESHEET  =
+HTML_EXTRA_FILES       = doc/fast17-vangoor.pdf
+HTML_COLORSTYLE        = AUTO_LIGHT
+HTML_COLORSTYLE_HUE    = 220
+HTML_COLORSTYLE_SAT    = 100
+HTML_COLORSTYLE_GAMMA  = 80
+HTML_TIMESTAMP         = NO
+HTML_DYNAMIC_MENUS     = YES
+HTML_DYNAMIC_SECTIONS  = YES
+HTML_INDEX_NUM_ENTRIES = 100
@@ -114,0 +163 @@ DOCSET_FEEDNAME        = "Doxygen generated docs"
+DOCSET_FEEDURL         =
@@ -116,2 +165,3 @@ DOCSET_BUNDLE_ID       = org.doxygen.Project
-HTML_DYNAMIC_SECTIONS  = YES
-HTML_EXTRA_FILES = doc/fast17-vangoor.pdf
+DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
+DOCSET_PUBLISHER_NAME  = Publisher
+GENERATE_HTMLHELP      = NO
@@ -123,0 +174,10 @@ TOC_EXPAND             = NO
+GENERATE_QHP           = NO
+QCH_FILE               =
+QHP_NAMESPACE          = org.doxygen.Project
+QHP_VIRTUAL_FOLDER     = doc
+QHP_CUST_FILTER_NAME   =
+QHP_CUST_FILTER_ATTRS  =
+QHP_SECT_FILTER_ATTRS  =
+QHG_LOCATION           =
+GENERATE_ECLIPSEHELP   = NO
+ECLIPSE_DOC_ID         = org.doxygen.Project
@@ -125 +184,0 @@ DISABLE_INDEX          = NO
-ENUM_VALUES_PER_LINE   = 4
@@ -126,0 +186,2 @@ GENERATE_TREEVIEW      = NO
+FULL_SIDEBAR           = NO
+ENUM_VALUES_PER_LINE   = 4
@@ -127,0 +189,3 @@ TREEVIEW_WIDTH         = 250
+EXT_LINKS_IN_WINDOW    = NO
+OBFUSCATE_EMAILS       = YES
+HTML_FORMULA_FORMAT    = png
@@ -128,0 +193,14 @@ FORMULA_FONTSIZE       = 10
+FORMULA_MACROFILE      =
+USE_MATHJAX            = NO
+MATHJAX_VERSION        = MathJax_2
+MATHJAX_FORMAT         = HTML-CSS
+MATHJAX_RELPATH        =
+MATHJAX_EXTENSIONS     =
+MATHJAX_CODEFILE       =
+SEARCHENGINE           = NO
+SERVER_BASED_SEARCH    = NO
+EXTERNAL_SEARCH        = NO
+SEARCHENGINE_URL       =
+SEARCHDATA_FILE        = searchdata.xml
+EXTERNAL_SEARCH_ID     =
+EXTRA_SEARCH_MAPPINGS  =
@@ -129,0 +208,18 @@ GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         =
+MAKEINDEX_CMD_NAME     = makeindex
+LATEX_MAKEINDEX_CMD    = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4
+EXTRA_PACKAGES         =
+LATEX_HEADER           =
+LATEX_FOOTER           =
+LATEX_EXTRA_STYLESHEET =
+LATEX_EXTRA_FILES      =
+PDF_HYPERLINKS         = YES
+USE_PDFLATEX           = YES
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+LATEX_BIB_STYLE        = plain
+LATEX_TIMESTAMP        = NO
+LATEX_EMOJI_DIRECTORY  =
@@ -130,0 +227,5 @@ GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    =
+RTF_EXTENSIONS_FILE    =
@@ -131,0 +233,4 @@ GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_SUBDIR             =
+MAN_LINKS              = NO
@@ -132,0 +238,5 @@ GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_PROGRAMLISTING     = YES
+XML_NS_MEMB_FILE_SCOPE = NO
+GENERATE_DOCBOOK       = NO
+DOCBOOK_OUTPUT         = docbook
@@ -134,0 +245,3 @@ GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX =
@@ -148,3 +261,2 @@ EXTERNAL_GROUPS        = YES
-PERL_PATH              = /usr/bin/perl
-CLASS_DIAGRAMS         = NO
-MSCGEN_PATH            =
+EXTERNAL_PAGES         = YES
+DIA_PATH               =
@@ -152,0 +265,4 @@ HAVE_DOT               = NO
+DOT_NUM_THREADS        = 0
+DOT_COMMON_ATTR        = "fontname=Helvetica,fontsize=10"
+DOT_EDGE_ATTR          = "labelfontname=Helvetica,labelfontsize=10"
+DOT_NODE_ATTR          = "shape=box,height=0.2,width=0.4"
@@ -154 +270 @@ DOT_FONTPATH           =
-CLASS_GRAPH            = YES
+CLASS_GRAPH            = TEXT
@@ -157,0 +274,3 @@ UML_LOOK               = NO
+UML_LIMIT_NUM_FIELDS   = 10
+DOT_UML_DETAILS        = NO
+DOT_WRAP_THRESHOLD     = 17
@@ -164,0 +284 @@ DIRECTORY_GRAPH        = YES
+DIR_GRAPH_MAX_DEPTH    = 1
@@ -165,0 +286 @@ DOT_IMAGE_FORMAT       = png
+INTERACTIVE_SVG        = NO
@@ -167,0 +289,5 @@ DOTFILE_DIRS           =
+MSCFILE_DIRS           =
+DIAFILE_DIRS           =
+PLANTUML_JAR_PATH      =
+PLANTUML_CFG_FILE      =
+PLANTUML_INCLUDE_PATH  =
@@ -170 +295,0 @@ MAX_DOT_GRAPH_DEPTH    = 1000
-DOT_TRANSPARENT        = NO
@@ -174 +298,0 @@ DOT_CLEANUP            = YES
-SEARCHENGINE           = NO
```
2023-04-12 09:10:12 +01:00
Nikolaus Rath
4cf25c27f8
Document risks of auto_unmount (#763) 2023-04-04 22:20:19 +01:00
a1346054
173bffc9f4 fix spelling 2021-08-25 14:46:25 +02:00
Sergey Fedoseev
f4187fe5fa
fix typo in man (#609) 2021-06-09 09:04:08 +01:00
Junichi Uekawa
0b6d97cf59
Define FUSE_USE_VERSION in Doxygen. (#608)
We currently do not pass anything in PREDEFINED and that means
FUSE_USE_VERSION is undefined.

Add that definition so that Doxygen built-in C pre-processor can use
FUSE_USE_VERSION value to find the correct comment to parse.
2021-05-19 09:32:14 +01:00
rfjakob
d169d512de
doc: Add "fuse (4)" to SEE ALSO sections in man pages (#601)
fuse (4) is an excellent introduction to the FUSE protocol,
and it lists fusermount (1) and mount.fuse (8) in its
SEE ALSO section.

I (the author of gocryptfs) was not aware of this man
page till March 2021, which suggest that it should be
made more discoverable.

So link back to fuse (4) in our SEE ALSO sections.
2021-05-08 14:15:55 +01:00
Junichi Uekawa
98e261cfab
fusermount3.1: refer to mount.fuse3 (#599)
mount.fuse was renamed to mount.fuse3.
2021-05-05 10:51:08 +01:00
ferivoz
f54eb86e9a
Fix typo "retuned" -> "returned" (#553) 2020-10-03 13:14:00 +01:00
Junichi Uekawa
e8a9e84672
Doc fixes (#537)
* Add fallocate to list of operations that may omit path.

* earlier versions is 10+ years old.

Document is not obvious how old it is. Add it.

* Update manpage link
2020-08-09 12:35:28 +01:00
winndows
9fa4dc1661
Fix the typo "filed" -> "field" in fuse manpage (#524)
Fix the typo "filed" -> "field" in fuse manpage.

Signed-off-by: Liao Pingfang <liao.pingfang@zte.com.cn>

Co-authored-by: Liao Pingfang <liao.pingfang@zte.com.cn>
2020-07-03 12:30:40 +01:00
Mattias Nissler
da7c9b228a Add unprivileged option in mount.fuse3
The unprivileged option allows to run the FUSE file system process
without privileges by dropping capabilities and preventing them from
being re-acquired via setuid / fscaps etc. To accomplish this,
mount.fuse sets up the `/dev/fuse` file descriptor and mount itself
and passes the file descriptor via the `/dev/fd/%u` mountpoint syntax
to the FUSE file system.
2018-10-09 20:36:22 +01:00
Laszlo Boszormenyi (GCS)
644ec8ceca Fix manpage filename for mount.fuse3 2018-07-04 19:52:32 +01:00
Tomohiro Kusumi
72ab7172b8 Fix build error on DragonFlyBSD (sync with other *BSD) (#240)
DragonFlyBSD has no "bsd" in uname, so add 'dragonfly' to conditionals.

-- e.g. uname(1) in DragonFlyBSD
[root@ ~]# uname
DragonFly
[root@ ~]# python -c "import sys; print(sys.platform)"
dragonfly5
2018-03-28 20:32:59 +01:00
Josh Soref
8157b4d9b9 Spelling (#223)
Fix spelling errors
2017-11-27 10:23:20 +00:00
Nikolaus Rath
16422eb03c Don't install manpages under *BSD
Were not installing the corresponding binaries either, since those
are provided by the BSD base system.
2017-10-20 09:20:39 +01:00
Nikolaus Rath
945ce7a9d4 Don't use Python mode for meson.build
Emacs now has a proper meson mode :-).
2017-10-20 09:19:16 +01:00
Nikolaus Rath
da363c514b Include source code in documentation. 2017-09-17 09:39:47 +01:00
Nikolaus Rath
109ab4fa53 Added some documentation of fuse internals. 2017-09-17 09:35:43 +01:00
Nikolaus Rath
30ead3a5cf Dropped support for building with autotools
It's just too much pain to keep it working.
2017-08-24 20:50:44 +02:00
Nikolaus Rath
77dee679eb Document that -o auto_unmount implies -o nodev,nosuid
See also issue #148.
2017-03-16 10:47:26 -07:00
Nikolaus Rath
9f96db7125 Added experimental support for building with Meson+Ninja 2017-01-12 15:19:04 -08:00
Przemysław Pawełczyk
dfbfee07ab Rename more things from fuse to fuse3 2016-11-28 21:33:14 -08:00
Nikolaus Rath
4fdf83f4dd Document that FUSE_CAP_POSIX_ACL turns on -o default_permissions 2016-11-22 16:39:59 -08:00
Nikolaus Rath
cb2111cc8b Distinguish between mount options and libfuse options 2016-11-17 15:51:22 -08:00
Nikolaus Rath
4172f7883a Fixed manpage formatting. 2016-11-17 15:49:05 -08:00
Nikolaus Rath
16a24c0d8e Removed reference to developer-notes.rst (was removed earlier) 2016-11-06 21:58:26 -08:00
Nikolaus Rath
d85279d0cb Fixed section names in documentation index 2016-11-06 21:53:28 -08:00
Nikolaus Rath
7983414b33 Clean-up doxygen documentation
Fixes: #81.
2016-10-28 20:44:39 -07:00
Mihail Konev
d8d894e780 man: Document suid requirement 2016-10-27 21:52:31 -07:00
Nikolaus Rath
e885e84f79 Add max_read to fuse_conn_info
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-27 21:38:42 -07:00
Nikolaus Rath
131955ff7c Recommend when to use -o default_permissions automatically 2016-10-27 13:57:19 -07:00
Nikolaus Rath
11f07d1033 Describe all mount options in mount.fuse(8).
Also improved manpage in several ways.
2016-10-27 13:42:08 -07:00
Nikolaus Rath
ba653b1c24 Improve documentation of -o default_permissions 2016-10-27 12:46:16 -07:00
Nikolaus Rath
768f29fc2a Improve man page title 2016-10-27 09:43:28 -07:00
Nikolaus Rath
7be8c8ff2d Clarify which mount options are intended for file-system internal use. 2016-10-25 22:16:33 -07:00
Nikolaus Rath
8ee553dac0 fuse_new(): don't accept options that don't make sense for end-users
Several options (use_ino, etc) depend on the file system
implementation. Allowing them to be set from the command line makes no
sense.
2016-10-20 15:32:20 -07:00
Nikolaus Rath
cb8fa961dc Document -o remember= mount option. 2016-10-20 15:22:05 -07:00
Nikolaus Rath
e869f7cc8e mount.fuse(8): remove max_readahead, max_write, [a]sync_read
These are not mount options for FUSE file systems, but capabilites that
are worked out between libfuse and the fuse kernel module. For that
reason, they are also not accepted by fuse_session_new().
2016-10-20 14:04:37 -07:00
Nikolaus Rath
26f0dba3c8 Mention that low-level fs need to set FUSE_CAP_EXPORT_SUPPORT 2016-10-16 15:34:20 -07:00
Nikolaus Rath
1c08ee91f6 Various documentation updates
Move README.NFS into doc/
Update project URL
Remove reference to non-existent INSTALL file
Remove outdated/obsolete NEWS and how-fuse-works files.
Update references to examples.
2016-10-16 15:12:29 -07:00
Nikolaus Rath
3c76d564e4 Updated man-pages.
* Removed -o nonempty
* Added -o noforget
* Split into high-level / low-level
* Added warning that most options should be chosen by file system
  internally.
* Updated maintainer.
2016-10-16 14:12:39 -07:00
Nikolaus Rath
86b2614906 Fix documentation of -o max_write=
big_writes has been available for some time, and is the default in FUSE
3. So max_write now actually takes effect.

(This really should have gone into commit 97f4a9cb4f)
2016-10-15 18:51:00 -07:00
Nikolaus Rath
d6217bb2a0 Drop -o large_read mount option
This was only relevant for 2.4 kernels. Fixes #92.
2016-10-15 18:49:52 -07:00
Nikolaus Rath
5698ee09cf Turn struct fuse_chan into an implementation detail
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-02 13:56:40 -07:00