From d3660f9dedb9d3d931336862bf6eb354bc945760 Mon Sep 17 00:00:00 2001 From: houseme Date: Tue, 7 Jul 2026 23:54:56 +0800 Subject: [PATCH] refactor(config): remove dead Direct I/O constants from zero_copy.rs (#4379) ENV_OBJECT_DIRECT_IO_ENABLE, DEFAULT_OBJECT_DIRECT_IO_ENABLE, ENV_OBJECT_DIRECT_IO_THRESHOLD and DEFAULT_OBJECT_DIRECT_IO_THRESHOLD were never read anywhere in the workspace. The real O_DIRECT read path landed in PR #4365 uses RUSTFS_OBJECT_DIRECT_IO_READ_ENABLE / RUSTFS_OBJECT_DIRECT_IO_READ_THRESHOLD (crates/ecstore/src/disk/local.rs). Keeping the near-identically named dead knobs invites operators to set the wrong variable and believe O_DIRECT is enabled. Co-authored-by: heihutu --- crates/config/src/constants/zero_copy.rs | 55 ------------------------ 1 file changed, 55 deletions(-) diff --git a/crates/config/src/constants/zero_copy.rs b/crates/config/src/constants/zero_copy.rs index 50f217eb3..0bd1d68af 100644 --- a/crates/config/src/constants/zero_copy.rs +++ b/crates/config/src/constants/zero_copy.rs @@ -56,58 +56,3 @@ pub const DEFAULT_OBJECT_MMAP_READ_ENABLE: bool = true; /// /// Prefer [`DEFAULT_OBJECT_MMAP_READ_ENABLE`]. pub const DEFAULT_OBJECT_ZERO_COPY_ENABLE: bool = DEFAULT_OBJECT_MMAP_READ_ENABLE; - -// ============================================================================= -// Direct I/O Configuration -// ============================================================================= - -/// Environment variable for Direct I/O enable (Linux only). -/// -/// When enabled, uses O_DIRECT flag to bypass OS page cache for large files. -/// This is only beneficial for specific workloads (databases, large sequential reads). -/// -/// - Purpose: Enable or disable Direct I/O for large file operations -/// - Acceptable values: `"true"` / `"false"` (case-insensitive) or a boolean typed config -/// - Semantics: When enabled, files larger than the threshold will use O_DIRECT flag; -/// this bypasses the OS page cache and transfers data directly between disk and application -/// - Example: `export RUSTFS_OBJECT_DIRECT_IO_ENABLE=true` -/// - Note: Direct I/O is disabled by default because it's only beneficial for specific -/// use cases. For most workloads, the OS page cache provides better performance. -pub const ENV_OBJECT_DIRECT_IO_ENABLE: &str = "RUSTFS_OBJECT_DIRECT_IO_ENABLE"; - -/// Default: Direct I/O is disabled. -/// -/// Direct I/O is disabled by default because it's only beneficial for specific use cases: -/// - Large file transfers (>128MB) -/// - Databases with their own cache -/// - Applications requiring predictable I/O latency -/// -/// For most workloads, the OS page cache provides better performance through: -/// - Read-ahead caching -/// - Write buffering -/// - Multi-use caching (same data cached for multiple operations) -pub const DEFAULT_OBJECT_DIRECT_IO_ENABLE: bool = false; - -/// Environment variable for Direct I/O minimum file size threshold. -/// -/// Files smaller than this size will use regular I/O even if Direct I/O is enabled. -/// This avoids the overhead of Direct I/O for small files where the OS page cache -/// is more effective. -/// -/// - Purpose: Set the minimum file size for Direct I/O operations -/// - Unit: Bytes -/// - Valid values: any positive integer (default: 134,217,728 bytes = 128 MB) -/// - Semantics: Only files larger than this threshold will use Direct I/O when enabled; -/// smaller files use regular buffered I/O -/// - Example: `export RUSTFS_OBJECT_DIRECT_IO_THRESHOLD=268435456` -/// - Note: The default threshold of 128MB balances the overhead of Direct I/O setup -/// against the benefits of bypassing the page cache for large files. -pub const ENV_OBJECT_DIRECT_IO_THRESHOLD: &str = "RUSTFS_OBJECT_DIRECT_IO_THRESHOLD"; - -/// Default Direct I/O threshold: 128 MB. -/// -/// Only files larger than 128MB will use Direct I/O when enabled. -/// Smaller files benefit from OS page cache. -/// -/// Formula: 128 * 1024 * 1024 = 134,217,728 bytes -pub const DEFAULT_OBJECT_DIRECT_IO_THRESHOLD: usize = 128 * 1024 * 1024;