Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp3824344pxv; Mon, 5 Jul 2021 06:39:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxXYRihheqGTd6v2IcoRUoYY1R1alCGnHplmg408WIi9v0njz5sjws9C6Z5Rrc0oWOcTIuW X-Received: by 2002:a05:6e02:ea2:: with SMTP id u2mr10610260ilj.247.1625492389354; Mon, 05 Jul 2021 06:39:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625492389; cv=none; d=google.com; s=arc-20160816; b=rbsyImqWtxmS5SOGY2YKrJRfHvTyFL5Qi3LmucwWJ0lewypI7n2094a+inP/6Vu7We GcoIfPRyjVot/zgIoGB6le0WFMV0oA6obgJX3E9hwrpNfLjfwyXx9SIAAIskvp4hwKqj 5p38QMGbVPHDVo8slwKTUhIwk1PzgapfLKaCDO4hmhkyA8T6bnY+YFou7raOUqdqo6wu /vjDbEL/bbXQWnsPyCsur9rkzzIuNpZkbhG+92AcKM9PwIC3xlEjCRXGCa8PWasV0c1L OPYZnycgSOg6Fs90H8rJfR0o1Nb/p0QxdxoUn98/z2DGwu5YbXSbpZRW04tIx5CkL6KL o9DQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=V4l2quaAukqPnI1NbkxK0XEdTEIjq8HrgJFI7af8x0Q=; b=lQ4yL0S8RO6tyuTjwUwi6E39jNlMgTQJu0Ac5LQAAK1R4ztFyh8chGrqAbSg+vOF/f fSKWgG8DIdiDdkjO1HoFi6jlQJQWelsMV92EOgqXYnTCtCYIxtTa+YnyvylB917JutGV c2RzUNDyUnv8I/+4fGCdW3CEnFjrMnSmPMA52FawFMo0lSG/oZ5H6RVmBNtDVtUYQPBW EIZS4ZaE2imx/H2CVBb+SbK55XdPccwQzLthgv2GwEyAzoBUQpA45G0Pz4SOs/pTTYdS OWZ+EaDYwHv8qFSgcNrgLwaFS8Ldw7Y9hCaV4DRZUdqWQxcEfMZfj7kgnJbgV/ak9aFe qZFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=mjb3CcEm; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x14si5836087jat.20.2021.07.05.06.39.35; Mon, 05 Jul 2021 06:39:49 -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=@gmail.com header.s=20161025 header.b=mjb3CcEm; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230480AbhGENlk (ORCPT + 99 others); Mon, 5 Jul 2021 09:41:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41610 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230333AbhGENlk (ORCPT ); Mon, 5 Jul 2021 09:41:40 -0400 Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 63A58C061574; Mon, 5 Jul 2021 06:39:03 -0700 (PDT) Received: by mail-pj1-x1035.google.com with SMTP id p4-20020a17090a9304b029016f3020d867so11805017pjo.3; Mon, 05 Jul 2021 06:39:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=V4l2quaAukqPnI1NbkxK0XEdTEIjq8HrgJFI7af8x0Q=; b=mjb3CcEm6CGAZOUOGPrmGzNK0oCxmF+rlROuXGTVMQ4xNusGc+LqrNt72hisb73ERc GXWhc7PtvGBZ4HL8j7ccOLPjXNS35geSidVfn1GmQQSTQzJHbUarYg99MWxmkdwbfwgK LdBu0y5K1Tt4xOpDvH44TuxT/R13fPyK4ybpva4eBQIC8or0EhoF3FpeLk1PpVKmcd37 qJEOvnfYKb8oV/jfIaL4TaM421p//wsdsNRFBjZCObwmpK4kly369xGyUskVCLEBnK5/ 2kjUCnEaiQUmbRJLIgaFWKlPh38p0jTyH1xCjlrJ0Ay2zh4BoXLCyTwPQJpwksAklPBo GJHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=V4l2quaAukqPnI1NbkxK0XEdTEIjq8HrgJFI7af8x0Q=; b=RyBjKyIbaeoqmbe9833WyTMfjkkiQZ1aTE+XjHrhXWgcqJdI28V6EhcHyIoKa0LWdX ZsRE2oqgnBV3VuBVlcZVpHT1S8ldZdysCDkstESKdlE8+EqO6KJy8mKP0OaglJsf9mK1 dXVwFQaFYmDSLbxw05xDp8tDgfexX32MD/ebEw3mIcFo1QanyE1eIxROMkrss+YJ0iaM 8SzPWvaUlAvO2B/98nBcPkfvxl8or7spM7a3DYji1o21Q46ICWt5lwF4GH4RD2F2LZDE DurRC/uvp6S301YNqMmc43n7BTn5LZe+UJN1BOcPHv7ZuSMxEuxAyPE71E36Uos0KTQW U5Ww== X-Gm-Message-State: AOAM5325y8Bf4tJ3Y7FaNwJbKQydSDdK9DTHDzaYa9aPlr5Rv2xV0luI NNVR8HZCO6tBQdGpq0zHRQ/JfWpH2C1OmdF7 X-Received: by 2002:a17:90b:945:: with SMTP id dw5mr14657369pjb.144.1625492342843; Mon, 05 Jul 2021 06:39:02 -0700 (PDT) Received: from VM-0-3-centos.localdomain ([101.32.213.191]) by smtp.gmail.com with ESMTPSA id y11sm398707pfm.190.2021.07.05.06.39.01 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Jul 2021 06:39:02 -0700 (PDT) From: brookxu To: axboe@kernel.dk Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] block: fix the problem of io_ticks becoming smaller Date: Mon, 5 Jul 2021 21:38:59 +0800 Message-Id: <1625492339-18025-1-git-send-email-brookxu.cn@gmail.com> X-Mailer: git-send-email 1.8.3.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Chunguang Xu Before the wraparound occurs, the value of io_ticks should be monotonically increasing, but we sometimes find that io_ticks will become smaller, which leads to abnormal values in monitoring tools. 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 now collected before the interruption may be less than part->stamp, and then make the calculated value of io_ticks become smaller. Therefore, when now is less than part->stamp, we should do nothing. v2: sorry, fix compile error due to the missed ')' Signed-off-by: Chunguang Xu --- 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 514838c..bbf56ae 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -1243,7 +1243,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); } -- 1.8.3.1