Skip to content

Releases: GoogleCloudPlatform/gcsfuse

Gcsfuse v3.7.2

06 Mar 06:01

Choose a tag to compare

Bug fixes & Improvements

Premature EOF on kernels with large page-sizes

Aggressive kernel read-ahead on ARM64 architectures with large page-sizes previously caused premature-EOFs on reads. This release provides a critical stability fix for GCSFuse on ARM64 architectures configured with large page sizes (e.g. Google Cloud A4X and A4X Max instances with 64 KiB memory pages).

Updated handling of appends on Rapid Buckets

We fixed append failures in Rapid storage by eliminating the unnecessary Metadata call that caused issues due to stale server response for same generation objects.

Gcsfuse v3.7.1

06 Feb 13:49

Choose a tag to compare

Features:

  • Rapid Buckets Read Performance Improvement: Introduced a new read path for Rapid buckets that optimizes performance by leveraging the read ahead algorithm implemented by kernel which is optimised over the years.

    • Configuration Requirements: To use the new reader, we require a few configuration changes on the machines. These configuration changes are fully managed in the GKE environment. On non-GKE environments, GCSFuse requires sudo permissions or users must manually configure read_ahead_kb, max_background, and congestion_threshold. Default config values:
      • read_ahead_kb: 16384
      • max_background: min(max(12, 2*numCPU), 192)
      • congestion_threshold: (3 * max_background)/4
      • Manual configuration of these settings is shown below using a c4-standard-192 instance:
    export MOUNT_POINT=<mount path>
    
    echo 16384 | sudo tee /sys/class/bdi/0:$(stat -c "%d" $MOUNT_POINT)/read_ahead_kb
    echo 192 | sudo tee /sys/class/bdi/0:$(stat -c "%d" $MOUNT_POINT)/max_background
    echo 144 | sudo tee /sys/class/bdi/0:$(stat -c "%d" $MOUNT_POINT)/congestion_threshold
    
    • Limitations :
      1. File Cache & Buffered Reader compatibility: This read path is incompatible with File Cache & Buffered Reader. To use these features, users must explicitly set enable-kernel-reader to false during mounting; otherwise, these features will remain inactive.
      2. Dynamic Mounts: The new read path is not supported when using dynamic mounting.

Bug fixes & Improvements:

  • Improved the retry logic in new read path for Rapid Buckets

  • #3974

    Improved handling of errors encountered while deleting objects in non-atomic rename flow(Applicable on non-HNS buckets). GCS Fuse handles the metadata eviction and file cache updation automatically corresponding to deleted objects and there is no action required from the customer.

Dependency Upgrades / CVE fixes

  • Go SDK upgrade from v1.59.1 to 1.59.2

Full Changelog: v3.6.0...v3.7.1

Gcsfuse v3.7.0

03 Feb 07:17
51c09fd

Choose a tag to compare

Gcsfuse v3.7.0 Pre-release
Pre-release

Features:

  • Rapid Buckets Read Performance Improvement: Introduced a new read path for Rapid buckets that optimizes performance by leveraging the read ahead algorithm implemented by kernel which is optimised over the years.

    • Configuration Requirements: To use the new reader, we require a few configuration changes on the machines. These configuration changes are fully managed in the GKE environment. On non-GKE environments, GCSFuse requires sudo permissions or users must manually configure read_ahead_kb, max_background, and congestion_threshold. Default config values:
      • read_ahead_kb: 16384
      • max_background: min(max(12, 2*numCPU), 192)
      • congestion_threshold: (3 * max_background)/4
      • Manual configuration of these settings is shown below using a c4-standard-192 instance:
    export MOUNT_POINT=<mount path>
    
    echo 16384 | sudo tee /sys/class/bdi/0:$(stat -c "%d" $MOUNT_POINT)/read_ahead_kb
    echo 192 | sudo tee /sys/class/bdi/0:$(stat -c "%d" $MOUNT_POINT)/max_background
    echo 144 | sudo tee /sys/class/bdi/0:$(stat -c "%d" $MOUNT_POINT)/congestion_threshold
    
    • Limitations :
      1. File Cache & Buffered Reader compatibility: This read path is incompatible with File Cache & Buffered Reader. To use these features, users must explicitly set enable-kernel-reader to false during mounting; otherwise, these features will remain inactive.
      2. Dynamic Mounts: The new read path is not supported when using dynamic mounting.

Bug fixes & Improvements:

  • #3974

    Improved handling of errors encountered while deleting objects in non-atomic rename flow(Applicable on non-HNS buckets). GCS Fuse handles the metadata eviction and file cache updation automatically corresponding to deleted objects and there is no action required from the customer.

Dependency Upgrades / CVE fixes

  • Go SDK upgrade from v1.59.1 to 1.59.2

Gcsfuse v3.6.0

20 Jan 13:44

Choose a tag to compare

  • Regex-based File Cache Filtering

    • GCSFuse now provides granular control over the set of files cached when file cache mode is enabled through regular expressions, enabling users to prioritize critical datasets. For e.g., you can now specify only parquet files to be cached over the entire dataset. This feature is helpful in AI training where you want to expose raw data via fuse but want to control specific datasets to be cached like parquet files or Web Datasets.
    • This feature introduces two optional configuration parameters: file-cache:include-regex and file-cache:exclude-regex. These are accessible via the command-line flags --file-cache-include-regex and --file-cache-exclude-regex, respectively.
    • Regex patterns are evaluated against the complete object path. Each of these options can be used independently. When configured, files matching the exclude-regex are ineligible for caching. Similarly, when configured, only files matching the include-regex will be cached.
  • Improved handling of paths with special characters

    • GCSFuse gracefully handles objects with names like //, . or .., ensuring the file operations do not throw errors.
      • Listing: Objects with special characters like //, . or .. that conflict with traditional file system hierarchy are hidden from file listings.
      • Renaming or deleting a directory affects all contained objects, including objects with special characters. This prevents these special objects from being accidentally left behind.
  • Sparse file download behind an experimental flag

    • Added support for downloading requested chunks instead of complete files when filecache is enabled. This is helpful for scenarios where entire file can’t be fit in the cache due to its size or to reduce egress from bucket where you only need a part of the file but not the entire file.Currently this feature is in experimental mode and behind a flag --experimental-enable-chunk-cache or file-cache:experimental-enable-chunk-cache config.

Bug Fixes & Improvements

  • Improves HNS folder listing by ~28x. In our benchmarking, this improvement reduced the time to list a folder containing 1000 folders from 1.7 seconds to 60ms. (PR#4099) (Issue#4075)

  • Buffered Read

    • Zero Copy - 6x throughput improvement over default reader
      • Removed a memory copy from the GCSFuse layer for the buffered reader, resulting in over 20% throughput improvement compared to the previous buffered reader implementation and a 6x throughput increase compared to the default reader. This optimization also reduces the CPU overhead previously required for data copy.
    • Support for Sequential-after-Random Workloads
      • GCSFuse now automatically switches back to the buffered reader if the workload's read pattern becomes sequential after a period of random access
  • Redundant ListObject check on mount initialization is removed.

Dependency Upgrades / CVE fixes

  • Go SDK patch release upgrade to v1.58.0

Full Changelog: v3.5.0...v3.6.0

Gcsfuse v3.5.6

13 Jan 06:33

Choose a tag to compare

  • Improved mount time by removing redundant ListObject call during the mount process. Bucket existence and access checks will be handled by the existing getStorageLayout call.

Gcsfuse v3.2.4

07 Jan 12:59

Choose a tag to compare

  • Improved mount time by removing redundant ListObject call during the mount process. Bucket existence and access checks will be handled by the existing getStorageLayout call.

Gcsfuse v3.5.5

17 Dec 05:57

Choose a tag to compare

Bug Fixes

  • Upgraded the go-dns library to v1.3.0 which contains a fix for DNS lookups for machines where send is restricted but sendto is not (#4151) .

  • Removed the reader attribute from the gcs/read_bytes_count metric to bring the metric's cardinality back within recommended limits, preventing potential issues with metric collection and querying (#4142).

  • Fixed a regression introduced in v3.5.1 where the enable-google-lib-auth flag defaulted to true, causing unnecessary cred.UniverseDomain queries even when --anonymous-access was enabled. This causes the authentication to fail. This behavior is now corrected in v3.5.5 to properly bypass all authentication checks..(#4093).

Gcsfuse v2.11.5

10 Dec 17:25

Choose a tag to compare

Fixes GO-2025-4155 by upgrading Golang from 1.24.10 to 1.24.11.

Gcsfuse v3.2.3

09 Dec 13:42

Choose a tag to compare

Dependency Upgrades / CVE fixes

Gcsfuse v3.5.4

04 Dec 16:34
c36746f

Choose a tag to compare

Fixes GO-2025-4155 by upgrading Golang from 1.24.10 to 1.24.11.