diff options
author | ae <ae@FreeBSD.org> | 2014-08-12 09:10:13 +0000 |
---|---|---|
committer | ae <ae@FreeBSD.org> | 2014-08-12 09:10:13 +0000 |
commit | e3be5d165dde1c298d229cda33b01b61a79763fe (patch) | |
tree | f17fd69743be9d4856935243e584be5facea6588 /sys/geom | |
parent | feb26e5057d81b097df0bb4b0faaed670f996b4d (diff) | |
download | FreeBSD-src-e3be5d165dde1c298d229cda33b01b61a79763fe.zip FreeBSD-src-e3be5d165dde1c298d229cda33b01b61a79763fe.tar.gz |
Add sysctl and loader tunable kern.geom.part.mbr.enforce_chs that is set
by default. It can be used to disable automatic alignment to CHS geometry,
that GEOM_PART_MBR does.
Reviewed by: wblock
MFC after: 1 week
Diffstat (limited to 'sys/geom')
-rw-r--r-- | sys/geom/part/g_part_mbr.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/geom/part/g_part_mbr.c b/sys/geom/part/g_part_mbr.c index f2ca6b6..8b32778 100644 --- a/sys/geom/part/g_part_mbr.c +++ b/sys/geom/part/g_part_mbr.c @@ -49,6 +49,14 @@ __FBSDID("$FreeBSD$"); FEATURE(geom_part_mbr, "GEOM partitioning class for MBR support"); +SYSCTL_DECL(_kern_geom_part); +static SYSCTL_NODE(_kern_geom_part, OID_AUTO, mbr, CTLFLAG_RW, 0, + "GEOM_PART_MBR Master Boot Record"); + +static u_int enforce_chs = 1; +SYSCTL_UINT(_kern_geom_part_mbr, OID_AUTO, enforce_chs, + CTLFLAG_RWTUN, &enforce_chs, 1, "Enforce alignment to CHS addressing"); + #define MBRSIZE 512 struct g_part_mbr_table { @@ -200,6 +208,8 @@ mbr_align(struct g_part_table *basetable, uint32_t *start, uint32_t *size) { uint32_t sectors; + if (enforce_chs == 0) + return (0); sectors = basetable->gpt_sectors; if (*size < sectors) return (EINVAL); |