diff options
author | grog <grog@FreeBSD.org> | 2002-12-02 23:49:59 +0000 |
---|---|---|
committer | grog <grog@FreeBSD.org> | 2002-12-02 23:49:59 +0000 |
commit | ac393197666889065ee724a360566fa1ff32b1de (patch) | |
tree | 9844ff776781c03f5736fcbbf4b5ab9906fe8886 /sbin/disklabel | |
parent | cfb76a599318018df7d879ef19e4b9e5872adb08 (diff) | |
download | FreeBSD-src-ac393197666889065ee724a360566fa1ff32b1de.zip FreeBSD-src-ac393197666889065ee724a360566fa1ff32b1de.tar.gz |
Relax partition overlap check to allow Vinum partitions to overlap
other partitiosns. This is necessary when migrating conventional
partitions to Vinum and was broken by recent more stringent overlap
checks. This is arguably the wrong way to do it. A better method
would be to have the loader understand a subset of Vinum partitioning
and allow an install directly to Vinum, but until then, this is the
best we have.
Reviewed by: jhb
Approved by: re (rwatson)
Diffstat (limited to 'sbin/disklabel')
-rw-r--r-- | sbin/disklabel/disklabel.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sbin/disklabel/disklabel.c b/sbin/disklabel/disklabel.c index 6c16a47..3d3139f 100644 --- a/sbin/disklabel/disklabel.c +++ b/sbin/disklabel/disklabel.c @@ -1462,7 +1462,8 @@ checklabel(struct disklabel *lp) } else { /* allow them to be out of order for old-style tables */ if (pp->p_offset < current_offset && - seen_default_offset && i != RAW_PART) { + seen_default_offset && i != RAW_PART && + pp->p_fstype != FS_VINUM) { fprintf(stderr, "Offset %ld for partition %c overlaps previous partition which ends at %lu\n", (long)pp->p_offset,i+'a',current_offset); @@ -1537,9 +1538,11 @@ checklabel(struct disklabel *lp) /* check for overlaps */ /* this will check for all possible overlaps once and only once */ for (j = 0; j < i; j++) { - if (j != RAW_PART && i != RAW_PART && + pp2 = &lp->d_partitions[j]; + if (j != RAW_PART && i != RAW_PART && + pp->p_fstype != FS_VINUM && + pp2->p_fstype != FS_VINUM && part_set[i] && part_set[j]) { - pp2 = &lp->d_partitions[j]; if (pp2->p_offset < pp->p_offset + pp->p_size && (pp2->p_offset + pp2->p_size > pp->p_offset || pp2->p_offset >= pp->p_offset)) { |