[PATCH] nvme: fix discard support without oncs
Niklas Cassel
nks at flawful.org
Tue Apr 4 08:12:47 PDT 2023
On Mon, Apr 03, 2023 at 01:09:25PM -0700, Keith Busch wrote:
> From: Keith Busch <kbusch at kernel.org>
>
> The device can report discard support without setting the ONCS DSM bit.
> When not set, the driver clears max_discard_size expecting it to be set
> later. We don't know the size until we have the namespace format,
> though, so setting it is deferred until configuring one, but the driver
> was abandoning the discard settings due to that initial clearing.
>
> Move the max_discard_size calculation above the check for a '0' discard
> size.
>
> Fixes: 1a86924e4f46475 ("nvme: fix interpretation of DMRSL")
> Cc: Tom Yan <tom.ty89 at gmail.com>
> Reported-by: Laurence Oberman <loberman at redhat.com>
> Signed-off-by: Keith Busch <kbusch at kernel.org>
> ---
> drivers/nvme/host/core.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index 53ef028596c61..d6a9bac91a4cd 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -1674,6 +1674,9 @@ static void nvme_config_discard(struct gendisk *disk, struct nvme_ns *ns)
> struct request_queue *queue = disk->queue;
> u32 size = queue_logical_block_size(queue);
>
> + if (ctrl->dmrsl && ctrl->dmrsl <= nvme_sect_to_lba(ns, UINT_MAX))
> + ctrl->max_discard_sectors = nvme_lba_to_sect(ns, ctrl->dmrsl);
> +
> if (ctrl->max_discard_sectors == 0) {
> blk_queue_max_discard_sectors(queue, 0);
> return;
> @@ -1688,9 +1691,6 @@ static void nvme_config_discard(struct gendisk *disk, struct nvme_ns *ns)
> if (queue->limits.max_discard_sectors)
> return;
>
> - if (ctrl->dmrsl && ctrl->dmrsl <= nvme_sect_to_lba(ns, UINT_MAX))
> - ctrl->max_discard_sectors = nvme_lba_to_sect(ns, ctrl->dmrsl);
> -
> blk_queue_max_discard_sectors(queue, ctrl->max_discard_sectors);
> blk_queue_max_discard_segments(queue, ctrl->max_discard_segments);
>
> --
> 2.34.1
>
>
Reviewed-by: Niklas Cassel <niklas.cassel at wdc.com>
More information about the Linux-nvme
mailing list