Latest release

FUSE for macOS 3.7.0

@bfleischer bfleischer released this Sep 10, 2017 · 31 commits to master since this release

  • Add support for file systems with more than UINT32_MAX blocks

    By default struct statvfs is used to query file system statistics. Block counts are stored in struct statvfs as 32 bit integer values. Starting with this release struct statfs, which supports 64 bit block counts, can be used instead.

    • For file systems using the low-level API use fuse_reply_statfs_x() instead of fuse_reply_statfs() to finish statfs() callbacks.
    • For file systems using the high-level API implement the statfs_x() callback instead of statfs().
    • For file systems using the Objective-C framework no change is required.

    For details see osxfuse/osxfuse#396.

  • Add support for posting file system events on OS X 10.11 and later

    Shared file systems need to notify the kernel about external changes. Starting with this release file system events will be posted, so that subscribed user-space applications, like Finder, can reflect remote changes instantly.

    • The kernel will post file system events if it receives one of the following notifications: FUSE_NOTIFY_INVAL_INODE, FUSE_NOTIFY_INVAL_ENTRY, or FUSE_NOTIFY_DELETE
    • File system events will be posted in case remote changes are detected when loading vnode attributes
  • Add support for FUSE_NOTIFY_DELETE notifications

    File systems using the low-level API can call fuse_lowlevel_notify_delete() to inform the kernel that a file or directory has been deleted remotely. The kernel will then invalidate the parent's attributes and delete the corresponding directory entry. See fuse/fuse_lowlevel.h for details.

  • Fix kernel panic when processing FUSE_NOTIFY_INVAL_INODE notifications

    Acquiring a look on a kernel thread and then unlocking it on a different thread can cause a kernel panic on macOS 10.13 when running a debug or development kernel.

  • Minor code cleanup of kernel extension


FUSE for macOS 3.6.3

@bfleischer bfleischer released this Jul 18, 2017 · 36 commits to master since this release

  • Fix volume icon fallback for file systems using the low-level FUSE API

    Modules are unsupported for low-level file systems, therefore falling back to the default volume icon resulted in unknown option iconpath=... errors. For details see osxfuse/osxfuse#394.


FUSE for macOS 3.6.2

@bfleischer bfleischer released this Jul 11, 2017 · 38 commits to master since this release

  • Add support for macOS 10.13 beta 3

    KextManagerLoadKextWithURL() now returns kOSKextReturnSystemPolicy instead of kOSKextReturnNotLoadable when trying to load a kernel extension that has not yet been allowed by the user.

  • Minor cleanup of build scripts



FUSE for macOS 3.6.1

@bfleischer bfleischer released this Jul 8, 2017 · 42 commits to master since this release

  • Fix a bug that prevented not-yet-alive volumes from being unmounted by calling fuse_unmount(). For details see osxfuse/osxfuse#332.

  • Fix FUSE device leak when serving multiple volumes from a single process by making sure FUSE device handles are being closed in case a volume is unmounted externally. For details see osxfuse/osxfuse#385.

  • Drop set-user-ID of mount helper before mounting a FUSE volume.

  • Add "Complete installation" installer section on macOS 10.13

    On macOS 10.13 users need to explicitly consent before new kernel extensions can be loaded. The installer plugin guides users through the steps required to allow loading the FUSE system extension before completing the installation.

  • Display an alert in case loading the FUSE system extension has not been allowed, yet.

    FUSE will display an alert containing instructions to allow the system extension and will post a notification letting the file system server know that the kernel extension could not be loaded.

  • Move volume icon to file system bundle

    FUSE will fall back to the default icon in case no volume icon was specified, when mounting the volume. In previous releases the fallback mechanism was only available to file systems linking against the FUSE framework.

  • Add retina version of logo in the FUSE Preference Pane. For details see osxfuse/osxfuse#388.


FUSE for macOS 3.6.0

@bfleischer bfleischer released this Jun 12, 2017 · 52 commits to master since this release

  • Add experimental support for macOS 10.13. This fixes osxfuse/osxfuse#380.

  • Add experimental support for Xcode 9.0

  • Add experimental support for utime_omit_ok when building FUSE using the macOS 10.13 SDK. utime_omit_ok support is disabled in this release.

  • Fix an issue that can cause network file systems to be unmounted in case a file is removed and then re-created remotely.

    If a file disappears "behind our back" the corresponding vnode is soft-revoked. If a new file appears with the same inode number we need to make sure not to reuse the revoked vnode. For details see osxfuse/kext#7.

  • Starting with version 3.6.0 official FUSE for macOS releases will be signed with the OpenPGP key 0x135F164B411BAA1F4A4BCD37617A3461802608A1.

    After importing the key you can verify downloaded release files using the following commands:

    $ gpg2 --verify osxfuse-3.6.0.sha256.sig 
    gpg: assuming signed data in 'osxfuse-3.6.0.sha256'
    gpg: Signature made Tue Jun 13 00:14:24 2017 CEST
    gpg:                using RSA key 135F164B411BAA1F4A4BCD37617A3461802608A1
    gpg: Good signature from "Benjamin Fleischer <>"
    $ shasum -a 256 -c osxfuse-3.6.0.sha256
    osxfuse-3.6.0.dmg: OK
    osxfuse-3.6.0-debug.tbz: OK

    This addresses osxfuse/osxfuse#376.

  • Minor code cleanup


FUSE for macOS 3.5.8

@bfleischer bfleischer released this Apr 16, 2017 · 61 commits to master since this release

  • Fix return value of _PC_CASE_SENSITIVE pathconf(2) selector. Previous releases returned true even if the file system is case insensitive.


FUSE for macOS 3.5.7

@bfleischer bfleischer released this Apr 14, 2017 · 63 commits to master since this release

  • Add support for _PC_FILESIZEBITS pathconf(2) selector and NSURL's NSURLVolumeMaximumFileSizeKey resource key. For more information see osxfuse/osxfuse#369.

  • Improve compatibility with Core Services. Do not block calls from coreservicesd (which is running as root) even if allow_root and allow_other are not set. For more information see osxfuse/osxfuse#369.

  • Fix macOS version check when installing FUSE for macOS. Fall back to deployment target when building "distribution" target without additional parameters.


FUSE for macOS 3.5.6

@bfleischer bfleischer released this Mar 15, 2017 · 70 commits to master since this release

  • Fix race condition when using auto_xattr causing setxattr(2) to fail

    The kernel's fallback mechanism for managing extended attributes is not thread-safe. To address the issue FUSE will no longer set the O_EXCL flag when creating Apple Double files. See osxfuse/osxfuse#354 for details.

  • Fix unresponsive 32 bit file systems on 64 bit Macs

    FUSE uses a socket pair to pass the FUSE device file descriptor to the file system process. Control messages created using the CMSG macros in the Mac OS X 10.5 SDK are not properly aligned. This resulted in 32 bit file systems being unresponsive on 64 bit Macs.

  • Add support for preferences URL scheme. See osxfuse/prefpane#4 for details.

  • Fix macOS version check when installing FUSE for macOS


FUSE for macOS 3.5.5

@bfleischer bfleischer released this Jan 29, 2017 · 75 commits to master since this release

  • Add support for nanosecond time resolution. Creation, modification, … times of files can now be specified with nanosecond time resolution. This addresses osxfuse/osxfuse#346.

  • Improve compatibility with Finder. Do not block open(2) calls from syspolicyd (which is running as root) even if allow_root and allow_other are not set.

  • Improve compatibility with Finder. Do not block listxattr(2) calls by root even if allow_root and allow_other are not set.

  • Add support for building "release" target on macOS 10.12


FUSE for macOS 3.5.4

@bfleischer bfleischer released this Dec 1, 2016 · 79 commits to master since this release

  • Fix bug in FUSE kernel extension that can trigger a kernel panic

    Release biglock in fuse_vnop_write() before calling uiomove(). Not doing so can trigger a kernel panic when using the direct_io mount-time option. For details see osxfuse/osxfuse#330.

  • Fix rare file system deadlock when mounting a FUSE volume

    In rare cases mount(2) performs file system operations. Calling mount_osxfuse synchronously from libosxfuse could result file system deadlocks.

  • Fall back to the setattr_x() callback if the file system does not implement the fsetattr_x() callback.