[PATCH] nvme: honor NVME_QUIRK_DEALLOCATE_ZEROES for unmap Write Zeroes

Robert Pang posted 1 patch 1 month ago
drivers/nvme/host/core.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
[PATCH] nvme: honor NVME_QUIRK_DEALLOCATE_ZEROES for unmap Write Zeroes
Posted by Robert Pang 1 month ago
Currently, the NVMe driver sets max_hw_wzeroes_unmap_sectors to indicate the
support for unmap Write Zeroes based strictly on the Deallocate Logical Block
Features (dlfeat) in the Identify Namespace data (commit 545fb46e5bc6 "nvme: set
max_hw_wzeroes_unmap_sectors if device supports DEAC bit").

However, certain devices already use the NVME_QUIRK_DEALLOCATE_ZEROES quirk to
indicate that they deterministically return zeroes after a deallocate/discard
operation to support the Write Zeroes operation in nvme_setup_write_zeroes().
For these devices, it is appropriate to treat them as supporting the unmap Write
Zeroes operation.

Update nvme_update_disk_info() to allow the presence of the DEALLOCATE_ZEROES
quirk (combined with DSM support) to set max_hw_wzeroes_unmap_sectors to enable
the support for unmap Write Zeroes. This ensures consistency with how these
devices are handled elsewhere in the driver.

Signed-off-by: Robert Pang <robertpang@google.com>
Link: https://lore.kernel.org/linux-ext4/20260225000531.3658802-1-robertpang@google.com/T/#m5e776f78ecb7631372d82a5cb3d11f8f1f8afe06
---
 drivers/nvme/host/core.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index f5ebcaa2f859..3f5dd3f867e9 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -2120,9 +2120,10 @@ static bool nvme_update_disk_info(struct nvme_ns *ns, struct nvme_id_ns *id,
 	lim->io_min = phys_bs;
 	lim->io_opt = io_opt;
 	if ((ns->ctrl->quirks & NVME_QUIRK_DEALLOCATE_ZEROES) &&
-	    (ns->ctrl->oncs & NVME_CTRL_ONCS_DSM))
+	    (ns->ctrl->oncs & NVME_CTRL_ONCS_DSM)) {
 		lim->max_write_zeroes_sectors = UINT_MAX;
-	else
+		lim->max_hw_wzeroes_unmap_sectors = UINT_MAX;
+	} else
 		lim->max_write_zeroes_sectors = ns->ctrl->max_zeroes_sectors;
 	return valid;
 }
-- 
2.53.0.473.g4a7958ca14-goog
Re: [PATCH] nvme: honor NVME_QUIRK_DEALLOCATE_ZEROES for unmap Write Zeroes
Posted by Christoph Hellwig 1 month ago
On Thu, Mar 05, 2026 at 12:27:32PM -0800, Robert Pang wrote:
> However, certain devices already use the NVME_QUIRK_DEALLOCATE_ZEROES quirk to
> indicate that they deterministically return zeroes after a deallocate/discard

Those certain devices are completely obsolete first generation Intel
SSDs.

> Update nvme_update_disk_info() to allow the presence of the DEALLOCATE_ZEROES
> quirk (combined with DSM support) to set max_hw_wzeroes_unmap_sectors to enable

No. This was a hack that got sneaked in in the first days of the nvme
driver and never should have been there.  It most certainly should not
be extended to any new functionality.
Re: [PATCH] nvme: honor NVME_QUIRK_DEALLOCATE_ZEROES for unmap Write Zeroes
Posted by Robert Pang 1 month ago
Hi Christoph

On Fri, Mar 6, 2026 at 6:24 AM Christoph Hellwig <hch@lst.de> wrote:
>
> On Thu, Mar 05, 2026 at 12:27:32PM -0800, Robert Pang wrote:
> > However, certain devices already use the NVME_QUIRK_DEALLOCATE_ZEROES quirk to
> > indicate that they deterministically return zeroes after a deallocate/discard
>
> Those certain devices are completely obsolete first generation Intel
> SSDs.
>
> > Update nvme_update_disk_info() to allow the presence of the DEALLOCATE_ZEROES
> > quirk (combined with DSM support) to set max_hw_wzeroes_unmap_sectors to enable
>
> No. This was a hack that got sneaked in in the first days of the nvme
> driver and never should have been there.  It most certainly should not
> be extended to any new functionality.
>

Thank you for your review and for providing the historical context
regarding this quirk. Given these insights, we can discard this patch
proposal.

Best regards
Robert Pang
Re: [PATCH] nvme: honor NVME_QUIRK_DEALLOCATE_ZEROES for unmap Write Zeroes
Posted by Zhang Yi 4 weeks, 1 day ago
Hi Robert,

On 3/11/2026 1:14 AM, Robert Pang wrote:
> Hi Christoph
> 
> On Fri, Mar 6, 2026 at 6:24 AM Christoph Hellwig <hch@lst.de> wrote:
>>
>> On Thu, Mar 05, 2026 at 12:27:32PM -0800, Robert Pang wrote:
>>> However, certain devices already use the NVME_QUIRK_DEALLOCATE_ZEROES quirk to
>>> indicate that they deterministically return zeroes after a deallocate/discard
>>
>> Those certain devices are completely obsolete first generation Intel
>> SSDs.
>>
>>> Update nvme_update_disk_info() to allow the presence of the DEALLOCATE_ZEROES
>>> quirk (combined with DSM support) to set max_hw_wzeroes_unmap_sectors to enable
>>
>> No. This was a hack that got sneaked in in the first days of the nvme
>> driver and never should have been there.  It most certainly should not
>> be extended to any new functionality.
>>
> 
> Thank you for your review and for providing the historical context
> regarding this quirk. Given these insights, we can discard this patch
> proposal.
> 

I just wonder if you have such hardware and use cases, or if you simply
want to supplement this feature for those corner devices?

Best regards
Yi.

> Best regards
> Robert Pang

Re: [PATCH] nvme: honor NVME_QUIRK_DEALLOCATE_ZEROES for unmap Write Zeroes
Posted by Robert Pang 3 weeks, 6 days ago
Hi Zhang Yi

On Tue, Mar 10, 2026 at 7:56 PM Zhang Yi <yi.zhang@huaweicloud.com> wrote:
>
> Hi Robert,
>
> On 3/11/2026 1:14 AM, Robert Pang wrote:
> > Hi Christoph
> >
> > On Fri, Mar 6, 2026 at 6:24 AM Christoph Hellwig <hch@lst.de> wrote:
> >>
> >> On Thu, Mar 05, 2026 at 12:27:32PM -0800, Robert Pang wrote:
> >>> However, certain devices already use the NVME_QUIRK_DEALLOCATE_ZEROES quirk to
> >>> indicate that they deterministically return zeroes after a deallocate/discard
> >>
> >> Those certain devices are completely obsolete first generation Intel
> >> SSDs.
> >>
> >>> Update nvme_update_disk_info() to allow the presence of the DEALLOCATE_ZEROES
> >>> quirk (combined with DSM support) to set max_hw_wzeroes_unmap_sectors to enable
> >>
> >> No. This was a hack that got sneaked in in the first days of the nvme
> >> driver and never should have been there.  It most certainly should not
> >> be extended to any new functionality.
> >>
> >
> > Thank you for your review and for providing the historical context
> > regarding this quirk. Given these insights, we can discard this patch
> > proposal.
> >
>
> I just wonder if you have such hardware and use cases, or if you simply
> want to supplement this feature for those corner devices?
>

It is the latter.

Best regards
Robert Pang

> Best regards
> Yi.