Author: avg
Date: Sat Oct 20 09:25:51 2012
New Revision: 241770
URL: http://svn.freebsd.org/changeset/base/241770

Log:
  MFC r241297: zvol: set mediasize in geom provider right upon its creation

Modified:
  stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/cddl/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
==============================================================================
--- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c      Sat Oct 
20 09:25:28 2012        (r241769)
+++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c      Sat Oct 
20 09:25:51 2012        (r241770)
@@ -481,6 +481,7 @@ zvol_create_minor(const char *name)
        zvol_state_t *zv;
        objset_t *os;
        dmu_object_info_t doi;
+       uint64_t volsize;
        int error;
 
        ZFS_LOG(1, "Creating ZVOL %s...", name);
@@ -541,9 +542,20 @@ zvol_create_minor(const char *name)
        zv = zs->zss_data = kmem_zalloc(sizeof (zvol_state_t), KM_SLEEP);
 #else  /* !sun */
 
+       error = zap_lookup(os, ZVOL_ZAP_OBJ, "size", 8, 1, &volsize);
+       if (error) {
+               ASSERT(error == 0);
+               dmu_objset_disown(os, zvol_tag);
+               mutex_exit(&spa_namespace_lock);
+               return (error);
+       }
+
        DROP_GIANT();
        g_topology_lock();
        zv = zvol_geom_create(name);
+       zv->zv_volsize = volsize;
+       zv->zv_provider->mediasize = zv->zv_volsize;
+
 #endif /* !sun */
 
        (void) strlcpy(zv->zv_name, name, MAXPATHLEN);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to