Author: pjd
Date: Sat Mar 30 07:29:20 2019
New Revision: 345728
URL: https://svnweb.freebsd.org/changeset/base/345728

Log:
  If the autoexpand pool property is turned on and vdev is healthy try to
  expand the pool automatically when we detect underlying GEOM provider
  size change.
  
  Obtained from:        Fudo Security
  Tested in:    AWS

Modified:
  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c     Sat Mar 
30 07:24:34 2019        (r345727)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c     Sat Mar 
30 07:29:20 2019        (r345728)
@@ -158,6 +158,29 @@ vdev_geom_attrchanged(struct g_consumer *cp, const cha
 }
 
 static void
+vdev_geom_resize(struct g_consumer *cp)
+{
+       struct consumer_priv_t *priv;
+       struct consumer_vdev_elem *elem;
+       spa_t *spa;
+       vdev_t *vd;
+
+       priv = (struct consumer_priv_t *)&cp->private;
+       if (SLIST_EMPTY(priv))
+               return;
+
+       SLIST_FOREACH(elem, priv, elems) {
+               vd = elem->vd;
+               if (vd->vdev_state != VDEV_STATE_HEALTHY)
+                       continue;
+               spa = vd->vdev_spa;
+               if (!spa->spa_autoexpand)
+                       continue;
+               vdev_online(spa, vd->vdev_guid, ZFS_ONLINE_EXPAND, NULL);
+       }
+}
+
+static void
 vdev_geom_orphan(struct g_consumer *cp)
 {
        struct consumer_priv_t *priv;
@@ -229,6 +252,7 @@ vdev_geom_attach(struct g_provider *pp, vdev_t *vd, bo
                gp = g_new_geomf(&zfs_vdev_class, "zfs::vdev");
                gp->orphan = vdev_geom_orphan;
                gp->attrchanged = vdev_geom_attrchanged;
+               gp->resize = vdev_geom_resize;
                cp = g_new_consumer(gp);
                error = g_attach(cp, pp);
                if (error != 0) {
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to