Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Oct 2001 08:30:40 -0700
From:      Terry Lambert <tlambert2@mindspring.com>
To:        "Ilmar S. Habibulin" <ilmar@watson.org>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: how can i wipeout swap pages?
Message-ID:  <3BD83020.E1CD620F@mindspring.com>
References:  <20011024044458.U45888-100000@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help
"Ilmar S. Habibulin" wrote:
> 
> I'm trying to implement wiping of freed swap pages inside swap_pager.
> I'm  using 2.2-branch, here is my thoughts and steps:
> 
> I have a (starting) block number of swapped page, i know page size, and i
> know that i have to use some pool of buffers inside kernel. So i get
> buffer with getpbuf(), then fill in b_data, b_blkno, b_bcount, b_bufsize,
> b_proc and b_flags fields and call pbgetvp(swapdev_vp,bp) and
> VOP_STRATEGY(bp). Then i analize error flag in b_flags and call
> pbrelvp(bp) and relpbuf(bp). This code was copied from
> getpages/putpages routines, but it hangs kernel and PC. So i misunderstand
> something and need help. How can i successfully write down some data to
> the known block number on the known device from the kernel? Or maybe
> someone can point me where can i find more information on I/O in kernel?

Free swap pages are reclaimed asynchronously in the idle loop
(where they are zeroed).

To do what you want, which is to clean the backing pages, you
are better off doing it for all freed blocks, not just swap
blocks (if someone can read your swap, they can read other data
off your unallocated disk blocks from the FS, as well).

-- Terry

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3BD83020.E1CD620F>