Module Name:    src
Committed By:   martin
Date:           Sat Oct 10 18:49:27 UTC 2020

Modified Files:
        src/usr.sbin/sysinst: mbr.c

Log Message:
Use an install target hint to mark a new partition active.
When compiled with BOOTSEL support, also name the new partition "NetBSD".


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 src/usr.sbin/sysinst/mbr.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/mbr.c
diff -u src/usr.sbin/sysinst/mbr.c:1.34 src/usr.sbin/sysinst/mbr.c:1.35
--- src/usr.sbin/sysinst/mbr.c:1.34	Sat Oct  3 18:54:18 2020
+++ src/usr.sbin/sysinst/mbr.c	Sat Oct 10 18:49:27 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: mbr.c,v 1.34 2020/10/03 18:54:18 martin Exp $ */
+/*	$NetBSD: mbr.c,v 1.35 2020/10/10 18:49:27 martin Exp $ */
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -1579,7 +1579,8 @@ mbr_part_attr_str(const struct disk_part
 
 static bool
 mbr_info_to_partitition(const struct disk_part_info *info,
-   struct mbr_partition *mp, uint sector, const char **err_msg)
+   struct mbr_partition *mp, uint sector,
+   struct mbr_info_t *mb, size_t index, const char **err_msg)
 {
 	size_t pt = mbr_type_from_gen_desc(info->nat_type);
 	if (info->start + info->size > UINT_MAX
@@ -1591,6 +1592,12 @@ mbr_info_to_partitition(const struct dis
 	mp->mbrp_start = info->start - sector;
 	mp->mbrp_size = info->size;
 	mp->mbrp_type = pt;
+	if (info->flags & PTI_INSTALL_TARGET) {
+		mp->mbrp_flag |= MBR_PFLAG_ACTIVE;
+#ifdef BOOTSEL
+		strcpy(mb->mbrb.mbrbs_nametab[index], "NetBSD");
+#endif
+	}
 
 	return true;
 }
@@ -1771,7 +1778,7 @@ found:
 		data.size = size;
 	uint old_start = m->mbr.mbr_parts[i].mbrp_start;
 	if (!mbr_info_to_partitition(&data,
-	   &m->mbr.mbr_parts[i], m->sector, err_msg))
+	   &m->mbr.mbr_parts[i], m->sector, m, i, err_msg))
 		return false;
 	if (data.flags & PTI_INSTALL_TARGET)
 		parts->target = start;
@@ -2262,7 +2269,7 @@ mbr_add_part(struct disk_partitions *arg
 			/* empty slot, we can just use it */
 			newp = &m->mbr.mbr_parts[0];
 			mbr_info_to_partitition(&data, &m->mbr.mbr_parts[0],
-			    m->sector, errmsg);
+			    m->sector, m, 0, errmsg);
 			if (data.last_mounted && m->last_mounted[0] &&
 			    data.last_mounted != m->last_mounted[0]) {
 				free(__UNCONST(m->last_mounted[0]));
@@ -2316,7 +2323,7 @@ mbr_add_part(struct disk_partitions *arg
 				newp = &new_mbr->mbr.mbr_parts[0];
 				mbr_info_to_partitition(&data,
 				    &new_mbr->mbr.mbr_parts[0],
-				    new_mbr->sector, errmsg);
+				    new_mbr->sector, new_mbr, 0, errmsg);
 				if (data.last_mounted && m->last_mounted[0] &&
 				    data.last_mounted != m->last_mounted[0]) {
 					free(__UNCONST(m->last_mounted[0]));
@@ -2335,7 +2342,7 @@ mbr_add_part(struct disk_partitions *arg
 				newp = &new_mbr->mbr.mbr_parts[0];
 				mbr_info_to_partitition(&data,
 				    &new_mbr->mbr.mbr_parts[0],
-				    new_mbr->sector, errmsg);
+				    new_mbr->sector, new_mbr, 0, errmsg);
 				if (data.last_mounted && m->last_mounted[0] &&
 				    data.last_mounted != m->last_mounted[0]) {
 					free(__UNCONST(m->last_mounted[0]));
@@ -2399,7 +2406,7 @@ mbr_add_part(struct disk_partitions *arg
 	if (data.start + data.size > start + size)
 		data.size = start + size - data.start;
 	mbr_info_to_partitition(&data, &m->mbr.mbr_parts[free_primary],
-	     m->sector, errmsg);
+	     m->sector, m, free_primary, errmsg);
 	if (data.last_mounted && m->last_mounted[free_primary] &&
 	    data.last_mounted != m->last_mounted[free_primary]) {
 		free(__UNCONST(m->last_mounted[free_primary]));

Reply via email to