diff options
author | trasz <trasz@FreeBSD.org> | 2013-12-13 20:33:59 +0000 |
---|---|---|
committer | trasz <trasz@FreeBSD.org> | 2013-12-13 20:33:59 +0000 |
commit | a82d470c95dfbb07e973745cfbe6dc42ed1ab8b1 (patch) | |
tree | 2137e6071c1e18e16f171dfb1f9ec1330183f437 /sys/geom/label | |
parent | 39d7d288c5616ac0a19ddaa330c8c56752a6d7e2 (diff) | |
download | FreeBSD-src-a82d470c95dfbb07e973745cfbe6dc42ed1ab8b1.zip FreeBSD-src-a82d470c95dfbb07e973745cfbe6dc42ed1ab8b1.tar.gz |
MFC r256724:
Make geom_label(4) resize-aware. This fixes a situation when "gpart resize"
would resize a partition, but label providers - e.g. /dev/gptid/XXX - would
stay the same size.
MFC r256766:
Fix build with gcc by spelling unused format string as "unused" instead of NULL.
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'sys/geom/label')
-rw-r--r-- | sys/geom/label/g_label.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/geom/label/g_label.c b/sys/geom/label/g_label.c index 2011b77..fc16f7f 100644 --- a/sys/geom/label/g_label.c +++ b/sys/geom/label/g_label.c @@ -124,6 +124,17 @@ g_label_spoiled(struct g_consumer *cp) g_slice_spoiled(cp); } +static void +g_label_resize(struct g_consumer *cp) +{ + + G_LABEL_DEBUG(1, "Label %s resized.", + LIST_FIRST(&cp->geom->provider)->name); + + g_slice_config(cp->geom, 0, G_SLICE_CONFIG_FORCE, (off_t)0, + cp->provider->mediasize, cp->provider->sectorsize, "notused"); +} + static int g_label_is_name_ok(const char *label) { @@ -208,6 +219,7 @@ g_label_create(struct gctl_req *req, struct g_class *mp, struct g_provider *pp, } gp->orphan = g_label_orphan; gp->spoiled = g_label_spoiled; + gp->resize = g_label_resize; g_access(cp, -1, 0, 0); g_slice_config(gp, 0, G_SLICE_CONFIG_SET, (off_t)0, mediasize, pp->sectorsize, "%s", name); |