mirror of
https://github.com/libfuse/libfuse.git
synced 2026-07-07 14:47:41 +08:00
Add doc/ChangeLog-API.rst
This is to document API changes between versions. Signed-off-by: Bernd Schubert <bernd@bsbernd.com>
This commit is contained in:
@@ -0,0 +1,178 @@
|
||||
==================================
|
||||
libfuse API Changes (3.0 to 3.19)
|
||||
==================================
|
||||
|
||||
This document describes API changes between FUSE_USE_VERSION values.
|
||||
Set FUSE_USE_VERSION before including fuse.h or fuse_lowlevel.h.
|
||||
|
||||
Version 3.1 (FUSE_MAKE_VERSION(3, 1))
|
||||
=====================================
|
||||
|
||||
New Functions
|
||||
-------------
|
||||
* ``fuse_lib_help()`` - Print help for generic high-level FUSE options
|
||||
* ``fuse_invalidate_path()`` - Cache invalidation from high-level API
|
||||
|
||||
Changed Functions
|
||||
-----------------
|
||||
* ``fuse_new()`` signature changed; applications should call ``fuse_lib_help()``
|
||||
for --help instead of passing it to fuse_new()
|
||||
|
||||
Version 3.2 (FUSE_MAKE_VERSION(3, 2))
|
||||
=====================================
|
||||
|
||||
Changed Functions
|
||||
-----------------
|
||||
* ``fuse_loop_mt()`` and ``fuse_session_loop_mt()`` now take a
|
||||
``struct fuse_loop_config *`` parameter instead of a *clone_fd* boolean.
|
||||
The struct is public and can be directly initialized.
|
||||
|
||||
Note: This change was implemented in libfuse release 3.1.1, but the API version
|
||||
that enables it is 32.
|
||||
|
||||
Version 3.3 (FUSE_MAKE_VERSION(3, 3))
|
||||
=====================================
|
||||
|
||||
New Functions
|
||||
-------------
|
||||
* ``fuse_open_channel()`` - Open a FUSE file descriptor and set up mount
|
||||
(allows passing open /dev/fuse fd via ``/dev/fd/%u`` mountpoint format)
|
||||
|
||||
Version 3.4 (FUSE_MAKE_VERSION(3, 4))
|
||||
=====================================
|
||||
|
||||
New Operations
|
||||
--------------
|
||||
* ``copy_file_range`` - Efficient server-side file copying
|
||||
|
||||
New Functions
|
||||
-------------
|
||||
* ``fuse_fs_copy_file_range()`` - High-level API wrapper
|
||||
|
||||
Version 3.5 (FUSE_MAKE_VERSION(3, 5))
|
||||
=====================================
|
||||
|
||||
Changed Prototypes
|
||||
------------------
|
||||
* ``ioctl`` handler: cmd parameter changed from ``int`` to ``unsigned int``
|
||||
|
||||
- Use FUSE_USE_VERSION < 35 for old ``int cmd`` prototype
|
||||
- Use FUSE_USE_VERSION >= 35 for new ``unsigned int cmd`` prototype
|
||||
|
||||
Version 3.7 (FUSE_MAKE_VERSION(3, 7))
|
||||
=====================================
|
||||
|
||||
New Functions
|
||||
-------------
|
||||
* ``fuse_set_log_func()`` - Install custom log message handler
|
||||
* ``fuse_log()`` - Emit log messages (replaces direct stderr writes)
|
||||
|
||||
Version 3.8 (FUSE_MAKE_VERSION(3, 8))
|
||||
=====================================
|
||||
|
||||
New Operations
|
||||
--------------
|
||||
* ``lseek`` - Find next data or hole in sparse files (SEEK_DATA/SEEK_HOLE)
|
||||
|
||||
New Functions
|
||||
-------------
|
||||
* ``fuse_fs_lseek()`` - High-level API wrapper
|
||||
* ``fuse_reply_lseek()`` - Low-level reply function
|
||||
|
||||
Version 3.12 (FUSE_MAKE_VERSION(3, 12))
|
||||
=======================================
|
||||
|
||||
Major Changes
|
||||
-------------
|
||||
* ``struct fuse_loop_config`` is now **private** (opaque pointer)
|
||||
* Loop configuration must use accessor functions instead of direct struct access
|
||||
* The public struct from version 3.2-3.11 is renamed to ``struct fuse_loop_config_v1``
|
||||
|
||||
New Functions
|
||||
-------------
|
||||
* ``fuse_loop_cfg_create()`` - Create loop configuration
|
||||
* ``fuse_loop_cfg_destroy()`` - Free loop configuration
|
||||
* ``fuse_loop_cfg_set_idle_threads()`` - Set max idle threads
|
||||
* ``fuse_loop_cfg_set_max_threads()`` - Set max total threads
|
||||
* ``fuse_loop_cfg_set_clone_fd()`` - Enable/disable clone_fd
|
||||
* ``fuse_loop_cfg_convert()`` - Convert old config (v1) to new format
|
||||
* ``fuse_lowlevel_notify_expire_entry()`` - Expire dentry without full invalidation
|
||||
|
||||
Changed Functions
|
||||
-----------------
|
||||
* ``fuse_session_loop_mt()`` now accepts NULL config pointer
|
||||
* ``fuse_parse_cmdline()`` now accepts ``max_threads`` option
|
||||
|
||||
Deprecated
|
||||
----------
|
||||
* ``max_idle_threads`` parameter (use ``max_threads`` instead)
|
||||
|
||||
Version 3.17 (FUSE_MAKE_VERSION(3, 17))
|
||||
=======================================
|
||||
|
||||
New Functions
|
||||
-------------
|
||||
* ``fuse_set_fail_signal_handlers()`` - Handle fatal signals with backtrace
|
||||
* ``fuse_log_enable_syslog()`` - Redirect fuse_log() to syslog
|
||||
* ``fuse_log_close_syslog()`` - Close syslog connection
|
||||
* ``fuse_passthrough_open()`` - Setup passthrough backing file
|
||||
* ``fuse_passthrough_close()`` - Close passthrough connection
|
||||
* ``fuse_session_custom_io()`` - Custom I/O for FUSE daemon (signature extended)
|
||||
|
||||
New Capabilities
|
||||
----------------
|
||||
* ``FUSE_CAP_PASSTHROUGH`` - Enable passthrough read/write to backing file
|
||||
* ``FUSE_CAP_HANDLE_KILLPRIV_V2`` - Support for KILLPRIV_V2
|
||||
|
||||
New Mount Options
|
||||
-----------------
|
||||
* ``fmask`` - umask applied to non-directories (high-level API)
|
||||
* ``dmask`` - umask applied to directories (high-level API)
|
||||
|
||||
Version 3.17.3
|
||||
==============
|
||||
|
||||
New Functions
|
||||
-------------
|
||||
* ``fuse_set_feature_flag()`` - Set capability in want_ext field
|
||||
* ``fuse_unset_feature_flag()`` - Unset capability in want_ext field
|
||||
* ``fuse_get_feature_flag()`` - Query capability in want_ext field
|
||||
|
||||
Note: These replace direct manipulation of conn->want for 64-bit capability support.
|
||||
|
||||
Version 3.18 (FUSE_MAKE_VERSION(3, 18))
|
||||
=======================================
|
||||
|
||||
New Operations
|
||||
--------------
|
||||
* ``statx`` - Extended file attributes (struct statx support)
|
||||
|
||||
New Functions
|
||||
-------------
|
||||
* ``fuse_fs_statx()`` - High-level API wrapper
|
||||
* ``fuse_reply_statx()`` - Low-level reply function
|
||||
* ``fuse_req_is_uring()`` - Check if request uses fuse-over-io-uring
|
||||
* ``fuse_req_get_payload()`` - Get request payload buffer (io-uring only)
|
||||
* ``fuse_lowlevel_notify_increment_epoch()`` - Increment epoch counter
|
||||
|
||||
New Features
|
||||
------------
|
||||
* fuse-over-io-uring communication support
|
||||
* Request timeouts for hung operation prevention
|
||||
|
||||
Version 3.19 (FUSE_MAKE_VERSION(3, 19))
|
||||
=======================================
|
||||
|
||||
(Reserved for future use)
|
||||
|
||||
Migration Notes
|
||||
===============
|
||||
|
||||
When upgrading FUSE_USE_VERSION:
|
||||
|
||||
1. **3.0 → 3.1**: Handle --help in filesystem code, call fuse_lib_help()
|
||||
2. **3.1 → 3.2**: Update fuse_loop_mt() calls to use struct fuse_loop_config
|
||||
3. **< 3.5 → 3.5+**: Change ioctl cmd from int to unsigned int
|
||||
4. **< 3.12 → 3.12+**: Use fuse_loop_cfg_*() functions instead of direct struct access
|
||||
5. **< 3.17 → 3.17+**: Use fuse_set_feature_flag() instead of conn->want for new caps
|
||||
|
||||
Reference in New Issue
Block a user