Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp3889644pxv; Mon, 19 Jul 2021 11:12:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzp7vHRgZDIEJSRfekZCC0Q+uyvBGSelPgnemD7F/Uj+I+vy1eE3YzNSmxWLyrTsZRX5udT X-Received: by 2002:a5e:9309:: with SMTP id k9mr19366239iom.207.1626718351088; Mon, 19 Jul 2021 11:12:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626718351; cv=none; d=google.com; s=arc-20160816; b=r3quTj0pb5q4qawmL/VOMe1HLw5as7uPmogYYZrqCI86A1Tq7SVqh52tYmLIc19KUv q1VGoEQ/xOR0oeVn0SrANALwqO//BtBrIr/edick4aBYgwOoFx3RFF3fCTIYYeVeu734 6aSeVZT5jJxIexdH8KDnU5NusCSknN94WWhPw/V39gcP7kNCXGNa8r710Kdwb+6iieMx 26BGVsta5EB1j+NoWMHg1G84tUkFMMwzmUgbIWQRYBfuR8ATgU75n3FdeJY9T2tCCzN+ Ra1trFXqow08t4BIDEjP+nzbJKSAFuNac+9ofDtqiwatc94i3MBmkAanMvwBrBTyif65 kxeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Dgx16cwRgn2BPf25B8TEyLFlelHAai14c7M7M+VrKTs=; b=EXVzWemZG9mgCjFJNZ5CxJt4MSC5KaGhCas2Fb7LuoYqZkvyosGhHTVvFNaJGGgdb1 TzyudUK/oaxsUaKAb+SZSkliKwZ1LUEREGIL+tXAr+EmoCekjrjceOTAOyPizgHXY143 uThnRrsbXgZB/pulizY6jxO0ridtN6VSsImTiCxPFPr/Un7sXdfR9loZaTZGUiE7G/Cn i003Qp/rQqDSOzvqXrc/sKXfWK0zdVQ4R/gH1FZeXPAu66+0P1Qk8HQezGQXpCxo6FMf eT6LXub5aofJBIgj5l1rz03ydbHSvpr8QOp6dXlDitQ8Sup2m/tEIf3XES+JWdDSyF1B LfeQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=eBDk0aUD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a9si20599215ilr.103.2021.07.19.11.12.18; Mon, 19 Jul 2021 11:12:31 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=eBDk0aUD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1380016AbhGSR1d (ORCPT + 99 others); Mon, 19 Jul 2021 13:27:33 -0400 Received: from mail.kernel.org ([198.145.29.99]:46056 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349411AbhGSPpE (ORCPT ); Mon, 19 Jul 2021 11:45:04 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id AE777613ED; Mon, 19 Jul 2021 16:24:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626711896; bh=hN3qtU0dLgxD/1mxx142hFxbzrWbDbvSfmOPg1RvgpA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eBDk0aUDx42skdXOATcJkh8IHFYJ2f1YlQoTrK2sQBBfs8tv99YKRBEDL/sFFz3nN 20u3gm+NVYzMarZvvyEySLaM8t6NIgBQpCGqKo57ieerWu+eRQzMz9e04HfqTyJAQO 05axpKjSjYGfObAX6Z2sbJ6svlYpTnAHlAahV6B4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Chunguang Xu , Christoph Hellwig , Jens Axboe , Sasha Levin Subject: [PATCH 5.12 172/292] block: fix the problem of io_ticks becoming smaller Date: Mon, 19 Jul 2021 16:53:54 +0200 Message-Id: <20210719144948.159839018@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210719144942.514164272@linuxfoundation.org> References: <20210719144942.514164272@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Chunguang Xu [ Upstream commit d80c228d44640f0b47b57a2ca4afa26ef87e16b0 ] On the IO submission path, blk_account_io_start() may interrupt the system interruption. When the interruption returns, the value of part->stamp may have been updated by other cores, so the time value collected before the interruption may be less than part-> stamp. So when this happens, we should do nothing to make io_ticks more accurate? For kernels less than 5.0, this may cause io_ticks to become smaller, which in turn may cause abnormal ioutil values. Signed-off-by: Chunguang Xu Reviewed-by: Christoph Hellwig Link: https://lore.kernel.org/r/1625521646-1069-1-git-send-email-brookxu.cn@gmail.com Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- block/blk-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block/blk-core.c b/block/blk-core.c index fc60ff208497..e34dfa13b7bc 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -1255,7 +1255,7 @@ static void update_io_ticks(struct block_device *part, unsigned long now, unsigned long stamp; again: stamp = READ_ONCE(part->bd_stamp); - if (unlikely(stamp != now)) { + if (unlikely(time_after(now, stamp))) { if (likely(cmpxchg(&part->bd_stamp, stamp, now) == stamp)) __part_stat_add(part, io_ticks, end ? now - stamp : 1); } -- 2.30.2