-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix 'zfs userspace' for received datasets in encrypted root
For encrypted receives, where user accounting is initially disabled on creation, both 'zfs userspace' and 'zfs groupspace' fails with EOPNOTSUPP: this is because dmu_objset_id_quota_upgrade_cb() forgets to set OBJSET_FLAG_USERACCOUNTING_COMPLETE on the objset flags after a successful dmu_objset_space_upgrade(). Reviewed-by: Brian Behlendorf <[email protected]> Co-authored-by: Brian Behlendorf <[email protected]> Signed-off-by: loli10K <[email protected]> Closes #9501 Closes #9596
- Loading branch information
1 parent
a09aeb9
commit f6f3089
Showing
6 changed files
with
153 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
85 changes: 85 additions & 0 deletions
85
tests/zfs-tests/tests/functional/userquota/userspace_encrypted.ksh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
#!/bin/ksh -p | ||
# | ||
# This file and its contents are supplied under the terms of the | ||
# Common Development and Distribution License ("CDDL"), version 1.0. | ||
# You may only use this file in accordance with the terms of version | ||
# 1.0 of the CDDL. | ||
# | ||
# A full copy of the text of the CDDL should have accompanied this | ||
# source. A copy of the CDDL is also available via the Internet at | ||
# http://www.illumos.org/license/CDDL. | ||
# | ||
|
||
# | ||
# Copyright 2019, loli10K <[email protected]>. All rights reserved. | ||
# | ||
|
||
. $STF_SUITE/include/libtest.shlib | ||
. $STF_SUITE/tests/functional/userquota/userquota_common.kshlib | ||
|
||
# | ||
# DESCRIPTION: | ||
# 'zfs userspace' and 'zfs groupspace' can be used on encrypted datasets | ||
# | ||
# | ||
# STRATEGY: | ||
# 1. Create both un-encrypted and encrypted datasets | ||
# 2. Receive un-encrypted dataset in encrypted hierarchy | ||
# 3. Verify encrypted datasets support 'zfs userspace' and 'zfs groupspace' | ||
# | ||
|
||
function cleanup | ||
{ | ||
destroy_pool $POOLNAME | ||
rm -f $FILEDEV | ||
} | ||
|
||
function log_must_unsupported | ||
{ | ||
log_must_retry "unsupported" 3 "$@" | ||
(( $? != 0 )) && log_fail | ||
} | ||
|
||
log_onexit cleanup | ||
|
||
FILEDEV="$TEST_BASE_DIR/userspace_encrypted" | ||
POOLNAME="testpool$$" | ||
typeset -a POOL_OPTS=('' # all pool features enabled | ||
'-d' # all pool features disabled | ||
'-d -o feature@userobj_accounting=enabled' # only userobj_accounting enabled | ||
'-d -o feature@project_quota=enabled') # only project_quota enabled | ||
DATASET_ENCROOT="$POOLNAME/encroot" | ||
DATASET_SENDFS="$POOLNAME/sendfs" | ||
|
||
log_assert "'zfs user/groupspace' should work on encrypted datasets" | ||
|
||
for opts in "${POOL_OPTS[@]}"; do | ||
# Setup | ||
truncate -s $SPA_MINDEVSIZE $FILEDEV | ||
log_must zpool create $opts -o feature@encryption=enabled $POOLNAME \ | ||
$FILEDEV | ||
|
||
# 1. Create both un-encrypted and encrypted datasets | ||
log_must zfs create $DATASET_SENDFS | ||
log_must eval "echo 'password' | zfs create -o encryption=on" \ | ||
"-o keyformat=passphrase -o keylocation=prompt " \ | ||
"$DATASET_ENCROOT" | ||
log_must zfs create $DATASET_ENCROOT/fs | ||
|
||
# 2. Receive un-encrypted dataset in encrypted hierarchy | ||
log_must zfs snap $DATASET_SENDFS@snap | ||
log_must eval "zfs send $DATASET_SENDFS@snap | zfs recv " \ | ||
"$DATASET_ENCROOT/recvfs" | ||
|
||
# 3. Verify encrypted datasets support 'zfs userspace' and | ||
# 'zfs groupspace' | ||
log_must zfs userspace $DATASET_ENCROOT/fs | ||
log_must zfs groupspace $DATASET_ENCROOT/fs | ||
log_must_unsupported zfs userspace $DATASET_ENCROOT/recvfs | ||
log_must_unsupported zfs groupspace $DATASET_ENCROOT/recvfs | ||
|
||
# Cleanup | ||
cleanup | ||
done | ||
|
||
log_pass "'zfs user/groupspace' works on encrypted datasets" |