diff --git a/module/zfs/zcp_get.c b/module/zfs/zcp_get.c index 2d4d6c04070b..fbc2b5fd5adb 100644 --- a/module/zfs/zcp_get.c +++ b/module/zfs/zcp_get.c @@ -378,14 +378,17 @@ get_special_prop(lua_State *state, dsl_dataset_t *ds, const char *dsname, break; } + case ZFS_PROP_ENCRYPTION: case ZFS_PROP_KEYSTATUS: case ZFS_PROP_KEYFORMAT: { /* provide defaults in case no crypto obj exists */ setpoint[0] = '\0'; if (zfs_prop == ZFS_PROP_KEYSTATUS) numval = ZFS_KEYSTATUS_NONE; - else + else if (zfs_prop == ZFS_PROP_KEYFORMAT) numval = ZFS_KEYFORMAT_NONE; + else if (zfs_prop == ZFS_PROP_ENCRYPTION) + numval = ZIO_CRYPT_OFF; nvlist_t *nvl, *propval; nvl = fnvlist_alloc(); @@ -404,6 +407,25 @@ get_special_prop(lua_State *state, dsl_dataset_t *ds, const char *dsname, break; } + case ZFS_PROP_ENCRYPTION_ROOT: { + setpoint[0] = '\0'; + numval = 0; + + nvlist_t *nvl, *propval; + nvl = fnvlist_alloc(); + dsl_dataset_crypt_stats(ds, nvl); + if (nvlist_lookup_nvlist(nvl, zfs_prop_to_name(zfs_prop), + &propval) == 0) { + const char *dsname; + + if (nvlist_lookup_string(propval, ZPROP_VALUE, + &dsname) == 0) + strlcpy(strval, dsname, ZAP_MAXVALUELEN); + } + nvlist_free(nvl); + break; + } + case ZFS_PROP_SNAPSHOTS_CHANGED: numval = dsl_dir_snap_cmtime(ds->ds_dir).tv_sec; break;