FreeBSD: disable edonr in zfs_mod_supported_feature()
Rather than conditionally compiling out the edonr code for FreeBSD update zfs_mod_supported_feature() to indicate this feature is unsupported. This ensures that all spa features are defined on every platform, even if they are not supported. Reviewed-by: Ryan Moeller <ryan@ixsystems.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #11605 Issue #11468
This commit is contained in:
parent
aef1830f93
commit
35ec51796f
|
@ -8629,6 +8629,10 @@ upgrade_enable_all(zpool_handle_t *zhp, int *countp)
|
||||||
for (i = 0; i < SPA_FEATURES; i++) {
|
for (i = 0; i < SPA_FEATURES; i++) {
|
||||||
const char *fname = spa_feature_table[i].fi_uname;
|
const char *fname = spa_feature_table[i].fi_uname;
|
||||||
const char *fguid = spa_feature_table[i].fi_guid;
|
const char *fguid = spa_feature_table[i].fi_guid;
|
||||||
|
|
||||||
|
if (!spa_feature_table[i].fi_zfs_mod_supported)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (!nvlist_exists(enabled, fguid)) {
|
if (!nvlist_exists(enabled, fguid)) {
|
||||||
char *propname;
|
char *propname;
|
||||||
verify(-1 != asprintf(&propname, "feature@%s", fname));
|
verify(-1 != asprintf(&propname, "feature@%s", fname));
|
||||||
|
@ -8759,6 +8763,10 @@ upgrade_list_disabled_cb(zpool_handle_t *zhp, void *arg)
|
||||||
for (i = 0; i < SPA_FEATURES; i++) {
|
for (i = 0; i < SPA_FEATURES; i++) {
|
||||||
const char *fguid = spa_feature_table[i].fi_guid;
|
const char *fguid = spa_feature_table[i].fi_guid;
|
||||||
const char *fname = spa_feature_table[i].fi_uname;
|
const char *fname = spa_feature_table[i].fi_uname;
|
||||||
|
|
||||||
|
if (!spa_feature_table[i].fi_zfs_mod_supported)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (!nvlist_exists(enabled, fguid)) {
|
if (!nvlist_exists(enabled, fguid)) {
|
||||||
if (cbp->cb_first) {
|
if (cbp->cb_first) {
|
||||||
(void) printf(gettext("\nSome "
|
(void) printf(gettext("\nSome "
|
||||||
|
|
|
@ -56,9 +56,7 @@ typedef enum spa_feature {
|
||||||
SPA_FEATURE_LARGE_DNODE,
|
SPA_FEATURE_LARGE_DNODE,
|
||||||
SPA_FEATURE_SHA512,
|
SPA_FEATURE_SHA512,
|
||||||
SPA_FEATURE_SKEIN,
|
SPA_FEATURE_SKEIN,
|
||||||
#if !defined(__FreeBSD__)
|
|
||||||
SPA_FEATURE_EDONR,
|
SPA_FEATURE_EDONR,
|
||||||
#endif
|
|
||||||
SPA_FEATURE_USEROBJ_ACCOUNTING,
|
SPA_FEATURE_USEROBJ_ACCOUNTING,
|
||||||
SPA_FEATURE_ENCRYPTION,
|
SPA_FEATURE_ENCRYPTION,
|
||||||
SPA_FEATURE_PROJECT_QUOTA,
|
SPA_FEATURE_PROJECT_QUOTA,
|
||||||
|
|
|
@ -222,9 +222,15 @@ zfs_mod_supported_feature(const char *name)
|
||||||
* features are supported.
|
* features are supported.
|
||||||
*
|
*
|
||||||
* The equivalent _can_ be done on FreeBSD by way of the sysctl
|
* The equivalent _can_ be done on FreeBSD by way of the sysctl
|
||||||
* tree, but this has not been done yet.
|
* tree, but this has not been done yet. Therefore, we return
|
||||||
|
* that all features except edonr are supported.
|
||||||
*/
|
*/
|
||||||
#if defined(_KERNEL) || defined(LIB_ZPOOL_BUILD) || defined(__FreeBSD__)
|
#if defined(__FreeBSD__)
|
||||||
|
if (strcmp(name, "org.illumos:edonr") == 0)
|
||||||
|
return (B_FALSE);
|
||||||
|
else
|
||||||
|
return (B_TRUE);
|
||||||
|
#elif defined(_KERNEL) || defined(LIB_ZPOOL_BUILD)
|
||||||
return (B_TRUE);
|
return (B_TRUE);
|
||||||
#else
|
#else
|
||||||
return (zfs_mod_supported(ZFS_SYSFS_POOL_FEATURES, name));
|
return (zfs_mod_supported(ZFS_SYSFS_POOL_FEATURES, name));
|
||||||
|
@ -440,8 +446,6 @@ zpool_feature_init(void)
|
||||||
skein_deps);
|
skein_deps);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(__FreeBSD__)
|
|
||||||
|
|
||||||
{
|
{
|
||||||
static const spa_feature_t edonr_deps[] = {
|
static const spa_feature_t edonr_deps[] = {
|
||||||
SPA_FEATURE_EXTENSIBLE_DATASET,
|
SPA_FEATURE_EXTENSIBLE_DATASET,
|
||||||
|
@ -453,7 +457,6 @@ zpool_feature_init(void)
|
||||||
ZFEATURE_FLAG_PER_DATASET, ZFEATURE_TYPE_BOOLEAN,
|
ZFEATURE_FLAG_PER_DATASET, ZFEATURE_TYPE_BOOLEAN,
|
||||||
edonr_deps);
|
edonr_deps);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
{
|
{
|
||||||
static const spa_feature_t redact_books_deps[] = {
|
static const spa_feature_t redact_books_deps[] = {
|
||||||
|
|
Loading…
Reference in New Issue