summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add support for running xfstests.HEADmasterNikolaus Rath2023-05-124-2/+103
|
* Do not daemonize to earlyNikolaus Rath2023-05-121-2/+3
| | | | | fuse_session_mount() may print errors to stderr, if we daemonize before that than these are lost.
* Do not pass unsupported mount options to the kernel.Nikolaus Rath2023-05-122-13/+6
| | | | | | 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.
* Fix issue #746. (#782)Peri2023-05-114-0/+187
| | | | | | | | Added a secondary check in fuse_lib_unlink() after hide_node() to check again under a lock if the (now hidden) file is still open. If not then delete it. This should synchronise fuse_lib_unlink() with fuse_lib_release(), when nullpath_ok is set.
* Fix memory leak in high level API (#781)Matthias Görgens2023-04-141-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, in the high level API if we received a signal between setting up signal handlers and processing INIT, we would leak ``` $ ./example/hello -s -d -f mountpoint/ [9/9] Linking target example/hello_ll FUSE library version: 3.14.1 nullpath_ok: 0 ================================================================= ==178330==ERROR: LeakSanitizer: detected memory leaks Direct leak of 352 byte(s) in 1 object(s) allocated from: #0 0x7fbb19abf411 in __interceptor_calloc /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_malloc_linux.cpp:77 #1 0x7fbb1a0efd3b in fuse_fs_new ../lib/fuse.c:4814 #2 0x7fbb1a0f02b5 in fuse_new_31 ../lib/fuse.c:4913 #3 0x7fbb1a10ec5e in fuse_main_real ../lib/helper.c:345 #4 0x5625db8ab418 in main ../example/hello.c:176 #5 0x7fbb1983c78f (/usr/lib/libc.so.6+0x2378f) SUMMARY: AddressSanitizer: 352 byte(s) leaked in 1 allocation(s). ``` That's because `fuse_lowlevel.c`s `fuse_session_destroy` would only call the user supplied `op.destroy`, if INIT had been processed, but the high level API relied on `op.destroy` to free `f->fs`. This patch moves the freeing into `fuse_destroy` that will always be called by our high-level API.
* Fix doxygen deprecation warning (#774)Matthias Görgens2023-04-121-638/+2098
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 ```
* Disable leak suppression (#773)Matthias Görgens2023-04-121-10/+0
|
* Fuse mount: make auto_unmount compatible with suid/dev mount options (#762)Matthias Görgens2023-04-124-12/+120
| | | | | | | | | | | | | | | | | | * 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
* Update fuse_kernel.h to state of linux-6.3Bernd Schubert2023-04-113-14/+259
| | | | | | | | | This syncs fuse_kernel.h to <linux-6.3>/include/uapi/linux/fuse.h Special handling is done for setxattr as in linux commit 52a4c95f4d24b struct fuse_setxattr_in was extended. Extended struct is only used when FUSE_SETXATTR_EXT is passed in FUSE_INIT reply.
* Migrate away from deprecated distutilsMatthias Goergens2023-04-113-3/+3
| | | | | | | | | | | | | Before: ``` =============================== warnings summary =============================== test/test_ctests.py:12 /tmp/libfuse-build-mB50ZC/build-gcc-9/test/test_ctests.py:12: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives from distutils.version import LooseVersion -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ```
* Fix doxygen warning about parameter nameMatthias Goergens2023-04-111-1/+1
| | | | | | | | | | | Before: ``` $ 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' ```
* Fix typoMatthias Goergens2023-04-111-1/+1
|
* Fix PytestReturnNotNoneWarningMatthias Goergens2023-04-071-2/+4
| | | | | | | | ``` test_examples.py::test_printcap /usr/local/lib/python3.9/dist-packages/_pytest/python.py:199: PytestReturnNotNoneWarning: Expected None, but test_examples.py::test_printcap returned ((7, 38), {'FUSE_CAP_READDIRPLUS_AUTO', 'FUSE_CAP_ASYNC_DIO', 'FUSE_CAP_SPLICE_READ', 'FUSE_CAP_CACHE_SYMLINKS', 'FUSE_CAP_IOCTL_DIR', 'FUSE_CAP_NO_OPENDIR_SUPPORT', 'FUSE_CAP_NO_OPEN_SUPPORT', 'FUSE_CAP_POSIX_LOCKS', 'FUSE_CAP_READDIRPLUS', 'FUSE_CAP_POSIX_ACL', 'FUSE_CAP_ATOMIC_O_TRUNC', 'FUSE_CAP_SPLICE_MOVE', 'FUSE_CAP_EXPORT_SUPPORT', 'FUSE_CAP_FLOCK_LOCKS', 'FUSE_CAP_EXPLICIT_INVAL_DATA', 'FUSE_CAP_EXPIRE_ONLY', 'FUSE_CAP_DONT_MASK', 'FUSE_CAP_WRITEBACK_CACHE', 'FUSE_CAP_AUTO_INVAL_DATA', 'FUSE_CAP_PARALLEL_DIROPS', 'FUSE_CAP_SPLICE_WRITE', 'FUSE_CAP_ASYNC_READ'}), which will be an error in a future version of pytest. Did you mean to use `assert` instead of `return`? warnings.warn( ```
* Fix deprecated @pytest.mark.hookwrapperMatthias Goergens2023-04-071-1/+1
| | | | | | | | | | ``` PytestDeprecationWarning: The hookimpl pytest_pyfunc_call uses old-style configuration options (marks or attributes). Please use the pytest.hookimpl(hookwrapper=True) decorator instead to configure the hooks. See https://docs.pytest.org/en/latest/deprecations.html#configuring-hook-specs-impls-using-markers @pytest.mark.hookwrapper ```
* Fix meson deprecation warningMatthias Goergens2023-04-071-2/+2
| | | | Also for rest of CI
* Fix meson deprecation warning also in FreeBSDMatthias Goergens2023-04-071-1/+1
| | | | See ed9be128370c93b93895bb1bb61cc1e606277613
* Fix deprecated udev.get_pkgconfig_variable in mesonMatthias Goergens2023-04-072-2/+2
| | | | And slightly bump minimum meson version.
* Upgrade meson version in CIMatthias Goergens2023-04-071-2/+1
|
* Add long `--options` to fusermount (#764)Matthias Görgens2023-04-061-0/+1
| | | | | Mostly for consistency with mount(8). Co-authored-by: Nikolaus Rath <Nikolaus@rath.org>
* Fix MS_LAZYTIME not defined on uclibc and move all MS_* and UMOUNT_* (#753)Giulio Benetti2023-04-065-24/+52
| | | | | as well as <sys/mount.h> inclusion to new fuse_mount_compat.h file. Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
* Document risks of auto_unmount (#763)Nikolaus Rath2023-04-041-0/+15
|
* Workaround musl bug when mountdir has whitespace (#761)Matthias Görgens2023-04-022-5/+90
| | | Fixes https://github.com/libfuse/libfuse/issues/634 and https://github.com/mpartel/bindfs/issues/106
* Fix compiler warning in hello_ll.c (#760)Nikolaus Rath2023-04-011-2/+4
|
* Add unit tests for setxattr() et alNikolaus Rath2023-04-012-8/+65
| | | | Hopefully, this will catch issues as in commit 024eccbf3
* Fix typos and configure spellcheck for PRsYaroslav Halchenko2023-03-299-8/+38
|
* Fix meson deprecation warningMatthias Goergens2023-03-291-1/+1
| | | | | | | | | | When running `meson ..` I get: ``` WARNING: Running the setup command as `meson [options]` instead of `meson setup [options]` is ambiguous and deprecated.WARNING: Running the setup command as `meson [options]` instead of `meson setup [options]` is ambiguous and deprecated. ``` So let's fix this in the docs.
* Fix use-after-free warningMatthias Goergens2023-03-281-1/+2
| | | | | | | | | | | | | | | | | | | | When building, I get the following warning: ```bash $ ninja [18/71] Compiling C object lib/libfuse3.so.3.14.1.p/modules_iconv.c.o ../lib/modules/iconv.c: In function ‘iconv_convpath’: ../lib/modules/iconv.c:85:38: warning: pointer ‘newpath’ may be used after ‘realloc’ [-Wuse-after-free] 85 | p = tmp + (p - newpath); | ~~~^~~~~~~~~~ ../lib/modules/iconv.c:80:31: note: call to ‘realloc’ here 80 | tmp = realloc(newpath, newpathlen + 1); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [71/71] Linking target example/passthrough_hp ``` It's a false positive, I thinks. But it's also easy to silence this warning with a small refactor.
* Review feedback: rename and commentsMatthias Goergens2023-03-281-3/+9
|
* Fix `auto_unmount` to work without `allow_other`Matthias Goergens2023-03-281-1/+46
| | | | | | | | | | | | | | | | | | | | | | | | In https://github.com/libfuse/libfuse/blob/77d662459a0fcdf358d515477d33795837e859d5/util/fusermount.c#L1219 `open` is executed as root which does not have access to the mount point if `allow_other` was not used and the real user id is not 0. Since `allow_other` usually cannot be specified by unprivileged users, `auto_unmount` has no effect for unprivileged users. In this commit, we work around this limitation: We first try to open the mountpoint as root, and if we get `EACCES`, we retry as the user who started fusermount, and see if we get `ENOTCONN`. In my testing, I found that `setfsuid` and `setfsgid` don't work to get around the lack of `allow_other`. (Sorry, I don't know enough about the Linux kernel to tell whether that's significant.) As a workaround, I decided to use `setresuid` and `setresgid` in a forked child process, and communicate via its exit status. Please give feedback on correctness, style and suggest tests. Fixes https://github.com/libfuse/libfuse/issues/586
* Update script to drop references to Travis CI.Nikolaus Rath2023-03-261-3/+3
|
* Released 3.14.1fuse-3.14.1Nikolaus Rath2023-03-263-1/+15
|
* Revert "upgrade of fuse_kernel.h based on Miklos expire_only kernel patch ↵Nikolaus Rath2023-03-261-190/+11
| | | | | | | | | https://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse.git/commit/?h=for-next&id=53e949edb7692dce02220eba926c9d75ecbb47f7" This reverts commit 7f430a39db5a30979d75a906af891a38ebce1a3c because it breaks setxattr(). Fixes: #730
* Add more time mount options to fusermount / fix lazytimeBernd Schubert2023-03-202-2/+10
| | | | | Previous patch had forgotten fusermount. And also had "lazyatime" instead of "lazytime".
* Add more time mount optionsBernd Schubert2023-03-191-0/+16
| | | | | These are especially needed for xfstests, but also useful in general.
* Respect includedir when installing libfuse_config.hHeiko Becker2023-03-121-1/+1
|
* Fix max_threads command line parameter propagationSarath Lakshman2023-03-111-0/+1
| | | | | | The fuse_main_real() method doesn't apply the max_threads parameter parsed through the commandline arguments. This commit fixes the wiring of max_threads argument.
* Enable parallel direct writes on the same file.Dharmendra singh2023-03-035-4/+32
| | | | | | | | | | | | | | | | | | | Right now fuse kernel serializes direct writes on the same file. This serialization is good for such FUSE implementations which rely on the inode lock to avoid any data inconsistency issues but it hurts badly such FUSE implementations which have their own mechanism of dealing with cache/data integrity and can handle parallel direct writes on the same file. This patch allows parallel direct writes on the same file to be enabled with the help of a flag FOPEN_PARALLEL_DIRECT_WRITES. FUSE implementations which want to use this feature can set this flag during fuse init. Default behaviour remains same i.e no parallel direct writes on the same file. Corresponding fuse kernel patch(Merged). https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v6.2&id=153524053bbb0d27bb2e0be36d1b46862e9ce74c
* Update description of keep_cache.Nikolaus Rath2023-03-011-5/+4
|
* Migrate from Travis to Github actionsNikolaus Rath2023-02-204-29/+8
| | | | | With current Ubuntu, Valgrind apparently does not like clang debug info, so do not run valgrind with clang-compiled binaries.
* Avoid max-idle threads warningBernd Schubert2023-02-202-5/+6
| | | | | | | | | | | | | | | If a program with API before 312 did not set max_idle_threads the new default from fuse_parse_cmdline_312() is applied, which sets UINT_MAX (-1). Later in compat fuse_session_loop_mt_32 the old config v1 struct is converted and that conversion prints a warning if the default unset value was used. This could have also happened to programs using the current API, which just apply values struct fuse_cmdline_opts, without checking if the defaults are set.
* Change define for C++ tooPierre Labastie2023-02-201-1/+1
| | | | | Commit d7560cc has split defines into private and public, and passed -DHAVE_LIBFUSE-PRIVATE_CONFIG_H to all C programs. But the arguments of C++ programs have not been changed. This leads to a test failure as reported in issue #734. Pass -DHAVE_LIBFUSE-PRIVATE_CONFIG_H to C++ programs too. Fixes: #734
* Add a github actions fileBernd Schubert2023-02-201-0/+26
| | | | | converted from travis with _sligh_ editing by https://akx.github.io/travis-to-github-actions/
* Released 3.14.0fuse-3.14.0Nikolaus Rath2023-02-174-2/+13
|
* fuse_lowlevel.h: add more setattr flagsXiubo Li2023-02-092-0/+10
| | | | | | | | | | | Such as for the xfstest-dev's generic/684 test case it will clear suid and sgid if the fallocate request is commited by an unprivileged user. The kernel fuse passed the ATTR_KILL_SUID/ATTR_KILL_SGID flags to userspace but it will be dropped. Signed-off-by: Xiubo Li <xiubli@redhat.com>
* Split config.h into private and public configBernd Schubert2023-02-097-24/+46
| | | | | | | | | | | | | | | | | | | | | | This addresses https://github.com/libfuse/libfuse/issues/729 commit db35a37def14b72181f3630efeea0e0433103c41 introduced a public config.h (rename to fuse_config.h to avoid conflicts) that was installed with the package and included by libfuse users through fuse_common.h. Probablem is that this file does not have unique defines so that they are unique to libfuse - on including the file conflicts with libfuse users came up. In principle all defines could be prefixed, but then most of them are internal for libfuse compilation only. So this splits out publically required defines to a new file 'libfuse_config.h' and changes back to include of "fuse_config.h" only when HAVE_LIBFUSE_PRIVATE_CONFIG_H is defined. This also renames HAVE_LIBC_VERSIONED_SYMBOLS to LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS, as it actually better explains for libfuse users what that variable is for.
* Released 3.13.1fuse-3.13.1Nikolaus Rath2023-02-033-1/+9
|
* Install a the configure_file (config.h) and use in headersBernd Schubert2023-01-2829-42/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Update travis to ubuntu jammy (22.04)Bernd Schubert2023-01-282-8/+5
| | | | | A newer ubuntu version is required to get a more recent meson (at least 0.50 now)
* use off_t over __off64_tpsykose2023-01-152-6/+6
| | | | | | | | | when -D_FILE_OFFSET_BITS=64 is defined, the off_t type is 64 bits wide already. the fuse_common.h header already checks for this, and errors when it is not, so be consistent with all the other uses of off_t. some libcs like musl do not have a 32-bit off_t type, and don't define __off64_t.
* Released 3.13.0fuse-3.13.0Nikolaus Rath2023-01-134-4/+20
|