mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-25 11:47:43 +03:00
Illumos #3598
3598 want to dtrace when errors are generated in zfs Reviewed by: Dan Kimmel <dan.kimmel@delphix.com> Reviewed by: Adam Leventhal <ahl@delphix.com> Reviewed by: Christopher Siden <christopher.siden@delphix.com> Approved by: Garrett D'Amore <garrett@damore.org> References: https://www.illumos.org/issues/3598 illumos/illumos-gate@be6fd75a69 Ported-by: Richard Yao <ryao@gentoo.org> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Issue #1775 Porting notes: 1. include/sys/zfs_context.h has been modified to render some new macros inert until dtrace is available on Linux. 2. Linux-specific changes have been adapted to use SET_ERROR(). 3. I'm NOT happy about this change. It does nothing but ugly up the code under Linux. Unfortunately we need to take it to avoid more merge conflicts in the future. -Brian
This commit is contained in:
committed by
Brian Behlendorf
parent
7011fb6004
commit
2e528b49f8
+59
-60
@@ -21,7 +21,7 @@
|
||||
|
||||
/*
|
||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||
* Copyright (c) 2013 by Delphix. All rights reserved.
|
||||
* Copyright 2013 Nexenta Systems, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
@@ -405,7 +405,7 @@ spa_prop_validate(spa_t *spa, nvlist_t *props)
|
||||
switch ((int)prop) {
|
||||
case ZPROP_INVAL:
|
||||
if (!zpool_prop_feature(propname)) {
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -413,23 +413,23 @@ spa_prop_validate(spa_t *spa, nvlist_t *props)
|
||||
* Sanitize the input.
|
||||
*/
|
||||
if (nvpair_type(elem) != DATA_TYPE_UINT64) {
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
}
|
||||
|
||||
if (nvpair_value_uint64(elem, &intval) != 0) {
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
}
|
||||
|
||||
if (intval != 0) {
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
}
|
||||
|
||||
fname = strchr(propname, '@') + 1;
|
||||
if (zfeature_lookup_name(fname, NULL) != 0) {
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -442,7 +442,7 @@ spa_prop_validate(spa_t *spa, nvlist_t *props)
|
||||
(intval < spa_version(spa) ||
|
||||
intval > SPA_VERSION_BEFORE_FEATURES ||
|
||||
has_feature))
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
|
||||
case ZPOOL_PROP_DELEGATION:
|
||||
@@ -451,7 +451,7 @@ spa_prop_validate(spa_t *spa, nvlist_t *props)
|
||||
case ZPOOL_PROP_AUTOEXPAND:
|
||||
error = nvpair_value_uint64(elem, &intval);
|
||||
if (!error && intval > 1)
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
|
||||
case ZPOOL_PROP_BOOTFS:
|
||||
@@ -461,7 +461,7 @@ spa_prop_validate(spa_t *spa, nvlist_t *props)
|
||||
* the bootfs property cannot be set.
|
||||
*/
|
||||
if (spa_version(spa) < SPA_VERSION_BOOTFS) {
|
||||
error = ENOTSUP;
|
||||
error = SET_ERROR(ENOTSUP);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -469,7 +469,7 @@ spa_prop_validate(spa_t *spa, nvlist_t *props)
|
||||
* Make sure the vdev config is bootable
|
||||
*/
|
||||
if (!vdev_is_bootable(spa->spa_root_vdev)) {
|
||||
error = ENOTSUP;
|
||||
error = SET_ERROR(ENOTSUP);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -493,13 +493,13 @@ spa_prop_validate(spa_t *spa, nvlist_t *props)
|
||||
/* Must be ZPL and not gzip compressed. */
|
||||
|
||||
if (dmu_objset_type(os) != DMU_OST_ZFS) {
|
||||
error = ENOTSUP;
|
||||
error = SET_ERROR(ENOTSUP);
|
||||
} else if ((error =
|
||||
dsl_prop_get_int_ds(dmu_objset_ds(os),
|
||||
zfs_prop_to_name(ZFS_PROP_COMPRESSION),
|
||||
&compress)) == 0 &&
|
||||
!BOOTFS_COMPRESS_VALID(compress)) {
|
||||
error = ENOTSUP;
|
||||
error = SET_ERROR(ENOTSUP);
|
||||
} else {
|
||||
objnum = dmu_objset_id(os);
|
||||
}
|
||||
@@ -511,7 +511,7 @@ spa_prop_validate(spa_t *spa, nvlist_t *props)
|
||||
error = nvpair_value_uint64(elem, &intval);
|
||||
if (!error && (intval < ZIO_FAILURE_MODE_WAIT ||
|
||||
intval > ZIO_FAILURE_MODE_PANIC))
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
|
||||
/*
|
||||
* This is a special case which only occurs when
|
||||
@@ -525,7 +525,7 @@ spa_prop_validate(spa_t *spa, nvlist_t *props)
|
||||
*/
|
||||
if (!error && spa_suspended(spa)) {
|
||||
spa->spa_failmode = intval;
|
||||
error = EIO;
|
||||
error = SET_ERROR(EIO);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -540,7 +540,7 @@ spa_prop_validate(spa_t *spa, nvlist_t *props)
|
||||
break;
|
||||
|
||||
if (strval[0] != '/') {
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -549,7 +549,7 @@ spa_prop_validate(spa_t *spa, nvlist_t *props)
|
||||
|
||||
if (slash[1] == '\0' || strcmp(slash, "/.") == 0 ||
|
||||
strcmp(slash, "/..") == 0)
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
|
||||
case ZPOOL_PROP_COMMENT:
|
||||
@@ -557,23 +557,23 @@ spa_prop_validate(spa_t *spa, nvlist_t *props)
|
||||
break;
|
||||
for (check = strval; *check != '\0'; check++) {
|
||||
if (!isprint(*check)) {
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
}
|
||||
check++;
|
||||
}
|
||||
if (strlen(strval) > ZPROP_MAX_COMMENT)
|
||||
error = E2BIG;
|
||||
error = SET_ERROR(E2BIG);
|
||||
break;
|
||||
|
||||
case ZPOOL_PROP_DEDUPDITTO:
|
||||
if (spa_version(spa) < SPA_VERSION_DEDUP)
|
||||
error = ENOTSUP;
|
||||
error = SET_ERROR(ENOTSUP);
|
||||
else
|
||||
error = nvpair_value_uint64(elem, &intval);
|
||||
if (error == 0 &&
|
||||
intval != 0 && intval < ZIO_DEDUPDITTO_MIN)
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -708,7 +708,7 @@ spa_change_guid_check(void *arg, dmu_tx_t *tx)
|
||||
spa_config_exit(spa, SCL_STATE, FTAG);
|
||||
|
||||
if (vdev_state != VDEV_STATE_HEALTHY)
|
||||
return (ENXIO);
|
||||
return (SET_ERROR(ENXIO));
|
||||
|
||||
ASSERT3U(spa_guid(spa), !=, *newguid);
|
||||
|
||||
@@ -1199,7 +1199,7 @@ spa_config_parse(spa_t *spa, vdev_t **vdp, nvlist_t *nv, vdev_t *parent,
|
||||
if (error) {
|
||||
vdev_free(*vdp);
|
||||
*vdp = NULL;
|
||||
return (EINVAL);
|
||||
return (SET_ERROR(EINVAL));
|
||||
}
|
||||
|
||||
for (c = 0; c < children; c++) {
|
||||
@@ -1921,7 +1921,7 @@ spa_load_verify(spa_t *spa)
|
||||
|
||||
if (error) {
|
||||
if (error != ENXIO && error != EIO)
|
||||
error = EIO;
|
||||
error = SET_ERROR(EIO);
|
||||
return (error);
|
||||
}
|
||||
|
||||
@@ -2049,7 +2049,7 @@ spa_load(spa_t *spa, spa_load_state_t state, spa_import_type_t type,
|
||||
nvlist_t *nvl;
|
||||
|
||||
if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID, &pool_guid))
|
||||
return (EINVAL);
|
||||
return (SET_ERROR(EINVAL));
|
||||
|
||||
ASSERT(spa->spa_comment == NULL);
|
||||
if (nvlist_lookup_string(config, ZPOOL_CONFIG_COMMENT, &comment) == 0)
|
||||
@@ -2068,7 +2068,7 @@ spa_load(spa_t *spa, spa_load_state_t state, spa_import_type_t type,
|
||||
|
||||
if ((state == SPA_LOAD_IMPORT || state == SPA_LOAD_TRYIMPORT) &&
|
||||
spa_guid_exists(pool_guid, 0)) {
|
||||
error = EEXIST;
|
||||
error = SET_ERROR(EEXIST);
|
||||
} else {
|
||||
spa->spa_config_guid = pool_guid;
|
||||
|
||||
@@ -2135,7 +2135,7 @@ spa_load_impl(spa_t *spa, uint64_t pool_guid, nvlist_t *config,
|
||||
spa->spa_load_state = state;
|
||||
|
||||
if (nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, &nvroot))
|
||||
return (EINVAL);
|
||||
return (SET_ERROR(EINVAL));
|
||||
|
||||
parse = (type == SPA_IMPORT_EXISTING ?
|
||||
VDEV_ALLOC_LOAD : VDEV_ALLOC_SPLIT);
|
||||
@@ -2195,7 +2195,7 @@ spa_load_impl(spa_t *spa, uint64_t pool_guid, nvlist_t *config,
|
||||
return (error);
|
||||
|
||||
if (rvd->vdev_state <= VDEV_STATE_CANT_OPEN)
|
||||
return (ENXIO);
|
||||
return (SET_ERROR(ENXIO));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2431,7 +2431,7 @@ spa_load_impl(spa_t *spa, uint64_t pool_guid, nvlist_t *config,
|
||||
"See: http://zfsonlinux.org/msg/ZFS-8000-EY",
|
||||
spa_name(spa), hostname,
|
||||
(unsigned long)hostid);
|
||||
return (EBADF);
|
||||
return (SET_ERROR(EBADF));
|
||||
}
|
||||
}
|
||||
if (nvlist_lookup_nvlist(spa->spa_config,
|
||||
@@ -2620,7 +2620,7 @@ spa_load_impl(spa_t *spa, uint64_t pool_guid, nvlist_t *config,
|
||||
* more toplevel vdevs are faulted.
|
||||
*/
|
||||
if (rvd->vdev_state <= VDEV_STATE_CANT_OPEN)
|
||||
return (ENXIO);
|
||||
return (SET_ERROR(ENXIO));
|
||||
|
||||
if (spa_check_logs(spa)) {
|
||||
*ereport = FM_EREPORT_ZFS_LOG_REPLAY;
|
||||
@@ -2884,7 +2884,7 @@ spa_open_common(const char *pool, spa_t **spapp, void *tag, nvlist_t *nvpolicy,
|
||||
if ((spa = spa_lookup(pool)) == NULL) {
|
||||
if (locked)
|
||||
mutex_exit(&spa_namespace_lock);
|
||||
return (ENOENT);
|
||||
return (SET_ERROR(ENOENT));
|
||||
}
|
||||
|
||||
if (spa->spa_state == POOL_STATE_UNINITIALIZED) {
|
||||
@@ -2919,7 +2919,7 @@ spa_open_common(const char *pool, spa_t **spapp, void *tag, nvlist_t *nvpolicy,
|
||||
spa_remove(spa);
|
||||
if (locked)
|
||||
mutex_exit(&spa_namespace_lock);
|
||||
return (ENOENT);
|
||||
return (SET_ERROR(ENOENT));
|
||||
}
|
||||
|
||||
if (error) {
|
||||
@@ -3255,14 +3255,14 @@ spa_validate_aux_devs(spa_t *spa, nvlist_t *nvroot, uint64_t crtxg, int mode,
|
||||
return (0);
|
||||
|
||||
if (ndev == 0)
|
||||
return (EINVAL);
|
||||
return (SET_ERROR(EINVAL));
|
||||
|
||||
/*
|
||||
* Make sure the pool is formatted with a version that supports this
|
||||
* device type.
|
||||
*/
|
||||
if (spa_version(spa) < version)
|
||||
return (ENOTSUP);
|
||||
return (SET_ERROR(ENOTSUP));
|
||||
|
||||
/*
|
||||
* Set the pending device list so we correctly handle device in-use
|
||||
@@ -3278,7 +3278,7 @@ spa_validate_aux_devs(spa_t *spa, nvlist_t *nvroot, uint64_t crtxg, int mode,
|
||||
|
||||
if (!vd->vdev_ops->vdev_op_leaf) {
|
||||
vdev_free(vd);
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -3289,7 +3289,7 @@ spa_validate_aux_devs(spa_t *spa, nvlist_t *nvroot, uint64_t crtxg, int mode,
|
||||
#ifdef _KERNEL
|
||||
if ((strcmp(config, ZPOOL_CONFIG_L2CACHE) == 0) &&
|
||||
strcmp(vd->vdev_ops->vdev_op_type, VDEV_TYPE_DISK) != 0) {
|
||||
error = ENOTBLK;
|
||||
error = SET_ERROR(ENOTBLK);
|
||||
vdev_free(vd);
|
||||
goto out;
|
||||
}
|
||||
@@ -3430,7 +3430,7 @@ spa_create(const char *pool, nvlist_t *nvroot, nvlist_t *props,
|
||||
mutex_enter(&spa_namespace_lock);
|
||||
if (spa_lookup(pool) != NULL) {
|
||||
mutex_exit(&spa_namespace_lock);
|
||||
return (EEXIST);
|
||||
return (SET_ERROR(EEXIST));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3483,7 +3483,7 @@ spa_create(const char *pool, nvlist_t *nvroot, nvlist_t *props,
|
||||
ASSERT(error != 0 || spa->spa_root_vdev == rvd);
|
||||
|
||||
if (error == 0 && !zfs_allocatable_devs(nvroot))
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
|
||||
if (error == 0 &&
|
||||
(error = vdev_create(rvd, txg, B_FALSE)) == 0 &&
|
||||
@@ -3757,7 +3757,7 @@ spa_import_rootpool(char *devpath, char *devid)
|
||||
if (config == NULL) {
|
||||
cmn_err(CE_NOTE, "Cannot read the pool label from '%s'",
|
||||
devpath);
|
||||
return (EIO);
|
||||
return (SET_ERROR(EIO));
|
||||
}
|
||||
|
||||
VERIFY(nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_NAME,
|
||||
@@ -3800,7 +3800,7 @@ spa_import_rootpool(char *devpath, char *devid)
|
||||
if ((bvd = vdev_lookup_by_guid(rvd, guid)) == NULL) {
|
||||
cmn_err(CE_NOTE, "Can not find the boot vdev for guid %llu",
|
||||
(u_longlong_t)guid);
|
||||
error = ENOENT;
|
||||
error = SET_ERROR(ENOENT);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -3812,7 +3812,7 @@ spa_import_rootpool(char *devpath, char *devid)
|
||||
if (avd != bvd) {
|
||||
cmn_err(CE_NOTE, "The boot device is 'degraded'. Please "
|
||||
"try booting from '%s'", avd->vdev_path);
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -3826,7 +3826,7 @@ spa_import_rootpool(char *devpath, char *devid)
|
||||
"try booting from '%s'",
|
||||
bvd->vdev_parent->
|
||||
vdev_child[bvd->vdev_parent->vdev_children - 1]->vdev_path);
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -3866,7 +3866,7 @@ spa_import(char *pool, nvlist_t *config, nvlist_t *props, uint64_t flags)
|
||||
mutex_enter(&spa_namespace_lock);
|
||||
if (spa_lookup(pool) != NULL) {
|
||||
mutex_exit(&spa_namespace_lock);
|
||||
return (EEXIST);
|
||||
return (SET_ERROR(EEXIST));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -4143,12 +4143,12 @@ spa_export_common(char *pool, int new_state, nvlist_t **oldconfig,
|
||||
*oldconfig = NULL;
|
||||
|
||||
if (!(spa_mode_global & FWRITE))
|
||||
return (EROFS);
|
||||
return (SET_ERROR(EROFS));
|
||||
|
||||
mutex_enter(&spa_namespace_lock);
|
||||
if ((spa = spa_lookup(pool)) == NULL) {
|
||||
mutex_exit(&spa_namespace_lock);
|
||||
return (ENOENT);
|
||||
return (SET_ERROR(ENOENT));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -4182,7 +4182,7 @@ spa_export_common(char *pool, int new_state, nvlist_t **oldconfig,
|
||||
new_state != POOL_STATE_UNINITIALIZED)) {
|
||||
spa_async_resume(spa);
|
||||
mutex_exit(&spa_namespace_lock);
|
||||
return (EBUSY);
|
||||
return (SET_ERROR(EBUSY));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -4195,7 +4195,7 @@ spa_export_common(char *pool, int new_state, nvlist_t **oldconfig,
|
||||
spa_has_active_shared_spare(spa)) {
|
||||
spa_async_resume(spa);
|
||||
mutex_exit(&spa_namespace_lock);
|
||||
return (EXDEV);
|
||||
return (SET_ERROR(EXDEV));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -4391,12 +4391,12 @@ int
|
||||
spa_vdev_attach(spa_t *spa, uint64_t guid, nvlist_t *nvroot, int replacing)
|
||||
{
|
||||
uint64_t txg, dtl_max_txg;
|
||||
ASSERTV(vdev_t *rvd = spa->spa_root_vdev;)
|
||||
vdev_t *oldvd, *newvd, *newrootvd, *pvd, *tvd;
|
||||
vdev_ops_t *pvops;
|
||||
char *oldvdpath, *newvdpath;
|
||||
int newvd_isspare;
|
||||
int error;
|
||||
ASSERTV(vdev_t *rvd = spa->spa_root_vdev);
|
||||
|
||||
ASSERT(spa_writeable(spa));
|
||||
|
||||
@@ -4591,13 +4591,12 @@ spa_vdev_detach(spa_t *spa, uint64_t guid, uint64_t pguid, int replace_done)
|
||||
{
|
||||
uint64_t txg;
|
||||
int error;
|
||||
ASSERTV(vdev_t *rvd = spa->spa_root_vdev;)
|
||||
vdev_t *vd, *pvd, *cvd, *tvd;
|
||||
boolean_t unspare = B_FALSE;
|
||||
uint64_t unspare_guid = 0;
|
||||
char *vdpath;
|
||||
int c, t;
|
||||
|
||||
ASSERTV(vdev_t *rvd = spa->spa_root_vdev);
|
||||
ASSERT(spa_writeable(spa));
|
||||
|
||||
txg = spa_vdev_enter(spa);
|
||||
@@ -4905,7 +4904,7 @@ spa_vdev_split_mirror(spa_t *spa, char *newname, nvlist_t *config,
|
||||
spa->spa_root_vdev->vdev_child[c]->vdev_islog) {
|
||||
continue;
|
||||
} else {
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -4913,14 +4912,14 @@ spa_vdev_split_mirror(spa_t *spa, char *newname, nvlist_t *config,
|
||||
/* which disk is going to be split? */
|
||||
if (nvlist_lookup_uint64(child[c], ZPOOL_CONFIG_GUID,
|
||||
&glist[c]) != 0) {
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
}
|
||||
|
||||
/* look it up in the spa */
|
||||
vml[c] = spa_lookup_by_guid(spa, glist[c], B_FALSE);
|
||||
if (vml[c] == NULL) {
|
||||
error = ENODEV;
|
||||
error = SET_ERROR(ENODEV);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -4934,12 +4933,12 @@ spa_vdev_split_mirror(spa_t *spa, char *newname, nvlist_t *config,
|
||||
vml[c]->vdev_children != 0 ||
|
||||
vml[c]->vdev_state != VDEV_STATE_HEALTHY ||
|
||||
c != spa->spa_root_vdev->vdev_child[c]->vdev_id) {
|
||||
error = EINVAL;
|
||||
error = SET_ERROR(EINVAL);
|
||||
break;
|
||||
}
|
||||
|
||||
if (vdev_dtl_required(vml[c])) {
|
||||
error = EBUSY;
|
||||
error = SET_ERROR(EBUSY);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -5170,7 +5169,7 @@ spa_vdev_remove_evacuate(spa_t *spa, vdev_t *vd)
|
||||
if (vd->vdev_stat.vs_alloc != 0)
|
||||
error = spa_offline_log(spa);
|
||||
} else {
|
||||
error = ENOTSUP;
|
||||
error = SET_ERROR(ENOTSUP);
|
||||
}
|
||||
|
||||
if (error)
|
||||
@@ -5279,7 +5278,7 @@ spa_vdev_remove(spa_t *spa, uint64_t guid, boolean_t unspare)
|
||||
spa_load_spares(spa);
|
||||
spa->spa_spares.sav_sync = B_TRUE;
|
||||
} else {
|
||||
error = EBUSY;
|
||||
error = SET_ERROR(EBUSY);
|
||||
}
|
||||
} else if (spa->spa_l2cache.sav_vdevs != NULL &&
|
||||
nvlist_lookup_nvlist_array(spa->spa_l2cache.sav_config,
|
||||
@@ -5339,12 +5338,12 @@ spa_vdev_remove(spa_t *spa, uint64_t guid, boolean_t unspare)
|
||||
/*
|
||||
* Normal vdevs cannot be removed (yet).
|
||||
*/
|
||||
error = ENOTSUP;
|
||||
error = SET_ERROR(ENOTSUP);
|
||||
} else {
|
||||
/*
|
||||
* There is no vdev of any kind with the specified guid.
|
||||
*/
|
||||
error = ENOENT;
|
||||
error = SET_ERROR(ENOENT);
|
||||
}
|
||||
|
||||
if (!locked)
|
||||
@@ -5532,7 +5531,7 @@ spa_scan_stop(spa_t *spa)
|
||||
{
|
||||
ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == 0);
|
||||
if (dsl_scan_resilvering(spa->spa_dsl_pool))
|
||||
return (EBUSY);
|
||||
return (SET_ERROR(EBUSY));
|
||||
return (dsl_scan_cancel(spa->spa_dsl_pool));
|
||||
}
|
||||
|
||||
@@ -5542,7 +5541,7 @@ spa_scan(spa_t *spa, pool_scan_func_t func)
|
||||
ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == 0);
|
||||
|
||||
if (func >= POOL_SCAN_FUNCS || func == POOL_SCAN_NONE)
|
||||
return (ENOTSUP);
|
||||
return (SET_ERROR(ENOTSUP));
|
||||
|
||||
/*
|
||||
* If a resilver was requested, but there is no DTL on a
|
||||
|
||||
Reference in New Issue
Block a user