osxfuse

FUSE extends macOS by adding support for user space file systems

OTHER License

Stars
8.7K

Bot releases are hidden (Show)

osxfuse - FUSE for macOS 3.9.0

Published by bfleischer over 5 years ago

  • Starting with this release, FUSE for macOS will be notarized by Apple and the release disk image signed, in addition to the installer itself.

  • The hardened runtime is enabled for all binaries shipping with FUSE for macOS. Please make sure to disable third party library validation when enabling the hardened runtime for your file system binary, if you are using any FUSE libraries or frameworks.

  • Add support for mount option noautonotify. If the mount option noautonotify is present, FUSE will not post file system change notifications automatically, in case remote changes are detected.

  • Invalidate file attributes after renaming files. An invalidate is required because the file's atime changes due to the rename. Without invalidating, stat(2) calls might return a wrong atime. For details see osxfuse/osxfuse#568 and osxfuse/kext#12.

  • Drop Bridge Support for the FUSE framework.

osxfuse - FUSE for macOS 3.8.3

Published by bfleischer almost 6 years ago

  • Add support for reusing a vnode after renaming the corresponding file system object by updating the original vnode's parent and name after the rename is completed successfully. For details see osxfuse/osxfuse#466, osxfuse/osxfuse#553, and osxfuse/kext#11.

  • Work around a bug in ls when the volicon module is used. ls prints garbage data in case the extended attribute com.apple.FinderInfo is associated with the volume's root directory.

  • Fix bug in the build script to generate an autoinstaller rule for macOS 10.14

osxfuse - FUSE for macOS 3.8.2

Published by bfleischer over 6 years ago

  • Add support for macOS 10.14 Beta 2

  • Minor code cleanup of kernel extension

osxfuse - FUSE for macOS 3.8.1

Published by bfleischer over 6 years ago

  • Add experimental support for macOS 10.14

  • Add support for Xcode 10

  • Perform user space directory loop check. This fixes a hang when renaming directory loops. For details see osxfuse/osxfuse#495.

  • Workaround for NULL context in getattr vnode operation. Third party kernel extensions might call getattr with a NULL context. As a workaround the kernel extension falls back to the current thread's context. For details see osxfuse/osxfuse#510.

  • Fix bug when closing an already removed file. Open file handles need to be closed even if the corresponding vnode has already been revoked, otherwise the user space file system daemon will leak files. For details see osxfuse/osxfuse#488.

osxfuse - FUSE for macOS 3.8.0

Published by bfleischer over 6 years ago

  • Add support for DEBUG and DEVELOPMENT kernels. Previous versions of the FUSE kernel extension did only support RELEASE kernels.

  • Add support for O_APPEND flag of open(2) when running in direct_io mode

  • Add high-level support for invalidating files

    To invalidate caches for a specific path and posting a file system event notifying subscribed processes, e.g. Finder, of remote file changes, call one of the following functions:

    • fuse_invalidate_path() for high-level FUSE file systems
    • -[GMUserFileSystem invalidateItemAtPath:error:] for Objective-C or Swift file systems
  • Fix file handle bug in exchangedata(2). Relying on vnode_update_identity() resulted in open file handles pointing to the wrong file after calling exchangedata(2).

  • Fix "vnode reclaim in progress" kernel panic.

  • Do not post unnecessary file system events because they might trigger file system operations. Especially expensive readdir(3) calls should be avoided.

    • Do not post automatic file system events if we already know that we will not be able to detect remote changes reliably. Invalidating a vnode's cached attributes essentially means that we expect the attributes to have changed in user space.
    • Fix readdir(3) loop when using the high level volicon module. Addresses osxfuse/osxfuse#434.
  • Purge vnode from namecache when a FUSE_NOTIFY_DELETE notification is received by the kernel extension and the file has been deleted and re-created in the meantime.

  • Always use standard system font for about text in FUSE preference pane.

osxfuse - FUSE for macOS 3.7.1

Published by bfleischer about 7 years ago

  • Fix a bug in the high-level C API that resulted in the file system size being reported as 0 bytes when using file system modules. For details see osxfuse/osxfuse#414.

  • Add support for building the mount helper with Xcode 9. For details see osxfuse/support#5.

  • Add support for building the "Complete installation" installer plugin with Xcode 9. For details see osxfuse/support#5.

osxfuse - FUSE for macOS 3.7.0

Published by bfleischer about 7 years ago

  • 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

osxfuse - FUSE for macOS 3.6.3

Published by bfleischer over 7 years ago

  • 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.

osxfuse - FUSE for macOS 3.6.2

Published by bfleischer over 7 years ago

  • 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

osxfuse - FUSE for macOS 3.6.1

Published by bfleischer over 7 years ago

  • 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.

osxfuse - FUSE for macOS 3.6.0

Published by bfleischer over 7 years ago

  • 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 <[email protected]>"
    $ 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

osxfuse - FUSE for macOS 3.5.8

Published by bfleischer over 7 years ago

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

Published by bfleischer over 7 years ago

  • 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.

osxfuse - FUSE for macOS 3.5.6

Published by bfleischer over 7 years ago

  • 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

osxfuse - FUSE for macOS 3.5.5

Published by bfleischer over 7 years ago

  • 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

osxfuse - FUSE for macOS 3.5.4

Published by bfleischer almost 8 years ago

  • 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.

osxfuse - FUSE for macOS 3.5.3

Published by bfleischer about 8 years ago

  • Fix volume icon support on macOS 10.12

    Fixes an incompatibility on macOS 10.12, resulting in the volume icon not being displayed in Finder, when using mount-time options volicon, local, and extended_security at the same time.

  • Shorten preference pane name from "FUSE for macOS" to "FUSE". Addresses osxfuse/osxfuse#317 and osxfuse/osxfuse#319.

  • Fix error when building the kernel extension loader with legacy SDKs

    Starting with the Mac OS X 10.6 SDK libkern/OSKextLib.h tries to include System/libkern/OSReturn.h, which does not exist in the SDK. Apple fixed the issue in the OS X 10.11 SDK.

  • Fix generation of BridgeSupport files for Objective-C FUSE framework on Mac OS X 10.6. Addresses osxfuse/osxfuse#321.

  • Fix error when building FUSE mounter on Mac OS X 10.6. Addresses osxfuse/osxfuse#318.

  • Rename distribution package symlink

    Append .pkg file extension to distribution package symlink in release disk image. This fixes osxfuse/osxfuse#322.

  • Improve readability of release disk image background

osxfuse - FUSE for macOS 3.5.2

Published by bfleischer about 8 years ago

  • Fix an interrupt handling issue on macOS 10.12 that can trigger file system hangs. See osxfuse/osxfuse#314 for more information.
osxfuse - FUSE for macOS 3.5.1

Published by bfleischer about 8 years ago

  • Let mount_osxfuse load the FUSE kernel extension

    When mounting a FUSE volume, libosxfuse used to be responsible for loading the kernel extension by calling load_osxfuse. Starting with this release mount_osxfuse will call load_osxfuse. This allows us to further decouple libosxfuse from the FUSE kernel extension.

  • Improve kernel extension loader error handling

  • libosxfuse is no longer linked against CoreFoundation.framework

osxfuse - FUSE for macOS 3.5.0

Published by bfleischer about 8 years ago

  • Improve macOS 10.12 support by creating nonexistent mount points

    In macOS 10.12 the permissions of the root-owned /Volumes directory have changed from 1777 (rwxrwxrwt) to 1755 (rwxr-xr-t). As a result admin privileges are required to create mount points in /Volumes.

    In order to allow non-admin users to mount FUSE volumes in /Volumes FUSE will create non-existent mount points automatically.

  • Deprecate non-portable libosxfuse functions

    File system binaries using these functions, will continue to work with FUSE for macOS 3.x. However, support will be dropped in the next major release. The following functions have been deprecated:

    • fuse_os_version_major_np()
    • fuse_device_fd_np()
    • fuse_mountpoint_for_fs_np()
  • Revise mount status detection in Objective-C FUSE framework to remove dependency on the deprecated function fuse_device_fd_np()

  • Pass open flags to Objective-C FUSE framework based file systems

    The GMUserFileSystemOperations delegate method createFileAtPath:attributes:userData:error: has been deprecated in favor of the new method createFileAtPath:attributes:flags:userData:error:, that allows passing open flags to the file system delegate. See open(2) for details.

    File systems implementing the old delegate method, will continue to work with FUSE for macOS 3.x. However, support will be dropped in the next major release.

  • Add support for querying file system operation context information for Objective-C FUSE framework based file systems

    The context of the current file system operation is only valid during a file system delegate callback. The NSDictionary returned by +[GMUserFileSystem currentContext] contains the following keys:

    • kGMUserFileSystemContextUserIDKey
    • kGMUserFileSystemContextGroupIDKey
    • kGMUserFileSystemContextProcessIDKey

    See GMUserFileSystem.h for details.

  • Update Objective-C FUSE framework availability macros

    File system binaries built with version 3.5 of the Objective-C FUSE framework are not compatible with previous framework versions unless the following preprocessor macro is defined before importing the framework header.

    #define GM_VERSION_MIN_REQUIRED GM_OSXFUSE_2
    
  • Minor optimizations and code cleanup