mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-26 20:22:14 +03:00
Add feature check for 'zpool resilver' command
The 'zpool resilver' command requires that the resilver_defer feature is active on the pool. Unfortunately, the check for this was left out of the original patch. This commit simply corrects this so that the command properly returns an error in this case. Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Igor Kozhukhov <igor@dilos.org> Signed-off-by: Tom Caputi <tcaputi@datto.com> Closes #8700
This commit is contained in:
committed by
Brian Behlendorf
parent
85bdc68401
commit
fa24166074
@@ -2354,6 +2354,10 @@ zpool_scan(zpool_handle_t *zhp, pool_scan_func_t func, pool_scrub_cmd_t cmd)
|
||||
(void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN,
|
||||
"cannot scrub %s"), zc.zc_name);
|
||||
}
|
||||
} else if (func == POOL_SCAN_RESILVER) {
|
||||
assert(cmd == POOL_SCRUB_NORMAL);
|
||||
(void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN,
|
||||
"cannot restart resilver on %s"), zc.zc_name);
|
||||
} else if (func == POOL_SCAN_NONE) {
|
||||
(void) snprintf(msg, sizeof (msg),
|
||||
dgettext(TEXT_DOMAIN, "cannot cancel scrubbing %s"),
|
||||
@@ -2381,6 +2385,8 @@ zpool_scan(zpool_handle_t *zhp, pool_scan_func_t func, pool_scrub_cmd_t cmd)
|
||||
}
|
||||
} else if (err == ENOENT) {
|
||||
return (zfs_error(hdl, EZFS_NO_SCRUB, msg));
|
||||
} else if (err == ENOTSUP && func == POOL_SCAN_RESILVER) {
|
||||
return (zfs_error(hdl, EZFS_NO_RESILVER_DEFER, msg));
|
||||
} else {
|
||||
return (zpool_standard_error(hdl, err, msg));
|
||||
}
|
||||
|
||||
@@ -300,6 +300,9 @@ libzfs_error_description(libzfs_handle_t *hdl)
|
||||
case EZFS_TRIM_NOTSUP:
|
||||
return (dgettext(TEXT_DOMAIN, "trim operations are not "
|
||||
"supported by this device"));
|
||||
case EZFS_NO_RESILVER_DEFER:
|
||||
return (dgettext(TEXT_DOMAIN, "this action requires the "
|
||||
"resilver_defer feature"));
|
||||
case EZFS_UNKNOWN:
|
||||
return (dgettext(TEXT_DOMAIN, "unknown error"));
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user