mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
mm: migrate: one less atomic operation
migrate_page_move_mapping() drops a reference from the old page after unfreezing its counter. Both operations can be merged into a single atomic operation by directly unfreezing to one less reference. The same applies to migrate_huge_page_move_mapping(). Signed-off-by: Jacobo Giralt <[email protected]> Cc: Mel Gorman <[email protected]> Cc: Minchan Kim <[email protected]> Cc: Johannes Weiner <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
90a5d5af74
commit
937a94c9db
1 changed files with 4 additions and 6 deletions
10
mm/migrate.c
10
mm/migrate.c
|
|
@ -269,12 +269,12 @@ static int migrate_page_move_mapping(struct address_space *mapping,
|
|||
|
||||
radix_tree_replace_slot(pslot, newpage);
|
||||
|
||||
page_unfreeze_refs(page, expected_count);
|
||||
/*
|
||||
* Drop cache reference from old page.
|
||||
* Drop cache reference from old page by unfreezing
|
||||
* to one less reference.
|
||||
* We know this isn't the last reference.
|
||||
*/
|
||||
__put_page(page);
|
||||
page_unfreeze_refs(page, expected_count - 1);
|
||||
|
||||
/*
|
||||
* If moved to a different zone then also account
|
||||
|
|
@ -334,9 +334,7 @@ int migrate_huge_page_move_mapping(struct address_space *mapping,
|
|||
|
||||
radix_tree_replace_slot(pslot, newpage);
|
||||
|
||||
page_unfreeze_refs(page, expected_count);
|
||||
|
||||
__put_page(page);
|
||||
page_unfreeze_refs(page, expected_count - 1);
|
||||
|
||||
spin_unlock_irq(&mapping->tree_lock);
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue