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