From: Andrew Morton <akpm@linux-foundation.org>
To: David Howells <dhowells@redhat.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/4] AFS: Add a function to excise a rejected write from the pagecache
Date: Thu, 24 May 2007 16:24:47 -0700 [thread overview]
Message-ID: <20070524162447.c9e14d14.akpm@linux-foundation.org> (raw)
In-Reply-To: <29173.1180048123@redhat.com>
On Fri, 25 May 2007 00:08:43 +0100
David Howells <dhowells@redhat.com> wrote:
> Andrew Morton <akpm@linux-foundation.org> wrote:
>
> > hm. I don't see why that race window would be a problem in practice: the
> > page-exciser does a lock_page();wait_on_page_writeback() as normal, then
> > proceeds with its business?
>
> No. The page-exciser ends (cancels) PG_writeback, not waits for it (something
> has to clear the flag). The problem is that the truncation routines may be
> sat there holding a lock on the page whilst waiting for PG_writeback to go
> away - so we have to clear PG_writeback before we can think about getting
> PG_lock:-(
But we already covered that? Your exciser can do an unconditional
end_page_writeback(), because it is this thread of control which did the
set_page_writeback(). So we end up with:
end_page_writeback(page);
lock_page(page);
wait_on_page_writeback(page);
<now nail it>
> > But given that this doesn't work right for some reason, can we use PG_error
> > and then handle that appropriately in the filesystem's ->prepare_write() and
> > ->page_mkwrite()?
>
> Possibly, though I'd rather they didn't see such a page.
Well someone needs to be taught all about this case. Question is, should
it be the VFS, or should it just be the address_space(s) which brought
this state about, and which care about it?
next prev parent reply other threads:[~2007-05-24 23:25 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-23 19:15 [PATCH 1/4] AFS: Add TestSetPageError() David Howells
2007-05-23 19:15 ` [PATCH 2/4] AFS: Add a function to excise a rejected write from the pagecache David Howells
2007-05-24 20:38 ` Andrew Morton
2007-05-24 21:35 ` David Howells
2007-05-24 21:47 ` Andrew Morton
2007-05-24 22:34 ` David Howells
2007-05-24 22:46 ` Andrew Morton
2007-05-24 23:08 ` David Howells
2007-05-24 23:24 ` Andrew Morton [this message]
2007-05-24 23:37 ` David Howells
2007-05-24 22:35 ` Trond Myklebust
2007-05-24 23:18 ` David Howells
2007-05-24 23:54 ` Trond Myklebust
2007-05-30 10:35 ` David Howells
2007-05-30 17:39 ` Trond Myklebust
2007-05-23 19:15 ` [PATCH 3/4] AFS: Improve handling of a rejected writeback David Howells
2007-05-23 19:15 ` [PATCH 4/4] AFS: Implement shared-writable mmap David Howells
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=20070524162447.c9e14d14.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=dhowells@redhat.com \
--cc=linux-kernel@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.