mm/swap: reduce indentation level
Patch series "mm/swap: remove boilerplate".
This patch (of 5):
Use folio_activate() as an example:
Before this series
------------------
if (!folio_test_active(folio) && !folio_test_unevictable(folio)) {
struct folio_batch *fbatch;
folio_get(folio);
if (!folio_test_clear_lru(folio)) {
folio_put(folio);
return;
}
local_lock(&cpu_fbatches.lock);
fbatch = this_cpu_ptr(&cpu_fbatches.activate);
folio_batch_add_and_move(fbatch, folio, folio_activate_fn);
local_unlock(&cpu_fbatches.lock);
}
}
After this series
-----------------
void folio_activate(struct folio *folio)
{
if (folio_test_active(folio) || folio_test_unevictable(folio))
return;
folio_batch_add_and_move(folio, lru_activate, true);
}
And this is applied to all 6 folio_batch handlers in mm/swap.c.
bloat-o-meter
-------------
add/remove: 12/13 grow/shrink: 3/2 up/down: 4653/-4721 (-68)
...
Total: Before=28083019, After=28082951, chg -0.00%
This patch (of 5):
Reduce indentation level by returning directly when there is no cleanup
needed, i.e.,
if (condition) { | if (condition) {
do_this(); | do_this();
return; | return;
} else { | }
do_that(); |
} | do_that();
and
if (condition) { | if (!condition)
do_this(); | return;
do_that(); |
} | do_this();
return; | do_that();
Presumably the old style became repetitive as the result of copy and
paste.
Link: https://lkml.kernel.org/r/20240711021317.596178-1-yuzhao@google.com
Link: https://lkml.kernel.org/r/20240711021317.596178-2-yuzhao@google.com
Signed-off-by: Yu Zhao <yuzhao@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
@@ -117,7 +117,9 @@ void __folio_put(struct folio *folio)
|
|||||||
if (unlikely(folio_is_zone_device(folio))) {
|
if (unlikely(folio_is_zone_device(folio))) {
|
||||||
free_zone_device_folio(folio);
|
free_zone_device_folio(folio);
|
||||||
return;
|
return;
|
||||||
} else if (folio_test_hugetlb(folio)) {
|
}
|
||||||
|
|
||||||
|
if (folio_test_hugetlb(folio)) {
|
||||||
free_huge_folio(folio);
|
free_huge_folio(folio);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -228,18 +230,20 @@ static void folio_batch_add_and_move(struct folio_batch *fbatch,
|
|||||||
if (folio_batch_add(fbatch, folio) && !folio_test_large(folio) &&
|
if (folio_batch_add(fbatch, folio) && !folio_test_large(folio) &&
|
||||||
!lru_cache_disabled())
|
!lru_cache_disabled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
folio_batch_move_lru(fbatch, move_fn);
|
folio_batch_move_lru(fbatch, move_fn);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lru_move_tail_fn(struct lruvec *lruvec, struct folio *folio)
|
static void lru_move_tail_fn(struct lruvec *lruvec, struct folio *folio)
|
||||||
{
|
{
|
||||||
if (!folio_test_unevictable(folio)) {
|
if (folio_test_unevictable(folio))
|
||||||
|
return;
|
||||||
|
|
||||||
lruvec_del_folio(lruvec, folio);
|
lruvec_del_folio(lruvec, folio);
|
||||||
folio_clear_active(folio);
|
folio_clear_active(folio);
|
||||||
lruvec_add_folio_tail(lruvec, folio);
|
lruvec_add_folio_tail(lruvec, folio);
|
||||||
__count_vm_events(PGROTATED, folio_nr_pages(folio));
|
__count_vm_events(PGROTATED, folio_nr_pages(folio));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writeback is about to end against a folio which has been marked for
|
* Writeback is about to end against a folio which has been marked for
|
||||||
@@ -250,11 +254,13 @@ static void lru_move_tail_fn(struct lruvec *lruvec, struct folio *folio)
|
|||||||
*/
|
*/
|
||||||
void folio_rotate_reclaimable(struct folio *folio)
|
void folio_rotate_reclaimable(struct folio *folio)
|
||||||
{
|
{
|
||||||
if (!folio_test_locked(folio) && !folio_test_dirty(folio) &&
|
|
||||||
!folio_test_unevictable(folio)) {
|
|
||||||
struct folio_batch *fbatch;
|
struct folio_batch *fbatch;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
|
if (folio_test_locked(folio) || folio_test_dirty(folio) ||
|
||||||
|
folio_test_unevictable(folio))
|
||||||
|
return;
|
||||||
|
|
||||||
folio_get(folio);
|
folio_get(folio);
|
||||||
if (!folio_test_clear_lru(folio)) {
|
if (!folio_test_clear_lru(folio)) {
|
||||||
folio_put(folio);
|
folio_put(folio);
|
||||||
@@ -266,7 +272,6 @@ void folio_rotate_reclaimable(struct folio *folio)
|
|||||||
folio_batch_add_and_move(fbatch, folio, lru_move_tail_fn);
|
folio_batch_add_and_move(fbatch, folio, lru_move_tail_fn);
|
||||||
local_unlock_irqrestore(&lru_rotate.lock, flags);
|
local_unlock_irqrestore(&lru_rotate.lock, flags);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void lru_note_cost(struct lruvec *lruvec, bool file,
|
void lru_note_cost(struct lruvec *lruvec, bool file,
|
||||||
unsigned int nr_io, unsigned int nr_rotated)
|
unsigned int nr_io, unsigned int nr_rotated)
|
||||||
@@ -328,18 +333,19 @@ void lru_note_cost_refault(struct folio *folio)
|
|||||||
|
|
||||||
static void folio_activate_fn(struct lruvec *lruvec, struct folio *folio)
|
static void folio_activate_fn(struct lruvec *lruvec, struct folio *folio)
|
||||||
{
|
{
|
||||||
if (!folio_test_active(folio) && !folio_test_unevictable(folio)) {
|
|
||||||
long nr_pages = folio_nr_pages(folio);
|
long nr_pages = folio_nr_pages(folio);
|
||||||
|
|
||||||
|
if (folio_test_active(folio) || folio_test_unevictable(folio))
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
lruvec_del_folio(lruvec, folio);
|
lruvec_del_folio(lruvec, folio);
|
||||||
folio_set_active(folio);
|
folio_set_active(folio);
|
||||||
lruvec_add_folio(lruvec, folio);
|
lruvec_add_folio(lruvec, folio);
|
||||||
trace_mm_lru_activate(folio);
|
trace_mm_lru_activate(folio);
|
||||||
|
|
||||||
__count_vm_events(PGACTIVATE, nr_pages);
|
__count_vm_events(PGACTIVATE, nr_pages);
|
||||||
__count_memcg_events(lruvec_memcg(lruvec), PGACTIVATE,
|
__count_memcg_events(lruvec_memcg(lruvec), PGACTIVATE, nr_pages);
|
||||||
nr_pages);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
@@ -353,9 +359,11 @@ static void folio_activate_drain(int cpu)
|
|||||||
|
|
||||||
void folio_activate(struct folio *folio)
|
void folio_activate(struct folio *folio)
|
||||||
{
|
{
|
||||||
if (!folio_test_active(folio) && !folio_test_unevictable(folio)) {
|
|
||||||
struct folio_batch *fbatch;
|
struct folio_batch *fbatch;
|
||||||
|
|
||||||
|
if (folio_test_active(folio) || folio_test_unevictable(folio))
|
||||||
|
return;
|
||||||
|
|
||||||
folio_get(folio);
|
folio_get(folio);
|
||||||
if (!folio_test_clear_lru(folio)) {
|
if (!folio_test_clear_lru(folio)) {
|
||||||
folio_put(folio);
|
folio_put(folio);
|
||||||
@@ -367,7 +375,6 @@ void folio_activate(struct folio *folio)
|
|||||||
folio_batch_add_and_move(fbatch, folio, folio_activate_fn);
|
folio_batch_add_and_move(fbatch, folio, folio_activate_fn);
|
||||||
local_unlock(&cpu_fbatches.lock);
|
local_unlock(&cpu_fbatches.lock);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
static inline void folio_activate_drain(int cpu)
|
static inline void folio_activate_drain(int cpu)
|
||||||
@@ -378,13 +385,14 @@ void folio_activate(struct folio *folio)
|
|||||||
{
|
{
|
||||||
struct lruvec *lruvec;
|
struct lruvec *lruvec;
|
||||||
|
|
||||||
if (folio_test_clear_lru(folio)) {
|
if (!folio_test_clear_lru(folio))
|
||||||
|
return;
|
||||||
|
|
||||||
lruvec = folio_lruvec_lock_irq(folio);
|
lruvec = folio_lruvec_lock_irq(folio);
|
||||||
folio_activate_fn(lruvec, folio);
|
folio_activate_fn(lruvec, folio);
|
||||||
unlock_page_lruvec_irq(lruvec);
|
unlock_page_lruvec_irq(lruvec);
|
||||||
folio_set_lru(folio);
|
folio_set_lru(folio);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void __lru_cache_activate_folio(struct folio *folio)
|
static void __lru_cache_activate_folio(struct folio *folio)
|
||||||
@@ -610,26 +618,28 @@ static void lru_deactivate_file_fn(struct lruvec *lruvec, struct folio *folio)
|
|||||||
|
|
||||||
static void lru_deactivate_fn(struct lruvec *lruvec, struct folio *folio)
|
static void lru_deactivate_fn(struct lruvec *lruvec, struct folio *folio)
|
||||||
{
|
{
|
||||||
if (!folio_test_unevictable(folio) && (folio_test_active(folio) || lru_gen_enabled())) {
|
|
||||||
long nr_pages = folio_nr_pages(folio);
|
long nr_pages = folio_nr_pages(folio);
|
||||||
|
|
||||||
|
if (folio_test_unevictable(folio) || !(folio_test_active(folio) || lru_gen_enabled()))
|
||||||
|
return;
|
||||||
|
|
||||||
lruvec_del_folio(lruvec, folio);
|
lruvec_del_folio(lruvec, folio);
|
||||||
folio_clear_active(folio);
|
folio_clear_active(folio);
|
||||||
folio_clear_referenced(folio);
|
folio_clear_referenced(folio);
|
||||||
lruvec_add_folio(lruvec, folio);
|
lruvec_add_folio(lruvec, folio);
|
||||||
|
|
||||||
__count_vm_events(PGDEACTIVATE, nr_pages);
|
__count_vm_events(PGDEACTIVATE, nr_pages);
|
||||||
__count_memcg_events(lruvec_memcg(lruvec), PGDEACTIVATE,
|
__count_memcg_events(lruvec_memcg(lruvec), PGDEACTIVATE, nr_pages);
|
||||||
nr_pages);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lru_lazyfree_fn(struct lruvec *lruvec, struct folio *folio)
|
static void lru_lazyfree_fn(struct lruvec *lruvec, struct folio *folio)
|
||||||
{
|
{
|
||||||
if (folio_test_anon(folio) && folio_test_swapbacked(folio) &&
|
|
||||||
!folio_test_swapcache(folio) && !folio_test_unevictable(folio)) {
|
|
||||||
long nr_pages = folio_nr_pages(folio);
|
long nr_pages = folio_nr_pages(folio);
|
||||||
|
|
||||||
|
if (!folio_test_anon(folio) || !folio_test_swapbacked(folio) ||
|
||||||
|
folio_test_swapcache(folio) || folio_test_unevictable(folio))
|
||||||
|
return;
|
||||||
|
|
||||||
lruvec_del_folio(lruvec, folio);
|
lruvec_del_folio(lruvec, folio);
|
||||||
folio_clear_active(folio);
|
folio_clear_active(folio);
|
||||||
folio_clear_referenced(folio);
|
folio_clear_referenced(folio);
|
||||||
@@ -642,9 +652,7 @@ static void lru_lazyfree_fn(struct lruvec *lruvec, struct folio *folio)
|
|||||||
lruvec_add_folio(lruvec, folio);
|
lruvec_add_folio(lruvec, folio);
|
||||||
|
|
||||||
__count_vm_events(PGLAZYFREE, nr_pages);
|
__count_vm_events(PGLAZYFREE, nr_pages);
|
||||||
__count_memcg_events(lruvec_memcg(lruvec), PGLAZYFREE,
|
__count_memcg_events(lruvec_memcg(lruvec), PGLAZYFREE, nr_pages);
|
||||||
nr_pages);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -726,10 +734,11 @@ void deactivate_file_folio(struct folio *folio)
|
|||||||
*/
|
*/
|
||||||
void folio_deactivate(struct folio *folio)
|
void folio_deactivate(struct folio *folio)
|
||||||
{
|
{
|
||||||
if (!folio_test_unevictable(folio) && (folio_test_active(folio) ||
|
|
||||||
lru_gen_enabled())) {
|
|
||||||
struct folio_batch *fbatch;
|
struct folio_batch *fbatch;
|
||||||
|
|
||||||
|
if (folio_test_unevictable(folio) || !(folio_test_active(folio) || lru_gen_enabled()))
|
||||||
|
return;
|
||||||
|
|
||||||
folio_get(folio);
|
folio_get(folio);
|
||||||
if (!folio_test_clear_lru(folio)) {
|
if (!folio_test_clear_lru(folio)) {
|
||||||
folio_put(folio);
|
folio_put(folio);
|
||||||
@@ -741,7 +750,6 @@ void folio_deactivate(struct folio *folio)
|
|||||||
folio_batch_add_and_move(fbatch, folio, lru_deactivate_fn);
|
folio_batch_add_and_move(fbatch, folio, lru_deactivate_fn);
|
||||||
local_unlock(&cpu_fbatches.lock);
|
local_unlock(&cpu_fbatches.lock);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* folio_mark_lazyfree - make an anon folio lazyfree
|
* folio_mark_lazyfree - make an anon folio lazyfree
|
||||||
@@ -752,10 +760,12 @@ void folio_deactivate(struct folio *folio)
|
|||||||
*/
|
*/
|
||||||
void folio_mark_lazyfree(struct folio *folio)
|
void folio_mark_lazyfree(struct folio *folio)
|
||||||
{
|
{
|
||||||
if (folio_test_anon(folio) && folio_test_swapbacked(folio) &&
|
|
||||||
!folio_test_swapcache(folio) && !folio_test_unevictable(folio)) {
|
|
||||||
struct folio_batch *fbatch;
|
struct folio_batch *fbatch;
|
||||||
|
|
||||||
|
if (!folio_test_anon(folio) || !folio_test_swapbacked(folio) ||
|
||||||
|
folio_test_swapcache(folio) || folio_test_unevictable(folio))
|
||||||
|
return;
|
||||||
|
|
||||||
folio_get(folio);
|
folio_get(folio);
|
||||||
if (!folio_test_clear_lru(folio)) {
|
if (!folio_test_clear_lru(folio)) {
|
||||||
folio_put(folio);
|
folio_put(folio);
|
||||||
@@ -767,7 +777,6 @@ void folio_mark_lazyfree(struct folio *folio)
|
|||||||
folio_batch_add_and_move(fbatch, folio, lru_lazyfree_fn);
|
folio_batch_add_and_move(fbatch, folio, lru_lazyfree_fn);
|
||||||
local_unlock(&cpu_fbatches.lock);
|
local_unlock(&cpu_fbatches.lock);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void lru_add_drain(void)
|
void lru_add_drain(void)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user