Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp19953ybp; Thu, 3 Oct 2019 09:35:40 -0700 (PDT) X-Google-Smtp-Source: APXvYqwEO8kU922WeBDNSfg1idSAcir8C/rg+B3COrLl5UwmymQXW0+T/UeJ/7EQ3yDIHjS3FHQV X-Received: by 2002:a17:906:7245:: with SMTP id n5mr8492356ejk.173.1570120540233; Thu, 03 Oct 2019 09:35:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570120540; cv=none; d=google.com; s=arc-20160816; b=lInPFLFNLGOjlz3US8jnJpUvPmkq8Wq4b5sqSK6xux5PYclxkr+MOJQuf3SVYvwyLY HIFq2hRnhyWyEiALiCTOA4M5KZAvvtykn6ZSziMJZkIgycw3Db5uTKDYU4WyUX2b7ReY YMdfBl8kr9go1rhKj5jT9wghvK++WMZpbYKWpbYdJeI6u5OgANWQQlfWxKfpXdCF5B8d bK3AEFPtA9e0nDRQucOIP43NAJcC56eaW2pWxpvyIXDVMV/ENURMHvwKzOJupMb43nVe AgDYyUt2oo71bTBej2wQb8wMw2As+cikTLnYfGxwU3kvTAIlrucBaOzfBsR6HIlfWmru MWog== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=NmAetXnTL3m1DInv/BzPjl1ElkdvpKpSN0zo+7RXa2U=; b=AX3dC46ipMhWZSBu6PKELPfezP6zLHK6JElxnOxW6gBzqTPGbSzBEQdgqmR523f/wq RBUkHpDFuT+9m41b6Doof0+h4RAV4pFJ9cUsBMUnXGZH6zITpwqnRbCK0HSQFiYrxCrr TxioLtZdQ70MLHjpFFUOfkAMC+U9cLTwfsHhzvA/Or+q21sP5gEmOGJHECco1MrgkTKT vPtNhCkcPTFxm0wFNHI04ZIa/r6Drw5Qrg39wbVjJGIDzlECsctnR8Ir5Lm6YQWPx/ck pxKj3+/fhgSzuj5HAwo//cZ/8ACuO3WIPlCQC05MTUEXL9sjuENQ1JL8Hbx+/hfSi2IH gdmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=rBHdH+Iy; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f31si2006554ede.253.2019.10.03.09.35.15; Thu, 03 Oct 2019 09:35:40 -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=rBHdH+Iy; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403876AbfJCQbg (ORCPT + 99 others); Thu, 3 Oct 2019 12:31:36 -0400 Received: from mail.kernel.org ([198.145.29.99]:38458 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2403843AbfJCQba (ORCPT ); Thu, 3 Oct 2019 12:31:30 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5845B2054F; Thu, 3 Oct 2019 16:31:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570120289; bh=w5vMaPj8DTvAVZi2VQY7kI0VApxM++qJDgNLshmiiWA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rBHdH+IywRZ4LKEI9COO5JeyUY48Q8Q+HJVgve2ZxjMThZmMV1ZZUln1cfG9rmiPw mGBx9JgFSqfkFVbPBMG4vNshw9r+vli+mV6qvi/0appj8Wg63K/GKtGBgwS0AVl9Et vYYimjVI9JfPm9eb0P9whyWIleZgIV/1JoaHS46g= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Tom Wu , Israel Rukshin , Max Gurtovoy , Chaitanya Kulkarni , Christoph Hellwig , Sagi Grimberg , Sasha Levin Subject: [PATCH 5.2 160/313] nvmet: fix data units read and written counters in SMART log Date: Thu, 3 Oct 2019 17:52:18 +0200 Message-Id: <20191003154548.702275273@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191003154533.590915454@linuxfoundation.org> References: <20191003154533.590915454@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 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 9f72d515fc4b3..4099093a17343 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