From: kanoj@google.engr.sgi.com (Kanoj Sarcar)
To: "Stephen C. Tweedie" <sct@redhat.com>
Cc: riel@nl.linux.org, linux-mm@kvack.org
Subject: Re: filecache/swapcache questions
Date: Thu, 17 Jun 1999 17:20:10 -0700 (PDT) [thread overview]
Message-ID: <199906180020.RAA02498@google.engr.sgi.com> (raw)
In-Reply-To: <14185.34250.163041.796165@dukat.scot.redhat.com> from "Stephen C. Tweedie" at Jun 18, 99 00:33:30 am
>
> Hi,
>
> On Tue, 15 Jun 1999 09:32:19 +0200 (CEST), Rik van Riel
> <riel@nl.linux.org> said:
>
> >> How will it be possible for a page to be in the swapcache, for its
> >> reference count to be 1 (which has been checked just before), and for
> >> its swap_count(page->offset) to also be 1? I can see this being
> >> possible only if an unmap/exit path might lazily leave a anonymous
> >> page in the swap cache, but I don't believe that happens.
>
> > It does happen. We use a 'two-stage' reclamation process instead
> > of page aging. It seems to work wonderfully -- nice page aging
> > properties without the overhead.
>
> Much more than that: if we take a write fault to a page which is shared
> on swap by two processes, then we bring it into cache and take a
> copy-on-write, leaving one copy in the swap cache (reference one: it is
> _only_ in use by the swap cache now), and the other copy being reference
> by the faulting process.
>
> --Stephen
> --
Interesting scenario ... unfortunately, I am getting confused.
I am trying to lay out the steps in your example here:
Step 1: P1 and P2 sharing a page which is not in core, is out on
swap at swap handle X, swap_count(X) = 2 (P1 + P2)
Step 2: P1 writes to page.
Step 2a: swap_in reads in the page into core into page A,
page_count(A) = 2 (swapcache + P1), A.offset = X,
swap_count (X)= 2 (P2 + swapcache)
Step 2b: P1 incurs do_wp_page on the page, gets a new page.
The old page A ends up with a page_count = 1 (swapcache), and
swap_count (X) stays at 2.
So, what am I missing, since your example does not end up with
page_count = 1 and swap_count(page offset/swaphandle) = 1?
I did give an alternative scenario involving an exitting process,
do you believe that one?
While I have your attention, I think I found a bug in the
sys_swapoff algorithm ... basically, it needs to also look
at swap_lockmap. Say an exitting process fired off some async
swap ins just before it exitted, and a bunch of these are in
flight (swap_lockmaps are set, as are swap_map, from swapcache).
The swap device gets deleted (with a printk warning message due
to non zero swap_map count). Finally, the old async swap in's
start terminating, invoking swap_after_unlock_page. Interesting
things could happen, depending on whether the swap id has been
reallocated or not ... Is there any protection against this
scenario?
Thanks.
Kanoj
kanoj@engr.sgi.com
--
To unsubscribe, send a message with 'unsubscribe linux-mm my@address'
in the body to majordomo@kvack.org. For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/
next prev parent reply other threads:[~1999-06-18 0:20 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-06-15 7:16 filecache/swapcache questions Kanoj Sarcar
1999-06-15 7:32 ` Rik van Riel
1999-06-15 15:51 ` Kanoj Sarcar
1999-06-15 20:24 ` Rik van Riel
1999-06-15 21:02 ` Kanoj Sarcar
1999-06-16 20:37 ` Andrea Arcangeli
1999-06-17 23:33 ` Stephen C. Tweedie
1999-06-18 0:20 ` Kanoj Sarcar [this message]
1999-06-18 17:00 ` Stephen C. Tweedie
1999-06-18 17:03 ` Kanoj Sarcar
-- strict thread matches above, loose matches on Subject: below --
1999-06-21 5:29 Kanoj Sarcar
1999-06-21 11:25 ` Stephen C. Tweedie
1999-06-21 16:46 ` Kanoj Sarcar
1999-06-21 16:57 ` Stephen C. Tweedie
1999-06-21 17:36 ` Kanoj Sarcar
1999-06-21 17:49 ` Stephen C. Tweedie
1999-06-21 18:46 ` Kanoj Sarcar
1999-06-21 23:44 ` Kanoj Sarcar
1999-06-24 22:23 ` Andrea Arcangeli
1999-06-24 23:55 ` Kanoj Sarcar
1999-06-25 0:26 ` Andrea Arcangeli
1999-06-28 22:36 ` Stephen C. Tweedie
1999-06-28 23:24 ` Kanoj Sarcar
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=199906180020.RAA02498@google.engr.sgi.com \
--to=kanoj@google.engr.sgi.com \
--cc=linux-mm@kvack.org \
--cc=riel@nl.linux.org \
--cc=sct@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.