FUSE 3.0.0pre0 (2016-10-03)
-
This is a preview release. Functionality and API may still change
before the 3.0.0 release. -
The
fuse_lowlevel_new
function has been renamed to
fuse_session_new
and no longer interprets the --version or --help
options. To print help or version information, use the new
fuse_lowlevel_help
andfuse_lowlevel_version
functions. -
There are new
fuse_session_unmount
andfuse_session_mount
functions that should be used in the low-level API. Thefuse_mount
andfuse_unmount
functions should be used with the high-level API
only. -
Neither
fuse_mount
norfuse_session_mount
take struct fuse_opts
parameters anymore. Mount options are parsed byfuse_new
(for the
high-level API) andfuse_session_new
(for the low-level API)
instead. To print help or version information, use the new
fuse_mount_help
andfuse_mount_version
functions. -
The
fuse_lowlevel_notify_*
functions now all take astruct fuse_session
parameter instead of astruct fuse_chan
. -
The channel interface (
fuse_chan_*
functions) has been made
private. As a result, the typical initialization sequence of a
low-level file system has changed from ::ch = fuse_mount(mountpoint, &args); se = fuse_lowlevel_new(&args, &lo_oper, sizeof(lo_oper), &lo); fuse_set_signal_handlers(se); fuse_session_add_chan(se, ch); fuse_daemonize(fg); if (mt) fuse_session_loop_mt(se); else fuse_session_loop(se); fuse_remove_signal_handlers(se); fuse_session_remove_chan(ch); fuse_session_destroy(se); fuse_unmount(mountpoint, ch);
to ::
se = fuse_session_new(&args, &ll_ops, sizeof(ll_ops), NULL); fuse_set_signal_handlers(se); fuse_session_mount(se, mountpoint); fuse_daemonize(fg); if (mt) fuse_session_loop_mt(se); else fuse_session_loop(se); fuse_remove_signal_handlers(se); fuse_session_unmount(se); fuse_lowlevel_destroy(se);
The typical high-level setup has changed from ::
ch = fuse_mount(*mountpoint, &args); fuse = fuse_new(ch, &args, op, op_size, user_data); se = fuse_get_session(fuse); fuse_set_signal_handlers(se); fuse_daemonize(fg); if (mt) fuse_loop_mt(fuse); else fuse_loop(fuse); fuse_remove_signal_handlers(se); fuse_unmount(mountpoint, ch); fuse_destroy(fuse);
to ::
fuse = fuse_new(&args, op, op_size, user_data); se = fuse_get_session(fuse); fuse_set_signal_handlers(se); fuse_mount(se, mountpoint); fuse_daemonize(fg); if (mt) fuse_loop_mt(fuse); else fuse_loop(fuse); fuse_remove_signal_handlers(se); fuse_unmount(se); fuse_destroy(fuse);
File systems that use
fuse_main
are not affected by this change.For integration with custom event loops, the new
fuse_session_fd
function provides the file descriptor that's used for communication
with the kernel. -
Added clone_fd option. This creates a separate device file
descriptor for each processing thread, which might improve
performance. -
The (high- and low-level)
rename
handlers now takes a flags
parameter (with values corresponding to the renameat2 system call
introduced in Linux 3.15). -
The "ulockmgr_server" has been dropped.
-
There is a new (low-level)
readdirplus
handler, with a
corresponding example inexamples/fuse_lo-plus.c
and a new
fuse_add_direntry_plus
API function. -
The (high-level)
readdir
handler now takes a flags argument. -
The (high-level)
filler
function passed toreaddir
now takes an
additional flags argument. -
The (high-level)
getdir
handler has been dropped. -
The flag_nullpath_ok and flag_utime_omit_ok flags have been
dropped. -
The (high-level) utime handler has been dropped.
-
The
fuse_invalidate
function has been removed. -
The
fuse_is_lib_option
function has been removed. -
The fh_old member of
struct fuse_file_info
has been dropped. -
The type of the writepage member of
struct fuse_file_info
was
changed from int to unsigned int. -
The
struct fuse_file_info
gained a new poll_events member. -
There is a new
fuse_pkgversion
function. -
The fuse_off_t and fuse_ino_t changed from unsigned long to
uint64_t, i.e. they are now 64 bits also on 32-bit systems. -
The type of the generation member of `struct fuse_entry_param*
changed from unsigned to uint64_t. -
The (low-level)
setattr
handler gained a FUSE_SET_ATTR_CTIME bit
for its *to_set parameter. -
The
struct fuse_session_ops
data structure has been dropped. -
The documentation has been clarified and improved in many places.