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;
}