New Features
Disk Data Cache
Introduces a local disk cache layer that persists OSS object data on local storage, significantly reducing repeated network fetches.
- New
--disk_data_cache_dirand--disk_data_cache_sizemount option to enable disk caching - Supports
io_engineconfiguration
Unprivileged Mount
New fuse_device_fd option allows external programs to pre-open /dev/fuse and pass it to ossfs2, enabling mount without root privileges.
Mount Info Display
mount output now shows bucket.endpoint:/prefix as the mount source for easier identification.
Performance
- Multi-GPU model loading throughput: Reduced OSS bandwidth waste in default mode through smarter prefetch window control and block cache retention, freeing up network bandwidth for higher concurrent read throughput in multi-GPU checkpoint loading scenarios.
- LRUMap memory optimization: String keys in staged inode cache now stored once (map uses
string_view), significantly reducing memory for large inode counts.
Refactoring
- Cache module: Introduced
ICache/ICacheStore/CacheHandleabstraction; renamed manager classes for clarity (e.g.BlockCacheManager→BlockCache,BlockCache→BlockCacheStore). - Writer module: Split
OssWriterintoOssNormalWriterandOssAppendableWriter. - IObjStore interface: Extracted generic object store abstraction from OSS client.
Bug Fixes
- Reader refill underflow : Fixed
uint64_tunderflow inrefill_sizewhenrefill_off >= remote_size. - Rename errno : Changed misleading
EMFILEtoE2BIGfor oversized directory rename.
Dependencies
- PhotonLibOS: Upgraded from 0.9.3 to 2bebdafb (0.9.4+). Includes FIEMAP flag fix, full_file_cache eviction fix,
thread_yieldperformance fix, custom logger adaptation (microsecond precision, function name logging), and UDS server use-after-free fix. - cityhash: Added as new dependency for cache key hashing.