[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190214222544.GG12668@bombadil.infradead.org>
Date: Thu, 14 Feb 2019 14:25:44 -0800
From: Matthew Wilcox <willy@...radead.org>
To: "Kirill A. Shutemov" <kirill@...temov.name>
Cc: linux-mm@...ck.org, linux-fsdevel@...r.kernel.org,
linux-kernel@...r.kernel.org, Hugh Dickins <hughd@...gle.com>,
William Kucharski <william.kucharski@...cle.com>
Subject: Re: [PATCH v2] page cache: Store only head pages in i_pages
On Fri, Feb 15, 2019 at 01:03:44AM +0300, Kirill A. Shutemov wrote:
> > + /*
> > + * A page got inserted in our range? Skip it. We have our
> > + * pages locked so they are protected from being removed.
> > + */
> > + if (page != pvec->pages[i]) {
>
> Maybe a comment for the VM_BUG while you're there?
Great idea. I didn't understand it the first time I looked at it either,
but I forgot to write a comment when I figured it out.
/*
* A page got inserted in our range? Skip it. We have our
* pages locked so they are protected from being removed.
+ * If we see a page whose index is higher than ours, it
+ * means our page has been removed, which shouldn't be
+ * possible because we're holding the PageLock.
*/
if (page != pvec->pages[i]) {
> > + /* Leave page->index set: truncation lookup relies on it */
> > +
> > + if (page->index + (1UL << compound_order(page)) - 1 ==
> > + xas.xa_index)
>
> It's 1am here and I'm slow, but it took me few minutes to understand how
> it works. Please add a comment.
I should get you to review at 1am more often! You're quite right.
Sleep-deprived Kirill spots problems that normal people would encounter.
/* Leave page->index set: truncation lookup relies on it */
+ /*
+ * Move to the next page in the vector if this is a small page
+ * or the index is of the last page in this compound page).
+ */
if (page->index + (1UL << compound_order(page)) - 1 ==
xas.xa_index)
i++;
Thanks for the review.
Powered by blists - more mailing lists