linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "Stephen C. Tweedie" <sct@redhat.com>
To: Andrea Arcangeli <andrea@suse.de>
Cc: "Stephen C. Tweedie" <sct@redhat.com>,
	Linus Torvalds <torvalds@transmeta.com>,
	Rik van Riel <riel@nl.linux.org>, Ingo Molnar <mingo@redhat.com>,
	linux-mm@kvack.org
Subject: Re: PATCH [2.4.0test10]: Kiobuf#02, fault-in fix
Date: Mon, 6 Nov 2000 16:54:16 +0000	[thread overview]
Message-ID: <20001106165416.A27036@redhat.com> (raw)
In-Reply-To: <20001106171204.B22626@athlon.random>; from andrea@suse.de on Mon, Nov 06, 2000 at 05:12:04PM +0100

Hi,

On Mon, Nov 06, 2000 at 05:12:04PM +0100, Andrea Arcangeli wrote:
> On Mon, Nov 06, 2000 at 03:05:39PM +0000, Stephen C. Tweedie wrote:
> > Why?
> 
> 	handle_mm_fault()
> 	pte is dirty
> 					pager write it out and make it clean
> 					since it's not pinned on the
> 					physical side yet so it's allowed
> 	grab pagetable lock
> 	follow_page()
> 	pte is writeable but not dirty
> 	pin the page on the physical side to inibith the swapper
> 	unlock the pagetable lock
> 
> 	read from disk and write to memory
> 
> 	now the pte is clean and the page won't be synced back while
> 	closing the file or during msync

No.  Even if the page were dirty before we started the IO, it could be
cleaned during the IO.  The whole problem with the interaction between
the VM and the pages concerned has been that we need to mark the
physical pages dirty at the *end* of the IO, not at the beginning ---
and that we don't necessarily have the same mapping information once
the IO has complete (another thread may have unmapped the vma
entirely).

The patches I sent to Linus dirty the page physically once the write
to memory has completed, completely independently of the ptes.  The
one piece of that missing is the handling of PageDirty() on anonymous
pages --- Rik was going to deal with that.

Checking for page dirty when we create the mapping in the first place
is neither necessary nor sufficient.

Cheers,
 Stephen
--
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.eu.org/Linux-MM/

  reply	other threads:[~2000-11-06 16:54 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-11-02 13:40 Stephen C. Tweedie
2000-11-02 14:30 ` Jeff Garzik
2000-11-02 15:58   ` Stephen C. Tweedie
2000-11-04  1:28     ` Eric Lowe
2000-11-03 22:27 ` Andrea Arcangeli
2000-11-04  1:36   ` Eric Lowe
2000-11-04  2:07     ` Andrea Arcangeli
2000-11-06 15:05   ` Stephen C. Tweedie
2000-11-06 16:12     ` Andrea Arcangeli
2000-11-06 16:54       ` Stephen C. Tweedie [this message]
2000-11-06 22:34         ` Andrea Arcangeli
2000-11-07 11:17           ` Stephen C. Tweedie
2000-11-06 17:23     ` Linus Torvalds
2000-11-07 11:57       ` Stephen C. Tweedie
2000-11-07 13:37         ` Andrea Arcangeli
2000-11-08 12:31       ` Stephen C. Tweedie

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=20001106165416.A27036@redhat.com \
    --to=sct@redhat.com \
    --cc=andrea@suse.de \
    --cc=linux-mm@kvack.org \
    --cc=mingo@redhat.com \
    --cc=riel@nl.linux.org \
    --cc=torvalds@transmeta.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox