mirror of https://github.com/torvalds/linux.git
mm/balloon_compaction: stop using __ClearPageMovable()
We can just look at the balloon device (stored in page->private), to see if the page is still part of the balloon. As isolated balloon pages cannot get released (they are taken off the balloon list while isolated), we don't have to worry about this case in the putback and migration callback. Add a WARN_ON_ONCE for now. Link: https://lkml.kernel.org/r/20250704102524.326966-14-david@redhat.com Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Cc: Alistair Popple <apopple@nvidia.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Brendan Jackman <jackmanb@google.com> Cc: Byungchul Park <byungchul@sk.com> Cc: Chengming Zhou <chengming.zhou@linux.dev> Cc: Christian Brauner <brauner@kernel.org> Cc: Christophe Leroy <christophe.leroy@csgroup.eu> Cc: Eugenio Pé rez <eperezma@redhat.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Gregory Price <gourry@gourry.net> Cc: Harry Yoo <harry.yoo@oracle.com> Cc: "Huang, Ying" <ying.huang@linux.alibaba.com> Cc: Jan Kara <jack@suse.cz> Cc: Jason Gunthorpe <jgg@ziepe.ca> Cc: Jason Wang <jasowang@redhat.com> Cc: Jerrin Shaji George <jerrin.shaji-george@broadcom.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: John Hubbard <jhubbard@nvidia.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Joshua Hahn <joshua.hahnjy@gmail.com> Cc: Liam Howlett <liam.howlett@oracle.com> Cc: Madhavan Srinivasan <maddy@linux.ibm.com> Cc: Mathew Brost <matthew.brost@intel.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Miaohe Lin <linmiaohe@huawei.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: "Michael S. Tsirkin" <mst@redhat.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Minchan Kim <minchan@kernel.org> Cc: Naoya Horiguchi <nao.horiguchi@gmail.com> Cc: Nicholas Piggin <npiggin@gmail.com> Cc: Oscar Salvador <osalvador@suse.de> Cc: Peter Xu <peterx@redhat.com> Cc: Qi Zheng <zhengqi.arch@bytedance.com> Cc: Rakie Kim <rakie.kim@sk.com> Cc: Rik van Riel <riel@surriel.com> Cc: Sergey Senozhatsky <senozhatsky@chromium.org> Cc: Shakeel Butt <shakeel.butt@linux.dev> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Xuan Zhuo <xuanzhuo@linux.alibaba.com> Cc: xu xin <xu.xin16@zte.com.cn> Cc: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
a109262734
commit
3544c4facc
|
|
@ -136,10 +136,8 @@ static inline gfp_t balloon_mapping_gfp_mask(void)
|
|||
*/
|
||||
static inline void balloon_page_finalize(struct page *page)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_BALLOON_COMPACTION)) {
|
||||
__ClearPageMovable(page);
|
||||
if (IS_ENABLED(CONFIG_BALLOON_COMPACTION))
|
||||
set_page_private(page, 0);
|
||||
}
|
||||
/* PageOffline is sticky until the page is freed to the buddy. */
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -206,6 +206,9 @@ static bool balloon_page_isolate(struct page *page, isolate_mode_t mode)
|
|||
struct balloon_dev_info *b_dev_info = balloon_page_device(page);
|
||||
unsigned long flags;
|
||||
|
||||
if (!b_dev_info)
|
||||
return false;
|
||||
|
||||
spin_lock_irqsave(&b_dev_info->pages_lock, flags);
|
||||
list_del(&page->lru);
|
||||
b_dev_info->isolated_pages++;
|
||||
|
|
@ -219,6 +222,10 @@ static void balloon_page_putback(struct page *page)
|
|||
struct balloon_dev_info *b_dev_info = balloon_page_device(page);
|
||||
unsigned long flags;
|
||||
|
||||
/* Isolated balloon pages cannot get deflated. */
|
||||
if (WARN_ON_ONCE(!b_dev_info))
|
||||
return;
|
||||
|
||||
spin_lock_irqsave(&b_dev_info->pages_lock, flags);
|
||||
list_add(&page->lru, &b_dev_info->pages);
|
||||
b_dev_info->isolated_pages--;
|
||||
|
|
@ -234,6 +241,10 @@ static int balloon_page_migrate(struct page *newpage, struct page *page,
|
|||
VM_BUG_ON_PAGE(!PageLocked(page), page);
|
||||
VM_BUG_ON_PAGE(!PageLocked(newpage), newpage);
|
||||
|
||||
/* Isolated balloon pages cannot get deflated. */
|
||||
if (WARN_ON_ONCE(!balloon))
|
||||
return -EAGAIN;
|
||||
|
||||
return balloon->migratepage(balloon, newpage, page, mode);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue