@bfleischer bfleischer released this Jul 1, 2018 · 33 commits to master since this release

Assets 6
  • Add support for macOS 10.14 Beta 2

  • Minor code cleanup of kernel extension

Pre-release
Pre-release

@bfleischer bfleischer released this Jun 18, 2018 · 33 commits to master since this release

Assets 6
  • 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 #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 #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 #488.

@bfleischer bfleischer released this May 22, 2018 · 33 commits to master since this release

Assets 6
  • 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 #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.

@bfleischer bfleischer released this Sep 21, 2017 · 33 commits to master since this release

Assets 6
  • 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 #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.

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

Assets 6
  • 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 #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

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

Assets 6
  • 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 #394.

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

Assets 6
  • 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

Pre-release
Pre-release

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

Assets 6
  • Fix a bug that prevented not-yet-alive volumes from being unmounted by calling fuse_unmount(). For details see #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 #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 #388.

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

Assets 6
  • Add experimental support for macOS 10.13. This fixes #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 <fleiben@gmail.com>"
    $ shasum -a 256 -c osxfuse-3.6.0.sha256
    osxfuse-3.6.0.dmg: OK
    osxfuse-3.6.0-debug.tbz: OK
    

    This addresses #376.

  • Minor code cleanup

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

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