Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F148810066
D21191.id60601.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D21191.id60601.diff
View Options
Index: sbin/swapon/swapon.8
===================================================================
--- sbin/swapon/swapon.8
+++ sbin/swapon/swapon.8
@@ -90,7 +90,11 @@
.Fl E
option causes each of following devices to receive a
.Dv BIO_DELETE
-command to mark all blocks as unused.
+command to mark all blocks as unused, except those that might store a
+disk label. This marking can include kernel dumps, so the
+.Dq
+late
+option should be included to avoid wiping out kernel dumps.
.Pp
The
.Nm swapoff
Index: sbin/swapon/swapon.c
===================================================================
--- sbin/swapon/swapon.c
+++ sbin/swapon/swapon.c
@@ -45,6 +45,7 @@
#include <sys/param.h>
#include <sys/disk.h>
+#include <sys/disklabel.h>
#include <sys/mdioctl.h>
#include <sys/stat.h>
#include <sys/sysctl.h>
@@ -761,8 +762,8 @@
} else
errx(1, "%s has an invalid file type", name);
/* Trim the device. */
- ioarg[0] = 0;
- ioarg[1] = sz;
+ ioarg[0] = BBSIZE;
+ ioarg[1] = sz - BBSIZE;
if (ioctl(fd, DIOCGDELETE, ioarg) != 0)
warn("ioctl(DIOCGDELETE)");
Index: share/man/man5/fstab.5
===================================================================
--- share/man/man5/fstab.5
+++ share/man/man5/fstab.5
@@ -247,7 +247,7 @@
triggers the delivery of a
.Dv BIO_DELETE
command to the device to mark
-all blocks as unused.
+all pages as unused except those that might store a disk label.
For vnode-backed swap spaces,
.Dq file
is supported in the
Index: sys/vm/swap_pager.c
===================================================================
--- sys/vm/swap_pager.c
+++ sys/vm/swap_pager.c
@@ -79,6 +79,7 @@
#include <sys/buf.h>
#include <sys/conf.h>
#include <sys/disk.h>
+#include <sys/disklabel.h>
#include <sys/eventhandler.h>
#include <sys/fcntl.h>
#include <sys/lock.h>
@@ -2298,10 +2299,11 @@
sp->sw_blist = blist_create(nblks, M_WAITOK);
/*
- * Do not free the first two block in order to avoid overwriting
+ * Do not free the first blocks in order to avoid overwriting
* any bsd label at the front of the partition
*/
- blist_free(sp->sw_blist, 2, nblks - 2);
+ blist_free(sp->sw_blist, BBSIZE / PAGE_SIZE,
+ nblks - BBSIZE / PAGE_SIZE);
dvbase = 0;
mtx_lock(&sw_dev_mtx);
@@ -2319,7 +2321,7 @@
sp->sw_end = dvbase + nblks;
TAILQ_INSERT_TAIL(&swtailq, sp, sw_list);
nswapdev++;
- swap_pager_avail += nblks - 2;
+ swap_pager_avail += nblks - BBSIZE / PAGE_SIZE;
swap_total += nblks;
swapon_check_swzone();
swp_sizecheck();
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Mar 21, 8:00 AM (11 h, 17 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30071569
Default Alt Text
D21191.id60601.diff (2 KB)
Attached To
Mode
D21191: Don't trim bsd_label
Attached
Detach File
Event Timeline
Log In to Comment