Module Name:    src
Committed By:   nonaka
Date:           Sat Jun 11 11:43:23 UTC 2011

Modified Files:
        src/distrib/utils/sysinst/arch/hpcarm: md.c
        src/distrib/utils/sysinst/arch/zaurus: md.c

Log Message:
MBR magic exists at the beginning of 'a' partition, BPB is cleared.
Avoid to detect msdosfs incorrectly at boot time.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/distrib/utils/sysinst/arch/hpcarm/md.c
cvs rdiff -u -r1.7 -r1.8 src/distrib/utils/sysinst/arch/zaurus/md.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/utils/sysinst/arch/hpcarm/md.c
diff -u src/distrib/utils/sysinst/arch/hpcarm/md.c:1.10 src/distrib/utils/sysinst/arch/hpcarm/md.c:1.11
--- src/distrib/utils/sysinst/arch/hpcarm/md.c:1.10	Mon Apr  4 08:30:29 2011
+++ src/distrib/utils/sysinst/arch/hpcarm/md.c	Sat Jun 11 11:43:23 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.10 2011/04/04 08:30:29 mbalmer Exp $ */
+/*	$NetBSD: md.c,v 1.11 2011/06/11 11:43:23 nonaka Exp $ */
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -148,6 +148,38 @@
 int
 md_post_newfs(void)
 {
+	struct mbr_sector pbr;
+	char adevname[STRSIZE];
+	ssize_t sz;
+	int fd = -1;
+
+	snprintf(adevname, sizeof(adevname), "/dev/r%sa", diskdev);
+	fd = open(adevname, O_RDWR);
+	if (fd < 0)
+		goto out;
+
+	/* Read partition boot record */
+	sz = pread(fd, &pbr, sizeof(pbr), 0);
+	if (sz != sizeof(pbr))
+		goto out;
+
+	/* Check magic number */
+	if (pbr.mbr_magic != le16toh(MBR_MAGIC))
+		goto out;
+
+#define	OSNAME	"NetBSD60"
+	/* Update oemname */
+	memcpy(&pbr.mbr_oemname, OSNAME, sizeof(OSNAME) - 1);
+
+	/* Clear BPB */
+	memset(&pbr.mbr_bpb, 0, sizeof(pbr.mbr_bpb));
+
+	/* write-backed new patition boot record */
+	(void)pwrite(fd, &pbr, sizeof(pbr), 0);
+
+out:
+	if (fd >= 0)
+		close(fd);
 	return 0;
 }
 

Index: src/distrib/utils/sysinst/arch/zaurus/md.c
diff -u src/distrib/utils/sysinst/arch/zaurus/md.c:1.7 src/distrib/utils/sysinst/arch/zaurus/md.c:1.8
--- src/distrib/utils/sysinst/arch/zaurus/md.c:1.7	Mon Apr  4 08:30:46 2011
+++ src/distrib/utils/sysinst/arch/zaurus/md.c	Sat Jun 11 11:43:23 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: md.c,v 1.7 2011/04/04 08:30:46 mbalmer Exp $	*/
+/*	$NetBSD: md.c,v 1.8 2011/06/11 11:43:23 nonaka Exp $	*/
 
 /*
  * Copyright 1997 Piermont Information Systems Inc.
@@ -111,6 +111,38 @@
 int
 md_post_newfs(void)
 {
+	struct mbr_sector pbr;
+	char adevname[STRSIZE];
+	ssize_t sz;
+	int fd = -1;
+
+	snprintf(adevname, sizeof(adevname), "/dev/r%sa", diskdev);
+	fd = open(adevname, O_RDWR);
+	if (fd < 0)
+		goto out;
+
+	/* Read partition boot record */
+	sz = pread(fd, &pbr, sizeof(pbr), 0);
+	if (sz != sizeof(pbr))
+		goto out;
+
+	/* Check magic number */
+	if (pbr.mbr_magic != le16toh(MBR_MAGIC))
+		goto out;
+
+#define	OSNAME	"NetBSD60"
+	/* Update oemname */
+	memcpy(&pbr.mbr_oemname, OSNAME, sizeof(OSNAME) - 1);
+
+	/* Clear BPB */
+	memset(&pbr.mbr_bpb, 0, sizeof(pbr.mbr_bpb));
+
+	/* write-backed new patition boot record */
+	(void)pwrite(fd, &pbr, sizeof(pbr), 0);
+
+out:
+	if (fd >= 0)
+		close(fd);
 	return 0;
 }
 

Reply via email to