Messages in this thread Patch in this message | | | Date | Tue, 28 Mar 2023 13:49:02 -0400 | From | Johannes Weiner <> | Subject | Re: [PATCH v1 4/9] cgroup: rstat: add WARN_ON_ONCE() if flushing outside task context |
| |
On Tue, Mar 28, 2023 at 06:16:33AM +0000, Yosry Ahmed wrote: > rstat flushing is too expensive to perform in irq context. > The previous patch removed the only context that may invoke an rstat > flush from irq context, add a WARN_ON_ONCE() to detect future > violations, or those that we are not aware of. > > Signed-off-by: Yosry Ahmed <yosryahmed@google.com> > --- > kernel/cgroup/rstat.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/kernel/cgroup/rstat.c b/kernel/cgroup/rstat.c > index d3252b0416b6..c2571939139f 100644 > --- a/kernel/cgroup/rstat.c > +++ b/kernel/cgroup/rstat.c > @@ -176,6 +176,8 @@ static void cgroup_rstat_flush_locked(struct cgroup *cgrp, bool may_sleep) > { > int cpu; > > + /* rstat flushing is too expensive for irq context */ > + WARN_ON_ONCE(!in_task()); > lockdep_assert_held(&cgroup_rstat_lock);
This seems a bit arbitrary. Why is an irq caller forbidden, but an irq-disabled, non-preemptible section caller is allowed? The latency impact on the system would be the same, right?
| |