Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp1230296imm; Tue, 5 Jun 2018 11:02:56 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLp6oGObbiRy/kixc9WNPvT8bufyCtNMLuIVoqnvlmMJeKfmntapBsO7rZ8MTQT3PUfmHVJ X-Received: by 2002:a63:7419:: with SMTP id p25-v6mr22317155pgc.24.1528221776678; Tue, 05 Jun 2018 11:02:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528221776; cv=none; d=google.com; s=arc-20160816; b=gV/Swww2t6KzJ0dCWPrwsHCJNtQCVGHpRBtPVleuyrj0Qkdzlf9tjyoqRBqfFpaK4h M0fQtCx9zzTIwJhqv0oRkyRSNX/PP/ZiUP/aK9gppmgYLvx6GXaRVNtzFJ1uHQ2x+CRX MegttipAAbj27XBT4xpkL4AObLcfxOmdzK7TC9ym3+W+CDka3tV2l9D85R3K7uca/hDp UoTBUufFM7cUtGRpIhDumaP/nhtpHklfMEPzIfNTdloFgYDveDrlGvoXqOBOaF6dsaxM NRNJldaOEZQxxyo0y0idxJWKnKKij2Olj3YcM1Jzs9YQMLLgowBAehO+bxXs00q0n+EM WbEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=g5FgnG6+NWNQdTyCrOVd7D9WO4/XTOTnUeIWhUVZXFo=; b=KZcA/V6fwSkx4pu+IA1X54RFpHWb+vZqXTB/6TsdELRIcJyiPxgFv+YkVUBP6RJHiM PQX1wscwCrcalhfuGbD6X0akMF3sjkyci2vs6HgiAK1CUi/TXfXGLzOaOkkuKZjNUulS b0GQLO2KOF71j2pcYFOXB8uCFHU58zKL44/0dyZvH/fsOHMbv7RHAEGEJZ8d/46X6thP 20UU051FCqsk92j2Vu/vb48lUciPzO5nkLj6G5zVIemYSICZCXJzcqXK8cxUDCcZBigm 9xkcXRjAgcr8Of9gsd40NzAVGriJskE/HiV/FYA+WJybC1ymJvGR2EbBVw7GDswPBZ0G bSZw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=jXk174j9; 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=fail (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 w12-v6si48431286pld.367.2018.06.05.11.02.42; Tue, 05 Jun 2018 11:02:56 -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=fail header.i=@gmail.com header.s=20161025 header.b=jXk174j9; 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=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752848AbeFESBg (ORCPT + 99 others); Tue, 5 Jun 2018 14:01:36 -0400 Received: from mail-yw0-f196.google.com ([209.85.161.196]:36022 "EHLO mail-yw0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751917AbeFESBa (ORCPT ); Tue, 5 Jun 2018 14:01:30 -0400 Received: by mail-yw0-f196.google.com with SMTP id v68-v6so1025425ywd.3; Tue, 05 Jun 2018 11:01:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=g5FgnG6+NWNQdTyCrOVd7D9WO4/XTOTnUeIWhUVZXFo=; b=jXk174j95G4yfzDIMbAQC39rPzvNZjtuLYoQeJ4/aNO8zCe2HOxRndylXxhAqms6zt NCRrZoy+jxgnZYFce685CKSLwKEIWHaHVS494Fs+YLYxYlvMdZugMM3xcs+dIUcKjrWs ZKMoPpH/9RY2Kd9Z5cJrvzM56nqD9NumvASaN/yf2biXn1MMlJ8poPypgAu1dW6c+50S dF3gIiJCZ//7PSvr57d5VJR9xymzwyyo4+rvmWlo2uxuy86OnRw/V5NymKHK7TYJFr8p lpBQTJtP+VD/Oc7tstmL3WecudvQ2Pt9tJOFdvGPbQca/8swNMkVkH8uURdM9nxp7IFd MwZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=g5FgnG6+NWNQdTyCrOVd7D9WO4/XTOTnUeIWhUVZXFo=; b=PXL0czH+j/IQeefsfKEOh+zYimXyUCG2wNKsFBLIEXyotLeB8LwPhUItazFW46qIY3 qkyrf1KzwQD/orHHZFJ1EfECCwjJw/Po3Yn5J7CKG+GQERAQ5sUB+MWo6znaI4EiIy3W ITAauzNOQCUM50T9082XlMNBtxI/EPCKkrPrzfzkA8Y8HRZEBaN8EcPi0qWGIv0pqpCV hBEjKV3hOt7J1W4C1MEOIek1vsSfHrC5v4+Bfvd1uvJ8Q0OTOff8e9OR/qBXV6kWlYyM R7VR5uuzpedB4t5xg3ARlcUK/CgKWvNCu3x1ccfs9uZtsMGdn6NXZBRH5lgyMMk8mm+b TNpg== X-Gm-Message-State: ALKqPweROS94C5/aHO9nhbTyA5cSeAFoKpJHKjZdkWg4QWWDWaZTme8V k/g3pWqHcGNC1aBCazaX34T9IxDO X-Received: by 2002:a81:8a85:: with SMTP id a127-v6mr13653211ywg.465.1528221690030; Tue, 05 Jun 2018 11:01:30 -0700 (PDT) Received: from localhost ([2620:10d:c091:200::1:f697]) by smtp.gmail.com with ESMTPSA id w4-v6sm6670470ywf.63.2018.06.05.11.01.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 Jun 2018 11:01:29 -0700 (PDT) From: Tejun Heo To: axboe@kernel.dk Cc: michaelcallahan@fb.com, newella@fb.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@fb.com, Tejun Heo Subject: [PATCH 2/6] block: Add part_stat_read_accum to read across field entries. Date: Tue, 5 Jun 2018 11:01:16 -0700 Message-Id: <20180605180120.2726113-3-tj@kernel.org> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20180605180120.2726113-1-tj@kernel.org> References: <20180605180120.2726113-1-tj@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Michael Callahan Add a part_stat_read_accum macro to genhd.h to read and sum across field entries. For example to sum up the number read and write sectors completed. In addition to being ar reasonable cleanup by itself this will make it easier to add new stat fields in the future. tj: Refreshed on top of v4.17. Signed-off-by: Michael Callahan Signed-off-by: Tejun Heo --- drivers/block/drbd/drbd_receiver.c | 3 +-- drivers/block/drbd/drbd_worker.c | 4 +--- drivers/md/md.c | 3 +-- include/linux/genhd.h | 4 ++++ 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index be9450f..d7e6973 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c @@ -2674,8 +2674,7 @@ bool drbd_rs_c_min_rate_throttle(struct drbd_device *device) if (c_min_rate == 0) return false; - curr_events = (int)part_stat_read(&disk->part0, sectors[0]) + - (int)part_stat_read(&disk->part0, sectors[1]) - + curr_events = (int)part_stat_read_accum(&disk->part0, sectors) - atomic_read(&device->rs_sect_ev); if (atomic_read(&device->ap_actlog_cnt) diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c index 1476cb3..2063804 100644 --- a/drivers/block/drbd/drbd_worker.c +++ b/drivers/block/drbd/drbd_worker.c @@ -1690,9 +1690,7 @@ void drbd_rs_controller_reset(struct drbd_device *device) atomic_set(&device->rs_sect_in, 0); atomic_set(&device->rs_sect_ev, 0); device->rs_in_flight = 0; - device->rs_last_events = - (int)part_stat_read(&disk->part0, sectors[0]) + - (int)part_stat_read(&disk->part0, sectors[1]); + device->rs_last_events = (int)part_stat_read_accum(&disk->part0, sectors); /* Updating the RCU protected object in place is necessary since this function gets called from atomic context. diff --git a/drivers/md/md.c b/drivers/md/md.c index fc692b7..817dd97 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -8001,8 +8001,7 @@ static int is_mddev_idle(struct mddev *mddev, int init) rcu_read_lock(); rdev_for_each_rcu(rdev, mddev) { struct gendisk *disk = rdev->bdev->bd_contains->bd_disk; - curr_events = (int)part_stat_read(&disk->part0, sectors[0]) + - (int)part_stat_read(&disk->part0, sectors[1]) - + curr_events = (int)part_stat_read_accum(&disk->part0, sectors) - atomic_read(&disk->sync_io); /* sync IO will cause sync_io to increase before the disk_stats * as sync_io is counted when a request starts, and diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 6cb8a57..19f36fa 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h @@ -353,6 +353,10 @@ static inline void free_part_stats(struct hd_struct *part) #endif /* CONFIG_SMP */ +#define part_stat_read_accum(part, field) \ + (part_stat_read(part, field[0]) + \ + part_stat_read(part, field[1])) + #define part_stat_add(cpu, part, field, addnd) do { \ __part_stat_add((cpu), (part), field, addnd); \ if ((part)->partno) \ -- 2.9.5