Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp1230530imm; Tue, 5 Jun 2018 11:03:09 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJYxY+PYxIZLQkKS0VBEdCExD+GewWJeV7zvnLkLzZqe9TTfqTrLiRRm34NaO/jwRYp5C0J X-Received: by 2002:a17:902:274a:: with SMTP id j10-v6mr28067076plg.393.1528221789779; Tue, 05 Jun 2018 11:03:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528221789; cv=none; d=google.com; s=arc-20160816; b=hglBH9eKNG7Fazz919pLK7sCtv3nAoLjCWRDdzle8HFQbppQACOGZltI2+am9518bb 1B5FeqfcS4RsWd3vDtKT2qTQ14JK2cZ/H7ona5k5U88AOuP+EzHXHur5E8KBkiXv+Rfa SbPcrEq8KxnMq8Ypor++z9BLRuVpFmJvuBtb4Yo/I59Se4VTzv/cCyXI4dbj+PdjVGRh rOJj9az3JJA+pL53tKCxPEeq8psrmBFIKq3fR/UUVg9g3kE59xYULPWsaBipk4QEkR9i YEAuVv0C2oBww/pTd0NnEzalVSO7xbTdl2dTiUtvahi7TY/IK9APyfCpQQP2huMXtVv5 GFLQ== 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=tkeLwEYkxNLkcq9d4WEGPgE1tRcRc17TwzKPca2BCR4=; b=cg332iXuu1td4FB9Je3pkxCiWjXlhD/3BcZryJSrbWZcn9TOc4ODuG5SRUkZSzvI90 2MXaPgQ5RwcnctT0+Szwnz9LwTzHzDWX5dlS+KbY99OXQEJCWkcAGymlcBi8/WGhNkIA OfoCPp86C7eTNQFeRud/YiS+OgQtJOOV2exj1hcaAWpJeVL9W+qRIJfDmGCg9uvGZMtt uHk+AfCVGNgmdfqgzsS5zHuR9bZnjm+xnlEzBiJ27C5cm+pp73HRtR8d4ncX+ba4QLYt +GZSHCKwh8j+9AWZKU/ml2uWNs8suhn1/icNXuVR0xAq0FLvPOzy4EftX3g1Crn96KIK RqNw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=q8ur78ns; 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 1-v6si22981813plz.379.2018.06.05.11.02.55; Tue, 05 Jun 2018 11:03:09 -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=q8ur78ns; 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 S1753054AbeFESCd (ORCPT + 99 others); Tue, 5 Jun 2018 14:02:33 -0400 Received: from mail-yw0-f195.google.com ([209.85.161.195]:41822 "EHLO mail-yw0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752724AbeFESBd (ORCPT ); Tue, 5 Jun 2018 14:01:33 -0400 Received: by mail-yw0-f195.google.com with SMTP id s201-v6so1020509ywg.8; Tue, 05 Jun 2018 11:01:33 -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=tkeLwEYkxNLkcq9d4WEGPgE1tRcRc17TwzKPca2BCR4=; b=q8ur78ns6NeYi4/UoRu4qRuX23lzvFCXuX2FjO8imdRjaN+yqJkIZWnkUByPjlvR4r USKNq+rJeBHlAZpHPLcOpTasJxv3RBfIWQErthCRvmRp4oJunA9OalsI9uCifN6VKJla gkPuItIkK1dc9hKwIPk2bhvIuj5TuCCKYceM2yiDR0JZst0Wbf6/HccxtOLgQhMVKOGI 8p96KVWhnp9Dp+TO8YkvrmvTZD6u5QimUk3KE3gdS2jYobRFgx5i8kJQ0oBHKfXPxJkr Zd9M0WGuyUwqT5hZttJKNlm5mfzi88fRwLZx4q8vtrEQG+1KpDAeNmg16k+ME2ATtdv4 y3rg== 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=tkeLwEYkxNLkcq9d4WEGPgE1tRcRc17TwzKPca2BCR4=; b=R3GK4RWtlN5Gm+7eMyjYtKKFVPRhNQ0BTfReTT69lQWOHZYreQhaJ1x5phyzhI0Pjl S9jJQjero2cYdITBhiOXOVjyrcD8mQ3Ymf+eyYLbR8Ty8qGRHVNINwz5PTIhusisNmZ4 oFRfZNA4Su1Gufkt4LHnXJCllCW0KY4Np0u+PUfLl8PoczbXnHmzgzSsy4COjwiu1hez Efm+uodxPGgK9TxWYuhZnbJXnvfIe26uovGkl7u5PFJv5b3r/LrYI1Xcb2B2I8sRcOn0 1l4Xc6+PJeB73DA148GmpcG86jtPGxgGo4v77HqkeIfvfX4F9UmfGDHkfhIPHX04EZT3 dmlg== X-Gm-Message-State: ALKqPwfi+8kOHZt3azvtN+LiCfVB7jqO6S75TqxgdHBfqUHpV0R9YB1j +XT+Ob1OD6LYshN82kIBJiA= X-Received: by 2002:a81:3050:: with SMTP id w77-v6mr13238579yww.88.1528221692515; Tue, 05 Jun 2018 11:01:32 -0700 (PDT) Received: from localhost ([2620:10d:c091:200::1:f697]) by smtp.gmail.com with ESMTPSA id m206-v6sm6845370ywb.97.2018.06.05.11.01.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 Jun 2018 11:01:31 -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 , "Theodore Ts'o" , Jaegeuk Kim Subject: [PATCH 3/6] block: Define and use STAT_READ and STAT_WRITE Date: Tue, 5 Jun 2018 11:01:17 -0700 Message-Id: <20180605180120.2726113-4-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 defines for STAT_READ and STAT_WRITE for indexing the partition stat entries. This clarifies some fs/ code which has hardcoded 1 for STAT_WRITE and will make it easier to extend the stats with additional fields. tj: Refreshed on top of v4.17. Signed-off-by: Michael Callahan Signed-off-by: Tejun Heo Cc: "Theodore Ts'o" Cc: Jaegeuk Kim --- block/genhd.c | 16 ++++++++-------- block/partition-generic.c | 16 ++++++++-------- fs/ext4/super.c | 5 +++-- fs/ext4/sysfs.c | 6 ++++-- fs/f2fs/f2fs.h | 2 +- fs/f2fs/super.c | 3 ++- include/linux/blk_types.h | 7 +++++++ include/linux/genhd.h | 13 +++++++------ 8 files changed, 40 insertions(+), 28 deletions(-) diff --git a/block/genhd.c b/block/genhd.c index f1543a4..0711a80 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -1337,14 +1337,14 @@ static int diskstats_show(struct seq_file *seqf, void *v) "%u %lu %lu %lu %u %u %u %u\n", MAJOR(part_devt(hd)), MINOR(part_devt(hd)), disk_name(gp, hd->partno, buf), - part_stat_read(hd, ios[READ]), - part_stat_read(hd, merges[READ]), - part_stat_read(hd, sectors[READ]), - jiffies_to_msecs(part_stat_read(hd, ticks[READ])), - part_stat_read(hd, ios[WRITE]), - part_stat_read(hd, merges[WRITE]), - part_stat_read(hd, sectors[WRITE]), - jiffies_to_msecs(part_stat_read(hd, ticks[WRITE])), + part_stat_read(hd, ios[STAT_READ]), + part_stat_read(hd, merges[STAT_READ]), + part_stat_read(hd, sectors[STAT_READ]), + jiffies_to_msecs(part_stat_read(hd, ticks[STAT_READ])), + part_stat_read(hd, ios[STAT_WRITE]), + part_stat_read(hd, merges[STAT_WRITE]), + part_stat_read(hd, sectors[STAT_WRITE]), + jiffies_to_msecs(part_stat_read(hd, ticks[STAT_WRITE])), inflight[0], jiffies_to_msecs(part_stat_read(hd, io_ticks)), jiffies_to_msecs(part_stat_read(hd, time_in_queue)) diff --git a/block/partition-generic.c b/block/partition-generic.c index 3dcfd4e..0ddb067 100644 --- a/block/partition-generic.c +++ b/block/partition-generic.c @@ -132,14 +132,14 @@ ssize_t part_stat_show(struct device *dev, "%8lu %8lu %8llu %8u " "%8u %8u %8u" "\n", - part_stat_read(p, ios[READ]), - part_stat_read(p, merges[READ]), - (unsigned long long)part_stat_read(p, sectors[READ]), - jiffies_to_msecs(part_stat_read(p, ticks[READ])), - part_stat_read(p, ios[WRITE]), - part_stat_read(p, merges[WRITE]), - (unsigned long long)part_stat_read(p, sectors[WRITE]), - jiffies_to_msecs(part_stat_read(p, ticks[WRITE])), + part_stat_read(p, ios[STAT_READ]), + part_stat_read(p, merges[STAT_READ]), + (unsigned long long)part_stat_read(p, sectors[STAT_READ]), + jiffies_to_msecs(part_stat_read(p, ticks[STAT_READ])), + part_stat_read(p, ios[STAT_WRITE]), + part_stat_read(p, merges[STAT_WRITE]), + (unsigned long long)part_stat_read(p, sectors[STAT_WRITE]), + jiffies_to_msecs(part_stat_read(p, ticks[STAT_WRITE])), inflight[0], jiffies_to_msecs(part_stat_read(p, io_ticks)), jiffies_to_msecs(part_stat_read(p, time_in_queue))); diff --git a/fs/ext4/super.c b/fs/ext4/super.c index eb104e8..b0bda4d 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -3445,7 +3445,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) sbi->s_sb_block = sb_block; if (sb->s_bdev->bd_part) sbi->s_sectors_written_start = - part_stat_read(sb->s_bdev->bd_part, sectors[1]); + part_stat_read(sb->s_bdev->bd_part, sectors[STAT_WRITE]); /* Cleanup superblock name */ strreplace(sb->s_id, '/', '!'); @@ -4724,7 +4724,8 @@ static int ext4_commit_super(struct super_block *sb, int sync) if (sb->s_bdev->bd_part) es->s_kbytes_written = cpu_to_le64(EXT4_SB(sb)->s_kbytes_written + - ((part_stat_read(sb->s_bdev->bd_part, sectors[1]) - + ((part_stat_read(sb->s_bdev->bd_part, + sectors[STAT_WRITE]) - EXT4_SB(sb)->s_sectors_written_start) >> 1)); else es->s_kbytes_written = diff --git a/fs/ext4/sysfs.c b/fs/ext4/sysfs.c index f34da0b..2be9ad7 100644 --- a/fs/ext4/sysfs.c +++ b/fs/ext4/sysfs.c @@ -56,7 +56,8 @@ static ssize_t session_write_kbytes_show(struct ext4_sb_info *sbi, char *buf) if (!sb->s_bdev->bd_part) return snprintf(buf, PAGE_SIZE, "0\n"); return snprintf(buf, PAGE_SIZE, "%lu\n", - (part_stat_read(sb->s_bdev->bd_part, sectors[1]) - + (part_stat_read(sb->s_bdev->bd_part, + sectors[STAT_WRITE]) - sbi->s_sectors_written_start) >> 1); } @@ -68,7 +69,8 @@ static ssize_t lifetime_write_kbytes_show(struct ext4_sb_info *sbi, char *buf) return snprintf(buf, PAGE_SIZE, "0\n"); return snprintf(buf, PAGE_SIZE, "%llu\n", (unsigned long long)(sbi->s_kbytes_written + - ((part_stat_read(sb->s_bdev->bd_part, sectors[1]) - + ((part_stat_read(sb->s_bdev->bd_part, + sectors[STAT_WRITE]) - EXT4_SB(sb)->s_sectors_written_start) >> 1))); } diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index 1df7f10..43b4a4c 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -1286,7 +1286,7 @@ static inline bool time_to_inject(struct f2fs_sb_info *sbi, int type) * and the return value is in kbytes. s is of struct f2fs_sb_info. */ #define BD_PART_WRITTEN(s) \ -(((u64)part_stat_read((s)->sb->s_bdev->bd_part, sectors[1]) - \ +(((u64)part_stat_read((s)->sb->s_bdev->bd_part, sectors[STAT_WRITE]) - \ (s)->sectors_written_start) >> 1) static inline void f2fs_update_time(struct f2fs_sb_info *sbi, int type) diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 42d564c..88d44ca 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -2816,7 +2816,8 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent) /* For write statistics */ if (sb->s_bdev->bd_part) sbi->sectors_written_start = - (u64)part_stat_read(sb->s_bdev->bd_part, sectors[1]); + (u64)part_stat_read(sb->s_bdev->bd_part, + sectors[STAT_WRITE]); /* Read accumulated write IO statistics if exists */ seg_i = CURSEG_I(sbi, CURSEG_HOT_NODE); diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index 3c4f390..5bdf8c3 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h @@ -358,6 +358,13 @@ enum req_flag_bits { #define REQ_NOMERGE_FLAGS \ (REQ_NOMERGE | REQ_PREFLUSH | REQ_FUA) +enum stat_group { + STAT_READ, + STAT_WRITE, + + NR_STAT_GROUPS +}; + #define bio_op(bio) \ ((bio)->bi_opf & REQ_OP_MASK) #define req_op(req) \ diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 19f36fa..a754454 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h @@ -16,6 +16,7 @@ #include #include #include +#include #ifdef CONFIG_BLOCK @@ -82,10 +83,10 @@ struct partition { } __attribute__((packed)); struct disk_stats { - unsigned long sectors[2]; /* READs and WRITEs */ - unsigned long ios[2]; - unsigned long merges[2]; - unsigned long ticks[2]; + unsigned long sectors[NR_STAT_GROUPS]; + unsigned long ios[NR_STAT_GROUPS]; + unsigned long merges[NR_STAT_GROUPS]; + unsigned long ticks[NR_STAT_GROUPS]; unsigned long io_ticks; unsigned long time_in_queue; }; @@ -354,8 +355,8 @@ 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])) + (part_stat_read(part, field[STAT_READ]) + \ + part_stat_read(part, field[STAT_WRITE])) #define part_stat_add(cpu, part, field, addnd) do { \ __part_stat_add((cpu), (part), field, addnd); \ -- 2.9.5