Re: [RFC][patch 0/2] mm: remove PageReserved

Hugh Dickins
2005-08-09T15:36:23Z

On Tue, 9 Aug 2005, Benjamin Herrenschmidt wrote:
> On Tue, 2005-08-09 at 15:50 +0100, Hugh Dickins wrote:
> > On Tue, 9 Aug 2005, Benjamin Herrenschmidt wrote:
> > >
> > > Well, a refcounting bug would let them be freed and kaboom ... That's
> > > why a "PG_not_your_ram_dammit" bit would be useful. It could at least
> > > BUG_ON when refcount reaches 0 :)
> >
> > Okay, great, let's give every struct page two refcounts,
> > so if one of them goes wrong, the other one will save us.
>
> You are abusing here :)

Yeah, I was: sorry!

> - We already have a refcount
> - We have a field where putting a flag isn't that much of a problem
> - It can be difficult to get page refcounting right when dealing with
> such things, really.

Probably easier to get the page refcounting right with these than with
most. Getting refcounting wrong is always bad.

> In that case, we basically have an _easy_ way to trigger a useful BUG()
> in the page free path when it's a page that should never be returned to
> the pool.

As bad_page already does on various other flags (though it clears those,
whereas this one you'd prefer not to clear). Hmm, okay, though I'm not
sure it's worth its own page flag if they're in short supply.

> Since the "PG_not_in_ram" or whatever we call it flag might be used by
> swsusp or others, I suppose it could be useful.

Any flag used elsewhere, which is incompatible with being freed, should
be checked for no cost in free_pages_ok/prep_new_page/bad_page, yes.

> However, I agree that if the end result is to have drivers just change
> "PG_reserved" to "PG_not_in_ram" and still be bogus, then we might just
> go all the way & drop the flag completely, only relying on the VMA
> flags.

Yes: if any driver ever has to manipulate it,
either the flag is misdefined or the driver is beyond the pale.

Hugh