From 256082976917d98066d91b6bb011be746028f938 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Mon, 25 Apr 2022 17:41:12 +0000 Subject: [PATCH] bdev/nvme: account for ACWU values being 0-based ACWU and NACWU are 0-based values. But spdk_bdev_get_acwu() specifies the compare-and-write-unit in terms of blocks (i.e. 1-based). So the bdev/nvme module needs to add 1 to this value before registering the bdev. Signed-off-by: Jim Harris Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12384 (master) (cherry picked from commit ab9c7a6a81b2333bcc12646b1ad487b16d0a4293) Change-Id: I7c19975a2bd8c09bb65374838fe20aad690d1ecf Signed-off-by: Krzysztof Karas Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12491 Reviewed-by: John Kariuki Reviewed-by: Tomasz Zawadzki Reviewed-by: Jim Harris Reviewed-by: Konrad Sztyber Tested-by: SPDK CI Jenkins --- module/bdev/nvme/bdev_nvme.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index dbf89055f..b53a9d7fa 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -2548,9 +2548,9 @@ nvme_disk_create(struct spdk_bdev *disk, const char *base_name, SPDK_NVME_CTRLR_COMPARE_AND_WRITE_SUPPORTED)) { disk->acwu = 0; } else if (nsdata->nsfeat.ns_atomic_write_unit) { - disk->acwu = nsdata->nacwu; + disk->acwu = nsdata->nacwu + 1; /* 0-based */ } else { - disk->acwu = cdata->acwu; + disk->acwu = cdata->acwu + 1; /* 0-based */ } disk->ctxt = ctx;