Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Jul 2016 05:36:21 +0000 (UTC)
From:      "Andrey V. Elsukov" <ae@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r303019 - head/sys/geom
Message-ID:  <201607190536.u6J5aLl7015268@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ae
Date: Tue Jul 19 05:36:21 2016
New Revision: 303019
URL: https://svnweb.freebsd.org/changeset/base/303019

Log:
  Use g_resize_provider() to change the size of GEOM_DISK provider,
  when it is being opened. This should fix the possible loss of a resize
  event when disk capacity changed.
  
  PR:		211028
  Reported by:	Dexuan Cui <decui at microsoft dot com>
  MFC after:	3 weeks

Modified:
  head/sys/geom/geom_disk.c

Modified: head/sys/geom/geom_disk.c
==============================================================================
--- head/sys/geom/geom_disk.c	Tue Jul 19 04:56:59 2016	(r303018)
+++ head/sys/geom/geom_disk.c	Tue Jul 19 05:36:21 2016	(r303019)
@@ -126,7 +126,6 @@ g_disk_access(struct g_provider *pp, int
 			if (error != 0)
 				return (error);
 		}
-		pp->mediasize = dp->d_mediasize;
 		pp->sectorsize = dp->d_sectorsize;
 		if (dp->d_maxsize == 0) {
 			printf("WARNING: Disk drive %s%d has no d_maxsize\n",
@@ -143,6 +142,7 @@ g_disk_access(struct g_provider *pp, int
 		pp->stripeoffset = dp->d_stripeoffset;
 		pp->stripesize = dp->d_stripesize;
 		dp->d_flags |= DISKFLAG_OPEN;
+		g_resize_provider(pp, dp->d_mediasize);
 	} else if ((pp->acr + pp->acw + pp->ace) > 0 && (r + w + e) == 0) {
 		if (dp->d_close != NULL) {
 			error = dp->d_close(dp);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201607190536.u6J5aLl7015268>