[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <703628.1685541335@warthog.procyon.org.uk>
Date: Wed, 31 May 2023 14:55:35 +0100
From: David Howells <dhowells@...hat.com>
To: David Hildenbrand <david@...hat.com>
Cc: dhowells@...hat.com, Christoph Hellwig <hch@...radead.org>,
Lorenzo Stoakes <lstoakes@...il.com>,
Jens Axboe <axboe@...nel.dk>,
Al Viro <viro@...iv.linux.org.uk>,
Matthew Wilcox <willy@...radead.org>, Jan Kara <jack@...e.cz>,
Jeff Layton <jlayton@...nel.org>,
Jason Gunthorpe <jgg@...dia.com>,
Logan Gunthorpe <logang@...tatee.com>,
Hillf Danton <hdanton@...a.com>,
Christian Brauner <brauner@...nel.org>,
Linus Torvalds <torvalds@...ux-foundation.org>,
linux-fsdevel@...r.kernel.org, linux-block@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-mm@...ck.org,
Andrew Morton <akpm@...ux-foundation.org>
Subject: Re: [PATCH v4 1/3] mm: Don't pin ZERO_PAGE in pin_user_pages()
David Hildenbrand <david@...hat.com> wrote:
> Yes, it would be clearer if we would be using "pinned" now only for FOLL_PIN
You're not likely to get that. "To pin" is too useful a verb that gets used
in other contexts too. For that reason, I think FOLL_PIN was a poor choice of
name:-/. I guess the English language has got somewhat overloaded. Maybe
FOLL_PEG? ;-)
> and everything else is simply "taking a temporary reference on the page".
Excluding refs taken with pins, many refs are more permanent than pins as, so
far as I'm aware, pins only last for the duration of an I/O operation.
> >> "Note that the refcount of any zero_pages returned among the pinned pages will
> >> not be incremented, and unpin_user_page() will similarly not decrement it."
> > That's not really right (although it happens to be true), because we're
> > talking primarily about the pin counter, not the refcount - and they may be
> > separate.
>
> In any case (FOLL_PIN/FOLL_GET) you increment/decrement the refcount. If we
> have a separate pincount, we increment/decrement the refcount by 1 when
> (un)pinning.
FOLL_GET isn't relevant here - only FOLL_PIN. Yes, as it happens, we count a
ref if we count a pin, but that's kind of irrelevant; what matters is that the
effect must be undone with un-PUP.
It would be nice not to get a ref on the zero page in FOLL_GET, but I don't
think we can do that yet. Too many places assume that GUP will give them a
ref they can release later via ordinary methods.
David
Powered by blists - more mailing lists