From: Andrea Arcangeli <andrea@suse.de>
To: Hugh Dickins <hugh@veritas.com>
Cc: IWAMOTO Toshihiro <iwamoto@valinux.co.jp>,
linux-kernel@vger.kernel.org, lhms-devel@lists.sourceforge.net
Subject: Re: [RFC] Changing COW detection to be memory hotplug friendly
Date: Thu, 10 Feb 2005 21:40:25 +0100 [thread overview]
Message-ID: <20050210204025.GS18573@opteron.random> (raw)
In-Reply-To: <Pine.LNX.4.61.0502101953190.6194@goblin.wat.veritas.com>
On Thu, Feb 10, 2005 at 08:19:47PM +0000, Hugh Dickins wrote:
> On Thu, 10 Feb 2005, Andrea Arcangeli wrote:
> >
> > The reason pinned pages cannot be unmapped is that if they're being
> > unmapped while a rawio read is in progress, a cow on some shared
> > swapcache under I/O could happen.
> >
> > If a try_to_unmap + COW over a shared swapcache happens during a rawio
> > read, then the rawio reads will get lost generating data corruption.
>
> Yes, but...
>
> get_user_pages broke COW in advance of the I/O. The reason for
> subsequent COW if the page gets unmapped is precisely because
> can_share_swap_page used page_count to judge exclusivity, and
> get_user_pages has bumped that up, so the page appears (in danger
> of being) non-exclusive when actually it is exclusive. By changing
> can_share_swap_page to use page_mapcount, that frustration vanishes.
What if a second thread does a fork() while the rawio is in progress?
The page will be again no shareable, and if you unmap it the rawio will
be currupt if the thread that executed the fork while the I/O is in
progress writes to a part of the page again after it has been unmapped
(obviously the part of the page that isn't under read-rawio, rawio works
with the hardblocksize, not on the whole page).
next prev parent reply other threads:[~2005-02-10 20:40 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-03 3:56 [RFC] Changing COW detection to be memory hotplug friendly IWAMOTO Toshihiro
2005-02-07 21:24 ` Hugh Dickins
2005-02-08 16:26 ` Hugh Dickins
2005-02-10 7:59 ` IWAMOTO Toshihiro
2005-02-10 19:05 ` Andrea Arcangeli
2005-02-10 19:16 ` Dave Hansen
2005-02-10 19:41 ` Andrea Arcangeli
2005-02-10 20:19 ` Hugh Dickins
2005-02-10 20:40 ` Andrea Arcangeli [this message]
2005-02-11 7:23 ` Hugh Dickins
2005-02-11 8:52 ` Andrea Arcangeli
2005-02-11 13:20 ` Hugh Dickins
2005-02-14 17:41 ` Andrea Arcangeli
2005-02-14 18:36 ` Hugh Dickins
2005-02-14 21:41 ` Andrea Arcangeli
2005-02-15 3:17 ` Andrew Morton
2005-02-09 9:08 ` IWAMOTO Toshihiro
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=20050210204025.GS18573@opteron.random \
--to=andrea@suse.de \
--cc=hugh@veritas.com \
--cc=iwamoto@valinux.co.jp \
--cc=lhms-devel@lists.sourceforge.net \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox