Module Name: src Committed By: martin Date: Thu Jun 20 19:26:41 UTC 2019
Modified Files: src/usr.sbin/sysinst: bsddisklabel.c Log Message: Avoid creating a (tiny) swap partition by default on overall too small disks. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/usr.sbin/sysinst/bsddisklabel.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/bsddisklabel.c diff -u src/usr.sbin/sysinst/bsddisklabel.c:1.14 src/usr.sbin/sysinst/bsddisklabel.c:1.15 --- src/usr.sbin/sysinst/bsddisklabel.c:1.14 Thu Jun 20 15:52:07 2019 +++ src/usr.sbin/sysinst/bsddisklabel.c Thu Jun 20 19:26:41 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: bsddisklabel.c,v 1.14 2019/06/20 15:52:07 christos Exp $ */ +/* $NetBSD: bsddisklabel.c,v 1.15 2019/06/20 19:26:41 martin Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -987,8 +987,8 @@ static void fill_defaults(struct partition_usage_set *wanted, struct disk_partitions *parts, daddr_t ptstart, daddr_t ptsize) { - size_t i, root = ~0U, usr = ~0U, swap = ~0U; - daddr_t free_space, dump_space; + size_t i, root = ~0U, usr = ~0U, swap = ~0U, def_usr = ~0U; + daddr_t free_space, dump_space, required; #if defined(DEFAULT_UFS2) && !defined(HAVE_UFS2_BOOT) size_t boot = ~0U; #endif @@ -1017,12 +1017,16 @@ fill_defaults(struct partition_usage_set if (wanted->infos[i].instflags & PUIINST_BOOT) boot = i; #endif - if (wanted->infos[i].type == PT_root - && wanted->infos[i].size > 0) { - if (strcmp(wanted->infos[i].mount, "/") == 0) + if (wanted->infos[i].type == PT_root) { + if (strcmp(wanted->infos[i].mount, "/") == 0) { root = i; - else if (strcmp(wanted->infos[i].mount, "/usr") == 0) - usr = i; + } else if ( + strcmp(wanted->infos[i].mount, "/usr") == 0) { + if (wanted->infos[i].size > 0) + usr = i; + else + def_usr = i; + } wanted->infos[i].fs_type = FS_BSDFFS; #ifdef DEFAULT_UFS2 #ifndef HAVE_UFS2_BOOT @@ -1130,9 +1134,21 @@ fill_defaults(struct partition_usage_set * impossible defaults. */ free_space = parts->free_space; + required = 0; + if (root < wanted->num) + required += wanted->infos[root].size; + if (usr < wanted->num) + required += wanted->infos[usr].size; + else if (def_usr < wanted->num) + required += wanted->infos[def_usr].def_size; + free_space -= required; for (i = 0; i < wanted->num; i++) { + if (i == root || i == usr) + continue; /* already accounted above */ if (wanted->infos[i].cur_part_id != NO_PART) continue; + if (wanted->infos[i].size == 0) + continue; if (wanted->infos[i].flags & (PUIFLG_IS_OUTER|PUIFLG_JUST_MOUNTPOINT)) continue; @@ -1147,7 +1163,6 @@ fill_defaults(struct partition_usage_set free_space += inc; wanted->infos[swap].size -= inc; } - if (root < wanted->num) { /* Add space for 2 system dumps to / (traditional) */ dump_space = get_ramsize() * (MEG/512);