mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
zfs_create: round up volume size to multiple of bs
Round up the volume size requested in `zfs create -V size` to the next higher multiple of the volblocksize. Updates the man page and adds a test to verify the new behavior. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reported-by: puffi <puffi@users.noreply.github.com> Signed-off-by: Alex John <alex@stty.io> Closes #8541 Closes #10196
This commit is contained in:
@@ -54,6 +54,12 @@ export VOL_LIMIT_KEYWORD1="1TB on 32-bit"
|
||||
export VOL_LIMIT_KEYWORD2="value is too large"
|
||||
export VOL_LIMIT_KEYWORD3="volume size exceeds limit"
|
||||
|
||||
set -A size "8k" "8K" "1m" "1M" "1mb" "1mB" "1Mb" "1MB" "1g" "1G" \
|
||||
set -A size "8k" "8K" "35K" "1m" "1M" "1mb" "1mB" "1Mb" "1MB" "1g" "1G" \
|
||||
"1p" "1P" "1z" "1Z" "1gb" "1gB" "1Gb" "1GB" "1pb" "1pB" "1Pb" \
|
||||
"1PB" "1zb" "1zB" "1Zb" "1ZB"
|
||||
|
||||
# If a datasize has a volume size that is not a multiple of the blocksize,
|
||||
# explicitly check that its size has been rounded up to the nearest multiple
|
||||
# The volume with the exact size must exist in the "size" array above
|
||||
set -A explicit_size_check "35K"
|
||||
set -A expected_rounded_size "40960"
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
|
||||
. $STF_SUITE/include/libtest.shlib
|
||||
. $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create.cfg
|
||||
. $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib
|
||||
|
||||
#
|
||||
# DESCRIPTION:
|
||||
@@ -39,6 +40,8 @@
|
||||
# STRATEGY:
|
||||
# 1. Create a volume in the storage pool.
|
||||
# 2. Verify the volume is created correctly.
|
||||
# 3. Verify that the volume created has its volsize rounded to the nearest
|
||||
# multiple of the blocksize (in this case, the default blocksize)
|
||||
#
|
||||
|
||||
verify_runnable "global"
|
||||
@@ -76,6 +79,15 @@ while (( $j < ${#size[*]} )); do
|
||||
fi
|
||||
|
||||
((j = j + 1))
|
||||
|
||||
done
|
||||
|
||||
typeset -i j=0
|
||||
while (( $j < ${#explicit_size_check[*]} )); do
|
||||
propertycheck ${TESTPOOL}/${TESTVOL}${explicit_size_check[j]} \
|
||||
volsize=${expected_rounded_size[j]} || \
|
||||
log_fail "volsize ${size[j]} was not rounded up"
|
||||
|
||||
((j = j + 1))
|
||||
done
|
||||
|
||||
log_pass "'zfs create -s -V <size> <volume>' works as expected."
|
||||
|
||||
Reference in New Issue
Block a user