osxfuse

FUSE extends macOS by adding support for user space file systems

OTHER License

Stars
8.7K

Bot releases are visible (Hide)

osxfuse - macFUSE 4.8.0 Latest Release

Published by bfleischer 4 months ago

  • Add support for macOS 15
osxfuse - macFUSE 4.7.2

Published by bfleischer 6 months ago

  • Add support for volume names and volume icon paths (mount options volname and iconpath) that contain commas or backslashes. Commas and backslashes need to be escaped by a preceding backslash character.

  • Improve volicon mount option shortcut handling

  • Add rudimentary support for incremental builds and clean up build scripts

osxfuse - macFUSE 4.7.1

Published by bfleischer 6 months ago

  • Work around "Allow loading system extension" loop

    To support new macOS features, macFUSE includes multiple variants of the macFUSE kernel extension. In some cases, the macOS kernel manager tries to load the wrong variant and prompts the user to allow loading it. Then after the necessary restart, the user is prompted again, for a different variant. This continues forever.

    Starting with this release, all kernel extension variants use unique bundle identifiers. Addresses osxfuse/osxfuse#1011.

  • Revert to semantic version number for kernel extension variants

  • Enable support for non-blocking I/O for FUSE file descriptor. For details see osxfuse/osxfuse#536.

  • Use macOS 14.4 SDK instead of macOS 14.2 SDK to build macOS 14 kernel extension

osxfuse - macFUSE 4.7.0

Published by bfleischer 7 months ago

osxfuse - macFUSE 4.6.2

Published by bfleischer 7 months ago

osxfuse - macFUSE 4.6.1

Published by bfleischer 8 months ago

  • Work around unintended modification time updates on Apple Silicon Macs running macOS 12 and later

    When mapping I/O buffers to memory in the kernel extension, the desired memory protection level needs to be specified on Apple Silicon Macs. Mapping the buffer with the default protection level results in unnecessary writes and unintended modification time updates in the future. However, there is no public API for specifying the desired memory protection level on macOS 11.

    As a result of this change, macFUSE ships with dedicated kernel extensions for macOS 12 and macOS 14 in addition to the macOS 11 kernel extension.

  • Add "Open Getting Started" button to the "System Extension Blocked" alert that is displayed when the user is prompted to allow loading the kernel extension. Clicking on "Open Getting Started" opens the Getting Started wiki document.

  • Remove ioctl FSCTLSETACLSTATE (extended security). Extended security (including support for ACLs) can be enabled at mount time by using the extended_security option.

  • Remove unimplemented ioctl FUSEDEVGETMOUNTERPID from headers

  • Clean up kernel extension code

osxfuse - macFUSE 4.6.0

Published by bfleischer 10 months ago

  • Add support for extended access modes. When the FUSE_CAP_ACCESS_EXTENDED capability bit is set, the following more granular access modes are passed to the access() callback in addition to the standard R_OK, W_OK and X_OK modes.

    _READ_OK        read file data / read directory
    _WRITE_OK       write file data / add file to directory
    _EXECUTE_OK     execute file / search in directory
    _DELETE_OK      delete file / delete directory
    _APPEND_OK      append to file / add subdirectory to directory
    _RMFILE_OK      remove file from directory
    _RATTR_OK       read basic attributes
    _WATTR_OK       write basic attributes
    _REXT_OK        read extended attributes
    _WEXT_OK        write extended attributes
    _RPERM_OK       read permissions
    _WPERM_OK       write permissions
    _CHOWN_OK       change ownership
    
  • Add fair_locking mount option. By default, macFUSE uses an unfair locking mechanism to ensure file system consistency. This can lead to issues when the file system is processing an extreme amount of operations in parallel. In this case, some file system operations might be delayed too long for real-time tasks. The fair_locking option ensures that file system operations are processed fairly. Fair locking comes a little performance overhead compared to unfair locking, but it might be the better option when dealing with high pressure situations.

  • Address kernel panic on macOS 14 when a macFUSE volume is shared over SMB. For details see osxfuse/osxfuse#982.

osxfuse - macFUSE 4.5.0

Published by bfleischer over 1 year ago

  • Add support for macOS 14

  • Add support for Xcode 15

  • Add Getting Started link to "Completion" installer phase. The document contains detailed instructions on how to enable macFUSE on newer versions of macOS.

osxfuse - macFUSE 4.4.3

Published by bfleischer over 1 year ago

  • Work around unavailable VFS plugin. Starting with macOS 12, some users have been reporting that the VFS plugin is not available when they are trying to mount a volume, although the kernel extension is loaded. Starting with this release, the kernel extension loader works around this issue by trying to reload the kernel extension, in case the VFS plugin is not available.
osxfuse - macFUSE 4.4.2

Published by bfleischer over 1 year ago

  • Work around installer issue on macOS 13. macOS 13.2 seems to be unable to open the installer package soft link in the root of the distribution disk image. Using a hard link instead of a soft link resolves this issue. For details see osxfuse/osxfuse#932.

  • Use macOS 13.1 SDK instead of macOS 12.3 SDK to build macFUSE.

osxfuse - macFUSE 4.4.1

Published by bfleischer about 2 years ago

  • Fix issue that can render macFUSE volume unresponsive. In case a paging operation is triggered during a file system operation, macFUSE tries to acquire the node lock a second time which leads to a deadlock. The bug was introduced in version 4.3.1.
osxfuse - macFUSE 4.4.0

Published by bfleischer over 2 years ago

  • Add experimental support for macOS 13

  • Add experimental support for Xcode 14

osxfuse - macFUSE 4.3.1

Published by bfleischer over 2 years ago

  • Fix issue that can trigger a kernel panic when unmounting a volume with read/write node locking enabled. With read/write node locking disabled (default), the kernel extension does not panic.
osxfuse - macFUSE 4.3.0

Published by bfleischer over 2 years ago

  • Improve performance by adding support for read/write node locking. File systems should declare this capability, if they are thread safe with respect to file system operations involving the same node. Otherwise, file system operations (involving the same node) are processed serially. See Declaring File System Capabilities for details.

  • Fix minor memory leak in kernel extension

  • Work around pointers being censored in kernel logs. By default, macOS removes all kernel memory addresses from logs. Unfortunately, this complicates debugging threading and locking issues.

  • Remove obsolete conditionals M_OSXFUSE_ENABLE_INTERIM_FSNODE_LOCK and M_OSXFUSE_ENABLE_BIG_LOCK from the kernel extension and clean up code

  • Update build scripts for Xcode 13

osxfuse - macFUSE 4.2.5

Published by bfleischer over 2 years ago

  • Fix race condition that can trigger a kernel panic in rare cases when using fuse_lowlevel_notify_inval_inode(), fuse_invalidate_path() or [GMUserFileSystem invalidateItemAtPath:error:]. See osxfuse/osxfuse#878 for details.

  • Update build tools to use notarytool instead of altool for notarizing releases.

  • Use macOS 12.3 SDK to instead of macOS 12.1 SDK to build macFUSE.

osxfuse - macFUSE 4.2.4

Published by bfleischer almost 3 years ago

  • Improve support for macOS 12. Starting with macOS 12, the process diskimagesiod needs to be able to access disk images in order for them to be mounted. Allow diskimagesiod to access the volume even if the allow_other mount option has not been specified.

  • Use macOS 12.1 SDK instead of macOS 11.3 SDK to build macFUSE.

osxfuse - macFUSE 4.2.3

Published by bfleischer almost 3 years ago

  • Fix auto_cache mount option on Apple Silicon. When auto_cache is enabled, we try to detect remote file changes in the getattr callback and invalidate the file's cache. In previous releases local file system operations could mask remote writes, resulting in the local cache not being invalidated. On Apple Silicon this could result in subsequent writes of stale cache data.
osxfuse - macFUSE 4.2.2

Published by bfleischer almost 3 years ago

  • Add workaround to reduce unnecessary writes on Apple Silicon.

  • Declare support for 64-bit object IDs (VOL_CAP_FMT_64BIT_OBJECT_IDS)

osxfuse - macFUSE 4.2.1

Published by bfleischer about 3 years ago

  • Fix race condition that can result in mkdir(2) returning EINVAL when creating multiple directories recursively. See osxfuse/osxfuse#832 for details.

  • Fix race condition when removing a directory or creating a symlink. See osxfuse/osxfuse#824 for details.

  • Add workaround for an infinite write loop when unmapping a file from memory on Apple Silicon.

    On Apple Silicon munmap(2) might trigger a write, regardless of whether the mapped file was modified or not. This unnecessary write would update the file's modification time, which in turn might cause security software to scan the file. If such a scanner maps the file to memory, the file's modification time will get updated again as soon as the scanner calls munmap(2). This triggers another scan cycle and so on.

  • Add workaround for a missing TARGET_OS_OSX macro in Xcode 13's sys/cdefs.h kernel header.

  • Improve support for non-latin languages by adding support for returning file names in the Unicode Normalization Form D (NFD) in the readdir callback.

    Finder and other macOS system tools expect file names to be in the D form. Using the C form can result in unexpected behavior, e.g. file names not being displayed in Finder under certain conditions. See Unicode Normalization Forms for details.

  • Improve detection of remote file changes and prevent unnecessary writes.

  • Set minimum I/O size value (iosize mount option) to the platform's page size. On Apple Silicon the minimum I/O size is 16,384 bytes. On Intel it is 4,096 bytes. Using an I/O size value less than the platform's page size can cause hangs.

  • Perform synchronous writes when unmapping a file from memory. When the last munmap(2) completes, the file will have been written to the backing storage.

osxfuse - macFUSE 4.2.0

Published by bfleischer over 3 years ago

  • Add experimental support for macOS 12.

  • Restore support for macOS 10.9 to 10.11. In Xcode 12.5, Apple fixed an issue that caused macOS 10.11 and earlier versions of macOS to reject packages signed in macOS 11 or later. With this fix, support for macOS 10.9 to 10.11 could be restored. This release supports macOS 10.9 to macOS 12.

  • Add experimental support for Xcode 13.

  • Update build scripts to add support for newer macOS SDKs and use macOS 11.3 SDK instead of the macOS 11.1 SDK to build macFUSE.

  • Add mount option norm_insensitive. When using the norm_insensitive option with a high-level file system, file names are normalized before performing a lookup. File names using different normalization forms will be treated as equal.

  • Fix bug in libfuse when calling the filler function in the readdir callback with non-zero offsets. The bug occurred when a filesystem client read a directory until the end, seeked using seekdir() to some valid non-zero position and called readdir(). A valid directory entry is expected, but NULL was returned instead.

    Please note: On macOS, telldir() may return zero the first time it is called. This is the reason the readdir callback of the loopback reference file system used to call the filler function with a zero offset for the first directory entry and non-zero offsets for all subsequent directory entries. This is a bug. Starting with this release readdir will return an I/O error (EIO) in case filler is called with zero and non-zero offsets.