From owner-svn-src-user@freebsd.org Sun Jan 10 17:44:03 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6394EA6915A for ; Sun, 10 Jan 2016 17:44:03 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3AC3117EB; Sun, 10 Jan 2016 17:44:03 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u0AHi2WD097126; Sun, 10 Jan 2016 17:44:02 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u0AHi145097122; Sun, 10 Jan 2016 17:44:01 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201601101744.u0AHi145097122@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Sun, 10 Jan 2016 17:44:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r293638 - in user/ngie/stable-10-fix-LINT-NOINET: sbin/geom/class/part sys/boot/common sys/geom/part usr.bin/netstat X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.20 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, 10 Jan 2016 17:44:03 -0000 Author: ngie Date: Sun Jan 10 17:44:01 2016 New Revision: 293638 URL: https://svnweb.freebsd.org/changeset/base/293638 Log: MFstable/10 @ r293637 Modified: user/ngie/stable-10-fix-LINT-NOINET/sbin/geom/class/part/gpart.8 user/ngie/stable-10-fix-LINT-NOINET/sys/boot/common/part.c user/ngie/stable-10-fix-LINT-NOINET/sys/geom/part/g_part_gpt.c user/ngie/stable-10-fix-LINT-NOINET/usr.bin/netstat/inet.c Directory Properties: user/ngie/stable-10-fix-LINT-NOINET/ (props changed) Modified: user/ngie/stable-10-fix-LINT-NOINET/sbin/geom/class/part/gpart.8 ============================================================================== --- user/ngie/stable-10-fix-LINT-NOINET/sbin/geom/class/part/gpart.8 Sun Jan 10 17:39:49 2016 (r293637) +++ user/ngie/stable-10-fix-LINT-NOINET/sbin/geom/class/part/gpart.8 Sun Jan 10 17:44:01 2016 (r293638) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 14, 2015 +.Dd December 10, 2015 .Dt GPART 8 .Os .Sh NAME @@ -1107,15 +1107,6 @@ and .Cm recover are the only operations allowed on corrupt tables. .Pp -If the first sector of a provider is corrupt, the kernel can not detect GPT -even if the partition table itself is not corrupt. -The protective MBR can be rewritten using the -.Xr dd 1 -command, to restore the ability to detect the GPT. -The copy of the protective MBR is usually located in the -.Pa /boot/pmbr -file. -.Pp If one GPT header appears to be corrupt but the other copy remains intact, the kernel will log the following: .Bd -literal -offset indent @@ -1330,7 +1321,6 @@ and /sbin/gpart backup ada0 | /sbin/gpart restore -F ada1 ada2 .Ed .Sh SEE ALSO -.Xr dd 1 , .Xr geom 4 , .Xr boot0cfg 8 , .Xr geom 8 , Modified: user/ngie/stable-10-fix-LINT-NOINET/sys/boot/common/part.c ============================================================================== --- user/ngie/stable-10-fix-LINT-NOINET/sys/boot/common/part.c Sun Jan 10 17:39:49 2016 (r293637) +++ user/ngie/stable-10-fix-LINT-NOINET/sys/boot/common/part.c Sun Jan 10 17:44:01 2016 (r293638) @@ -306,6 +306,7 @@ ptable_gptread(struct ptable *table, voi table->type = PTABLE_NONE; goto out; } + DEBUG("GPT detected"); size = MIN(hdr.hdr_entries * hdr.hdr_entsz, MAXTBLSZ * table->sectorsize); for (i = 0; i < size / hdr.hdr_entsz; i++) { @@ -631,6 +632,11 @@ ptable_open(void *dev, off_t sectors, ui if (buf[DOSMAGICOFFSET] != 0x55 || buf[DOSMAGICOFFSET + 1] != 0xaa) { DEBUG("magic sequence not found"); +#if defined(LOADER_GPT_SUPPORT) + /* There is no PMBR, check that we have backup GPT */ + table->type = PTABLE_GPT; + table = ptable_gptread(table, dev, dread); +#endif goto out; } /* Check that we have PMBR. Also do some validation. */ Modified: user/ngie/stable-10-fix-LINT-NOINET/sys/geom/part/g_part_gpt.c ============================================================================== --- user/ngie/stable-10-fix-LINT-NOINET/sys/geom/part/g_part_gpt.c Sun Jan 10 17:39:49 2016 (r293637) +++ user/ngie/stable-10-fix-LINT-NOINET/sys/geom/part/g_part_gpt.c Sun Jan 10 17:44:01 2016 (r293638) @@ -823,22 +823,23 @@ g_part_gpt_probe(struct g_part_table *ta return (error); res = le16dec(buf + DOSMAGICOFFSET); pri = G_PART_PROBE_PRI_LOW; - for (index = 0; index < NDOSPART; index++) { - if (buf[DOSPARTOFF + DOSPARTSIZE * index + 4] == 0xee) - pri = G_PART_PROBE_PRI_HIGH; - } - g_free(buf); - if (res != DOSMAGIC) - return (ENXIO); + if (res == DOSMAGIC) { + for (index = 0; index < NDOSPART; index++) { + if (buf[DOSPARTOFF + DOSPARTSIZE * index + 4] == 0xee) + pri = G_PART_PROBE_PRI_HIGH; + } + g_free(buf); - /* Check that there's a primary header. */ - buf = g_read_data(cp, pp->sectorsize, pp->sectorsize, &error); - if (buf == NULL) - return (error); - res = memcmp(buf, GPT_HDR_SIG, 8); - g_free(buf); - if (res == 0) - return (pri); + /* Check that there's a primary header. */ + buf = g_read_data(cp, pp->sectorsize, pp->sectorsize, &error); + if (buf == NULL) + return (error); + res = memcmp(buf, GPT_HDR_SIG, 8); + g_free(buf); + if (res == 0) + return (pri); + } else + g_free(buf); /* No primary? Check that there's a secondary. */ buf = g_read_data(cp, pp->mediasize - pp->sectorsize, pp->sectorsize, Modified: user/ngie/stable-10-fix-LINT-NOINET/usr.bin/netstat/inet.c ============================================================================== --- user/ngie/stable-10-fix-LINT-NOINET/usr.bin/netstat/inet.c Sun Jan 10 17:39:49 2016 (r293637) +++ user/ngie/stable-10-fix-LINT-NOINET/usr.bin/netstat/inet.c Sun Jan 10 17:44:01 2016 (r293638) @@ -1039,47 +1039,6 @@ icmp_stats(u_long off, const char *name, } } -#ifndef BURN_BRIDGES -/* - * Dump IGMP statistics structure (pre 8.x kernel). - */ -static void -igmp_stats_live_old(const char *name) -{ - struct oigmpstat oigmpstat, zerostat; - size_t len = sizeof(oigmpstat); - - if (zflag) - memset(&zerostat, 0, len); - if (sysctlbyname("net.inet.igmp.stats", &oigmpstat, &len, - zflag ? &zerostat : NULL, zflag ? len : 0) < 0) { - warn("sysctl: net.inet.igmp.stats"); - return; - } - - printf("%s:\n", name); - -#define p(f, m) if (oigmpstat.f || sflag <= 1) \ - printf(m, oigmpstat.f, plural(oigmpstat.f)) -#define py(f, m) if (oigmpstat.f || sflag <= 1) \ - printf(m, oigmpstat.f, oigmpstat.f != 1 ? "ies" : "y") - p(igps_rcv_total, "\t%u message%s received\n"); - p(igps_rcv_tooshort, "\t%u message%s received with too few bytes\n"); - p(igps_rcv_badsum, "\t%u message%s received with bad checksum\n"); - py(igps_rcv_queries, "\t%u membership quer%s received\n"); - py(igps_rcv_badqueries, - "\t%u membership quer%s received with invalid field(s)\n"); - p(igps_rcv_reports, "\t%u membership report%s received\n"); - p(igps_rcv_badreports, - "\t%u membership report%s received with invalid field(s)\n"); - p(igps_rcv_ourreports, -"\t%u membership report%s received for groups to which we belong\n"); - p(igps_snd_reports, "\t%u membership report%s sent\n"); -#undef p -#undef py -} -#endif /* !BURN_BRIDGES */ - /* * Dump IGMP statistics structure. */