From: Neil Brown <neilb@suse.de>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Nick Piggin <npiggin@suse.de>,
David Woodhouse <dwmw2@infradead.org>
Subject: Re: [PATCH] Fix race between callers of read_cache_page_async and invalidate_inode_pages.
Date: Mon, 27 Apr 2009 17:46:21 +1000 [thread overview]
Message-ID: <18933.25293.145925.707478@notabene.brown> (raw)
In-Reply-To: message from Andrew Morton on Sunday April 26
On Sunday April 26, akpm@linux-foundation.org wrote:
> On Mon, 27 Apr 2009 15:20:22 +1000 Neil Brown <neilb@suse.de> wrote:
>
> hrm. And where is it written that PageError() will remain inviolable
> after it has been set?
...it follows as night the day....
What use would PageError be if it can just disappear when you most
want to test it?
Then again, what use is PageUptodate if it can just disappear? My
other thought for fixing this was to change truncate_complete_page to
not clear PageUptodate.....
Oh. That's already been done in 2.6.27-rc2.
So I guess this isn't a bug in mainline anymore... sorry for the noise :-)
(I'll just go quietly fix some enterprise kernels).
>
> A safer and more formal (albeit somewhat slower) fix would be to lock
> the page and check its state under the lock.
>
> y:/usr/src/linux-2.6.30-rc3> grep -r ClearPageError . | wc -l
> 21
I think each of these do one of:
- clear the error after a successful read
- clear the error before a read attempt
- clear the error before a write
all (I think) while the page is locked. None of these would
invalidate the change I made. (and I still think that it would read
better to say
if (PageError(page))
goto error;
than
if (!PageUptodate(page))
goto error;
but no matter).
Thanks anyway.
NeilBrown
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
prev parent reply other threads:[~2009-04-27 7:45 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-27 5:20 [PATCH] Fix race between callers of read_cache_page_async and invalidate_inode_pages Neil Brown
2009-04-27 5:37 ` Andrew Morton
2009-04-27 7:46 ` Neil Brown [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=18933.25293.145925.707478@notabene.brown \
--to=neilb@suse.de \
--cc=akpm@linux-foundation.org \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=npiggin@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).