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
This commit is contained in:
parent
8bc5c7c0eb
commit
fb86534cb1
@ -24,7 +24,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd August 3, 2014
|
||||
.Dd August 12, 2014
|
||||
.Dt GPART 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -1183,6 +1183,12 @@ If this variable set to 1 each component of the mirrored volume will be
|
||||
present as independent partition.
|
||||
.Em NOTE :
|
||||
This may break a mirrored volume and lead to data damage.
|
||||
.It Va kern.geom.part.mbr.enforce_chs : No 1
|
||||
Specify how the Master Boot Record (MBR) module does alignment.
|
||||
If this variable is set to a non-zero value, the module will automatically
|
||||
recalculate the user-specified offset and size for alignment with the CHS
|
||||
geometry.
|
||||
Otherwise the values will be left unchanged.
|
||||
.El
|
||||
.Sh EXIT STATUS
|
||||
Exit status is 0 on success, and 1 if the command fails.
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user