Re: smp race fix between invalidate_inode_pages* and do_no_page

From: Nick Piggin
Date: Sun Apr 02 2006 - 05:01:11 EST


Hi Andrea, seems good to me.

Andrea Arcangeli wrote:

The PG_truncate is needed as well because we can't know in do_no_page if
page->mapping is legitimate null or not (think bttv and other device
drivers returning page->mapping null because they're private but not
reserved pages etc..)

From: Andrea Arcangeli <andrea@xxxxxxx>
Subject: avoid race between invalidate_inode_pages2 and do_no_page

Use page lock and new bitflag to serialize.


As clean upstream solution, could we make truncatable (ie. regular
file backed) mappings set a vma flag which changes its nopage protocol
to return a locked page?

filemap_nopage itself, rather than do_no_page would then take care of
handling the truncate races. That seems to be a better layer to handle
it in.

Also, after this there should be no reason for truncate_count, right?
(At least in its truncate/nopage capacity.) If so, we should remove it
as part of the same patch / patchset.

--
SUSE Labs, Novell Inc.
Send instant messages to your online friends http://au.messenger.yahoo.com -
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/