svn commit: r259328 - in stable/10/sys/geom: . label

Edward Tomasz Napierala trasz at FreeBSD.org
Fri Dec 13 20:34:00 UTC 2013


Author: trasz
Date: Fri Dec 13 20:33:59 2013
New Revision: 259328
URL: http://svnweb.freebsd.org/changeset/base/259328

Log:
  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

Modified:
  stable/10/sys/geom/geom_slice.c
  stable/10/sys/geom/label/g_label.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/geom/geom_slice.c
==============================================================================
--- stable/10/sys/geom/geom_slice.c	Fri Dec 13 19:38:05 2013	(r259327)
+++ stable/10/sys/geom/geom_slice.c	Fri Dec 13 20:33:59 2013	(r259328)
@@ -382,7 +382,7 @@ g_slice_config(struct g_geom *gp, u_int 
 			printf("GEOM: Reconfigure %s, start %jd length %jd end %jd\n",
 			    pp->name, (intmax_t)offset, (intmax_t)length,
 			    (intmax_t)(offset + length - 1));
-		pp->mediasize = gsl->length;
+		g_resize_provider(pp, gsl->length);
 		return (0);
 	}
 	sb = sbuf_new_auto();

Modified: stable/10/sys/geom/label/g_label.c
==============================================================================
--- stable/10/sys/geom/label/g_label.c	Fri Dec 13 19:38:05 2013	(r259327)
+++ stable/10/sys/geom/label/g_label.c	Fri Dec 13 20:33:59 2013	(r259328)
@@ -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, str
 	}
 	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);


More information about the svn-src-all mailing list