Date: Mon, 7 Sep 2009 14:16:50 +0000 (UTC) From: Pawel Jakub Dawidek <pjd@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r196927 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs Message-ID: <200909071416.n87EGoiV017087@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: pjd Date: Mon Sep 7 14:16:50 2009 New Revision: 196927 URL: http://svn.freebsd.org/changeset/base/196927 Log: Changing provider size is not really supported by GEOM, but doing so when provider is closed should be ok. When administrator requests to change ZVOL size do it immediately if ZVOL is closed or do it on last ZVOL close. PR: kern/136942 Requested by: Bernard Buri <bsd@ask-us.at> MFC after: 1 week Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c Mon Sep 7 14:10:55 2009 (r196926) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c Mon Sep 7 14:16:50 2009 (r196927) @@ -153,7 +153,22 @@ static int zvol_dump_init(zvol_state_t * static void zvol_size_changed(zvol_state_t *zv, major_t maj) { + struct g_provider *pp; + + g_topology_assert(); + pp = zv->zv_provider; + if (pp == NULL) + return; + if (zv->zv_volsize == pp->mediasize) + return; + /* + * Changing provider size is not really supported by GEOM, but it + * should be safe when provider is closed. + */ + if (zv->zv_total_opens > 0) + return; + pp->mediasize = zv->zv_volsize; } int @@ -263,6 +278,7 @@ zvol_access(struct g_provider *pp, int a } zv->zv_total_opens += acr + acw + ace; + zvol_size_changed(zv, 0); mutex_exit(&zvol_state_lock); @@ -1072,11 +1088,6 @@ zvol_set_volblocksize(const char *name, if (error == ENOTSUP) error = EBUSY; dmu_tx_commit(tx); - /* XXX: Not supported. */ -#if 0 - if (error == 0) - zv->zv_provider->sectorsize = zc->zc_volblocksize; -#endif } end: mutex_exit(&zvol_state_lock);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200909071416.n87EGoiV017087>