mm/khugepaged: minor cleanup for collapse_file
nr_none is always 0 for non-shmem case because the page can be read from the backend store. So when nr_none ! = 0, it must be in is_shmem case. Also only adjust the nrpages and uncharge shmem when nr_none != 0 to save cpu cycles. Link: https://lkml.kernel.org/r/20220625092816.4856-5-linmiaohe@huawei.com Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> Reviewed-by: Zach O'Keefe <zokeefe@google.com> Cc: Alistair Popple <apopple@nvidia.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: David Hildenbrand <david@redhat.com> Cc: David Howells <dhowells@redhat.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: NeilBrown <neilb@suse.de> Cc: Peter Xu <peterx@redhat.com> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Yang Shi <shy828301@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
36ee2c784a
commit
2f55f070e5
|
@ -1881,8 +1881,8 @@ static void collapse_file(struct mm_struct *mm,
|
|||
|
||||
if (nr_none) {
|
||||
__mod_lruvec_page_state(new_page, NR_FILE_PAGES, nr_none);
|
||||
if (is_shmem)
|
||||
__mod_lruvec_page_state(new_page, NR_SHMEM, nr_none);
|
||||
/* nr_none is always 0 for non-shmem. */
|
||||
__mod_lruvec_page_state(new_page, NR_SHMEM, nr_none);
|
||||
}
|
||||
|
||||
/* Join all the small entries into a single multi-index entry */
|
||||
|
@ -1946,10 +1946,10 @@ static void collapse_file(struct mm_struct *mm,
|
|||
|
||||
/* Something went wrong: roll back page cache changes */
|
||||
xas_lock_irq(&xas);
|
||||
mapping->nrpages -= nr_none;
|
||||
|
||||
if (is_shmem)
|
||||
if (nr_none) {
|
||||
mapping->nrpages -= nr_none;
|
||||
shmem_uncharge(mapping->host, nr_none);
|
||||
}
|
||||
|
||||
xas_set(&xas, start);
|
||||
xas_for_each(&xas, page, end - 1) {
|
||||
|
|
Loading…
Reference in New Issue