Thread (32 messages) 32 messages, 3 authors, 2019-10-25

Re: [PATCH 5/8] mm: vmscan: replace shrink_node() loop with a retry jump

From: Johannes Weiner <hannes@cmpxchg.org>
Date: 2019-10-25 13:44:48
Also in: linux-mm, lkml

On Wed, Oct 23, 2019 at 04:18:57PM +0200, Michal Hocko wrote:
On Tue 22-10-19 10:48:00, Johannes Weiner wrote:
quoted
Most of the function body is inside a loop, which imposes an
additional indentation and scoping level that makes the code a bit
hard to follow and modify.
I do agree!
quoted
The looping only happens in case of reclaim-compaction, which isn't
the common case. So rather than adding yet another function level to
the reclaim path and have every reclaim invocation go through a level
that only exists for one specific cornercase, use a retry goto.
I would just keep the core logic in its own function and do the loop
around it rather than a goto retry. This is certainly a matter of taste
but I like a loop with an explicit condition much more than a if with
goto.
Yeah, as the changelog says, I'm intentionally putting the looping
construct into the "cold path" of the code flow: we only loops in a
very specific cornercase, and having the whole body in a loop, or
creating another function nesting level for it suggests otherwise.

A goto seems like the perfect tool to have a retry for one particular
caller without muddying the code flow for the common call stack.

Matter of taste, I guess.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help