github libfuse/libfuse fuse-3.0.0rc1
FUSE 3.0.0rc1

latest releases: fuse-3.16.2, fuse-3.16.1, fuse-3.15.1...
pre-release7 years ago

This is a release candidate. Functionality and API will correspond to the final release unless any serious bugs are discovered.

  • Added a max_read field to struct fuse_conn_info. For the time being, the maximum size of read requests has to be specified both there and passed to fuse_session_new() using the -o max_read=<n> mount option. At some point in the future, specifying the mount option will no longer be necessary.

  • Documentation: clarified that the fuse_argv structure that is passed to fuse_new() and fuse_lowlevel_new() must always contain at least one element.

  • The high-level init() handler now receives an additional struct fuse_config pointer that can be used to adjust high-level API specific configuration options.

  • The nopath_flag field of struct fuse_operations has been removed. Instead, a new nullpath_ok flag can now be set in struct fuse_config.

  • File systems that use the low-level API and support lookup requests for '.' and '..' should continue make sure to set the FUSE_CAP_EXPORT_SUPPORT bit in fuse_conn_info->want.

    (This has actually always been the case, but was not very obvious from the documentation).

  • The help text generated by fuse_lowlevel_help(), fuse_new() (and indirectly fuse_main()) no longer includes options that are unlikely to be of interest to end-users. The full list of accepted options is
    now included in the respective function's documentation (located in the fuse.h/fuse_lowlevel.h and doc/html).

  • The -o nopath option has been dropped - it never actually did anything (since it is unconditionally overwritten with the value of the nopath flag in `struct fuse_operations).

  • The -o large_read mount option has been dropped. Hopefully no one uses a Linux 2.4 kernel anymore.

  • The -o nonempty mount point has been removed, mounting over non-empty directories is now always allowed. This brings the behavior of FUSE file systems in-line with the behavior of the
    regular mount command.

    File systems that do not want to allow mounting to non-empty directories should perform this check themselves before handing control to libfuse.

  • The chmod, chown, truncate, utimens and getattr handlers of the high-level API now all receive an additional struct fuse_file_info pointer. This pointer is NULL if the file is not currently open.

    The fgetattr and ftruncate handlers have become obsolete and have been removed.

  • The fuse_session_new function no longer accepts the -o clone_fd option. Instead, this has become a parameter of the fuse_session_loop_mt and ``fuse_loop_mt` functions.

  • For low-level file systems that implement the write_buf handler, the splice_read option is now enabled by default. As usual, this can be changed in the file system's init handler.

  • The treatment of low-level options has been made more consistent:

    Options that can be set in the init() handler (via the fuse_conn_info parameter) can now be set only here,
    i.e. fuse_session_new() no longer accepts arguments that change the fuse_conn_info object before or after the call do init(). As a side effect, this removes the ambiguity where some options can be
    overwritten by init(), while others overwrite the choices made by init().

    For file systems that wish to offer command line options for these settings, the new fuse_parse_conn_info_opts() and fuse_apply_conn_info_opts() functions are available.

    Consequently, the fuse_lowlevel_help() method has been dropped.

  • The async_read field in struct fuse_conn_info has been removed. To determine if the kernel supports asynchronous reads, file systems should check the FUSE_CAP_ASYNC_READ bit of the
    capable field. To enable/disable asynchronous reads, file systems should set the flag in the wanted field.

  • The fuse_parse_cmdline function no longer prints out help when the --verbose or --help flags are given. This needs to be done by the file system (e.g. using the fuse_cmdline_help() and
    fuse_lowlevel_help() functions).

  • Added example/cuse_client.c to test example/cuse.c.

  • Removed example/null.c. This has not been working for a while for unknown reasons -- maybe because it tries to treat the mountpoint as a file rather than a directory?

  • There are several new examples that demonstrate the use of the fuse_lowlevel_notify_* functions:

    • example/notify_store_retrieve.c
    • example/notify_inval_inode.c
    • example/notify_inval_entry.c
  • The -o big_writes mount option has been removed. It is now always active. File systems that want to limit the size of write requests should use the -o max_write=<N> option instead.

Don't miss a new libfuse release

NewReleases is sending notifications on new releases.