Module Name: src
Committed By: martin
Date: Tue May 12 17:26:43 UTC 2020
Modified Files:
src/usr.sbin/sysinst: defs.h disks.c main.c
Log Message:
PR 55202: disable swapping if we started it due to low ram
To generate a diff of this commit:
cvs rdiff -u -r1.60 -r1.61 src/usr.sbin/sysinst/defs.h
cvs rdiff -u -r1.66 -r1.67 src/usr.sbin/sysinst/disks.c
cvs rdiff -u -r1.24 -r1.25 src/usr.sbin/sysinst/main.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/sysinst/defs.h
diff -u src/usr.sbin/sysinst/defs.h:1.60 src/usr.sbin/sysinst/defs.h:1.61
--- src/usr.sbin/sysinst/defs.h:1.60 Tue May 12 17:04:00 2020
+++ src/usr.sbin/sysinst/defs.h Tue May 12 17:26:43 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: defs.h,v 1.60 2020/05/12 17:04:00 martin Exp $ */
+/* $NetBSD: defs.h,v 1.61 2020/05/12 17:26:43 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -673,8 +673,14 @@ void disp_cur_fspart(int, int);
int make_filesystems(struct install_partition_desc *);
int make_fstab(struct install_partition_desc *);
int mount_disks(struct install_partition_desc *);
+/*
+ * set_swap_if_low_ram and set_swap return -1 on error,
+ * 0 if no swap was added on purpose and
+ * 1 if swap has been added (and needs to be cleared later).
+ */
int set_swap_if_low_ram(struct install_partition_desc *);
int set_swap(struct install_partition_desc *);
+void clear_swap(void);
int check_swap(const char *, int);
char *bootxx_name(struct install_partition_desc *);
int get_dkwedges(struct dkwedge_info **, const char *);
Index: src/usr.sbin/sysinst/disks.c
diff -u src/usr.sbin/sysinst/disks.c:1.66 src/usr.sbin/sysinst/disks.c:1.67
--- src/usr.sbin/sysinst/disks.c:1.66 Wed Feb 19 18:08:03 2020
+++ src/usr.sbin/sysinst/disks.c Tue May 12 17:26:43 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: disks.c,v 1.66 2020/02/19 18:08:03 martin Exp $ */
+/* $NetBSD: disks.c,v 1.67 2020/05/12 17:26:43 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -1905,9 +1905,12 @@ mount_disks(struct install_partition_des
return error;
}
+static char swap_dev[PATH_MAX];
+
int
set_swap_if_low_ram(struct install_partition_desc *install)
{
+ swap_dev[0] = 0;
if (get_ramsize() <= TINY_RAM_SIZE)
return set_swap(install);
return 0;
@@ -1917,9 +1920,9 @@ int
set_swap(struct install_partition_desc *install)
{
size_t i;
- char dev_buf[PATH_MAX];
int rval;
+ swap_dev[0] = 0;
for (i = 0; i < install->num; i++) {
if (install->infos[i].type == PT_swap)
break;
@@ -1928,15 +1931,27 @@ set_swap(struct install_partition_desc *
return 0;
if (!install->infos[i].parts->pscheme->get_part_device(
- install->infos[i].parts, install->infos[i].cur_part_id, dev_buf,
- sizeof dev_buf, NULL, plain_name, true, true))
+ install->infos[i].parts, install->infos[i].cur_part_id, swap_dev,
+ sizeof swap_dev, NULL, plain_name, true, true))
return -1;
- rval = swapctl(SWAP_ON, dev_buf, 0);
- if (rval != 0)
+ rval = swapctl(SWAP_ON, swap_dev, 0);
+ if (rval != 0) {
+ swap_dev[0] = 0;
return -1;
+ }
- return 0;
+ return 1;
+}
+
+void
+clear_swap(void)
+{
+
+ if (swap_dev[0] == 0)
+ return;
+ swapctl(SWAP_OFF, swap_dev, 0);
+ swap_dev[0] = 0;
}
int
Index: src/usr.sbin/sysinst/main.c
diff -u src/usr.sbin/sysinst/main.c:1.24 src/usr.sbin/sysinst/main.c:1.25
--- src/usr.sbin/sysinst/main.c:1.24 Wed Apr 22 23:43:12 2020
+++ src/usr.sbin/sysinst/main.c Tue May 12 17:26:43 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.24 2020/04/22 23:43:12 joerg Exp $ */
+/* $NetBSD: main.c,v 1.25 2020/05/12 17:26:43 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -450,6 +450,7 @@ toplevel(void)
if (chdir(home) != 0)
(void)chdir("/");
unwind_mounts();
+ clear_swap();
/* Display banner message in (english, francais, deutsch..) */
msg_display(MSG_hello);
@@ -540,6 +541,7 @@ cleanup(void)
chdir(getenv("HOME"));
unwind_mounts();
umount_mnt2();
+ clear_swap();
endwin();