All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chuck Lever <chuck.lever@oracle.com>
To: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Andrew Morton <akpm@osdl.org>,
	Trond Myklebust <Trond.Myklebust@netapp.com>,
	Steve Dickson <steved@redhat.com>,
	linux-mm@kvack.org
Subject: Re: Checking page_count(page) in invalidate_complete_page
Date: Wed, 27 Sep 2006 11:54:04 -0400	[thread overview]
Message-ID: <451A9E9C.70503@oracle.com> (raw)
In-Reply-To: <451A025E.7020008@yahoo.com.au>

Nick Piggin wrote:
> Chuck Lever wrote:
>> Invalidate_inode_pages2() is used to remove page cache data that the 
>> client has determined is stale.  The client detects that the file has 
>> changed on the server, and it is not responsible for those changes, by 
>> examining the file's attributes and noticing mtime or size changes. 
>> When such a change is detected, all pages cached for a file are 
>> invalidated, and the page cache is gradually repopulated from the 
>> server as applications access parts of the file.
>>
> 
> If you can guarantee that a pagecache page can never get mapped to a 
> user mapping (eg. perhaps for
> directories and symlinks) and also ensure that you don't dirty it via 
> the filesystem, then you don't
> have to worry about it becoming dirty, so we can skip the checks Andrew 
> has added and maybe add a
> WARN_ON(PageDirty()).

As far as I can tell, for cached non-regular files, they can't be mapped 
or written to, and cannot be targets of direct I/O.

So, I think it's acceptable to add logic in nfs_revalidate_mapping() to 
use invalidate_inode_pages2() for non-regular files (and check the 
return code, of course), as long as we have addressed the page count 
issue somehow.

> Now that won't help you for regular file pages that can be mmapped. For 
> those, we need to ensure
> that the page isn't mapped, and the page will not be dirtied via a 
> get_user_pages user, and you need
> to ensure that it can't get dirtied via the filesystem. The former two 
> will require VM changes of
> the scale that aren't going to get into 2.6.19, but I'm working on them.
> 
> For now, can make do with flushing lru pagevecs, and also testing and 
> retrying in the caller?

I planned to play with this a bit yesterday, but got swept up in some 
higher priority issues.  Will try to get to testing this soonest.

--
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>

  parent reply	other threads:[~2006-09-27 15:54 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4518333E.2060101@oracle.com>
2006-09-25 21:10 ` Checking page_count(page) in invalidate_complete_page Andrew Morton
2006-09-25 22:30   ` Chuck Lever
2006-09-25 22:53     ` Andrew Morton
2006-09-25 22:57     ` Steve Dickson
2006-09-25 23:14       ` Nick Piggin
2006-09-25 22:40   ` Chuck Lever
2006-09-25 23:02     ` Andrew Morton
2006-09-25 22:50   ` Steve Dickson
2006-09-25 22:51   ` Nick Piggin
2006-09-25 23:14     ` Chuck Lever
2006-09-25 23:21       ` Nick Piggin
2006-09-26  0:01         ` Chuck Lever
2006-09-26  0:13           ` Nick Piggin
2006-09-26  1:33             ` Chuck Lever
2006-09-26  1:48               ` Nick Piggin
2006-09-28 16:26                 ` Chuck Lever
2006-09-28 16:36                   ` Andrew Morton
2006-09-28 16:40                     ` Andrew Morton
2006-09-28 16:42                       ` Chuck Lever
2006-09-28 17:03                         ` Andrew Morton
2006-09-28 17:09                           ` Chuck Lever
2006-09-29  0:37                             ` Nick Piggin
2006-09-29 20:34                               ` Chuck Lever
2006-09-29 20:45                                 ` Peter Zijlstra
2006-09-29 21:02                                   ` Chuck Lever
2006-09-29 21:17                                     ` Peter Zijlstra
2006-09-29 21:44                                       ` Andrew Morton
2006-09-29 21:48                                         ` Chuck Lever
2006-09-29 22:29                                           ` Andrew Morton
2006-09-29 23:05                                             ` Chuck Lever
2006-10-01  4:21                                             ` Chuck Lever
2006-10-02 12:01                                               ` Steve Dickson
2006-10-02 13:25                                                 ` Trond Myklebust
2006-10-02 16:57                                                   ` Andrew Morton
2006-10-02 17:02                                                     ` Steve Dickson
2006-10-02 18:20                                                       ` Andrew Morton
2006-10-02 19:02                                                         ` Steve Dickson
2006-10-03  2:14                                                           ` Chuck Lever
2006-10-03  4:18                                                             ` Trond Myklebust
2006-10-03  4:24                                                               ` Andrew Morton
2006-10-03 18:50                                                               ` Chuck Lever
2006-10-03 19:10                                                                 ` Trond Myklebust
2006-10-03 19:21                                                                   ` Chuck Lever
2006-10-03 21:37                                                                   ` Andrew Morton
2006-10-04 19:29                                                                     ` Chuck Lever
2006-10-04 19:43                                                                       ` Andrew Morton
2006-10-04 19:53                                                                         ` Steve Dickson
2006-09-28 16:41                     ` Chuck Lever
2006-09-26  6:25               ` Nick Piggin
2006-09-26 13:12                 ` Chuck Lever
2006-09-27  4:47                   ` Nick Piggin
2006-09-27  8:25                     ` Andrew Morton
2006-09-27  8:39                       ` Nick Piggin
2006-09-27 16:03                         ` Andrew Morton
2006-09-27 15:54                     ` Chuck Lever [this message]
2006-09-25 22:56   ` Chuck Lever

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=451A9E9C.70503@oracle.com \
    --to=chuck.lever@oracle.com \
    --cc=Trond.Myklebust@netapp.com \
    --cc=akpm@osdl.org \
    --cc=linux-mm@kvack.org \
    --cc=nickpiggin@yahoo.com.au \
    --cc=steved@redhat.com \
    /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.