From owner-svn-src-user@FreeBSD.ORG Sun Oct 12 12:08:10 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E415A106568F; Sun, 12 Oct 2008 12:08:09 +0000 (UTC) (envelope-from nyan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D1C7B8FC17; Sun, 12 Oct 2008 12:08:09 +0000 (UTC) (envelope-from nyan@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9CC89w2045678; Sun, 12 Oct 2008 12:08:09 GMT (envelope-from nyan@svn.freebsd.org) Received: (from nyan@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9CC89nR045674; Sun, 12 Oct 2008 12:08:09 GMT (envelope-from nyan@svn.freebsd.org) Message-Id: <200810121208.m9CC89nR045674@svn.freebsd.org> From: Takahashi Yoshihiro Date: Sun, 12 Oct 2008 12:08:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r183803 - in user/nyan/pc98/sys: conf geom/part pc98/conf X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Oct 2008 12:08:10 -0000 Author: nyan Date: Sun Oct 12 12:08:09 2008 New Revision: 183803 URL: http://svn.freebsd.org/changeset/base/183803 Log: Fix to probe pc98 disk and switch to gpart in DEFAULTS. Modified: user/nyan/pc98/sys/conf/files user/nyan/pc98/sys/geom/part/g_part_bsd.c user/nyan/pc98/sys/geom/part/g_part_pc98.c user/nyan/pc98/sys/pc98/conf/DEFAULTS Modified: user/nyan/pc98/sys/conf/files ============================================================================== --- user/nyan/pc98/sys/conf/files Sun Oct 12 11:48:21 2008 (r183802) +++ user/nyan/pc98/sys/conf/files Sun Oct 12 12:08:09 2008 (r183803) @@ -1504,7 +1504,7 @@ geom/geom_kern.c standard geom/geom_mbr.c optional geom_mbr geom/geom_mbr_enc.c optional geom_mbr geom/geom_pc98.c optional geom_pc98 -geom/geom_pc98_enc.c optional geom_pc98 +geom/geom_pc98_enc.c optional geom_pc98 | geom_part_pc98 geom/geom_slice.c standard geom/geom_subr.c standard geom/geom_sunlabel.c optional geom_sunlabel Modified: user/nyan/pc98/sys/geom/part/g_part_bsd.c ============================================================================== --- user/nyan/pc98/sys/geom/part/g_part_bsd.c Sun Oct 12 11:48:21 2008 (r183802) +++ user/nyan/pc98/sys/geom/part/g_part_bsd.c Sun Oct 12 12:08:09 2008 (r183803) @@ -341,8 +341,10 @@ g_part_bsd_read(struct g_part_table *bas printf("GEOM: %s: geometry does not match label.\n", pp->name); chs = le32dec(buf + 60); +#if 0 if (chs < 1 || chs > msize) goto invalid_label; +#endif if (chs != msize) printf("GEOM: %s: media size does not match label.\n", pp->name); Modified: user/nyan/pc98/sys/geom/part/g_part_pc98.c ============================================================================== --- user/nyan/pc98/sys/geom/part/g_part_pc98.c Sun Oct 12 11:48:21 2008 (r183802) +++ user/nyan/pc98/sys/geom/part/g_part_pc98.c Sun Oct 12 12:08:09 2008 (r183803) @@ -260,6 +260,8 @@ g_part_pc98_dumpconf(struct g_part_table /* confxml: partition entry information */ sbuf_printf(sb, "%s\n", indent, name); sbuf_printf(sb, "%s%u\n", indent, type); + if (entry->ent.dp_sid & 0x80) + sbuf_printf(sb, "%sactive\n", indent); } return (0); } @@ -304,6 +306,7 @@ static int g_part_pc98_probe(struct g_part_table *table, struct g_consumer *cp) { struct g_provider *pp; + struct pc98_partition dp; u_char *buf, *p; int error, index, res, sum; uint16_t magic; @@ -338,11 +341,14 @@ g_part_pc98_probe(struct g_part_table *t for (index = 0; index < NDOSPART; index++) { p = buf + SECSIZE + index * DOSPARTSIZE; - if (p[2] != 0 || p[3] != 0) - goto out; - if (p[1] == 0) + pc98_partition_dec(p, &dp); + if (dp.dp_mid == 0 || dp.dp_sid == 0) continue; - if (le16dec(p + 10) == 0) + if (dp.dp_ssect == dp.dp_esect && + dp.dp_shd == dp.dp_ehd && + dp.dp_scyl == dp.dp_ecyl) + goto out; + if (dp.dp_scyl == 0 || dp.dp_ecyl == 0) goto out; } @@ -381,20 +387,7 @@ g_part_pc98_read(struct g_part_table *ba for (index = NDOSPART - 1; index >= 0; index--) { p = buf + SECSIZE + index * DOSPARTSIZE; - ent.dp_mid = p[0]; - ent.dp_sid = p[1]; - ent.dp_dum1 = p[2]; - ent.dp_dum2 = p[3]; - ent.dp_ipl_sct = p[4]; - ent.dp_ipl_head = p[5]; - ent.dp_ipl_cyl = le16dec(p + 6); - ent.dp_ssect = p[8]; - ent.dp_shd = p[9]; - ent.dp_scyl = le16dec(p + 10); - ent.dp_esect = p[12]; - ent.dp_ehd = p[13]; - ent.dp_ecyl = le16dec(p + 14); - bcopy(p + 16, ent.dp_name, sizeof(ent.dp_name)); + pc98_partition_dec(p, &ent); if (ent.dp_sid == 0) continue; @@ -442,23 +435,9 @@ g_part_pc98_write(struct g_part_table *b p = table->table + (index - 1) * DOSPARTSIZE; entry = (baseentry != NULL && index == baseentry->gpe_index) ? (struct g_part_pc98_entry *)baseentry : NULL; - if (entry != NULL && !baseentry->gpe_deleted) { - p[0] = entry->ent.dp_mid; - p[1] = entry->ent.dp_sid; - p[2] = entry->ent.dp_dum1; - p[3] = entry->ent.dp_dum2; - p[4] = entry->ent.dp_ipl_sct; - p[5] = entry->ent.dp_ipl_head; - le16enc(p + 6, entry->ent.dp_ipl_cyl); - p[8] = entry->ent.dp_ssect; - p[9] = entry->ent.dp_shd; - le16enc(p + 10, entry->ent.dp_scyl); - p[12] = entry->ent.dp_esect; - p[13] = entry->ent.dp_ehd; - le16enc(p + 14, entry->ent.dp_ecyl); - bcopy(entry->ent.dp_name, p + 16, - sizeof(entry->ent.dp_name)); - } else + if (entry != NULL && !baseentry->gpe_deleted) + pc98_partition_enc(p, &entry->ent); + else bzero(p, DOSPARTSIZE); if (entry != NULL) Modified: user/nyan/pc98/sys/pc98/conf/DEFAULTS ============================================================================== --- user/nyan/pc98/sys/pc98/conf/DEFAULTS Sun Oct 12 11:48:21 2008 (r183802) +++ user/nyan/pc98/sys/pc98/conf/DEFAULTS Sun Oct 12 12:08:09 2008 (r183803) @@ -22,5 +22,7 @@ device uart_ns8250 #device uart_i8251 # Default partitioning schemes -options GEOM_BSD -options GEOM_PC98 +#options GEOM_BSD +#options GEOM_PC98 +options GEOM_PART_BSD +options GEOM_PART_PC98