Releases · GoogleCloudPlatform/gcsfuse

Gcsfuse v3.7.1

Improved the retry logic in new read path for Rapid Buckets

Gcsfuse v3.7.0

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 compatibility: This read path is incompatible with File Cache. To use File Cache, users must explicitly set enable-kernel-reader to false during mounting; otherwise, the cache 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

  • 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

  • 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

  • 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

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

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

Gcsfuse v3.2.3

Gcsfuse v3.5.4

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

Gcsfuse v3.5.3

Fix to honour machine-type from config file above the one coming from metadata server PR#4083.