On Mon, Jun 30, 2025 at 03:00:09PM +0200, David Hildenbrand wrote: > Let's bring the docs up-to-date. Setting PG_movable_ops + page->private > very likely still requires to be performed under documented locks: > it's complicated. > > We will rework this in the future, as we will try avoiding using the > page lock. > > Signed-off-by: David Hildenbrand <da...@redhat.com>
LGTM, so: Reviewed-by: Lorenzo Stoakes <lorenzo.stoa...@oracle.com> > --- > include/linux/balloon_compaction.h | 13 ++++++------- > 1 file changed, 6 insertions(+), 7 deletions(-) > > diff --git a/include/linux/balloon_compaction.h > b/include/linux/balloon_compaction.h > index b222b0737c466..2fecfead91d26 100644 > --- a/include/linux/balloon_compaction.h > +++ b/include/linux/balloon_compaction.h > @@ -4,12 +4,13 @@ > * > * Common interface definitions for making balloon pages movable by > compaction. > * > - * Balloon page migration makes use of the general non-lru movable page > + * Balloon page migration makes use of the general "movable_ops page > migration" > * feature. > * > * page->private is used to reference the responsible balloon device. > - * page->mapping is used in context of non-lru page migration to reference > - * the address space operations for page isolation/migration/compaction. > + * That these pages have movable_ops, and which movable_ops apply, > + * is derived from the page type (PageOffline()) combined with the > + * PG_movable_ops flag (PageMovableOps()). > * > * As the page isolation scanning step a compaction thread does is a lockless > * procedure (from a page standpoint), it might bring some racy situations > while > @@ -17,12 +18,10 @@ > * and safely perform balloon's page compaction and migration we must, > always, > * ensure following these simple rules: > * > - * i. when updating a balloon's page ->mapping element, strictly do it > under > - * the following lock order, independently of the far superior > - * locking scheme (lru_lock, balloon_lock): > + * i. Setting the PG_movable_ops flag and page->private with the following > + * lock order > * +-page_lock(page); > * +--spin_lock_irq(&b_dev_info->pages_lock); > - * ... page->mapping updates here ... > * > * ii. isolation or dequeueing procedure must remove the page from balloon > * device page list under b_dev_info->pages_lock. > -- > 2.49.0 >