svn commit: r216436 -
stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Martin Matuska
mm at FreeBSD.org
Tue Dec 14 15:36:48 UTC 2010
Author: mm
Date: Tue Dec 14 15:36:47 2010
New Revision: 216436
URL: http://svn.freebsd.org/changeset/base/216436
Log:
MFC r208683, r210999, r212385:
MFC r208683 (pjd):
Fix a bug where resilver is not started automatically on pool import or load.
If disk was missing on pool load or import and on next pool load or import
it was present, resilver wasn't started automatically and ZFS reported all
disks as ONLINE and healthy. Then, when another disk died, pool became
unaccessible, because if it was 2-way mirror or RAIDZ1 two vdevs were
out of sync.
To fix the problem, start resilver automatically on pool load or import.
Obtained from: OpenSolaris
MFC r210999 (pjd):
In FreeBSD we use 'jailed' property.
MFC r212385 (pjd):
On FreeBSD we can log from pool that have multiple top-level vdevs or log
vdevs, so don't deny adding new vdevs if bootfs property is set.
Approved by: re (kib), pjd, delphij (mentor)
Modified:
stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
==============================================================================
--- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Tue Dec 14 15:35:44 2010 (r216435)
+++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Tue Dec 14 15:36:47 2010 (r216436)
@@ -1595,6 +1595,12 @@ spa_load(spa_t *spa, nvlist_t *config, s
*/
if (need_update)
spa_async_request(spa, SPA_ASYNC_CONFIG_UPDATE);
+
+ /*
+ * Check all DTLs to see if anything needs resilvering.
+ */
+ if (vdev_resilver_needed(rvd, NULL, NULL))
+ spa_async_request(spa, SPA_ASYNC_RESILVER);
}
error = 0;
Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
==============================================================================
--- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Tue Dec 14 15:35:44 2010 (r216435)
+++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Tue Dec 14 15:36:47 2010 (r216436)
@@ -357,7 +357,7 @@ zfs_secpolicy_setprop(const char *name,
* quota on things *under* (ie. contained by)
* the thing they own.
*/
- if (dsl_prop_get_integer(name, "zoned", &zoned,
+ if (dsl_prop_get_integer(name, "jailed", &zoned,
setpoint))
return (EPERM);
if (!zoned || strlen(name) <= strlen(setpoint))
@@ -1217,8 +1217,12 @@ zfs_ioc_vdev_add(zfs_cmd_t *zc)
{
spa_t *spa;
int error;
+#ifdef sun
nvlist_t *config, **l2cache, **spares;
uint_t nl2cache = 0, nspares = 0;
+#else
+ nvlist_t *config;
+#endif
error = spa_open(zc->zc_name, &spa, FTAG);
if (error != 0)
@@ -1226,6 +1230,7 @@ zfs_ioc_vdev_add(zfs_cmd_t *zc)
error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size,
&config);
+#ifdef sun
(void) nvlist_lookup_nvlist_array(config, ZPOOL_CONFIG_L2CACHE,
&l2cache, &nl2cache);
@@ -1246,6 +1251,7 @@ zfs_ioc_vdev_add(zfs_cmd_t *zc)
spa_close(spa, FTAG);
return (EDOM);
}
+#endif
if (error == 0) {
error = spa_vdev_add(spa, config);
More information about the svn-src-stable-8
mailing list