From 75e6e577d51ead9da09eb80e6a4e62a2e7155bb0 Mon Sep 17 00:00:00 2001 From: jhb Date: Thu, 1 Nov 2007 20:51:04 +0000 Subject: [PATCH] Don't look for GPT primary and secondary tables on a disk unless we have a valid PMBR. Without this fix, if label a disk with a GPT, then relabel it with an MBR the GPT tables are still present. If you then try to create a GPT with 'gpt create', gpt(8) will fail to open the device because the partitions in the stale GPT overlap with the slices in the MBR. MFC after: 1 week --- sbin/gpt/gpt.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/sbin/gpt/gpt.c b/sbin/gpt/gpt.c index 7a76f6d4ab49..6085ed2addc4 100644 --- a/sbin/gpt/gpt.c +++ b/sbin/gpt/gpt.c @@ -585,10 +585,16 @@ gpt_open(const char *dev) if (gpt_mbr(fd, 0LL) == -1) goto close; - if (gpt_gpt(fd, 1LL) == -1) - goto close; - if (gpt_gpt(fd, mediasz / secsz - 1LL) == -1) - goto close; + + /* + * Don't look for a GPT unless we have a valid PMBR. + */ + if (map_find(MAP_TYPE_PMBR) != NULL) { + if (gpt_gpt(fd, 1LL) == -1) + goto close; + if (gpt_gpt(fd, mediasz / secsz - 1LL) == -1) + goto close; + } return (fd);