Page MenuHomeFreeBSD

D9603.id25764.diff
No OneTemporary

D9603.id25764.diff

Index: head/sbin/geom/class/part/gpart.8
===================================================================
--- head/sbin/geom/class/part/gpart.8
+++ head/sbin/geom/class/part/gpart.8
@@ -1146,6 +1146,18 @@
GEOM class.
The default value is shown next to each variable.
.Bl -tag -width indent
+.It Va kern.geom.part.auto_resize: No 1
+This variable controls automatic resize behavior of
+.Nm
+GEOM class.
+When this variable is enable and new size of provider is detected, the schema
+metadata is resized but all changes are not saved to disk, until
+.Cm gpart commit
+is run to confirm changes.
+This behavior is also reported with diagnostic message:
+.Sy "GEOM_PART: (provider) was automatically resized."
+.Sy "Use `gpart commit (provider)` to save changes or `gpart undo (provider)`"
+.Sy "to revert them."
.It Va kern.geom.part.check_integrity : No 1
This variable controls the behaviour of metadata integrity checks.
When integrity checks are enabled, the
Index: head/sys/geom/part/g_part.c
===================================================================
--- head/sys/geom/part/g_part.c
+++ head/sys/geom/part/g_part.c
@@ -135,6 +135,10 @@
SYSCTL_UINT(_kern_geom_part, OID_AUTO, check_integrity,
CTLFLAG_RWTUN, &check_integrity, 1,
"Enable integrity checking");
+static u_int auto_resize = 1;
+SYSCTL_UINT(_kern_geom_part, OID_AUTO, auto_resize,
+ CTLFLAG_RW, &auto_resize, 1,
+ "Enable auto resize");
/*
* The GEOM partitioning class.
@@ -2095,6 +2099,9 @@
G_PART_TRACE((G_T_TOPOLOGY, "%s(%s)", __func__, cp->provider->name));
g_topology_assert();
+ if (auto_resize == 0)
+ return;
+
table = cp->geom->softc;
if (table->gpt_opened == 0) {
if (g_access(cp, 1, 1, 1) != 0)

File Metadata

Mime Type
text/plain
Expires
Mon, Oct 13, 7:27 AM (14 h, 30 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23664281
Default Alt Text
D9603.id25764.diff (1 KB)

Event Timeline