swap at beginning of slice - danger?

Oliver Fromme olli at lurza.secnetix.de
Wed Mar 15 15:42:24 UTC 2006

Dmitry Pryanishnikov <dmitry at atlantis.dp.ua> wrote:
 > Oliver Fromme wrote:
 > > >  # bsdlabel ad0s1 | fgrep b:
 > > >    b:  2097152        0      swap
 > > > 
 > > > Previously, on a 4.11 system, swapinfo said that swap size was less than
 > > > size of b: partition on a slice - it was ok, as boot sectors are
 > > > located at beginning of slice. But now, sizes match exactly. What
 > > > changed and is it dangerous nowadays to have swap partition at offset 0 ?
 > > 
 > > The code in sys/swap_pager.c does not touch the first two
 > > blocks, where blocks are measured in PAGE_SIZE units.
 > > The smallest page size supported on FreeBSD architectures
 > > is 4 KB (on i386), so that's at least 2 * 4k, which is 16
 > > sectors on the disk.  That's enough to skip MBR, disklabel
 > > and boot blocks.
 >   You're right about RELENG_5 (and CURRENT).

And RELENG_6, of course.

 > However I don't see any equivalent code in RELENG_4.

RELENG_4 doesn't touch the first <n> sectors of the swap
partition either.  See the calculations for vsbase in
vm/vm_swap.c in the swaponvp() function.

Apart from that, RELENG_4 is pretty much dead, as far as
development is concerned, so nobody would suddenly change
how partitions are laid out by default.

 > Neither can I find where it's documented,
 > and thus any guarantees that it won't disappear tomorrow ;(

The comment in the source clearly state _why_ the first
two blocks of the swap partition are excluded, so no
developper will rip that out.  UFS skips the first 16
sectors, too -- that won't change either, and nobody is
really worried about it.

By the way, the first partition on a disk is usually the
root partition, not the swap partition.  So the problem
could arise only in unusual circumstances.

 > > In other words:  You're save.  No danger.  No need to worry.
 > In this particular case - yes.

If you create a swap partition intentionally at the start
of a disk (for whatever reason), and if you're paranoid,
then make sure it starts at offset 16, not 0.

But even with offset 0 you're save.

Best regards

Oliver Fromme,  secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing
Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.

"In My Egoistical Opinion, most people's C programs should be indented
six feet downward and covered with dirt."
        -- Blair P. Houghton

More information about the freebsd-stable mailing list