From: Daniel Phillips <phillips@arcor.de>
To: Chuck Lever <cel@citi.umich.edu>
Cc: Andrew Morton <akpm@digeo.com>,
Rik van Riel <riel@conectiva.com.br>,
<trond.myklebust@fys.uio.no>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: invalidate_inode_pages in 2.5.32/3
Date: Tue, 10 Sep 2002 03:07:00 +0200 [thread overview]
Message-ID: <E17oZUa-0006wh-00@starship> (raw)
In-Reply-To: <Pine.BSO.4.33.0209091933150.6471-100000@citi.umich.edu>
On Tuesday 10 September 2002 01:51, Chuck Lever wrote:
> On Tue, 10 Sep 2002, Daniel Phillips wrote:
> > On Tuesday 10 September 2002 00:03, Andrew Morton wrote:
> > > But there are
> > > apparently reasons why NFS cannot sleepingly lock pages in this
> > > particular context.
> >
> > If only we knew what those were. It's hard to keep the word 'bogosity'
> > from popping into my head.
>
> rpciod must never call a function that sleeps. if this happens, the whole
> NFS client stops working until the function wakes up again. this is not
> really bogus -- it is similar to restrictions placed on socket callbacks.
Ah, a warm body with answers :-)
It *sounds* bogus: why should we be satisfied with a function that doesn't
do its job reliably (invalidate_inode_pages) in order to avoid coming up
with a way of keeping the client daemon from blocking? How about having
invalidate_inode_pages come back with "sorry boss, I couldn't complete the
job so I started as much IO as I could and I'm back now, try again later"?
> async RPC tasks (ie, the rpciod process) invokes invalidate_inode_pages
> during normal, everyday processing, so it must not sleep. that's why it
> today ignores locked pages.
OK, that's half the job, the other half is to know that something's been
ignored, and get back to it later. Either there is a valid reason for
getting rid of these pages or there isn't, and if there is a valid reason,
then getting rid of only some of them must surely leave the door wide
open to strange misbehaviour.
> thus:
>
> 1. whatever function purges a file's cached data must not sleep when
> invoked from an async RPC task.
[otherwise other tasks using the client will stall needlessly]
> ...likewise, such a function must not
> sleep if the caller holds the file's i_sem.
>
> 2. access to the file must be serialized somehow with in-flight I/O
> (locked pages). we don't want to start new reads before all dirty
> pages have been flushed back to the server. dirty pages that have
> not yet been scheduled must be dealt with correctly.
State machine!
> 3. mmap'd pages must behave reasonably when a file's cache is purged.
> clean pages should be faulted back in. what to do with dirty mmap'd
> pages?
I don't know, sorry. What?
You've probably been through this before, but could you please explain
the ground rules behind the cache purging strategy?
--
Daniel
next prev parent reply other threads:[~2002-09-10 1:09 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-09-05 14:25 invalidate_inode_pages in 2.5.32/3 Chuck Lever
2002-09-05 18:27 ` Andrew Morton
2002-09-05 18:53 ` Chuck Lever
2002-09-05 19:17 ` Andrew Morton
2002-09-05 20:00 ` Trond Myklebust
2002-09-05 20:15 ` Andrew Morton
2002-09-05 20:27 ` Trond Myklebust
2002-09-05 20:37 ` Andrew Morton
2002-09-05 20:51 ` Trond Myklebust
2002-09-05 21:12 ` Andrew Morton
2002-09-05 21:31 ` Trond Myklebust
2002-09-05 22:19 ` Andrew Morton
2002-09-06 0:48 ` Trond Myklebust
2002-09-06 1:08 ` Andrew Morton
2002-09-06 6:49 ` Trond Myklebust
2002-09-07 8:37 ` Daniel Phillips
2002-09-07 16:09 ` Andrew Morton
2002-09-07 17:02 ` Andrew Morton
2002-09-07 8:24 ` Daniel Phillips
2002-09-07 16:06 ` Andrew Morton
2002-09-09 21:08 ` Daniel Phillips
2002-09-09 21:36 ` Andrew Morton
2002-09-09 22:12 ` Daniel Phillips
2002-09-07 18:47 ` Rik van Riel
2002-09-07 23:09 ` Andrew Morton
2002-09-09 21:44 ` Daniel Phillips
2002-09-09 22:03 ` Andrew Morton
2002-09-09 22:19 ` Daniel Phillips
2002-09-09 22:32 ` Andrew Morton
2002-09-10 16:57 ` Daniel Phillips
2002-09-09 23:51 ` Chuck Lever
2002-09-10 1:07 ` Daniel Phillips [this message]
2002-09-10 15:09 ` Chuck Lever
2002-09-10 16:13 ` Daniel Phillips
2002-09-10 19:04 ` Chuck Lever
2002-09-10 20:52 ` Daniel Phillips
2002-09-11 0:07 ` Andrew Morton
2002-09-11 0:27 ` Daniel Phillips
2002-09-11 0:38 ` Andrew Morton
2002-09-11 0:53 ` Daniel Phillips
2002-09-11 1:49 ` Andrew Morton
2002-09-11 2:14 ` Daniel Phillips
2002-09-11 16:18 ` Rik van Riel
2002-09-11 17:14 ` Daniel Phillips
2002-09-12 19:06 ` Daniel Phillips
2002-09-12 22:05 ` Urban Widmark
2002-09-12 22:21 ` Andrew Morton
2002-09-12 22:30 ` Rik van Riel
2002-09-12 22:43 ` Daniel Phillips
2002-09-12 22:51 ` Andrew Morton
2002-09-12 23:05 ` Randy.Dunlap
2002-09-12 23:23 ` Rik van Riel
2002-09-12 23:53 ` Daniel Phillips
2002-09-23 16:38 ` Trond Myklebust
2002-09-23 17:16 ` Daniel Phillips
2002-09-23 18:57 ` Andrew Morton
2002-09-23 20:41 ` Trond Myklebust
2002-09-23 20:49 ` Daniel Phillips
2002-09-23 22:43 ` Trond Myklebust
2002-09-24 5:09 ` Daniel Phillips
2002-09-24 16:40 ` Trond Myklebust
2002-09-23 19:13 ` Daniel Phillips
2002-09-13 4:19 ` Daniel Phillips
2002-09-13 4:52 ` Daniel Phillips
2002-09-14 9:58 ` Urban Widmark
2002-09-12 13:04 ` Trond Myklebust
2002-09-12 18:21 ` Andrew Morton
2002-09-12 21:15 ` Daniel Phillips
2002-09-12 21:38 ` Andrew Morton
2002-09-12 21:52 ` Daniel Phillips
2002-09-05 22:01 ` Chuck Lever
2002-09-05 22:23 ` Andrew Morton
2002-09-05 21:41 ` Chuck Lever
2002-09-06 9:35 ` Helge Hafting
2002-09-06 16:16 ` Chuck Lever
2002-09-07 8:01 ` Daniel Phillips
2002-09-07 10:01 ` Daniel Phillips
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=E17oZUa-0006wh-00@starship \
--to=phillips@arcor.de \
--cc=akpm@digeo.com \
--cc=cel@citi.umich.edu \
--cc=linux-kernel@vger.kernel.org \
--cc=riel@conectiva.com.br \
--cc=trond.myklebust@fys.uio.no \
/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.