On 2025/4/10 16:20, Keith Busch wrote: > On Thu, Apr 10, 2025 at 09:15:59AM +0200, Christoph Hellwig wrote: >> On Thu, Apr 10, 2025 at 11:52:17AM +0800, Zhang Yi wrote: >>> >>> Thank you for your review and comments. However, I'm not sure I fully >>> understand your points. Could you please provide more details? >>> >>> AFAIK, the NVMe protocol has the following description in the latest >>> NVM Command Set Specification Figure 82 and Figure 114: >>> >>> === >>> Deallocate (DEAC): If this bit is set to `1´, then the host is >>> requesting that the controller deallocate the specified logical blocks. >>> If this bit is cleared to `0´, then the host is not requesting that >>> the controller deallocate the specified logical blocks... >>> >>> DLFEAT: >>> Write Zeroes Deallocation Support (WZDS): If this bit is set to `1´, >>> then the controller supports the Deallocate bit in the Write Zeroes >>> command for this namespace... >> >> Yes. The host is requesting, not the controller shall. It's not >> guaranteed behavior and the controller might as well actually write >> zeroes to the media. That is rather stupid, but still. > > I guess some controllers _really_ want specific alignments to > successfully do a proper discard. While still not guaranteed in spec, I > think it is safe to assume a proper deallocation will occur if you align > to NPDA and NPDG. Otherwise, the controller may do a read-modify-write > to ensure zeroes are returned for the requested LBA range on anything > that straddles an implementation specific boundary. >
I understand. A proper deallocation has certain constraints, but I guess it should be useful for most scenarios. Thank you for the explanation. Thanks, Yi.