Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp730686ybn; Tue, 24 Sep 2019 08:38:30 -0700 (PDT) X-Google-Smtp-Source: APXvYqwogOS9pkIwmqsM8SBSg876/aH0EeQNP+lonp/sOSDI1ZTboiKYEMWXk95re8n9ZPj14RFs X-Received: by 2002:a17:906:1d03:: with SMTP id n3mr3076215ejh.287.1569339510072; Tue, 24 Sep 2019 08:38:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569339510; cv=none; d=google.com; s=arc-20160816; b=RtBXrv6NANWoTp5ZpQ15TjfjED8IvkqVQPYNdirDyQ3JS8omUg/txSMPirRRnUUFUr Gse2td6/mOXeLyWgrd00PP0f2DbwQuzKWN/d2b5/fV8Nwu1cminT6AKMfwQdNlv6JJtZ TZYQ71kHqmeJ9KDS7663GQrPZxQRtF9Yzk6PPtQGTBYYILWIeUINqXt8OMO58YJG8KT4 mw8HkxzidDZx/CyPVP7IZ2XRX94aoePGhGAC6YmOKf/cIOEOp/LPJTs1Bq3afFsy5zJ1 7/K2kMZ1WoPqDdEm6k/qmxLZ9S/j8iYsnmQOmWHCtJ7DdfY3WOKE9XdYgudaRFJ7nEpj qIyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=U6iWRXwiZT3ivWQgkmJ+GOGGLIVdPVoZgRaGWj4E48Q=; b=RYzZQpBBAunF6edaYeE3QaVuSL2sHE00ibf2Ln1aaQ/gsUt05fz1kQ5uPcm8jKxl58 TJ+vpkdCxY9pAeyqv7vK9hAsIjbFBQAgAeLe6weSkpDaTy2Z14wM8UGBlEFNP43AAs1e WKGzM1dnuDwjrqf/WvSunkEq8TZoOf2AAP/snOyjg7dr5tl9CndjeE65l5xae1C40zL3 e1bp7atHyTz7tV07CckSTtQ8YImIh4OI3wIKatGPgRLJnTOt0i58avZWFD6LoksnSbQ3 BTL9QhS1dNH5EvFpJmK1tk71XGzE0akjFbhWX+LgWmgIdzozBazg7dTxtsIzZLURePkZ 48Mw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=CeA1Uhfg; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f2si1106296ejk.25.2019.09.24.08.38.06; Tue, 24 Sep 2019 08:38:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=CeA1Uhfg; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437581AbfIVTdA (ORCPT + 99 others); Sun, 22 Sep 2019 15:33:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:44496 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391226AbfIVSrx (ORCPT ); Sun, 22 Sep 2019 14:47:53 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 4CF5A214AF; Sun, 22 Sep 2019 18:47:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1569178073; bh=ErUXX+wXEOYhKgrVApf6xENcHS0cNQjfqRzANsHEjsc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CeA1UhfgDj36siUS9fSJIBlm+RQ6HAeWeit2Ww0jPm153YOX67BPBclzyv3HJP7M0 l6TFjDf8pOfiurQrZOx3SsQ9zsttLPRd7/1U5EGLrwO5XT48iAF0vzpgdHEtfFuRut Cap3R1XmgvgYdh9zVnl8mfNmwQcIn9e+trFrPAAk= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Tom Wu , Israel Rukshin , Max Gurtovoy , Chaitanya Kulkarni , Christoph Hellwig , Sagi Grimberg , Sasha Levin , linux-nvme@lists.infradead.org Subject: [PATCH AUTOSEL 5.3 145/203] nvmet: fix data units read and written counters in SMART log Date: Sun, 22 Sep 2019 14:42:51 -0400 Message-Id: <20190922184350.30563-145-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190922184350.30563-1-sashal@kernel.org> References: <20190922184350.30563-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tom Wu [ Upstream commit 3bec2e3754becebd4c452999adb49bc62c575ea4 ] In nvme spec 1.3 there is a definition for data write/read counters from SMART log, (See section 5.14.1.2): This value is reported in thousands (i.e., a value of 1 corresponds to 1000 units of 512 bytes read) and is rounded up. However, in nvme target where value is reported with actual units, but not thousands of units as the spec requires. Signed-off-by: Tom Wu Reviewed-by: Israel Rukshin Reviewed-by: Max Gurtovoy Reviewed-by: Chaitanya Kulkarni Reviewed-by: Christoph Hellwig Signed-off-by: Sagi Grimberg Signed-off-by: Sasha Levin --- drivers/nvme/target/admin-cmd.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/nvme/target/admin-cmd.c b/drivers/nvme/target/admin-cmd.c index 4dc12ea52f23c..51800a9ce9a91 100644 --- a/drivers/nvme/target/admin-cmd.c +++ b/drivers/nvme/target/admin-cmd.c @@ -81,9 +81,11 @@ static u16 nvmet_get_smart_log_nsid(struct nvmet_req *req, goto out; host_reads = part_stat_read(ns->bdev->bd_part, ios[READ]); - data_units_read = part_stat_read(ns->bdev->bd_part, sectors[READ]); + data_units_read = DIV_ROUND_UP(part_stat_read(ns->bdev->bd_part, + sectors[READ]), 1000); host_writes = part_stat_read(ns->bdev->bd_part, ios[WRITE]); - data_units_written = part_stat_read(ns->bdev->bd_part, sectors[WRITE]); + data_units_written = DIV_ROUND_UP(part_stat_read(ns->bdev->bd_part, + sectors[WRITE]), 1000); put_unaligned_le64(host_reads, &slog->host_reads[0]); put_unaligned_le64(data_units_read, &slog->data_units_read[0]); @@ -111,11 +113,11 @@ static u16 nvmet_get_smart_log_all(struct nvmet_req *req, if (!ns->bdev) continue; host_reads += part_stat_read(ns->bdev->bd_part, ios[READ]); - data_units_read += - part_stat_read(ns->bdev->bd_part, sectors[READ]); + data_units_read += DIV_ROUND_UP( + part_stat_read(ns->bdev->bd_part, sectors[READ]), 1000); host_writes += part_stat_read(ns->bdev->bd_part, ios[WRITE]); - data_units_written += - part_stat_read(ns->bdev->bd_part, sectors[WRITE]); + data_units_written += DIV_ROUND_UP( + part_stat_read(ns->bdev->bd_part, sectors[WRITE]), 1000); } rcu_read_unlock(); -- 2.20.1