Skip to content
  • Johannes Weiner's avatar
    mm: memcontrol: drop unnecessary lru locking from mem_cgroup_migrate() · 9cf7666a
    Johannes Weiner authored
    
    
    Migration accounting in the memory controller used to have to handle
    both oldpage and newpage being on the LRU already; fuse's page cache
    replacement used to pass a recycled newpage that had been uncharged but
    not freed and removed from the LRU, and the memcg migration code used to
    uncharge oldpage to "pass on" the existing charge to newpage.
    
    Nowadays, pages are no longer uncharged when truncated from the page
    cache, but rather only at free time, so if a LRU page is recycled in
    page cache replacement it'll also still be charged.  And we bail out of
    the charge transfer altogether in that case.  Tell commit_charge() that
    we know newpage is not on the LRU, to avoid taking the zone->lru_lock
    unnecessarily from the migration path.
    
    But also, oldpage is no longer uncharged inside migration.  We only use
    oldpage for its page->mem_cgroup and page size, so we don't care about
    its LRU state anymore either.  Remove any mention from the kernel doc.
    
    Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Suggested-by: default avatarHugh Dickins <hughd@google.com>
    Acked-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Cc: Mateusz Guzik <mguzik@redhat.com>
    Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    9cf7666a