Re: Rising io_load results Re: 2.5.63-mm1

Andrew Morton
2003-02-27T22:23:44Z

Dave McCracken <dmccr@us.ibm.com> wrote:
>
>
> --On Thursday, February 27, 2003 13:44:03 -0800 Andrew Morton
> <akpm@digeo.com> wrote:
>
> >> ...
> >> Mapped: 4294923652 kB
> >
> > Well that's gotta hurt. This metric is used in making writeback
> > decisions. Probably the objrmap patch.
>
> Oops. You're right. Here's a patch to fix it.
>

Thanks.

I'm just looking at page_mapped(). It is now implicitly assuming that the
architecture's representation of a zero-count atomic_t is all-bits-zero.

This is not true on sparc32 if some other CPU is in the middle of an
atomic_foo() against that counter. Maybe the assumption is false on other
architectures too.

So page_mapped() really should be performing an atomic_read() if that is
appropriate to the particular page. I guess this involves testing
page->mapping. Which is stable only when the page is locked or
mapping->page_lock is held.

It appears that all page_mapped() callers are inside lock_page() at present,
so a quick audit and addition of a comment would be appropriate there please.