From: David Hildenbrand <david@redhat.com>
To: linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
devel@linuxdriverproject.org, linux-fsdevel@vger.kernel.org,
linux-pm@vger.kernel.org, xen-devel@lists.xenproject.org,
David Hildenbrand <david@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
Matthew Wilcox <willy@infradead.org>,
Michal Hocko <mhocko@suse.com>,
"Michael S. Tsirkin" <mst@redhat.com>
Subject: [PATCH RFC 1/6] mm: balloon: update comment about isolation/migration/compaction
Date: Wed, 14 Nov 2018 22:16:59 +0100 [thread overview]
Message-ID: <20181114211704.6381-2-david@redhat.com> (raw)
In-Reply-To: <20181114211704.6381-1-david@redhat.com>
Commit b1123ea6d3b3 ("mm: balloon: use general non-lru movable page
feature") reworked balloon handling to make use of the general
non-lru movable page feature. The big comment block in
balloon_compaction.h contains quite some outdated information. Let's fix
this.
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
---
include/linux/balloon_compaction.h | 26 +++++++++-----------------
1 file changed, 9 insertions(+), 17 deletions(-)
diff --git a/include/linux/balloon_compaction.h b/include/linux/balloon_compaction.h
index 53051f3d8f25..cbe50da5a59d 100644
--- a/include/linux/balloon_compaction.h
+++ b/include/linux/balloon_compaction.h
@@ -4,15 +4,18 @@
*
* Common interface definitions for making balloon pages movable by compaction.
*
- * Despite being perfectly possible to perform ballooned pages migration, they
- * make a special corner case to compaction scans because balloon pages are not
- * enlisted at any LRU list like the other pages we do compact / migrate.
+ * Balloon page migration makes use of the general non-lru movable page
+ * 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.
*
* 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
* performing balloon page compaction. In order to sort out these racy scenarios
* and safely perform balloon's page compaction and migration we must, always,
- * ensure following these three simple rules:
+ * 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
@@ -21,19 +24,8 @@
* +--spin_lock_irq(&b_dev_info->pages_lock);
* ... page->mapping updates here ...
*
- * ii. before isolating or dequeueing a balloon page from the balloon device
- * pages list, the page reference counter must be raised by one and the
- * extra refcount must be dropped when the page is enqueued back into
- * the balloon device page list, thus a balloon page keeps its reference
- * counter raised only while it is under our special handling;
- *
- * iii. after the lockless scan step have selected a potential balloon page for
- * isolation, re-test the PageBalloon mark and the PagePrivate flag
- * under the proper page lock, to ensure isolating a valid balloon page
- * (not yet isolated, nor under release procedure)
- *
- * iv. isolation or dequeueing procedure must clear PagePrivate flag under
- * page lock together with removing page from balloon device page list.
+ * ii. isolation or dequeueing procedure must remove the page from balloon
+ * device page list under b_dev_info->pages_lock.
*
* The functions provided by this interface are placed to help on coping with
* the aforementioned balloon page corner case, as well as to ensure the simple
--
2.17.2
next prev parent reply other threads:[~2018-11-14 21:17 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-14 21:16 [PATCH RFC 0/6] mm/kdump: allow to exclude pages that are logically offline David Hildenbrand
2018-11-14 21:16 ` David Hildenbrand [this message]
2018-11-14 21:17 ` [PATCH RFC 2/6] mm: convert PG_balloon to PG_offline David Hildenbrand
2018-11-14 22:23 ` Matthew Wilcox
2018-11-14 22:49 ` David Hildenbrand
2018-11-15 2:07 ` Mike Rapoport
2018-11-15 9:21 ` David Hildenbrand
2018-11-15 12:19 ` Michal Hocko
2018-11-14 21:17 ` [PATCH RFC 3/6] kexec: export PG_offline to VMCOREINFO David Hildenbrand
2018-11-15 6:19 ` Dave Young
2018-11-15 9:23 ` David Hildenbrand
2018-11-15 11:10 ` Borislav Petkov
2018-11-15 11:20 ` David Hildenbrand
2018-11-15 11:52 ` Borislav Petkov
2018-11-15 12:01 ` David Hildenbrand
2018-11-15 17:58 ` Borislav Petkov
2018-11-15 12:11 ` Michal Hocko
2018-11-15 14:13 ` Borislav Petkov
2018-11-14 21:17 ` [PATCH RFC 4/6] xen/balloon: mark inflated pages PG_offline David Hildenbrand
2018-11-14 21:17 ` [PATCH RFC 5/6] hv_balloon: " David Hildenbrand
2018-11-14 21:17 ` [PATCH RFC 6/6] PM / Hibernate: exclude all PageOffline() pages David Hildenbrand
2018-11-15 7:48 ` Pavel Machek
2018-11-15 12:23 ` Michal Hocko
2018-11-15 12:29 ` David Hildenbrand
2018-11-14 22:57 ` [PATCH RFC 0/6] mm/kdump: allow to exclude pages that are logically offline Nadav Amit
2018-11-14 23:05 ` David Hildenbrand
2018-11-14 23:41 ` Nadav Amit
2018-11-15 1:42 ` Julien Freche
2018-11-16 18:23 ` David Hildenbrand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181114211704.6381-2-david@redhat.com \
--to=david@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=devel@linuxdriverproject.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-pm@vger.kernel.org \
--cc=mhocko@suse.com \
--cc=mst@redhat.com \
--cc=willy@infradead.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).