16881f68fSopenharmony_cilibfuse 3.16.1 (2023-08-08)
26881f68fSopenharmony_ci===========================
36881f68fSopenharmony_ci
46881f68fSopenharmony_ci* Readdir kernel cache can be enabled from high-level API.
56881f68fSopenharmony_ci
66881f68fSopenharmony_cilibfuse 3.15.1 (2023-07-05)
76881f68fSopenharmony_ci===========================
86881f68fSopenharmony_ci
96881f68fSopenharmony_ciFuture libfuse releases will be signed with `signify`_ rather than PGP (rationale_). This
106881f68fSopenharmony_cirelease is the last to be signed with PGP and contains the signify public key for current
116881f68fSopenharmony_ci(3.15.X) and upcoming  (3.16.X) minor release cycle.
126881f68fSopenharmony_ci
136881f68fSopenharmony_ci.. _signify:  https://www.openbsd.org/papers/bsdcan-signify.html
146881f68fSopenharmony_ci.. _rationale: https://latacora.micro.blog/2019/07/16/the-pgp-problem.html
156881f68fSopenharmony_ci
166881f68fSopenharmony_ci
176881f68fSopenharmony_cilibfuse 3.15.0 (2023-06-09)
186881f68fSopenharmony_ci===========================
196881f68fSopenharmony_ci
206881f68fSopenharmony_ci* Improved support for some less common systems (32 bit, alternative libcs)
216881f68fSopenharmony_ci
226881f68fSopenharmony_ci* Unsupported mount options are no longer silently accepted.
236881f68fSopenharmony_ci
246881f68fSopenharmony_ci* auto_unmount is now compatible with allow_other.
256881f68fSopenharmony_ci
266881f68fSopenharmony_ci
276881f68fSopenharmony_cilibfuse 3.14.1 (2023-03-26)
286881f68fSopenharmony_ci===========================
296881f68fSopenharmony_ci
306881f68fSopenharmony_ci* The extended attribute name passed to the setxattr() handler is no longer
316881f68fSopenharmony_ci  truncated at the beginning (bug introduced in 3.13.0).
326881f68fSopenharmony_ci  
336881f68fSopenharmony_ci* As a result of the above, the additional setattr() flags introduced in 3.14 are no
346881f68fSopenharmony_ci  longer available for now. They will hopefully be reintroduced in the next release.
356881f68fSopenharmony_ci
366881f68fSopenharmony_ci* Further improvements of configuration header handling.
376881f68fSopenharmony_ci
386881f68fSopenharmony_ci
396881f68fSopenharmony_cilibfuse 3.14.0 (2023-02-17)
406881f68fSopenharmony_ci===========================
416881f68fSopenharmony_ci
426881f68fSopenharmony_ci* Properly fix the header installation issue. The fix in 3.13.1 resulted
436881f68fSopenharmony_ci  in conflicts with other packages.
446881f68fSopenharmony_ci
456881f68fSopenharmony_ci* Introduce additional setattr() flags (FORCE, KILL_SUID, KILL_SGID, FILE, KILL_PRIV,
466881f68fSopenharmony_ci  OPEN, TIMES_SET)
476881f68fSopenharmony_ci
486881f68fSopenharmony_ci
496881f68fSopenharmony_cilibfuse 3.13.1 (2023-02-03)
506881f68fSopenharmony_ci===========================
516881f68fSopenharmony_ci
526881f68fSopenharmony_ci* Fixed an issue that resulted in errors when attempting to compile against
536881f68fSopenharmony_ci  installed libfuse headers (because libc symbol versioning support was not
546881f68fSopenharmony_ci  detected correctly in this case).
556881f68fSopenharmony_ci
566881f68fSopenharmony_cilibfuse 3.13.0 (2023-01-13)
576881f68fSopenharmony_ci===========================
586881f68fSopenharmony_ci
596881f68fSopenharmony_ci* There is a new low-level API function `fuse_session_custom_io` that allows to implement
606881f68fSopenharmony_ci  a daemon with a custom io. This can be used to create a daemon that can process incoming
616881f68fSopenharmony_ci  FUSE requests to other destinations than `/dev/fuse`.
626881f68fSopenharmony_ci
636881f68fSopenharmony_ci* A segfault when loading custom FUSE modules has been fixed.
646881f68fSopenharmony_ci
656881f68fSopenharmony_ci* There is a new `fuse_notify_expire_entry` function.
666881f68fSopenharmony_ci
676881f68fSopenharmony_ci* A deadlock when resolving paths in the high-level API has been fixed.
686881f68fSopenharmony_ci
696881f68fSopenharmony_ci* libfuse can now be build explicitly for C libraries without symbol versioning support.
706881f68fSopenharmony_ci
716881f68fSopenharmony_cilibfuse 3.12.0 (2022-09-08)
726881f68fSopenharmony_ci===========================
736881f68fSopenharmony_ci
746881f68fSopenharmony_ci* There is a new build parameter to specify where the SysV init script should be
756881f68fSopenharmony_ci  installed.
766881f68fSopenharmony_ci  
776881f68fSopenharmony_ci* The *max_idle_threads* parameter has been deprecated in favor of the new max_threads*
786881f68fSopenharmony_ci  parameter (which avoids the excessive overhead of creating and destructing threads).
796881f68fSopenharmony_ci  Using max_threads == 1 and calling fuse_session_loop_mt() will run single threaded
806881f68fSopenharmony_ci  similar to fuse_session_loop().
816881f68fSopenharmony_ci
826881f68fSopenharmony_ciThe following changes apply when using the most recent API (-DFUSE_USE_VERSION=312,
836881f68fSopenharmony_cisee `example/passthrough_hp.cc` for an example for how to usse the new API):
846881f68fSopenharmony_ci
856881f68fSopenharmony_ci* `struct fuse_loop_config` is now private and has to be constructed using
866881f68fSopenharmony_ci  *fuse_loop_cfg_create()* and destroyed with *fuse_loop_cfg_destroy()*.  Parameters can be
876881f68fSopenharmony_ci  changed using `fuse_loop_cfg_set_*()` functions.
886881f68fSopenharmony_ci
896881f68fSopenharmony_ci* *fuse_session_loop_mt()* now accepts `struct fuse_loop_config *` as NULL pointer.
906881f68fSopenharmony_ci
916881f68fSopenharmony_ci* *fuse_parse_cmdline()* now accepts a *max_threads* option.
926881f68fSopenharmony_ci
936881f68fSopenharmony_ci
946881f68fSopenharmony_cilibfuse 3.11.0 (2022-05-02)
956881f68fSopenharmony_ci===========================
966881f68fSopenharmony_ci
976881f68fSopenharmony_ci* Add support for flag FOPEN_NOFLUSH for avoiding flush on close.
986881f68fSopenharmony_ci* Fixed returning an error condition to ioctl(2)
996881f68fSopenharmony_ci
1006881f68fSopenharmony_ci
1016881f68fSopenharmony_cilibfuse 3.10.5 (2021-09-06)
1026881f68fSopenharmony_ci===========================
1036881f68fSopenharmony_ci
1046881f68fSopenharmony_ci* Various improvements to make unit tests more robust.
1056881f68fSopenharmony_ci
1066881f68fSopenharmony_ci
1076881f68fSopenharmony_cilibfuse 3.10.4 (2021-06-09)
1086881f68fSopenharmony_ci===========================
1096881f68fSopenharmony_ci
1106881f68fSopenharmony_ci* Building of unit tests is now optional.
1116881f68fSopenharmony_ci* Fixed a test failure when running tests under XFS.
1126881f68fSopenharmony_ci* Fixed memory leaks in examples.
1136881f68fSopenharmony_ci* Minor documentation fixes.  
1146881f68fSopenharmony_ci
1156881f68fSopenharmony_cilibfuse 3.10.3 (2021-04-12)
1166881f68fSopenharmony_ci===========================
1176881f68fSopenharmony_ci
1186881f68fSopenharmony_ci* Fix returning d_ino and d_type from readdir(3) in non-plus mode
1196881f68fSopenharmony_ci  
1206881f68fSopenharmony_cilibfuse 3.10.2 (2021-02-05)
1216881f68fSopenharmony_ci===========================
1226881f68fSopenharmony_ci
1236881f68fSopenharmony_ci* Allow "nonempty" as a mount option, for backwards compatibility with fusermount 2. The
1246881f68fSopenharmony_ci  option has no effect since mounting over non-empty directories is allowed by default.
1256881f68fSopenharmony_ci* Fix returning inode numbers from readdir() in offset==0 mode.
1266881f68fSopenharmony_ci* FUSE filesystems can now be mounted underneath EXFAT mountpoints.
1276881f68fSopenharmony_ci* Various minor bugfixes.  
1286881f68fSopenharmony_ci
1296881f68fSopenharmony_cilibfuse 3.10.1 (2020-12-07)
1306881f68fSopenharmony_ci===========================
1316881f68fSopenharmony_ci
1326881f68fSopenharmony_ci* Various minor bugfixes.
1336881f68fSopenharmony_ci
1346881f68fSopenharmony_cilibfuse 3.10.0 (2020-10-09)
1356881f68fSopenharmony_ci===========================
1366881f68fSopenharmony_ci
1376881f68fSopenharmony_ci* Add FUSE_CAP_CACHE_SYMLINKS: allow caching symlinks in kernel page cache.
1386881f68fSopenharmony_ci* Various minor bugfixes and improvements.  
1396881f68fSopenharmony_ci
1406881f68fSopenharmony_cilibfuse 3.9.4 (2020-08-09)
1416881f68fSopenharmony_ci==========================
1426881f68fSopenharmony_ci
1436881f68fSopenharmony_ciThis was an "accidental" release, it is equivalent to 3.9.3.
1446881f68fSopenharmony_ci
1456881f68fSopenharmony_cilibfuse 3.9.3 (2020-08-09)
1466881f68fSopenharmony_ci==========================
1476881f68fSopenharmony_ci
1486881f68fSopenharmony_ci* Fixed compilation under OS X and µClibc.
1496881f68fSopenharmony_ci* Minor bugfixes and doc updates.
1506881f68fSopenharmony_ci
1516881f68fSopenharmony_cilibfuse 3.9.2 (2020-06-12)
1526881f68fSopenharmony_ci==========================
1536881f68fSopenharmony_ci
1546881f68fSopenharmony_ci* Remove obsolete workarounds in examples.
1556881f68fSopenharmony_ci* Do not require C++ compiler for building.
1566881f68fSopenharmony_ci* Minor bugfixes.
1576881f68fSopenharmony_ci
1586881f68fSopenharmony_cilibfuse 3.9.1 (2020-03-19)
1596881f68fSopenharmony_ci===========================
1606881f68fSopenharmony_ci
1616881f68fSopenharmony_ci* Fixed memory leak in fuse_session_new().
1626881f68fSopenharmony_ci* Fixed an issue with the linker version script.
1636881f68fSopenharmony_ci* Make ioctl prototype conditional on FUSE_USE_VERSION.  Define FUSE_USE_VERSION < 35 to
1646881f68fSopenharmony_ci  get old ioctl prototype with int commands; define FUSE_USE_VERSION >= 35 to get new
1656881f68fSopenharmony_ci  ioctl prototype with unsigned int commands.
1666881f68fSopenharmony_ci* Various small bugfixes.
1676881f68fSopenharmony_ci
1686881f68fSopenharmony_cilibfuse 3.9.0 (2019-12-14)
1696881f68fSopenharmony_ci==========================
1706881f68fSopenharmony_ci
1716881f68fSopenharmony_ci* Added support for FUSE_EXPLICIT_INVAL_DATA to enable
1726881f68fSopenharmony_ci  only invalidate cached pages on explicit request.
1736881f68fSopenharmony_ci
1746881f68fSopenharmony_cilibfuse 3.8.0 (2019-11-03)
1756881f68fSopenharmony_ci==========================
1766881f68fSopenharmony_ci
1776881f68fSopenharmony_ci* Added support for FUSE_LSEEK operation which can be used to report holes
1786881f68fSopenharmony_ci  in sparse files.
1796881f68fSopenharmony_ci
1806881f68fSopenharmony_cilibfuse 3.7.0 (2019-09-27)
1816881f68fSopenharmony_ci==========================
1826881f68fSopenharmony_ci
1836881f68fSopenharmony_ci* Added UFSD to whitelist (so users can now mount FUSE filesystems
1846881f68fSopenharmony_ci  on mountpoints within UFSD filesystems).
1856881f68fSopenharmony_ci* Added custom log message handler function support so that libfuse
1866881f68fSopenharmony_ci  applications can direct messages to syslog(3) or other logging systems.
1876881f68fSopenharmony_ci  stderr remains the default.  See `fuse_log.h` for the new API.
1886881f68fSopenharmony_ci
1896881f68fSopenharmony_cilibfuse 3.6.2 (2019-07-09)
1906881f68fSopenharmony_ci==========================
1916881f68fSopenharmony_ci
1926881f68fSopenharmony_ci* The init script is now installed to /etc/ rather than /usr/local/etc
1936881f68fSopenharmony_ci  by default.
1946881f68fSopenharmony_ci
1956881f68fSopenharmony_cilibfuse 3.6.1 (2019-06-13)
1966881f68fSopenharmony_ci==========================
1976881f68fSopenharmony_ci
1986881f68fSopenharmony_ci* Fixed version number (release 3.6.0 was shipped with a declared
1996881f68fSopenharmony_ci  version of 3.0.0).
2006881f68fSopenharmony_ci
2016881f68fSopenharmony_cilibfuse 3.6.0 (2019-06-13)
2026881f68fSopenharmony_ci==========================
2036881f68fSopenharmony_ci
2046881f68fSopenharmony_ci* Added a new example (passthrough_hp). The functionality is similar
2056881f68fSopenharmony_ci  to passthrough_ll, but the implementation focuses on performance and
2066881f68fSopenharmony_ci  correctness rather than simplicity.
2076881f68fSopenharmony_ci* Added support for fuse kernel feature `max_pages` which allows to increase
2086881f68fSopenharmony_ci  the maximum number of pages that can be used per request. This feature was
2096881f68fSopenharmony_ci  introduced in kernel 4.20. `max_pages` is set based on the value in
2106881f68fSopenharmony_ci  `max_write`. By default `max_write` will be 1MiB now for kernels that support
2116881f68fSopenharmony_ci  `max_pages`. If you want smaller buffers or writes you have to set
2126881f68fSopenharmony_ci  `max_write` manually.
2136881f68fSopenharmony_ci
2146881f68fSopenharmony_cilibfuse 3.5.0 (2019-04-16)
2156881f68fSopenharmony_ci==========================
2166881f68fSopenharmony_ci
2176881f68fSopenharmony_ci* Changed ioctl commands to "unsigned int" in order to support commands
2186881f68fSopenharmony_ci  which do not fit into a signed int. Commands issued by applications
2196881f68fSopenharmony_ci  are still truncated to 32 bits.
2206881f68fSopenharmony_ci* Added SMB2 to whitelist (so users can now mount FUSE filesystems
2216881f68fSopenharmony_ci  on mountpoints within SMB 2.0 filesystems).
2226881f68fSopenharmony_ci* Added a new `cache_readdir` flag to `fuse_file_info` to enable
2236881f68fSopenharmony_ci  caching of readdir results. Supported by kernels 4.20 and newer.
2246881f68fSopenharmony_ci* Add support and documentation for FUSE_CAP_NO_OPENDIR_SUPPORT.
2256881f68fSopenharmony_ci
2266881f68fSopenharmony_cilibfuse 3.4.2 (2019-03-09)
2276881f68fSopenharmony_ci==========================
2286881f68fSopenharmony_ci
2296881f68fSopenharmony_ci* Fixed a memory leak in `examples/passthrough_ll.c`.
2306881f68fSopenharmony_ci* Added OpenAFS to whitelist (so users can now mount FUSE filesystems
2316881f68fSopenharmony_ci  on mountpoints within OpenAFS filesystems).
2326881f68fSopenharmony_ci* Added HFS+ to whitelist (so users can now mount FUSE filesystems
2336881f68fSopenharmony_ci  on mountpoints within HFS+ filesystems).
2346881f68fSopenharmony_ci* Documentation improvements.
2356881f68fSopenharmony_ci
2366881f68fSopenharmony_cilibfuse 3.4.1 (2018-12-22)
2376881f68fSopenharmony_ci==========================
2386881f68fSopenharmony_ci
2396881f68fSopenharmony_ci* The `examples/passthrough_ll.c` example filesystem has been
2406881f68fSopenharmony_ci  significantly extended.
2416881f68fSopenharmony_ci* Support for `copy_file_range` has been added.
2426881f68fSopenharmony_ci* Build system updates for non-Linux systems.
2436881f68fSopenharmony_ci
2446881f68fSopenharmony_cilibfuse 3.4.0
2456881f68fSopenharmony_ci=============
2466881f68fSopenharmony_ci
2476881f68fSopenharmony_ci* Add `copy_file_range()` to support efficient copying of data from one file to
2486881f68fSopenharmony_ci  an other.
2496881f68fSopenharmony_ci
2506881f68fSopenharmony_cilibfuse 3.3.0 (2018-11-06)
2516881f68fSopenharmony_ci==========================
2526881f68fSopenharmony_ci
2536881f68fSopenharmony_ci* The `auto_unmount` mode now works correctly in combination with
2546881f68fSopenharmony_ci  autofs.
2556881f68fSopenharmony_ci
2566881f68fSopenharmony_ci* The FUSE_CAP_READDIRPLUS_AUTO capability is no longer enabled by
2576881f68fSopenharmony_ci  default unless the file system defines both a readdir() and a
2586881f68fSopenharmony_ci  readdirplus() handler.
2596881f68fSopenharmony_ci
2606881f68fSopenharmony_ci* The description of the FUSE_CAP_READDIRPLUS_AUTO flag has been
2616881f68fSopenharmony_ci  improved.
2626881f68fSopenharmony_ci
2636881f68fSopenharmony_ci* Allow open `/dev/fuse` file descriptors to be passed via mountpoints of the
2646881f68fSopenharmony_ci  special format `/dev/fd/%u`. This allows mounting to be handled by the parent
2656881f68fSopenharmony_ci  so the FUSE filesystem process can run fully unprivileged.
2666881f68fSopenharmony_ci
2676881f68fSopenharmony_ci* Add a `drop_privileges` option to mount.fuse3 which causes it to open
2686881f68fSopenharmony_ci  `/dev/fuse` and mount the file system itself, then run the FUSE file
2696881f68fSopenharmony_ci  filesystem fully unprivileged and unable to re-acquire privilege via setuid,
2706881f68fSopenharmony_ci  fscaps, etc.
2716881f68fSopenharmony_ci
2726881f68fSopenharmony_ci* Documented under which conditions the `fuse_lowlevel_notify_*`
2736881f68fSopenharmony_ci  functions may block.
2746881f68fSopenharmony_ci
2756881f68fSopenharmony_cilibfuse 3.2.6 (2018-08-31)
2766881f68fSopenharmony_ci==========================
2776881f68fSopenharmony_ci
2786881f68fSopenharmony_ci* The fuse_main() function now returns more fine-grained error codes.
2796881f68fSopenharmony_ci* FUSE filesystems may now be mounted on mountpoint within
2806881f68fSopenharmony_ci  bcachefs, aufs and FAT filesystems.
2816881f68fSopenharmony_ci* libfuse may now be used as a Meson subproject.
2826881f68fSopenharmony_ci* Fix a few low-impact memory leaks.
2836881f68fSopenharmony_ci* The `fuse.conf` file is no longer looked for in `/etc`, but in the
2846881f68fSopenharmony_ci  *sysconfdir* directory (which can be set with `meson configure`). By
2856881f68fSopenharmony_ci  default, the location is thus `/usr/local/etc/fuse.conf`.
2866881f68fSopenharmony_ci
2876881f68fSopenharmony_cilibfuse 3.2.5 (2018-07-24)
2886881f68fSopenharmony_ci==========================
2896881f68fSopenharmony_ci
2906881f68fSopenharmony_ci* SECURITY UPDATE: In previous versions of libfuse it was possible to
2916881f68fSopenharmony_ci  for unprivileged users to specify the `allow_other` option even when
2926881f68fSopenharmony_ci  this was forbidden in `/etc/fuse.conf`.  The vulnerability is
2936881f68fSopenharmony_ci  present only on systems where SELinux is active (including in
2946881f68fSopenharmony_ci  permissive mode).
2956881f68fSopenharmony_ci* The fusermount binary has been hardened in several ways to reduce
2966881f68fSopenharmony_ci  potential attack surface. Most importantly, mountpoints and mount
2976881f68fSopenharmony_ci  options must now match a hard-coded whitelist. It is expected that
2986881f68fSopenharmony_ci  this whitelist covers all regular use-cases.
2996881f68fSopenharmony_ci* Added a test of `seekdir` to test_syscalls.
3006881f68fSopenharmony_ci* Fixed `readdir` bug when non-zero offsets are given to filler and the
3016881f68fSopenharmony_ci  filesystem client, after reading a whole directory, re-reads it from a
3026881f68fSopenharmony_ci  non-zero offset e. g. by calling `seekdir` followed by `readdir`.
3036881f68fSopenharmony_ci
3046881f68fSopenharmony_cilibfuse 3.2.4 (2018-07-11)
3056881f68fSopenharmony_ci==========================
3066881f68fSopenharmony_ci
3076881f68fSopenharmony_ci* Fixed `rename` deadlock on FreeBSD.
3086881f68fSopenharmony_ci
3096881f68fSopenharmony_cilibfuse 3.2.3 (2018-05-11)
3106881f68fSopenharmony_ci==========================
3116881f68fSopenharmony_ci
3126881f68fSopenharmony_ci* Fixed a number of compiler warnings.  
3136881f68fSopenharmony_ci
3146881f68fSopenharmony_cilibfuse 3.2.2 (2018-03-31)
3156881f68fSopenharmony_ci==========================
3166881f68fSopenharmony_ci
3176881f68fSopenharmony_ci* Added example fuse.conf file.
3186881f68fSopenharmony_ci* Added "support" for -o nofail mount option (the option is accepted
3196881f68fSopenharmony_ci  and ignored).
3206881f68fSopenharmony_ci* Various small bugfixes.  
3216881f68fSopenharmony_ci
3226881f68fSopenharmony_cilibfuse 3.2.1 (2017-11-14)
3236881f68fSopenharmony_ci==========================
3246881f68fSopenharmony_ci
3256881f68fSopenharmony_ci* Various small bugfixes.
3266881f68fSopenharmony_ci
3276881f68fSopenharmony_cilibfuse 3.2.0 (2017-09-12)
3286881f68fSopenharmony_ci==========================
3296881f68fSopenharmony_ci
3306881f68fSopenharmony_ci* Support for building with autotools has been dropped.
3316881f68fSopenharmony_ci
3326881f68fSopenharmony_ci* Added new `fuse_invalidate_path()` routine for cache invalidation
3336881f68fSopenharmony_ci  from the high-level FUSE API, along with an example and tests.
3346881f68fSopenharmony_ci
3356881f68fSopenharmony_ci* There's a new `printcap` example that can be used to determine the
3366881f68fSopenharmony_ci  capabilities of the running kernel.
3376881f68fSopenharmony_ci
3386881f68fSopenharmony_ci* `fuse_loop_mt()` now returns the minus the actual errno if there was
3396881f68fSopenharmony_ci  an error (instead of just -1).
3406881f68fSopenharmony_ci
3416881f68fSopenharmony_ci* `fuse_loop()` no longer returns a positive value if the filesystem
3426881f68fSopenharmony_ci  loop was terminated without errors or signals.
3436881f68fSopenharmony_ci
3446881f68fSopenharmony_ci* Improved documentation of `fuse_lowlevel_notify_*` functions.
3456881f68fSopenharmony_ci
3466881f68fSopenharmony_ci* `fuse_lowlevel_notify_inval_inode()` and
3476881f68fSopenharmony_ci  `fuse_lowlevel_notify_inval_entry()` now return -ENOSYS instead of
3486881f68fSopenharmony_ci  an undefined error if the function is not supported by the kernel.
3496881f68fSopenharmony_ci
3506881f68fSopenharmony_ci* Documented the special meaning of the *zero* offset for the
3516881f68fSopenharmony_ci  fuse_fill_dir_t function.
3526881f68fSopenharmony_ci
3536881f68fSopenharmony_ci* The `passthrough_fh` example now works under FreeBSD.
3546881f68fSopenharmony_ci
3556881f68fSopenharmony_ci* libfuse can now be build without libiconv.
3566881f68fSopenharmony_ci
3576881f68fSopenharmony_ci* Fixed support for `FUSE_CAP_POSIX_ACL`: setting this capability
3586881f68fSopenharmony_ci  flag had no effect in the previous versions of libfuse 3.x;
3596881f68fSopenharmony_ci  now ACLs should actually work.
3606881f68fSopenharmony_ci
3616881f68fSopenharmony_ci* Fixed a number of compilation problems under FreeBSD.
3626881f68fSopenharmony_ci
3636881f68fSopenharmony_ci* Fixed installation directory for udev rules.
3646881f68fSopenharmony_ci
3656881f68fSopenharmony_ci* Fixed compilation with LTO.
3666881f68fSopenharmony_ci
3676881f68fSopenharmony_cilibfuse 3.1.1 (2017-08-06)
3686881f68fSopenharmony_ci==========================
3696881f68fSopenharmony_ci
3706881f68fSopenharmony_ci* Documentation: clarified how filesystems are supposed to process
3716881f68fSopenharmony_ci  open() and create() flags (see include/fuse_lowlevel.h).
3726881f68fSopenharmony_ci
3736881f68fSopenharmony_ci* Fixed a compilation problem of the passthrough_ll example on
3746881f68fSopenharmony_ci  32 bit systems (wrong check and wrong error message).
3756881f68fSopenharmony_ci
3766881f68fSopenharmony_ci* pkg-config is now used to determine the proper directory for
3776881f68fSopenharmony_ci  udev rules.
3786881f68fSopenharmony_ci
3796881f68fSopenharmony_ci* Fixed a symbol versioning problem that resulted in very strange
3806881f68fSopenharmony_ci  failures (segfaults, unexpected behavior) in different situations.
3816881f68fSopenharmony_ci
3826881f68fSopenharmony_ci* Fixed a test failure when /tmp is on btrfs.
3836881f68fSopenharmony_ci
3846881f68fSopenharmony_ci* The maximum number of idle worker threads used by `fuse_loop_mt()`
3856881f68fSopenharmony_ci  is now configurable.
3866881f68fSopenharmony_ci
3876881f68fSopenharmony_ci* `fuse_loop_mt()` and `fuse_session_loop_mt()` now take a
3886881f68fSopenharmony_ci  `struct fuse_loop_config` parameter that supersedes the *clone_fd*
3896881f68fSopenharmony_ci  parameter.
3906881f68fSopenharmony_ci
3916881f68fSopenharmony_ci* Incorporated several patches from the FreeBSD port. libfuse should
3926881f68fSopenharmony_ci  now compile under FreeBSD without the need for patches.
3936881f68fSopenharmony_ci
3946881f68fSopenharmony_ci* The passthrough_ll example now supports writeback caching.
3956881f68fSopenharmony_ci
3966881f68fSopenharmony_cilibfuse 3.1.0 (2017-07-08)
3976881f68fSopenharmony_ci==========================
3986881f68fSopenharmony_ci
3996881f68fSopenharmony_ci* Added new `fuse_lib_help()` function. File-systems that previously
4006881f68fSopenharmony_ci  passed a ``--help`` option to `fuse_new()` must now process the
4016881f68fSopenharmony_ci  ``--help`` option internally and call `fuse_lib_help()` to print the
4026881f68fSopenharmony_ci  help for generic FUSE options.
4036881f68fSopenharmony_ci* Fixed description of the `fuse_conn_info->time_gran`. The default
4046881f68fSopenharmony_ci  value of zero actually corresponds to full nanosecond resolution,
4056881f68fSopenharmony_ci  not one second resolution.
4066881f68fSopenharmony_ci* The init script is now installed into the right location
4076881f68fSopenharmony_ci  (``$DESTDIR/etc/init.d`` rather than ``$prefix/$sysconfdir/init.d``)
4086881f68fSopenharmony_ci* The `example/passthrough_ll` filesystem now supports creating
4096881f68fSopenharmony_ci  and writing to files.
4106881f68fSopenharmony_ci* `fuse_main()` / `fuse_remove_signal_handlers()`: do not reset
4116881f68fSopenharmony_ci  `SIGPIPE` handler to `SIG_DFL` if it was not set by us.
4126881f68fSopenharmony_ci* Documented the `RENAME_EXCHANGE` and `RENAME_NOREPLACE` flags that
4136881f68fSopenharmony_ci  may be passed to the `rename` handler of both the high- and
4146881f68fSopenharmony_ci  low-level API. Filesystem authors are strongly encouraged to check
4156881f68fSopenharmony_ci  that these flags are handled correctly.
4166881f68fSopenharmony_ci
4176881f68fSopenharmony_cilibfuse 3.0.2 (2017-05-24)
4186881f68fSopenharmony_ci==========================
4196881f68fSopenharmony_ci
4206881f68fSopenharmony_ci* Option parsing for the high-level API now works correctly
4216881f68fSopenharmony_ci  (previously, default values would override specified values).
4226881f68fSopenharmony_ci* Tests should now build (and run) under FreeBSD.
4236881f68fSopenharmony_ci* Improved documentation of `struct fuse_context`
4246881f68fSopenharmony_ci* Internal: calculate request buffer size from page size and kernel
4256881f68fSopenharmony_ci  page limit instead of using hardcoded 128 kB limit.
4266881f68fSopenharmony_ci
4276881f68fSopenharmony_ci
4286881f68fSopenharmony_cilibfuse 3.0.1 (2017-04-10)
4296881f68fSopenharmony_ci==========================
4306881f68fSopenharmony_ci
4316881f68fSopenharmony_ci* Re-introduced *examples/null.c*.
4326881f68fSopenharmony_ci* Added experimental support for building with Meson.
4336881f68fSopenharmony_ci* Document that `-o auto_unmount` implies `-o nodev,nosuid`.
4346881f68fSopenharmony_ci* Document that the *use_ino* option of the high-level interface does
4356881f68fSopenharmony_ci  not affect the inode that libfuse and the kernel use internally.
4366881f68fSopenharmony_ci* Fixed test cases for passthrough* examples (they weren't actually
4376881f68fSopenharmony_ci  testing the examples).
4386881f68fSopenharmony_ci* Fixed several bugs in the passthrough* examples.
4396881f68fSopenharmony_ci
4406881f68fSopenharmony_cilibfuse 3.0.0 (2016-12-08)
4416881f68fSopenharmony_ci==========================
4426881f68fSopenharmony_ci
4436881f68fSopenharmony_ci* NOTE TO PACKAGERS:
4446881f68fSopenharmony_ci
4456881f68fSopenharmony_ci  libfuse 3 is designed to be co-installable with libfuse 2. However,
4466881f68fSopenharmony_ci  some files will be installed by both libfuse 2 and libfuse 3
4476881f68fSopenharmony_ci  (e.g. /etc/fuse.conf, the udev and init scripts, and the
4486881f68fSopenharmony_ci  mount.fuse(8) manpage). These files should be taken from
4496881f68fSopenharmony_ci  libfuse 3. The format/content is guaranteed to remain backwards
4506881f68fSopenharmony_ci  compatible with libfuse 2.
4516881f68fSopenharmony_ci
4526881f68fSopenharmony_ci  We recommend to ship libfuse2 and libfuse3 in three separate
4536881f68fSopenharmony_ci  packages: a libfuse-common package that contains files shared by
4546881f68fSopenharmony_ci  libfuse 2+3 (taken from the libfuse3 tarball), and libfuse2 and
4556881f68fSopenharmony_ci  libfuse3 packages that contain the shared library and helper
4566881f68fSopenharmony_ci  programs for the respective version.
4576881f68fSopenharmony_ci
4586881f68fSopenharmony_ci* Fixed test errors when running tests as root.
4596881f68fSopenharmony_ci
4606881f68fSopenharmony_ci* Made check for util-linux version more robust.
4616881f68fSopenharmony_ci
4626881f68fSopenharmony_ci* Added documentation for all fuse capability flags (`FUSE_CAP_*`) and
4636881f68fSopenharmony_ci  `struct fuse_conn_info` fields.
4646881f68fSopenharmony_ci
4656881f68fSopenharmony_ci* fuse_loop(), fuse_loop_mt(), fuse_session_loop() and
4666881f68fSopenharmony_ci  fuse_session_loop_mt() now return more detailed error codes instead
4676881f68fSopenharmony_ci  of just -1. See the documentation of fuse_session_loop() for details.
4686881f68fSopenharmony_ci
4696881f68fSopenharmony_ci* The FUSE main loop is now aborted if the file-system requests
4706881f68fSopenharmony_ci  capabilities that are not supported by the kernel. In this case, the
4716881f68fSopenharmony_ci  session loop is exited with a return code of ``-EPROTO``.
4726881f68fSopenharmony_ci
4736881f68fSopenharmony_ci* Most file-system capabilities that were opt-in in libfuse2 are now
4746881f68fSopenharmony_ci  enabled by default. Filesystem developers are encouraged to review
4756881f68fSopenharmony_ci  the documentation of the FUSE_CAP_* features to ensure that their
4766881f68fSopenharmony_ci  filesystem is compatible with the new semantics. As before, a
4776881f68fSopenharmony_ci  particular capability can still be disabled by unsetting the
4786881f68fSopenharmony_ci  corresponding bit of `fuse_conn_info.wants` in the init() handler.
4796881f68fSopenharmony_ci
4806881f68fSopenharmony_ci* Added FUSE_CAP_PARALLEL_DIROPS and FUSE_CAP_POSIX_ACL,
4816881f68fSopenharmony_ci  FUSE_HANDLE_KILLPRIV feature flags.
4826881f68fSopenharmony_ci
4836881f68fSopenharmony_ci* FUSE filesystems are now responsible for unsetting the setuid/setgid
4846881f68fSopenharmony_ci  flags when a file is written, truncated, or its owner
4856881f68fSopenharmony_ci  changed. Previously, this was handled by the kernel but subject to
4866881f68fSopenharmony_ci  race conditions.
4876881f68fSopenharmony_ci
4886881f68fSopenharmony_ci* The fusermount and mount.fuse binaries have been renamed to
4896881f68fSopenharmony_ci  fusermount3 and mount.fuse3 to allow co-installation of libfuse 2.x
4906881f68fSopenharmony_ci  and 3.x
4916881f68fSopenharmony_ci
4926881f68fSopenharmony_ci* Added a `max_read` field to `struct fuse_conn_info`. For the time
4936881f68fSopenharmony_ci  being, the maximum size of read requests has to be specified both
4946881f68fSopenharmony_ci  there *and* passed to fuse_session_new() using the ``-o
4956881f68fSopenharmony_ci  max_read=<n>`` mount option. At some point in the future, specifying
4966881f68fSopenharmony_ci  the mount option will no longer be necessary.
4976881f68fSopenharmony_ci
4986881f68fSopenharmony_ci* Documentation: clarified that the fuse_argv structure that is passed
4996881f68fSopenharmony_ci  to `fuse_new()` and `fuse_lowlevel_new()` must always contain at
5006881f68fSopenharmony_ci  least one element.
5016881f68fSopenharmony_ci
5026881f68fSopenharmony_ci* The high-level init() handler now receives an additional struct
5036881f68fSopenharmony_ci  fuse_config pointer that can be used to adjust high-level API
5046881f68fSopenharmony_ci  specific configuration options.
5056881f68fSopenharmony_ci
5066881f68fSopenharmony_ci* The `nopath_flag` field of struct fuse_operations has been
5076881f68fSopenharmony_ci  removed. Instead, a new `nullpath_ok` flag can now be set
5086881f68fSopenharmony_ci  in struct fuse_config.
5096881f68fSopenharmony_ci
5106881f68fSopenharmony_ci* File systems that use the low-level API and support lookup requests
5116881f68fSopenharmony_ci  for '.' and '..' should continue make sure to set the
5126881f68fSopenharmony_ci  FUSE_CAP_EXPORT_SUPPORT bit in fuse_conn_info->want.
5136881f68fSopenharmony_ci
5146881f68fSopenharmony_ci  (This has actually always been the case, but was not very obvious
5156881f68fSopenharmony_ci  from the documentation).
5166881f68fSopenharmony_ci
5176881f68fSopenharmony_ci* The help text generated by fuse_lowlevel_help(), fuse_new() (and
5186881f68fSopenharmony_ci  indirectly fuse_main()) no longer includes options that are unlikely
5196881f68fSopenharmony_ci  to be of interest to end-users. The full list of accepted options is
5206881f68fSopenharmony_ci  now included in the respective function's documentation (located in
5216881f68fSopenharmony_ci  the fuse.h/fuse_lowlevel.h and doc/html).
5226881f68fSopenharmony_ci
5236881f68fSopenharmony_ci* The ``-o nopath`` option has been dropped - it never actually did
5246881f68fSopenharmony_ci  anything (since it is unconditionally overwritten with the value of
5256881f68fSopenharmony_ci  the `nopath` flag in `struct fuse_operations`).
5266881f68fSopenharmony_ci
5276881f68fSopenharmony_ci* The ``-o large_read`` mount option has been dropped. Hopefully no
5286881f68fSopenharmony_ci  one uses a Linux 2.4 kernel anymore.
5296881f68fSopenharmony_ci
5306881f68fSopenharmony_ci* The `-o nonempty` mount point has been removed, mounting over
5316881f68fSopenharmony_ci  non-empty directories is now always allowed. This brings the
5326881f68fSopenharmony_ci  behavior of FUSE file systems in-line with the behavior of the
5336881f68fSopenharmony_ci  regular `mount` command.
5346881f68fSopenharmony_ci
5356881f68fSopenharmony_ci  File systems that do not want to allow mounting to non-empty
5366881f68fSopenharmony_ci  directories should perform this check themselves before handing
5376881f68fSopenharmony_ci  control to libfuse.
5386881f68fSopenharmony_ci
5396881f68fSopenharmony_ci* The chmod, chown, truncate, utimens and getattr handlers of the
5406881f68fSopenharmony_ci  high-level API now all receive an additional struct fuse_file_info
5416881f68fSopenharmony_ci  pointer (which, however, may be NULL even if the file is currently
5426881f68fSopenharmony_ci  open).
5436881f68fSopenharmony_ci
5446881f68fSopenharmony_ci  The fgetattr and ftruncate handlers have become obsolete and have
5456881f68fSopenharmony_ci  been removed.
5466881f68fSopenharmony_ci
5476881f68fSopenharmony_ci* The `fuse_session_new` function no longer accepts the ``-o
5486881f68fSopenharmony_ci  clone_fd`` option. Instead, this has become a parameter of the
5496881f68fSopenharmony_ci  `fuse_session_loop_mt` and `fuse_loop_mt` functions.
5506881f68fSopenharmony_ci
5516881f68fSopenharmony_ci* For low-level file systems that implement the `write_buf` handler,
5526881f68fSopenharmony_ci  the `splice_read` option is now enabled by default. As usual, this
5536881f68fSopenharmony_ci  can be changed in the file system's `init` handler.
5546881f68fSopenharmony_ci
5556881f68fSopenharmony_ci* The treatment of low-level options has been made more consistent:
5566881f68fSopenharmony_ci
5576881f68fSopenharmony_ci  Options that can be set in the init() handler (via the
5586881f68fSopenharmony_ci  fuse_conn_info parameter) can now be set only here,
5596881f68fSopenharmony_ci  i.e. fuse_session_new() no longer accepts arguments that change the
5606881f68fSopenharmony_ci  fuse_conn_info object before or after the call do init(). As a side
5616881f68fSopenharmony_ci  effect, this removes the ambiguity where some options can be
5626881f68fSopenharmony_ci  overwritten by init(), while others overwrite the choices made by
5636881f68fSopenharmony_ci  init().
5646881f68fSopenharmony_ci
5656881f68fSopenharmony_ci  For file systems that wish to offer command line options for these
5666881f68fSopenharmony_ci  settings, the new fuse_parse_conn_info_opts() and
5676881f68fSopenharmony_ci  fuse_apply_conn_info_opts() functions are available.
5686881f68fSopenharmony_ci
5696881f68fSopenharmony_ci  Consequently, the fuse_lowlevel_help() method has been dropped.
5706881f68fSopenharmony_ci
5716881f68fSopenharmony_ci* The `async_read` field in `struct fuse_conn_info` has been
5726881f68fSopenharmony_ci  removed. To determine if the kernel supports asynchronous reads,
5736881f68fSopenharmony_ci  file systems should check the `FUSE_CAP_ASYNC_READ` bit of the
5746881f68fSopenharmony_ci  `capable` field. To enable/disable asynchronous reads, file systems
5756881f68fSopenharmony_ci  should set the flag in the `wanted` field.
5766881f68fSopenharmony_ci
5776881f68fSopenharmony_ci* The `fuse_parse_cmdline` function no longer prints out help when the
5786881f68fSopenharmony_ci  ``--verbose`` or ``--help`` flags are given. This needs to be done
5796881f68fSopenharmony_ci  by the file system (e.g. using the `fuse_cmdline_help()` and
5806881f68fSopenharmony_ci  `fuse_lowlevel_help()` functions).
5816881f68fSopenharmony_ci
5826881f68fSopenharmony_ci* Added ``example/cuse_client.c`` to test ``example/cuse.c``.
5836881f68fSopenharmony_ci
5846881f68fSopenharmony_ci* Removed ``example/null.c``. This has not been working for a while
5856881f68fSopenharmony_ci  for unknown reasons -- maybe because it tries to treat the
5866881f68fSopenharmony_ci  mountpoint as a file rather than a directory?
5876881f68fSopenharmony_ci
5886881f68fSopenharmony_ci* There are several new examples that demonstrate the use of
5896881f68fSopenharmony_ci  the ``fuse_lowlevel_notify_*`` functions:
5906881f68fSopenharmony_ci
5916881f68fSopenharmony_ci  - ``example/notify_store_retrieve.c``
5926881f68fSopenharmony_ci  - ``example/notify_inval_inode.c``
5936881f68fSopenharmony_ci  - ``example/notify_inval_entry.c``
5946881f68fSopenharmony_ci
5956881f68fSopenharmony_ci* The ``-o big_writes`` mount option has been removed. It is now
5966881f68fSopenharmony_ci  always active. File systems that want to limit the size of write
5976881f68fSopenharmony_ci  requests should use the ``-o max_write=<N>`` option instead.
5986881f68fSopenharmony_ci
5996881f68fSopenharmony_ci* The `fuse_lowlevel_new` function has been renamed to
6006881f68fSopenharmony_ci  `fuse_session_new` and no longer interprets the --version or --help
6016881f68fSopenharmony_ci  options. To print help or version information, use the new
6026881f68fSopenharmony_ci  `fuse_lowlevel_help` and `fuse_lowlevel_version` functions.
6036881f68fSopenharmony_ci
6046881f68fSopenharmony_ci* The ``allow_other`` and ``allow_root`` mount options (accepted by
6056881f68fSopenharmony_ci  `fuse_session_new()`) may now be specified together. In this case,
6066881f68fSopenharmony_ci  ``allow_root`` takes precedence.
6076881f68fSopenharmony_ci
6086881f68fSopenharmony_ci* There are new `fuse_session_unmount` and `fuse_session_mount`
6096881f68fSopenharmony_ci  functions that should be used in the low-level API. The `fuse_mount`
6106881f68fSopenharmony_ci  and `fuse_unmount` functions should be used with the high-level API
6116881f68fSopenharmony_ci  only.
6126881f68fSopenharmony_ci
6136881f68fSopenharmony_ci* Neither `fuse_mount` nor `fuse_session_mount` take struct fuse_opts
6146881f68fSopenharmony_ci  parameters anymore. Mount options are parsed by `fuse_new` (for the
6156881f68fSopenharmony_ci  high-level API) and `fuse_session_new` (for the low-level API)
6166881f68fSopenharmony_ci  instead. To print help or version information, use the new
6176881f68fSopenharmony_ci  `fuse_mount_help` and `fuse_mount_version` functions.
6186881f68fSopenharmony_ci
6196881f68fSopenharmony_ci* The ``fuse_lowlevel_notify_*`` functions now all take a `struct
6206881f68fSopenharmony_ci  fuse_session` parameter instead of a `struct fuse_chan`.
6216881f68fSopenharmony_ci
6226881f68fSopenharmony_ci* The channel interface (``fuse_chan_*`` functions) has been made
6236881f68fSopenharmony_ci  private. As a result, the typical initialization sequence of a
6246881f68fSopenharmony_ci  low-level file system has changed from ::
6256881f68fSopenharmony_ci
6266881f68fSopenharmony_ci        ch = fuse_mount(mountpoint, &args);
6276881f68fSopenharmony_ci        se = fuse_lowlevel_new(&args, &lo_oper, sizeof(lo_oper), &lo);
6286881f68fSopenharmony_ci        fuse_set_signal_handlers(se);
6296881f68fSopenharmony_ci        fuse_session_add_chan(se, ch);
6306881f68fSopenharmony_ci        fuse_daemonize(fg);
6316881f68fSopenharmony_ci        if (mt)
6326881f68fSopenharmony_ci            fuse_session_loop_mt(se);
6336881f68fSopenharmony_ci        else
6346881f68fSopenharmony_ci            fuse_session_loop(se);
6356881f68fSopenharmony_ci        fuse_remove_signal_handlers(se);
6366881f68fSopenharmony_ci        fuse_session_remove_chan(ch);
6376881f68fSopenharmony_ci        fuse_session_destroy(se);
6386881f68fSopenharmony_ci        fuse_unmount(mountpoint, ch);
6396881f68fSopenharmony_ci
6406881f68fSopenharmony_ci  to ::
6416881f68fSopenharmony_ci
6426881f68fSopenharmony_ci        se = fuse_session_new(&args, &ll_ops, sizeof(ll_ops), NULL);
6436881f68fSopenharmony_ci        fuse_set_signal_handlers(se);
6446881f68fSopenharmony_ci        fuse_session_mount(se, mountpoint);
6456881f68fSopenharmony_ci        fuse_daemonize(fg);
6466881f68fSopenharmony_ci        if (mt)
6476881f68fSopenharmony_ci            fuse_session_loop_mt(se);
6486881f68fSopenharmony_ci        else
6496881f68fSopenharmony_ci            fuse_session_loop(se);
6506881f68fSopenharmony_ci        fuse_remove_signal_handlers(se);
6516881f68fSopenharmony_ci        fuse_session_unmount(se);
6526881f68fSopenharmony_ci        fuse_lowlevel_destroy(se);
6536881f68fSopenharmony_ci
6546881f68fSopenharmony_ci  The typical high-level setup has changed from ::
6556881f68fSopenharmony_ci
6566881f68fSopenharmony_ci        ch = fuse_mount(*mountpoint, &args);
6576881f68fSopenharmony_ci        fuse = fuse_new(ch, &args, op, op_size, user_data);
6586881f68fSopenharmony_ci        se = fuse_get_session(fuse);
6596881f68fSopenharmony_ci        fuse_set_signal_handlers(se);
6606881f68fSopenharmony_ci        fuse_daemonize(fg);
6616881f68fSopenharmony_ci        if (mt)
6626881f68fSopenharmony_ci            fuse_loop_mt(fuse);
6636881f68fSopenharmony_ci        else
6646881f68fSopenharmony_ci            fuse_loop(fuse);
6656881f68fSopenharmony_ci        fuse_remove_signal_handlers(se);
6666881f68fSopenharmony_ci        fuse_unmount(mountpoint, ch);
6676881f68fSopenharmony_ci        fuse_destroy(fuse);
6686881f68fSopenharmony_ci
6696881f68fSopenharmony_ci  to ::
6706881f68fSopenharmony_ci
6716881f68fSopenharmony_ci        fuse = fuse_new(&args, op, op_size, user_data);
6726881f68fSopenharmony_ci        se = fuse_get_session(fuse);
6736881f68fSopenharmony_ci        fuse_set_signal_handlers(se);
6746881f68fSopenharmony_ci        fuse_mount(fuse, mountpoint);
6756881f68fSopenharmony_ci        fuse_daemonize(fg);
6766881f68fSopenharmony_ci         if (mt)
6776881f68fSopenharmony_ci            fuse_loop_mt(fuse);
6786881f68fSopenharmony_ci        else
6796881f68fSopenharmony_ci            fuse_loop(fuse);
6806881f68fSopenharmony_ci        fuse_remove_signal_handlers(se);
6816881f68fSopenharmony_ci        fuse_unmount(fuse);
6826881f68fSopenharmony_ci        fuse_destroy(fuse);
6836881f68fSopenharmony_ci
6846881f68fSopenharmony_ci  File systems that use `fuse_main` are not affected by this change.
6856881f68fSopenharmony_ci
6866881f68fSopenharmony_ci  For integration with custom event loops, the new `fuse_session_fd`
6876881f68fSopenharmony_ci  function provides the file descriptor that's used for communication
6886881f68fSopenharmony_ci  with the kernel.
6896881f68fSopenharmony_ci
6906881f68fSopenharmony_ci* Added *clone_fd* option.  This creates a separate device file
6916881f68fSopenharmony_ci  descriptor for each processing thread, which might improve
6926881f68fSopenharmony_ci  performance.
6936881f68fSopenharmony_ci
6946881f68fSopenharmony_ci* Added *writeback_cache* option. With kernel 3.14 and newer this
6956881f68fSopenharmony_ci  enables write-back caching which can significantly improve
6966881f68fSopenharmony_ci  performance.
6976881f68fSopenharmony_ci
6986881f68fSopenharmony_ci* Added *async_dio* option. With kernel 3.13 and newer, this allows
6996881f68fSopenharmony_ci  direct I/O to be done asynchronously.
7006881f68fSopenharmony_ci
7016881f68fSopenharmony_ci* The (high- and low-level) `rename` handlers now takes a *flags*
7026881f68fSopenharmony_ci  parameter (with values corresponding to the *renameat2* system call
7036881f68fSopenharmony_ci  introduced in Linux 3.15).
7046881f68fSopenharmony_ci
7056881f68fSopenharmony_ci* The "ulockmgr_server" has been dropped.
7066881f68fSopenharmony_ci
7076881f68fSopenharmony_ci* There is a new (low-level) `readdirplus` handler, with a
7086881f68fSopenharmony_ci  corresponding example in ``examples/fuse_lo-plus.c`` and a new
7096881f68fSopenharmony_ci  `fuse_add_direntry_plus` API function.
7106881f68fSopenharmony_ci
7116881f68fSopenharmony_ci* The (high-level) `readdir` handler now takes a *flags* argument.
7126881f68fSopenharmony_ci
7136881f68fSopenharmony_ci* The (high-level) `filler` function passed to `readdir` now takes an
7146881f68fSopenharmony_ci  additional *flags* argument.
7156881f68fSopenharmony_ci
7166881f68fSopenharmony_ci* The (high-level) `getdir` handler has been dropped.
7176881f68fSopenharmony_ci
7186881f68fSopenharmony_ci* The *flag_nullpath_ok* and *flag_utime_omit_ok* flags have been
7196881f68fSopenharmony_ci  dropped.
7206881f68fSopenharmony_ci
7216881f68fSopenharmony_ci* The (high-level) *utime* handler has been dropped.
7226881f68fSopenharmony_ci
7236881f68fSopenharmony_ci* The `fuse_invalidate` function has been removed.
7246881f68fSopenharmony_ci
7256881f68fSopenharmony_ci* The `fuse_is_lib_option` function has been removed.
7266881f68fSopenharmony_ci
7276881f68fSopenharmony_ci* The *fh_old* member of `struct fuse_file_info` has been dropped.
7286881f68fSopenharmony_ci
7296881f68fSopenharmony_ci* The type of the *writepage* member of `struct fuse_file_info` was
7306881f68fSopenharmony_ci  changed from *int* to *unsigned int*.
7316881f68fSopenharmony_ci
7326881f68fSopenharmony_ci* The `struct fuse_file_info` gained a new *poll_events* member.
7336881f68fSopenharmony_ci
7346881f68fSopenharmony_ci* There is a new `fuse_pkgversion` function.
7356881f68fSopenharmony_ci
7366881f68fSopenharmony_ci* The *fuse_off_t* and *fuse_ino_t* changed from *unsigned long* to
7376881f68fSopenharmony_ci  *uint64_t*, i.e. they are now 64 bits also on 32-bit systems.
7386881f68fSopenharmony_ci
7396881f68fSopenharmony_ci* The type of the *generation* member of `struct fuse_entry_param*`
7406881f68fSopenharmony_ci  changed from *unsigned* to *uint64_t*.
7416881f68fSopenharmony_ci
7426881f68fSopenharmony_ci* The (low-level) `setattr` handler gained a *FUSE_SET_ATTR_CTIME* bit
7436881f68fSopenharmony_ci  *for its *to_set* parameter.
7446881f68fSopenharmony_ci
7456881f68fSopenharmony_ci* The `struct fuse_session_ops` data structure has been dropped.
7466881f68fSopenharmony_ci
7476881f68fSopenharmony_ci* The documentation has been clarified and improved in many places.
7486881f68fSopenharmony_ci
7496881f68fSopenharmony_ci
7506881f68fSopenharmony_ciFUSE 2.9.7 (2016-06-20)
7516881f68fSopenharmony_ci=======================
7526881f68fSopenharmony_ci
7536881f68fSopenharmony_ci* Added SELinux support.
7546881f68fSopenharmony_ci* Fixed race-condition when session is terminated right after starting
7556881f68fSopenharmony_ci  a FUSE file system.
7566881f68fSopenharmony_ci
7576881f68fSopenharmony_ciFUSE 2.9.6 (2016-04-23)
7586881f68fSopenharmony_ci=======================
7596881f68fSopenharmony_ci
7606881f68fSopenharmony_ci* Tarball now includes documentation.
7616881f68fSopenharmony_ci* Shared-object version has now been bumped correctly.
7626881f68fSopenharmony_ci
7636881f68fSopenharmony_ciFUSE 2.9.5 (2016-01-14)
7646881f68fSopenharmony_ci=======================
7656881f68fSopenharmony_ci
7666881f68fSopenharmony_ci* New maintainer: Nikolaus Rath <Nikolaus@rath.org>. Many thanks to
7676881f68fSopenharmony_ci  Miklos Szeredi <miklos@szeredi.hu> for bringing FUSE to where it is
7686881f68fSopenharmony_ci  now!
7696881f68fSopenharmony_ci
7706881f68fSopenharmony_ci* fix warning in mount.c:receive_fd().  Reported by Albert Berger
7716881f68fSopenharmony_ci
7726881f68fSopenharmony_ci* fix possible memory leak.  Reported by Jose R. Guzman
7736881f68fSopenharmony_ci
7746881f68fSopenharmony_ciFUSE 2.9.4 (2015-05-22)
7756881f68fSopenharmony_ci=======================
7766881f68fSopenharmony_ci
7776881f68fSopenharmony_ci* fix exec environment for mount and umount.  Found by Tavis Ormandy
7786881f68fSopenharmony_ci  (CVE-2015-3202).
7796881f68fSopenharmony_ci
7806881f68fSopenharmony_ci* fix fuse_remove_signal_handlers() to properly restore the default
7816881f68fSopenharmony_ci  signal handler.  Reported by: Chris Johnson
7826881f68fSopenharmony_ci
7836881f68fSopenharmony_ci* highlevel API: fix directory file handle passed to ioctl() method.
7846881f68fSopenharmony_ci  Reported by Eric Biggers
7856881f68fSopenharmony_ci
7866881f68fSopenharmony_ci* libfuse: document deadlock avoidance for fuse_notify_inval_entry()
7876881f68fSopenharmony_ci  and fuse_notify_delete()
7886881f68fSopenharmony_ci
7896881f68fSopenharmony_ci* fusermount, libfuse: send value as unsigned in "user_id=" and
7906881f68fSopenharmony_ci  "group_id=" options.  Uids/gids larger than 2147483647 would result
7916881f68fSopenharmony_ci  in EINVAL when mounting the filesystem.  This also needs a fix in
7926881f68fSopenharmony_ci  the kernel.
7936881f68fSopenharmony_ci
7946881f68fSopenharmony_ci* Initialize stat buffer passed to ->getattr() and ->fgetattr() to
7956881f68fSopenharmony_ci  zero in all cases.  Reported by Daniel Iwan
7966881f68fSopenharmony_ci
7976881f68fSopenharmony_ci* libfuse: Add missing includes.  This allows compiling fuse with
7986881f68fSopenharmony_ci  musl.  Patch by Daniel Thau
7996881f68fSopenharmony_ci
8006881f68fSopenharmony_ci
8016881f68fSopenharmony_ciOlder Versions (before 2013-01-01)
8026881f68fSopenharmony_ci==================================
8036881f68fSopenharmony_ci
8046881f68fSopenharmony_ciPlease see Git history, e.g. at
8056881f68fSopenharmony_cihttps://github.com/libfuse/libfuse/blob/fuse_2_9_3/ChangeLog.
806