From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f227.google.com (mail-pl1-f227.google.com [209.85.214.227]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2172E2E0938 for ; Fri, 27 Feb 2026 20:24:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.227 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772223843; cv=none; b=enOc4lQci/c4vGX/ivbpt0opDtvHx6IbuchkNARzCOoUiFcOWD7XLP8+9tfB2MrUj25JtLLA5KBGIfc9/8JdraPYNBOqxmSopege275JcVA1O//u2MOJvZubnjQlxszWcdufZaL8UT419SvENkWBxyjtgGBSDE+FP1omEWUzTTo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772223843; c=relaxed/simple; bh=bkjhQ0jtVbajbSTs2xG/N3CPElgAw8fAgBFHpRr1RWA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=eUyQFUOP2LDcXy2ubr0JZXT9XqA/XoBAZOrikPecKo93100JsaMr7D4NVQxTb71Q/x0kYdXZ5R6nkwLevX1frVM1tXoTvD2aGsXQsbOJTy1cAx0BdxrghNvw2cRti2a6mXvXBydptQQgxbO9bm+G21sOlh0supUn9usA9ncF/Xk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com; spf=fail smtp.mailfrom=purestorage.com; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b=ec0rjLVP; arc=none smtp.client-ip=209.85.214.227 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=purestorage.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=purestorage.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=purestorage.com header.i=@purestorage.com header.b="ec0rjLVP" Received: by mail-pl1-f227.google.com with SMTP id d9443c01a7336-2ada9de70bcso5251345ad.2 for ; Fri, 27 Feb 2026 12:24:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=purestorage.com; s=google2022; t=1772223841; x=1772828641; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=EHf/QbKqs66MrNoaZKdYp3gGOrN6EGunMdMSQ21WXcw=; b=ec0rjLVPRCnVAjmDVfe+Cq8XwsjMUnOQxmV+hjSbh8HqVRG1eJ6xjPJsxs6GlnYMGu XyoBOGdJTz9Fy2cV8A5G/bmnD+q46bqkefVeP9/SvbACxGsdnvTUSyfD9MofGr7V4OCc DeErOX9OFMgPD+ipm4hS2LxGTqWe05LhGYU68bfMRo8ROH4ASpIjrBy/PMlPU0u/TvUy YHP1x1xgH7Tl3LNVrsSITUK3prcPexDe2o/OGkIVPOaDJKZzNqdF4qhWNr2YPH63A4kT ee1T/Rh5xyGMR3HVqXv71AhAdYUKIKzcun9xV1jn4fI/QR5/cTZIrT3UWYYTeD39TPrf Kqgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772223841; x=1772828641; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=EHf/QbKqs66MrNoaZKdYp3gGOrN6EGunMdMSQ21WXcw=; b=n86u8TYwNXDaXayO9trWEDn4hybIPhmRDyeVQEUscMdqGW7IODKqLQSa3rrRLS+NBH eI18BmyQrelxB8F9OmCTPibal8k4/3Yq/ylVAS+gmLZK2ibshBuD7rWfykz5ZKL78ktI twf+cEzUgJsBZY5KSqtA/Ku5uzLLvk9I4MDJ22c8SHTW+ujxJPTELOksIHTfjWemkyxR viB3MU91Rueb66B5uYoA/th+5Qcl8mhyTBeQfjCw/TVoUKlHHhjQ35ABdgKyTMAoWTFT JgLioW0LP7hEZXfgcxDm/HvypfFuJXQXvs9ueyha8Fh6qWw2lTjJcqD8CoDOc7PPxcv8 V1Jw== X-Forwarded-Encrypted: i=1; AJvYcCXq4yRvxosX3T8H6Qd7AwROclC7wVlQb9Wb/RUI/eN8cySUcFDDK7m1h1dDqmlOPrggEypFcB7CHv6D8Bk=@vger.kernel.org X-Gm-Message-State: AOJu0YxTO21qIM2V5H2+Q3uqdT6TvV5nY8rOwENnWIiTFX3UtQZqd1xk 9MCL/t0S56O69cdJ9L3h4ZkV8ozGLjHO3/AmmBcJoG1oEDj0v+5P05S89OiifeRpBYzK/DSMLOC u68J8OX20QSY+Sxs0fYiehaLQ5N5QpTswFV5RDx2TrB1jkoIxEHFn X-Gm-Gg: ATEYQzzbeGiQ7C3sFQRF5xa+EWpSO6MkGeFHUveEpW/gsaCBZRaqTxCZBsXegNwXHYH wz7AEefp3r289yqS86KwIROFVWvm0D6OwukywydPPxvhgGS6AnN9lOPnq6jt7m340f8q5G3wY+d FKDGs5OqXj2PtKZhKhDfNmC+b4SS7QAYGyOLvRdQZrqXMMnNLgyBxPU4HclzMK/+8o2xe3/yL9R XyFBD7IyZS3l6utL211hmvMdbyas9N6dRI8Ywh3SoFwWJkfrOeKHFwwd9lMe0UGDwpLvkN1Q7CT nOVqk4fq4xBccLfM8fZC/EYWYim5MXkaVSx8S6WADLLUg7DJe7D3YtHpnQIPL3G3ShuAWXE47SK 675ZHm7hg6JQh/eJBD3FJbP8RDf/Hx1BTkobKV2k= X-Received: by 2002:a17:90b:4c4e:b0:349:2cdd:434a with SMTP id 98e67ed59e1d1-35965ca17camr2861310a91.5.1772223841489; Fri, 27 Feb 2026 12:24:01 -0800 (PST) Received: from c7-smtp-2023.dev.purestorage.com ([2620:125:9017:12:36:3:5:0]) by smtp-relay.gmail.com with ESMTPS id 98e67ed59e1d1-3593dcb4b62sm750012a91.2.2026.02.27.12.24.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Feb 2026 12:24:01 -0800 (PST) X-Relaying-Domain: purestorage.com Received: from dev-csander.dev.purestorage.com (dev-csander.dev.purestorage.com [10.112.29.101]) by c7-smtp-2023.dev.purestorage.com (Postfix) with ESMTP id 4E0E33402B2; Fri, 27 Feb 2026 13:24:00 -0700 (MST) Received: by dev-csander.dev.purestorage.com (Postfix, from userid 1557716354) id 419D3E420D8; Fri, 27 Feb 2026 13:24:00 -0700 (MST) From: Caleb Sander Mateos To: Keith Busch , Jens Axboe , Christoph Hellwig , Sagi Grimberg , Chaitanya Kulkarni Cc: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, Caleb Sander Mateos Subject: [PATCH v5 0/8] nvme: set discard_granularity from NPDG/NPDA Date: Fri, 27 Feb 2026 13:23:45 -0700 Message-ID: <20260227202354.1012322-1-csander@purestorage.com> X-Mailer: git-send-email 2.45.2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit NVMe block devices always report the logical block size for the discard_granularity queue limit. However, more accurate values may be available in the NPDG/NPDA fields of the Identify Namespace structure or the NPDGL/NPDAL fields of the NVM Command Set Specific Identify Namespace structure. So use these values to compute discard_granularity. Also fix the use of the OPTPERF field to better comply with version 2.1 of the NVMe spec. Update the target side to report NPDGL and NPDAL as well, in case the discard granularity doesn't fit in the 16-bit NPDG and NPDA fields. v5: - Only issue NVM Command Set Specific Identify Namespace if controller version supports CNS value (Keith) - Check for multiplication overflow (Keith) v4: - Issue NVM Command Set Specific Identify Namespace regardless of controller version (Keith) v3: - Introduce from0based() (Christoph) - Fix merge conflict resolution (Keith) - Add more comments (Christoph) - Add Reviewed-by tags (Christoph) v2: - Only use low bit of OPTPERF on pre-2.1 controllers (Christoph) - Add Reviewed-by tags (Christoph) Caleb Sander Mateos (8): nvme: add preferred I/O size fields to struct nvme_id_ns_nvm nvme: fold nvme_config_discard() into nvme_update_disk_info() nvme: update nvme_id_ns OPTPERF constants nvme: always issue I/O Command Set specific Identify Namespace nvme: add from0based() helper nvme: set discard_granularity from NPDG/NPDA nvmet: use NVME_NS_FEAT_OPTPERF_SHIFT nvmet: report NPDGL and NPDAL drivers/nvme/host/core.c | 86 +++++++++++++++++++++---------- drivers/nvme/host/nvme.h | 6 +++ drivers/nvme/target/admin-cmd.c | 2 + drivers/nvme/target/io-cmd-bdev.c | 19 +++++-- drivers/nvme/target/nvmet.h | 2 + include/linux/nvme.h | 15 +++++- 6 files changed, 96 insertions(+), 34 deletions(-) -- 2.45.2