NVMe Write Zeroes
NVMe Write Zeroes is an NVM command for clearing logical blocks without a host-supplied zero-filled data payload.
For range operation (NSZ=0), NVM Command Set 1.3 ties successful completion to zero-valued subsequent successful reads until another write to that LBA range. DULBE can still cause an error after deallocation. DEAC=1 requests deallocation; DEAC=0 does not prohibit it when deallocated reads support zero values. [1]
Linux v6.16 sets DEAC on its normal Write Zeroes path only when REQ_NOUNMAP is absent and the namespace DEAC feature (NVME_NS_DEAC) is set. Its separate controller-quirk path can instead issue Dataset Management. A block-layer operation name therefore does not uniquely identify the transmitted command. [2]
With NSZ=1, successful completion requires checking LBACZ. LBACZ=1 identifies whole-namespace clearing, while LBACZ=0 identifies the NLB range. Error completion does not establish that nothing was cleared. These are command-result distinctions, not physical-remanence evidence. [1]
Relations
Limitations
- Logical zero readback is not proof that hidden physical copies were erased. [3]
Citations
- NVM Express NVM Command Set 1.3, section 3.3.8. Copyright 2008-2026 NVM Express, Inc. All rights reserved.
- Linux v6.16: nvme_setup_write_zeroes and namespace DEAC selection
- Wei et al., FAST 2011: Reliably Erasing Data From Flash-Based Solid State Drives, sections 2-3
Further reading
Sources & caveats
- Protocol semantics from NVM Command Set 1.3 section 3.3.8, printed pages 57-61; the NSZ completion-scope supplement uses section 3.3.8.1 and Figure 88.
- Linux v6.16 source inspection, not a device trace. FAST 2011 provides historical SSD-remanence evidence, not a test of NVMe Write Zeroes or contemporary drives.