From ab9c7a6a81b2333bcc12646b1ad487b16d0a4293 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 Change-Id: I7c19975a2bd8c09bb65374838fe20aad690d1ecf Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12384 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Changpeng Liu Reviewed-by: Shuhei Matsumoto --- 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 aabf6c3c0..ef18d8c16 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -2847,9 +2847,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;