1libfuse 3.16.1 (2023-08-08) 2=========================== 3 4* Readdir kernel cache can be enabled from high-level API. 5 6libfuse 3.15.1 (2023-07-05) 7=========================== 8 9Future libfuse releases will be signed with `signify`_ rather than PGP (rationale_). This 10release is the last to be signed with PGP and contains the signify public key for current 11(3.15.X) and upcoming (3.16.X) minor release cycle. 12 13.. _signify: https://www.openbsd.org/papers/bsdcan-signify.html 14.. _rationale: https://latacora.micro.blog/2019/07/16/the-pgp-problem.html 15 16 17libfuse 3.15.0 (2023-06-09) 18=========================== 19 20* Improved support for some less common systems (32 bit, alternative libcs) 21 22* Unsupported mount options are no longer silently accepted. 23 24* auto_unmount is now compatible with allow_other. 25 26 27libfuse 3.14.1 (2023-03-26) 28=========================== 29 30* The extended attribute name passed to the setxattr() handler is no longer 31 truncated at the beginning (bug introduced in 3.13.0). 32 33* As a result of the above, the additional setattr() flags introduced in 3.14 are no 34 longer available for now. They will hopefully be reintroduced in the next release. 35 36* Further improvements of configuration header handling. 37 38 39libfuse 3.14.0 (2023-02-17) 40=========================== 41 42* Properly fix the header installation issue. The fix in 3.13.1 resulted 43 in conflicts with other packages. 44 45* Introduce additional setattr() flags (FORCE, KILL_SUID, KILL_SGID, FILE, KILL_PRIV, 46 OPEN, TIMES_SET) 47 48 49libfuse 3.13.1 (2023-02-03) 50=========================== 51 52* Fixed an issue that resulted in errors when attempting to compile against 53 installed libfuse headers (because libc symbol versioning support was not 54 detected correctly in this case). 55 56libfuse 3.13.0 (2023-01-13) 57=========================== 58 59* There is a new low-level API function `fuse_session_custom_io` that allows to implement 60 a daemon with a custom io. This can be used to create a daemon that can process incoming 61 FUSE requests to other destinations than `/dev/fuse`. 62 63* A segfault when loading custom FUSE modules has been fixed. 64 65* There is a new `fuse_notify_expire_entry` function. 66 67* A deadlock when resolving paths in the high-level API has been fixed. 68 69* libfuse can now be build explicitly for C libraries without symbol versioning support. 70 71libfuse 3.12.0 (2022-09-08) 72=========================== 73 74* There is a new build parameter to specify where the SysV init script should be 75 installed. 76 77* The *max_idle_threads* parameter has been deprecated in favor of the new max_threads* 78 parameter (which avoids the excessive overhead of creating and destructing threads). 79 Using max_threads == 1 and calling fuse_session_loop_mt() will run single threaded 80 similar to fuse_session_loop(). 81 82The following changes apply when using the most recent API (-DFUSE_USE_VERSION=312, 83see `example/passthrough_hp.cc` for an example for how to usse the new API): 84 85* `struct fuse_loop_config` is now private and has to be constructed using 86 *fuse_loop_cfg_create()* and destroyed with *fuse_loop_cfg_destroy()*. Parameters can be 87 changed using `fuse_loop_cfg_set_*()` functions. 88 89* *fuse_session_loop_mt()* now accepts `struct fuse_loop_config *` as NULL pointer. 90 91* *fuse_parse_cmdline()* now accepts a *max_threads* option. 92 93 94libfuse 3.11.0 (2022-05-02) 95=========================== 96 97* Add support for flag FOPEN_NOFLUSH for avoiding flush on close. 98* Fixed returning an error condition to ioctl(2) 99 100 101libfuse 3.10.5 (2021-09-06) 102=========================== 103 104* Various improvements to make unit tests more robust. 105 106 107libfuse 3.10.4 (2021-06-09) 108=========================== 109 110* Building of unit tests is now optional. 111* Fixed a test failure when running tests under XFS. 112* Fixed memory leaks in examples. 113* Minor documentation fixes. 114 115libfuse 3.10.3 (2021-04-12) 116=========================== 117 118* Fix returning d_ino and d_type from readdir(3) in non-plus mode 119 120libfuse 3.10.2 (2021-02-05) 121=========================== 122 123* Allow "nonempty" as a mount option, for backwards compatibility with fusermount 2. The 124 option has no effect since mounting over non-empty directories is allowed by default. 125* Fix returning inode numbers from readdir() in offset==0 mode. 126* FUSE filesystems can now be mounted underneath EXFAT mountpoints. 127* Various minor bugfixes. 128 129libfuse 3.10.1 (2020-12-07) 130=========================== 131 132* Various minor bugfixes. 133 134libfuse 3.10.0 (2020-10-09) 135=========================== 136 137* Add FUSE_CAP_CACHE_SYMLINKS: allow caching symlinks in kernel page cache. 138* Various minor bugfixes and improvements. 139 140libfuse 3.9.4 (2020-08-09) 141========================== 142 143This was an "accidental" release, it is equivalent to 3.9.3. 144 145libfuse 3.9.3 (2020-08-09) 146========================== 147 148* Fixed compilation under OS X and µClibc. 149* Minor bugfixes and doc updates. 150 151libfuse 3.9.2 (2020-06-12) 152========================== 153 154* Remove obsolete workarounds in examples. 155* Do not require C++ compiler for building. 156* Minor bugfixes. 157 158libfuse 3.9.1 (2020-03-19) 159=========================== 160 161* Fixed memory leak in fuse_session_new(). 162* Fixed an issue with the linker version script. 163* Make ioctl prototype conditional on FUSE_USE_VERSION. Define FUSE_USE_VERSION < 35 to 164 get old ioctl prototype with int commands; define FUSE_USE_VERSION >= 35 to get new 165 ioctl prototype with unsigned int commands. 166* Various small bugfixes. 167 168libfuse 3.9.0 (2019-12-14) 169========================== 170 171* Added support for FUSE_EXPLICIT_INVAL_DATA to enable 172 only invalidate cached pages on explicit request. 173 174libfuse 3.8.0 (2019-11-03) 175========================== 176 177* Added support for FUSE_LSEEK operation which can be used to report holes 178 in sparse files. 179 180libfuse 3.7.0 (2019-09-27) 181========================== 182 183* Added UFSD to whitelist (so users can now mount FUSE filesystems 184 on mountpoints within UFSD filesystems). 185* Added custom log message handler function support so that libfuse 186 applications can direct messages to syslog(3) or other logging systems. 187 stderr remains the default. See `fuse_log.h` for the new API. 188 189libfuse 3.6.2 (2019-07-09) 190========================== 191 192* The init script is now installed to /etc/ rather than /usr/local/etc 193 by default. 194 195libfuse 3.6.1 (2019-06-13) 196========================== 197 198* Fixed version number (release 3.6.0 was shipped with a declared 199 version of 3.0.0). 200 201libfuse 3.6.0 (2019-06-13) 202========================== 203 204* Added a new example (passthrough_hp). The functionality is similar 205 to passthrough_ll, but the implementation focuses on performance and 206 correctness rather than simplicity. 207* Added support for fuse kernel feature `max_pages` which allows to increase 208 the maximum number of pages that can be used per request. This feature was 209 introduced in kernel 4.20. `max_pages` is set based on the value in 210 `max_write`. By default `max_write` will be 1MiB now for kernels that support 211 `max_pages`. If you want smaller buffers or writes you have to set 212 `max_write` manually. 213 214libfuse 3.5.0 (2019-04-16) 215========================== 216 217* Changed ioctl commands to "unsigned int" in order to support commands 218 which do not fit into a signed int. Commands issued by applications 219 are still truncated to 32 bits. 220* Added SMB2 to whitelist (so users can now mount FUSE filesystems 221 on mountpoints within SMB 2.0 filesystems). 222* Added a new `cache_readdir` flag to `fuse_file_info` to enable 223 caching of readdir results. Supported by kernels 4.20 and newer. 224* Add support and documentation for FUSE_CAP_NO_OPENDIR_SUPPORT. 225 226libfuse 3.4.2 (2019-03-09) 227========================== 228 229* Fixed a memory leak in `examples/passthrough_ll.c`. 230* Added OpenAFS to whitelist (so users can now mount FUSE filesystems 231 on mountpoints within OpenAFS filesystems). 232* Added HFS+ to whitelist (so users can now mount FUSE filesystems 233 on mountpoints within HFS+ filesystems). 234* Documentation improvements. 235 236libfuse 3.4.1 (2018-12-22) 237========================== 238 239* The `examples/passthrough_ll.c` example filesystem has been 240 significantly extended. 241* Support for `copy_file_range` has been added. 242* Build system updates for non-Linux systems. 243 244libfuse 3.4.0 245============= 246 247* Add `copy_file_range()` to support efficient copying of data from one file to 248 an other. 249 250libfuse 3.3.0 (2018-11-06) 251========================== 252 253* The `auto_unmount` mode now works correctly in combination with 254 autofs. 255 256* The FUSE_CAP_READDIRPLUS_AUTO capability is no longer enabled by 257 default unless the file system defines both a readdir() and a 258 readdirplus() handler. 259 260* The description of the FUSE_CAP_READDIRPLUS_AUTO flag has been 261 improved. 262 263* Allow open `/dev/fuse` file descriptors to be passed via mountpoints of the 264 special format `/dev/fd/%u`. This allows mounting to be handled by the parent 265 so the FUSE filesystem process can run fully unprivileged. 266 267* Add a `drop_privileges` option to mount.fuse3 which causes it to open 268 `/dev/fuse` and mount the file system itself, then run the FUSE file 269 filesystem fully unprivileged and unable to re-acquire privilege via setuid, 270 fscaps, etc. 271 272* Documented under which conditions the `fuse_lowlevel_notify_*` 273 functions may block. 274 275libfuse 3.2.6 (2018-08-31) 276========================== 277 278* The fuse_main() function now returns more fine-grained error codes. 279* FUSE filesystems may now be mounted on mountpoint within 280 bcachefs, aufs and FAT filesystems. 281* libfuse may now be used as a Meson subproject. 282* Fix a few low-impact memory leaks. 283* The `fuse.conf` file is no longer looked for in `/etc`, but in the 284 *sysconfdir* directory (which can be set with `meson configure`). By 285 default, the location is thus `/usr/local/etc/fuse.conf`. 286 287libfuse 3.2.5 (2018-07-24) 288========================== 289 290* SECURITY UPDATE: In previous versions of libfuse it was possible to 291 for unprivileged users to specify the `allow_other` option even when 292 this was forbidden in `/etc/fuse.conf`. The vulnerability is 293 present only on systems where SELinux is active (including in 294 permissive mode). 295* The fusermount binary has been hardened in several ways to reduce 296 potential attack surface. Most importantly, mountpoints and mount 297 options must now match a hard-coded whitelist. It is expected that 298 this whitelist covers all regular use-cases. 299* Added a test of `seekdir` to test_syscalls. 300* Fixed `readdir` bug when non-zero offsets are given to filler and the 301 filesystem client, after reading a whole directory, re-reads it from a 302 non-zero offset e. g. by calling `seekdir` followed by `readdir`. 303 304libfuse 3.2.4 (2018-07-11) 305========================== 306 307* Fixed `rename` deadlock on FreeBSD. 308 309libfuse 3.2.3 (2018-05-11) 310========================== 311 312* Fixed a number of compiler warnings. 313 314libfuse 3.2.2 (2018-03-31) 315========================== 316 317* Added example fuse.conf file. 318* Added "support" for -o nofail mount option (the option is accepted 319 and ignored). 320* Various small bugfixes. 321 322libfuse 3.2.1 (2017-11-14) 323========================== 324 325* Various small bugfixes. 326 327libfuse 3.2.0 (2017-09-12) 328========================== 329 330* Support for building with autotools has been dropped. 331 332* Added new `fuse_invalidate_path()` routine for cache invalidation 333 from the high-level FUSE API, along with an example and tests. 334 335* There's a new `printcap` example that can be used to determine the 336 capabilities of the running kernel. 337 338* `fuse_loop_mt()` now returns the minus the actual errno if there was 339 an error (instead of just -1). 340 341* `fuse_loop()` no longer returns a positive value if the filesystem 342 loop was terminated without errors or signals. 343 344* Improved documentation of `fuse_lowlevel_notify_*` functions. 345 346* `fuse_lowlevel_notify_inval_inode()` and 347 `fuse_lowlevel_notify_inval_entry()` now return -ENOSYS instead of 348 an undefined error if the function is not supported by the kernel. 349 350* Documented the special meaning of the *zero* offset for the 351 fuse_fill_dir_t function. 352 353* The `passthrough_fh` example now works under FreeBSD. 354 355* libfuse can now be build without libiconv. 356 357* Fixed support for `FUSE_CAP_POSIX_ACL`: setting this capability 358 flag had no effect in the previous versions of libfuse 3.x; 359 now ACLs should actually work. 360 361* Fixed a number of compilation problems under FreeBSD. 362 363* Fixed installation directory for udev rules. 364 365* Fixed compilation with LTO. 366 367libfuse 3.1.1 (2017-08-06) 368========================== 369 370* Documentation: clarified how filesystems are supposed to process 371 open() and create() flags (see include/fuse_lowlevel.h). 372 373* Fixed a compilation problem of the passthrough_ll example on 374 32 bit systems (wrong check and wrong error message). 375 376* pkg-config is now used to determine the proper directory for 377 udev rules. 378 379* Fixed a symbol versioning problem that resulted in very strange 380 failures (segfaults, unexpected behavior) in different situations. 381 382* Fixed a test failure when /tmp is on btrfs. 383 384* The maximum number of idle worker threads used by `fuse_loop_mt()` 385 is now configurable. 386 387* `fuse_loop_mt()` and `fuse_session_loop_mt()` now take a 388 `struct fuse_loop_config` parameter that supersedes the *clone_fd* 389 parameter. 390 391* Incorporated several patches from the FreeBSD port. libfuse should 392 now compile under FreeBSD without the need for patches. 393 394* The passthrough_ll example now supports writeback caching. 395 396libfuse 3.1.0 (2017-07-08) 397========================== 398 399* Added new `fuse_lib_help()` function. File-systems that previously 400 passed a ``--help`` option to `fuse_new()` must now process the 401 ``--help`` option internally and call `fuse_lib_help()` to print the 402 help for generic FUSE options. 403* Fixed description of the `fuse_conn_info->time_gran`. The default 404 value of zero actually corresponds to full nanosecond resolution, 405 not one second resolution. 406* The init script is now installed into the right location 407 (``$DESTDIR/etc/init.d`` rather than ``$prefix/$sysconfdir/init.d``) 408* The `example/passthrough_ll` filesystem now supports creating 409 and writing to files. 410* `fuse_main()` / `fuse_remove_signal_handlers()`: do not reset 411 `SIGPIPE` handler to `SIG_DFL` if it was not set by us. 412* Documented the `RENAME_EXCHANGE` and `RENAME_NOREPLACE` flags that 413 may be passed to the `rename` handler of both the high- and 414 low-level API. Filesystem authors are strongly encouraged to check 415 that these flags are handled correctly. 416 417libfuse 3.0.2 (2017-05-24) 418========================== 419 420* Option parsing for the high-level API now works correctly 421 (previously, default values would override specified values). 422* Tests should now build (and run) under FreeBSD. 423* Improved documentation of `struct fuse_context` 424* Internal: calculate request buffer size from page size and kernel 425 page limit instead of using hardcoded 128 kB limit. 426 427 428libfuse 3.0.1 (2017-04-10) 429========================== 430 431* Re-introduced *examples/null.c*. 432* Added experimental support for building with Meson. 433* Document that `-o auto_unmount` implies `-o nodev,nosuid`. 434* Document that the *use_ino* option of the high-level interface does 435 not affect the inode that libfuse and the kernel use internally. 436* Fixed test cases for passthrough* examples (they weren't actually 437 testing the examples). 438* Fixed several bugs in the passthrough* examples. 439 440libfuse 3.0.0 (2016-12-08) 441========================== 442 443* NOTE TO PACKAGERS: 444 445 libfuse 3 is designed to be co-installable with libfuse 2. However, 446 some files will be installed by both libfuse 2 and libfuse 3 447 (e.g. /etc/fuse.conf, the udev and init scripts, and the 448 mount.fuse(8) manpage). These files should be taken from 449 libfuse 3. The format/content is guaranteed to remain backwards 450 compatible with libfuse 2. 451 452 We recommend to ship libfuse2 and libfuse3 in three separate 453 packages: a libfuse-common package that contains files shared by 454 libfuse 2+3 (taken from the libfuse3 tarball), and libfuse2 and 455 libfuse3 packages that contain the shared library and helper 456 programs for the respective version. 457 458* Fixed test errors when running tests as root. 459 460* Made check for util-linux version more robust. 461 462* Added documentation for all fuse capability flags (`FUSE_CAP_*`) and 463 `struct fuse_conn_info` fields. 464 465* fuse_loop(), fuse_loop_mt(), fuse_session_loop() and 466 fuse_session_loop_mt() now return more detailed error codes instead 467 of just -1. See the documentation of fuse_session_loop() for details. 468 469* The FUSE main loop is now aborted if the file-system requests 470 capabilities that are not supported by the kernel. In this case, the 471 session loop is exited with a return code of ``-EPROTO``. 472 473* Most file-system capabilities that were opt-in in libfuse2 are now 474 enabled by default. Filesystem developers are encouraged to review 475 the documentation of the FUSE_CAP_* features to ensure that their 476 filesystem is compatible with the new semantics. As before, a 477 particular capability can still be disabled by unsetting the 478 corresponding bit of `fuse_conn_info.wants` in the init() handler. 479 480* Added FUSE_CAP_PARALLEL_DIROPS and FUSE_CAP_POSIX_ACL, 481 FUSE_HANDLE_KILLPRIV feature flags. 482 483* FUSE filesystems are now responsible for unsetting the setuid/setgid 484 flags when a file is written, truncated, or its owner 485 changed. Previously, this was handled by the kernel but subject to 486 race conditions. 487 488* The fusermount and mount.fuse binaries have been renamed to 489 fusermount3 and mount.fuse3 to allow co-installation of libfuse 2.x 490 and 3.x 491 492* Added a `max_read` field to `struct fuse_conn_info`. For the time 493 being, the maximum size of read requests has to be specified both 494 there *and* passed to fuse_session_new() using the ``-o 495 max_read=<n>`` mount option. At some point in the future, specifying 496 the mount option will no longer be necessary. 497 498* Documentation: clarified that the fuse_argv structure that is passed 499 to `fuse_new()` and `fuse_lowlevel_new()` must always contain at 500 least one element. 501 502* The high-level init() handler now receives an additional struct 503 fuse_config pointer that can be used to adjust high-level API 504 specific configuration options. 505 506* The `nopath_flag` field of struct fuse_operations has been 507 removed. Instead, a new `nullpath_ok` flag can now be set 508 in struct fuse_config. 509 510* File systems that use the low-level API and support lookup requests 511 for '.' and '..' should continue make sure to set the 512 FUSE_CAP_EXPORT_SUPPORT bit in fuse_conn_info->want. 513 514 (This has actually always been the case, but was not very obvious 515 from the documentation). 516 517* The help text generated by fuse_lowlevel_help(), fuse_new() (and 518 indirectly fuse_main()) no longer includes options that are unlikely 519 to be of interest to end-users. The full list of accepted options is 520 now included in the respective function's documentation (located in 521 the fuse.h/fuse_lowlevel.h and doc/html). 522 523* The ``-o nopath`` option has been dropped - it never actually did 524 anything (since it is unconditionally overwritten with the value of 525 the `nopath` flag in `struct fuse_operations`). 526 527* The ``-o large_read`` mount option has been dropped. Hopefully no 528 one uses a Linux 2.4 kernel anymore. 529 530* The `-o nonempty` mount point has been removed, mounting over 531 non-empty directories is now always allowed. This brings the 532 behavior of FUSE file systems in-line with the behavior of the 533 regular `mount` command. 534 535 File systems that do not want to allow mounting to non-empty 536 directories should perform this check themselves before handing 537 control to libfuse. 538 539* The chmod, chown, truncate, utimens and getattr handlers of the 540 high-level API now all receive an additional struct fuse_file_info 541 pointer (which, however, may be NULL even if the file is currently 542 open). 543 544 The fgetattr and ftruncate handlers have become obsolete and have 545 been removed. 546 547* The `fuse_session_new` function no longer accepts the ``-o 548 clone_fd`` option. Instead, this has become a parameter of the 549 `fuse_session_loop_mt` and `fuse_loop_mt` functions. 550 551* For low-level file systems that implement the `write_buf` handler, 552 the `splice_read` option is now enabled by default. As usual, this 553 can be changed in the file system's `init` handler. 554 555* The treatment of low-level options has been made more consistent: 556 557 Options that can be set in the init() handler (via the 558 fuse_conn_info parameter) can now be set only here, 559 i.e. fuse_session_new() no longer accepts arguments that change the 560 fuse_conn_info object before or after the call do init(). As a side 561 effect, this removes the ambiguity where some options can be 562 overwritten by init(), while others overwrite the choices made by 563 init(). 564 565 For file systems that wish to offer command line options for these 566 settings, the new fuse_parse_conn_info_opts() and 567 fuse_apply_conn_info_opts() functions are available. 568 569 Consequently, the fuse_lowlevel_help() method has been dropped. 570 571* The `async_read` field in `struct fuse_conn_info` has been 572 removed. To determine if the kernel supports asynchronous reads, 573 file systems should check the `FUSE_CAP_ASYNC_READ` bit of the 574 `capable` field. To enable/disable asynchronous reads, file systems 575 should set the flag in the `wanted` field. 576 577* The `fuse_parse_cmdline` function no longer prints out help when the 578 ``--verbose`` or ``--help`` flags are given. This needs to be done 579 by the file system (e.g. using the `fuse_cmdline_help()` and 580 `fuse_lowlevel_help()` functions). 581 582* Added ``example/cuse_client.c`` to test ``example/cuse.c``. 583 584* Removed ``example/null.c``. This has not been working for a while 585 for unknown reasons -- maybe because it tries to treat the 586 mountpoint as a file rather than a directory? 587 588* There are several new examples that demonstrate the use of 589 the ``fuse_lowlevel_notify_*`` functions: 590 591 - ``example/notify_store_retrieve.c`` 592 - ``example/notify_inval_inode.c`` 593 - ``example/notify_inval_entry.c`` 594 595* The ``-o big_writes`` mount option has been removed. It is now 596 always active. File systems that want to limit the size of write 597 requests should use the ``-o max_write=<N>`` option instead. 598 599* The `fuse_lowlevel_new` function has been renamed to 600 `fuse_session_new` and no longer interprets the --version or --help 601 options. To print help or version information, use the new 602 `fuse_lowlevel_help` and `fuse_lowlevel_version` functions. 603 604* The ``allow_other`` and ``allow_root`` mount options (accepted by 605 `fuse_session_new()`) may now be specified together. In this case, 606 ``allow_root`` takes precedence. 607 608* There are new `fuse_session_unmount` and `fuse_session_mount` 609 functions that should be used in the low-level API. The `fuse_mount` 610 and `fuse_unmount` functions should be used with the high-level API 611 only. 612 613* Neither `fuse_mount` nor `fuse_session_mount` take struct fuse_opts 614 parameters anymore. Mount options are parsed by `fuse_new` (for the 615 high-level API) and `fuse_session_new` (for the low-level API) 616 instead. To print help or version information, use the new 617 `fuse_mount_help` and `fuse_mount_version` functions. 618 619* The ``fuse_lowlevel_notify_*`` functions now all take a `struct 620 fuse_session` parameter instead of a `struct fuse_chan`. 621 622* The channel interface (``fuse_chan_*`` functions) has been made 623 private. As a result, the typical initialization sequence of a 624 low-level file system has changed from :: 625 626 ch = fuse_mount(mountpoint, &args); 627 se = fuse_lowlevel_new(&args, &lo_oper, sizeof(lo_oper), &lo); 628 fuse_set_signal_handlers(se); 629 fuse_session_add_chan(se, ch); 630 fuse_daemonize(fg); 631 if (mt) 632 fuse_session_loop_mt(se); 633 else 634 fuse_session_loop(se); 635 fuse_remove_signal_handlers(se); 636 fuse_session_remove_chan(ch); 637 fuse_session_destroy(se); 638 fuse_unmount(mountpoint, ch); 639 640 to :: 641 642 se = fuse_session_new(&args, &ll_ops, sizeof(ll_ops), NULL); 643 fuse_set_signal_handlers(se); 644 fuse_session_mount(se, mountpoint); 645 fuse_daemonize(fg); 646 if (mt) 647 fuse_session_loop_mt(se); 648 else 649 fuse_session_loop(se); 650 fuse_remove_signal_handlers(se); 651 fuse_session_unmount(se); 652 fuse_lowlevel_destroy(se); 653 654 The typical high-level setup has changed from :: 655 656 ch = fuse_mount(*mountpoint, &args); 657 fuse = fuse_new(ch, &args, op, op_size, user_data); 658 se = fuse_get_session(fuse); 659 fuse_set_signal_handlers(se); 660 fuse_daemonize(fg); 661 if (mt) 662 fuse_loop_mt(fuse); 663 else 664 fuse_loop(fuse); 665 fuse_remove_signal_handlers(se); 666 fuse_unmount(mountpoint, ch); 667 fuse_destroy(fuse); 668 669 to :: 670 671 fuse = fuse_new(&args, op, op_size, user_data); 672 se = fuse_get_session(fuse); 673 fuse_set_signal_handlers(se); 674 fuse_mount(fuse, mountpoint); 675 fuse_daemonize(fg); 676 if (mt) 677 fuse_loop_mt(fuse); 678 else 679 fuse_loop(fuse); 680 fuse_remove_signal_handlers(se); 681 fuse_unmount(fuse); 682 fuse_destroy(fuse); 683 684 File systems that use `fuse_main` are not affected by this change. 685 686 For integration with custom event loops, the new `fuse_session_fd` 687 function provides the file descriptor that's used for communication 688 with the kernel. 689 690* Added *clone_fd* option. This creates a separate device file 691 descriptor for each processing thread, which might improve 692 performance. 693 694* Added *writeback_cache* option. With kernel 3.14 and newer this 695 enables write-back caching which can significantly improve 696 performance. 697 698* Added *async_dio* option. With kernel 3.13 and newer, this allows 699 direct I/O to be done asynchronously. 700 701* The (high- and low-level) `rename` handlers now takes a *flags* 702 parameter (with values corresponding to the *renameat2* system call 703 introduced in Linux 3.15). 704 705* The "ulockmgr_server" has been dropped. 706 707* There is a new (low-level) `readdirplus` handler, with a 708 corresponding example in ``examples/fuse_lo-plus.c`` and a new 709 `fuse_add_direntry_plus` API function. 710 711* The (high-level) `readdir` handler now takes a *flags* argument. 712 713* The (high-level) `filler` function passed to `readdir` now takes an 714 additional *flags* argument. 715 716* The (high-level) `getdir` handler has been dropped. 717 718* The *flag_nullpath_ok* and *flag_utime_omit_ok* flags have been 719 dropped. 720 721* The (high-level) *utime* handler has been dropped. 722 723* The `fuse_invalidate` function has been removed. 724 725* The `fuse_is_lib_option` function has been removed. 726 727* The *fh_old* member of `struct fuse_file_info` has been dropped. 728 729* The type of the *writepage* member of `struct fuse_file_info` was 730 changed from *int* to *unsigned int*. 731 732* The `struct fuse_file_info` gained a new *poll_events* member. 733 734* There is a new `fuse_pkgversion` function. 735 736* The *fuse_off_t* and *fuse_ino_t* changed from *unsigned long* to 737 *uint64_t*, i.e. they are now 64 bits also on 32-bit systems. 738 739* The type of the *generation* member of `struct fuse_entry_param*` 740 changed from *unsigned* to *uint64_t*. 741 742* The (low-level) `setattr` handler gained a *FUSE_SET_ATTR_CTIME* bit 743 *for its *to_set* parameter. 744 745* The `struct fuse_session_ops` data structure has been dropped. 746 747* The documentation has been clarified and improved in many places. 748 749 750FUSE 2.9.7 (2016-06-20) 751======================= 752 753* Added SELinux support. 754* Fixed race-condition when session is terminated right after starting 755 a FUSE file system. 756 757FUSE 2.9.6 (2016-04-23) 758======================= 759 760* Tarball now includes documentation. 761* Shared-object version has now been bumped correctly. 762 763FUSE 2.9.5 (2016-01-14) 764======================= 765 766* New maintainer: Nikolaus Rath <Nikolaus@rath.org>. Many thanks to 767 Miklos Szeredi <miklos@szeredi.hu> for bringing FUSE to where it is 768 now! 769 770* fix warning in mount.c:receive_fd(). Reported by Albert Berger 771 772* fix possible memory leak. Reported by Jose R. Guzman 773 774FUSE 2.9.4 (2015-05-22) 775======================= 776 777* fix exec environment for mount and umount. Found by Tavis Ormandy 778 (CVE-2015-3202). 779 780* fix fuse_remove_signal_handlers() to properly restore the default 781 signal handler. Reported by: Chris Johnson 782 783* highlevel API: fix directory file handle passed to ioctl() method. 784 Reported by Eric Biggers 785 786* libfuse: document deadlock avoidance for fuse_notify_inval_entry() 787 and fuse_notify_delete() 788 789* fusermount, libfuse: send value as unsigned in "user_id=" and 790 "group_id=" options. Uids/gids larger than 2147483647 would result 791 in EINVAL when mounting the filesystem. This also needs a fix in 792 the kernel. 793 794* Initialize stat buffer passed to ->getattr() and ->fgetattr() to 795 zero in all cases. Reported by Daniel Iwan 796 797* libfuse: Add missing includes. This allows compiling fuse with 798 musl. Patch by Daniel Thau 799 800 801Older Versions (before 2013-01-01) 802================================== 803 804Please see Git history, e.g. at 805https://github.com/libfuse/libfuse/blob/fuse_2_9_3/ChangeLog. 806