All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrea Arcangeli <andrea@suse.de>
To: "David S. Miller" <davem@redhat.com>
Cc: hugh@veritas.com, torvalds@transmeta.com, akpm@zip.com.au,
	cr@sap.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] double flush_page_to_ram
Date: Thu, 9 May 2002 15:21:16 +0200	[thread overview]
Message-ID: <20020509152116.A8428@dualathlon.random> (raw)
In-Reply-To: <Pine.LNX.4.21.0205091252350.1205-100000@localhost.localdomain> <20020509.045643.27562731.davem@redhat.com> <20020509150146.O12382@dualathlon.random> <20020509.055200.111470847.davem@redhat.com>

On Thu, May 09, 2002 at 05:52:00AM -0700, David S. Miller wrote:
> That is correct.

so I will need to backout this one liner from my vm updates too.

--- 2.4.19-pre4/mm/filemap.c~aa-150-read_write_tweaks	Tue Mar 26
23:11:33 2002
+++ 2.4.19-pre4-akpm/mm/filemap.c	Tue Mar 26 23:11:33 2002
@@ -1968,7 +1968,6 @@ success:
 	 * and possibly copy it over to another page..
 	 */
 	mark_page_accessed(page);
-	flush_page_to_ram(page);
 	return page;
 
 no_cached_page:

The reason I did this patch is because it was functional equivalent to
old 2.4 kernels.

in turn old 2.4 kernels were all wrong:

	if (no_share) {
		struct page *new_page = alloc_page(GFP_HIGHUSER);

		if (new_page) {
			copy_user_highpage(new_page, old_page, address);
			flush_page_to_ram(new_page);
		} else
			new_page = NOPAGE_OOM;
		page_cache_release(page);
		return new_page;
	}

	flush_page_to_ram(old_page);
	return old_page;

they don't flush old_page before the the memcpy, they only flush the
_anon_ page _after_ the memcpy like current kernel with vm updates or Hugh's
patch is doing (never the pagecache if it's an early cow). It seems like
moving the early cow into memory.c fixed the flush_page_to_ram bug by
luck, because Hugh's patch is otherwise equivalent to old 2.4 kernels.

Confirm?

If yes, I prefer to move the flush_page_to_ram on the _pagecache_
_before_ the memcpy into memory.c, it's cleaner if the pagecache layer
doesn't need to care about cache aliasing between kernel direct mapping
and userspace address space (but that it only cares about struct pages
and filesystem, so only kernel side), and that such user-related part is
covered only in memory.c.

Andrea

  reply	other threads:[~2002-05-09 13:21 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-05-09 12:03 [PATCH] double flush_page_to_ram Hugh Dickins
2002-05-09 11:56 ` David S. Miller
2002-05-09 13:01   ` Andrea Arcangeli
2002-05-09 12:52     ` David S. Miller
2002-05-09 13:21       ` Andrea Arcangeli [this message]
2002-05-09 13:13         ` David S. Miller
2002-05-09 13:44           ` Andrea Arcangeli
2002-05-09 13:35             ` David S. Miller
2002-05-09 13:50         ` Hugh Dickins
2002-05-09 14:16           ` David S. Miller
2002-05-09 13:18   ` Hugh Dickins
2002-05-09 13:07     ` David S. Miller

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=20020509152116.A8428@dualathlon.random \
    --to=andrea@suse.de \
    --cc=akpm@zip.com.au \
    --cc=cr@sap.com \
    --cc=davem@redhat.com \
    --cc=hugh@veritas.com \
    --cc=linux-kernel@vger.kernel.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 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.