Skip to content
Snippets Groups Projects
  • Alistair Popple's avatar
    67e139b0
    mm/gup.c: refactor check_and_migrate_movable_pages() · 67e139b0
    Alistair Popple authored
    When pinning pages with FOLL_LONGTERM check_and_migrate_movable_pages() is
    called to migrate pages out of zones which should not contain any longterm
    pinned pages.
    
    When migration succeeds all pages will have been unpinned so pinning needs
    to be retried.  Migration can also fail, in which case the pages will also
    have been unpinned but the operation should not be retried.  If all pages
    are in the correct zone nothing will be unpinned and no retry is required.
    
    The logic in check_and_migrate_movable_pages() tracks unnecessary state
    and the return codes for each case are difficult to follow.  Refactor the
    code to clean this up.  No behaviour change is intended.
    
    [akpm@linux-foundation.org: fix unused var warning]
    Link: https://lkml.kernel.org/r/19583d1df07fdcb99cfa05c265588a3fa58d1902.1661317396.git-series.apopple@nvidia.com
    
    
    Signed-off-by: default avatarAlistair Popple <apopple@nvidia.com>
    Reviewed-by: default avatarJohn Hubbard <jhubbard@nvidia.com>
    Cc: Alex Sierra <alex.sierra@amd.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Felix Kuehling <felix.kuehling@amd.com>
    Cc: Jason Gunthorpe <jgg@nvidia.com>
    Cc: Logan Gunthorpe <logang@deltatee.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Ralph Campbell <rcampbell@nvidia.com>
    Cc: Shigeru Yoshida <syoshida@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    67e139b0
    History
    mm/gup.c: refactor check_and_migrate_movable_pages()
    Alistair Popple authored
    When pinning pages with FOLL_LONGTERM check_and_migrate_movable_pages() is
    called to migrate pages out of zones which should not contain any longterm
    pinned pages.
    
    When migration succeeds all pages will have been unpinned so pinning needs
    to be retried.  Migration can also fail, in which case the pages will also
    have been unpinned but the operation should not be retried.  If all pages
    are in the correct zone nothing will be unpinned and no retry is required.
    
    The logic in check_and_migrate_movable_pages() tracks unnecessary state
    and the return codes for each case are difficult to follow.  Refactor the
    code to clean this up.  No behaviour change is intended.
    
    [akpm@linux-foundation.org: fix unused var warning]
    Link: https://lkml.kernel.org/r/19583d1df07fdcb99cfa05c265588a3fa58d1902.1661317396.git-series.apopple@nvidia.com
    
    
    Signed-off-by: default avatarAlistair Popple <apopple@nvidia.com>
    Reviewed-by: default avatarJohn Hubbard <jhubbard@nvidia.com>
    Cc: Alex Sierra <alex.sierra@amd.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Felix Kuehling <felix.kuehling@amd.com>
    Cc: Jason Gunthorpe <jgg@nvidia.com>
    Cc: Logan Gunthorpe <logang@deltatee.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Ralph Campbell <rcampbell@nvidia.com>
    Cc: Shigeru Yoshida <syoshida@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>