linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "HORIGUCHI NAOYA(堀口 直也)" <naoya.horiguchi@nec.com>
To: Oscar Salvador <osalvador@suse.de>
Cc: Jan Kara <jack@suse.cz>, yangerkun <yangerkun@huawei.com>,
	"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"viro@zeniv.linux.org.uk" <viro@zeniv.linux.org.uk>,
	"tytso@mit.edu" <tytso@mit.edu>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
	"yi.zhang@huawei.com" <yi.zhang@huawei.com>,
	"yukuai3@huawei.com" <yukuai3@huawei.com>,
	"houtao1@huawei.com" <houtao1@huawei.com>,
	"yebin10@huawei.com" <yebin10@huawei.com>
Subject: Re: [PATCH] mm/memory-failure: make sure wait for page writeback in memory_failure
Date: Fri, 14 May 2021 05:21:17 +0000	[thread overview]
Message-ID: <20210514052117.GA983377@hori.linux.bs1.fc.nec.co.jp> (raw)
In-Reply-To: <YJpPj3dGxk4TFL4b@localhost.localdomain>

On Tue, May 11, 2021 at 11:34:07AM +0200, Oscar Salvador wrote:
> On Tue, May 11, 2021 at 10:46:00AM +0200, Jan Kara wrote:
> > We definitely need to wait for writeback of these pages and the change you
> > suggest makes sense to me. I'm just not sure whether the only problem with
> > these "pages in the process of being munlocked()" cannot confuse the state
> > machinery in memory_failure() also in some other way. Also I'm not sure if
> > are really allowed to call wait_on_page_writeback() on just any page that
> > hits memory_failure() - there can be slab pages, anon pages, completely
> > unknown pages given out by page allocator to device drivers etc. That needs
> > someone more familiar with these MM details than me.

As long as I checked through all call sites of PG_writeback's setter APIs
(set_page_writeback() and its variant), PG_writeback is set only during
IO operation, and that's as stated in Documentation/filesystems/locking.rst.
So if we can assume that this flag is set only for a short time, calling
wait_on_page_writeback() even for non-LRU pages seems OK to me.

> 
> I am not really into mm/writeback stuff, but:
> 
> shake_page() a few lines before tries to identifiy the page, and
> make those sitting in lruvec real PageLRU, and then we take page's lock.
> 
> I thought that such pages (pages on writeback) are stored in the file
> LRU, and maybe the code was written with that in mind? And given that
> we are under the PageLock, such state could not have changed.
> 
> But if such pages are allowed to not be in the LRU (maybe they are taken
> off before initiating the writeback?), I guess the change is correct.
> Checking wait_on_page_writeback(), it seems it first checks for
> Writeback bit, and since that bit is not "shared" and only being set
> in mm/writeback code, it should be fine to call that.
> 
> But alternatively, we could also modify the check and go with:
> 
> if (!PageTransTail(p) && !PageLRU(p) && !PageWriteBack(p))
> 		goto identify_page_state;
> 
> and stating why a page under writeback might not be in the LRU, as I
> think the code assumes.
> 
> AFAUI, mm/writeback locks the page before setting the bit, and since we
> hold the lock, we could not race here.

Yes, this approach seems more possible to me, because of less assumption
on PG_writeback users.

Thanks,
Naoya Horiguchi

  reply	other threads:[~2021-05-14  5:21 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-11  7:03 yangerkun
2021-05-11  8:46 ` Jan Kara
2021-05-11  8:56   ` yangerkun
2021-05-11  9:34   ` Oscar Salvador
2021-05-14  5:21     ` HORIGUCHI NAOYA(堀口 直也) [this message]
2021-05-17  6:48     ` yangerkun
2021-05-14  5:21 ` HORIGUCHI NAOYA(堀口 直也)
2021-05-17  6:50   ` yangerkun

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=20210514052117.GA983377@hori.linux.bs1.fc.nec.co.jp \
    --to=naoya.horiguchi@nec.com \
    --cc=akpm@linux-foundation.org \
    --cc=houtao1@huawei.com \
    --cc=jack@suse.cz \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=osalvador@suse.de \
    --cc=tytso@mit.edu \
    --cc=viro@zeniv.linux.org.uk \
    --cc=yangerkun@huawei.com \
    --cc=yebin10@huawei.com \
    --cc=yi.zhang@huawei.com \
    --cc=yukuai3@huawei.com \
    /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