From: "Stephen C. Tweedie" <sct@dcs.ed.ac.uk>
To: "Eric W. Biederman" <ebiederm+eric@npwt.net>
Cc: linux-mm@kvack.org
Subject: Re: Q: Swap Locking Reinstatement
Date: Tue, 19 May 1998 23:46:01 +0100 [thread overview]
Message-ID: <199805192246.XAA03125@dax.dcs.ed.ac.uk> (raw)
In-Reply-To: <m1somf2arx.fsf@flinx.npwt.net>
Hi,
On 12 May 1998 20:57:05 -0500, ebiederm+eric@npwt.net (Eric
W. Biederman) said:
> Recently the swap lockmap has been readded.
> Was that just as a low cost sanity check, to use especially while
> there were bugs in some of the low level disk drivers?
> Was there something that really needs the swap lockmap?
Yes, there was a bug. The problem occurs when:
page X is owned by process A
process B tries to swap out page X from A's address space
process A exits or execs
process B's swap IO completes.
The IO completion is an interrupt (we perform async swaps where
possible). Now, if we dereference the swap entry belonging to page X
at IO completion time, then the entry is protected against reuse while
the IO is in flight. However, that requires making the entire swap map
interrupt safe. It is much more efficient to keep the lock map separate
and to use atomic bitops on it to allow us to do the IO completion
unlock in an interrupt-safe manner.
A similar race occurs when
process B tries to swap out page X from A's address space
process A tries to swap it back in
process B's swap IO completes.
Now process A may, or may not, get the right data from disk depending on
the (undefined) ordering of the IOs submitted by A and B.
> The reason I am asking is that this causes conflicts with my shmfs
> kernel patches. I directly read/write swap pages through a variation
> of rw_swap_page, and during I/O they must stay in the page cache, but
> _not_ on the swapper inode, and the way the swap lockmap is currently
> implemented causes a problem.
Sorry, but right now it is definitely needed.
--Stephen
next prev parent reply other threads:[~1998-05-19 22:55 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
1998-05-13 1:57 Eric W. Biederman
1998-05-19 22:46 ` Stephen C. Tweedie [this message]
1998-05-27 15:15 ` Eric W. Biederman
1998-06-04 3:20 ` Eric W. Biederman
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=199805192246.XAA03125@dax.dcs.ed.ac.uk \
--to=sct@dcs.ed.ac.uk \
--cc=ebiederm+eric@npwt.net \
--cc=linux-mm@kvack.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