From: Kent Overstreet <kent.overstreet@linux.dev>
To: david@fromorbit.com, linux-fsdevel@vger.kernel.org,
linux-mm@vger.kernel.org
Cc: Kent Overstreet <kent.overstreet@linux.dev>,
Alexander Viro <viro@zeniv.linux.org.uk>,
linux-fsdevel@vger.krenel.org, Tejun Heo <tj@kernel.org>
Subject: [PATCH 07/10] percpu: per_cpu_sum()
Date: Sat, 24 Aug 2024 14:04:49 -0400 [thread overview]
Message-ID: <20240824180454.3160385-8-kent.overstreet@linux.dev> (raw)
In-Reply-To: <20240824180454.3160385-1-kent.overstreet@linux.dev>
Add a little helper to replace open coded versions.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: linux-fsdevel@vger.krenel.org
Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
---
fs/bcachefs/util.h | 10 ----------
fs/dcache.c | 16 +++-------------
include/linux/percpu.h | 10 ++++++++++
3 files changed, 13 insertions(+), 23 deletions(-)
diff --git a/fs/bcachefs/util.h b/fs/bcachefs/util.h
index fb02c1c36004..e90c2f546007 100644
--- a/fs/bcachefs/util.h
+++ b/fs/bcachefs/util.h
@@ -584,16 +584,6 @@ do { \
} \
} while (0)
-#define per_cpu_sum(_p) \
-({ \
- typeof(*_p) _ret = 0; \
- \
- int cpu; \
- for_each_possible_cpu(cpu) \
- _ret += *per_cpu_ptr(_p, cpu); \
- _ret; \
-})
-
static inline u64 percpu_u64_get(u64 __percpu *src)
{
return per_cpu_sum(src);
diff --git a/fs/dcache.c b/fs/dcache.c
index 3d8daaecb6d1..64108cbd52f6 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -151,29 +151,19 @@ static struct dentry_stat_t dentry_stat = {
*/
static long get_nr_dentry(void)
{
- int i;
- long sum = 0;
- for_each_possible_cpu(i)
- sum += per_cpu(nr_dentry, i);
+ long sum = per_cpu_sum(&nr_dentry);
return sum < 0 ? 0 : sum;
}
static long get_nr_dentry_unused(void)
{
- int i;
- long sum = 0;
- for_each_possible_cpu(i)
- sum += per_cpu(nr_dentry_unused, i);
+ long sum = per_cpu_sum(&nr_dentry_unused);
return sum < 0 ? 0 : sum;
}
static long get_nr_dentry_negative(void)
{
- int i;
- long sum = 0;
-
- for_each_possible_cpu(i)
- sum += per_cpu(nr_dentry_negative, i);
+ long sum = per_cpu_sum(&nr_dentry_negative);
return sum < 0 ? 0 : sum;
}
diff --git a/include/linux/percpu.h b/include/linux/percpu.h
index 4b2047b78b67..0df28ff54f66 100644
--- a/include/linux/percpu.h
+++ b/include/linux/percpu.h
@@ -162,4 +162,14 @@ extern phys_addr_t per_cpu_ptr_to_phys(void *addr);
extern unsigned long pcpu_nr_pages(void);
+#define per_cpu_sum(_p) \
+({ \
+ typeof(*(_p)) sum = 0; \
+ int cpu; \
+ \
+ for_each_possible_cpu(cpu) \
+ sum += *per_cpu_ptr(_p, cpu); \
+ sum; \
+})
+
#endif /* __LINUX_PERCPU_H */
--
2.45.2
next prev parent reply other threads:[~2024-08-24 18:05 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-24 18:04 [PATCH 00/10] shrinker debugging, .to_text() report Kent Overstreet
2024-08-24 18:04 ` [PATCH 01/10] seq_buf: seq_buf_human_readable_u64() Kent Overstreet
2024-08-24 18:04 ` [PATCH 02/10] mm: shrinker: Add a .to_text() method for shrinkers Kent Overstreet
2024-08-24 18:04 ` [PATCH 03/10] mm: shrinker: Add new stats for .to_text() Kent Overstreet
2024-08-24 18:04 ` [PATCH 04/10] mm: Centralize & improve oom reporting in show_mem.c Kent Overstreet
2024-08-24 18:04 ` [PATCH 05/10] mm: shrinker: Add shrinker_to_text() to debugfs interface Kent Overstreet
2024-08-24 18:04 ` [PATCH 06/10] bcachefs: shrinker.to_text() methods Kent Overstreet
2024-08-24 18:04 ` Kent Overstreet [this message]
2024-08-24 18:04 ` [PATCH 08/10] fs: Add super_block->s_inodes_nr Kent Overstreet
2024-08-24 18:04 ` [PATCH 09/10] fs/dcache: Add per-sb accounting for nr dentries Kent Overstreet
2024-08-24 18:04 ` [PATCH 10/10] fs: super_cache_to_text() Kent Overstreet
-- strict thread matches above, loose matches on Subject: below --
2024-08-24 19:10 [PATCH 00/10] shrinker debugging, .to_text() report (resend) Kent Overstreet
2024-08-24 19:10 ` [PATCH 07/10] percpu: per_cpu_sum() Kent Overstreet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240824180454.3160385-8-kent.overstreet@linux.dev \
--to=kent.overstreet@linux.dev \
--cc=david@fromorbit.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-fsdevel@vger.krenel.org \
--cc=linux-mm@vger.kernel.org \
--cc=tj@kernel.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.