NVMe volatile write cache
The NVMe Volatile Write Cache feature controls whether a reported volatile write cache is enabled.
Presence and enable state answer different questions. Base 2.3 reports controller cache presence through Identify Controller VWCP; Get Features 06h with selection 0, 1 or 2 returns the selected WCE value. Get Features selection 0 requests the current value, while 1 and 2 request default and saved values. Selection 3 instead returns supported capabilities: bit 0 means Saveable, not Write Cache Enable. A saved-value request falls back to the default when the feature is not saveable or no saved value exists; a successful read does not prove a saved setting exists. An unsuccessful query is not a disabled-cache reading. [1] [3]
Check the namespace too. Base 2.3 defines VWCNP: when set, no volatile write cache is present for that namespace and the host should disregard controller-level VWCP for that namespace. Section 7.2 explicitly covers this distinction with Flexible Data Placement enabled. [1]
A cache whose contents are guaranteed to reach nonvolatile storage on power loss is classified as nonvolatile for this feature. Consequently, absent VWC does not establish that a device is DRAM-less. These fields describe a protocol contract, not a physical power-cut test. [1] [2]
With a present cache disabled, Base 2.3 requires user data written to a namespace to be persistent. That is not filesystem transaction atomicity. With caching enabled, Flush covers commands completed before its submission for the specified namespaces, not merely earlier submissions. Individual writes may already be persistent. [1]
Relations
- related
- NVMe, Storage cache flush, Force Unit Access, Power loss protection, Write-back cache, NVMe FDP
Limitations
- Controller cache presence alone does not describe every namespace or establish end-to-end application durability. [1]
Citations
- NVM Express Base 2.3, Figures 196, 199, 328, 335, 408; sections 4.4, 5.2.11.1, 5.2.26.1.4 and 7.2. Copyright 2025 NVM Express, Inc., all rights reserved.
- Microsoft: NVME_CDW11_FEATURE_VOLATILE_WRITE_CACHE, enable state and protected-cache scope.
- nvme-cli v2.11: nvme-get-feature, current/default/saved selection.