/usr/share/zfs/zfs-tests/include/properties.shlib is in zfs-test 0.7.5-1ubuntu15.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | #
# 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 (c) 2012, 2016 by Delphix. All rights reserved.
#
typeset -a compress_prop_vals=('on' 'off' 'lzjb' 'gzip' 'gzip-1' 'gzip-2'
'gzip-3' 'gzip-4' 'gzip-5' 'gzip-6' 'gzip-7' 'gzip-8' 'gzip-9' 'zle' 'lz4')
typeset -a checksum_prop_vals=('on' 'off' 'fletcher2' 'fletcher4' 'sha256'
'noparity' 'sha512' 'skein' 'edonr')
typeset -a recsize_prop_vals=('512' '1024' '2048' '4096' '8192' '16384'
'32768' '65536' '131072' '262144' '524288' '1048576')
typeset -a canmount_prop_vals=('on' 'off' 'noauto')
typeset -a copies_prop_vals=('1' '2' '3')
typeset -a logbias_prop_vals=('latency' 'throughput')
typeset -a primarycache_prop_vals=('all' 'none' 'metadata')
typeset -a redundant_metadata_prop_vals=('all' 'most')
typeset -a secondarycache_prop_vals=('all' 'none' 'metadata')
typeset -a snapdir_prop_vals=('hidden' 'visible')
typeset -a sync_prop_vals=('standard' 'always' 'disabled')
typeset -a fs_props=('compress' 'checksum' 'recsize'
'canmount' 'copies' 'logbias' 'primarycache' 'redundant_metadata'
'secondarycache' 'snapdir' 'sync')
typeset -a vol_props=('compress' 'checksum' 'copies' 'logbias' 'primarycache'
'secondarycache' 'redundant_metadata' 'sync')
#
# Given the property array passed in, return 'num_props' elements to the
# user, excluding any elements below 'start.' This allows us to exclude
# 'off' and 'on' which can be either unwanted, or a duplicate of another
# property respectively.
#
function get_rand_prop
{
typeset prop_array=($(eval echo \${$1[@]}))
typeset -i num_props=$2
typeset -i start=$3
typeset retstr=""
[[ -z $prop_array || -z $num_props || -z $start ]] && \
log_fail "get_rand_prop: bad arguments"
typeset prop_max=$((${#prop_array[@]} - 1))
typeset -i i
for i in $(shuf -i $start-$prop_max -n $num_props); do
retstr="${prop_array[$i]} $retstr"
done
echo $retstr
}
function get_rand_compress
{
get_rand_prop compress_prop_vals $1 2
}
function get_rand_compress_any
{
get_rand_prop compress_prop_vals $1 0
}
function get_rand_checksum
{
get_rand_prop checksum_prop_vals $1 2
}
function get_rand_checksum_any
{
get_rand_prop checksum_prop_vals $1 0
}
function get_rand_recsize
{
get_rand_prop recsize_prop_vals $1 0
}
function get_rand_large_recsize
{
get_rand_prop recsize_prop_vals $1 9
}
#
# Functions to toggle on/off properties
#
typeset -a binary_props=('atime' 'devices' 'exec' 'readonly' 'setuid' 'xattr'
'zoned')
if is_linux; then
# Only older kernels support non-blocking mandatory locks
if [[ $(linux_version) -lt $(linux_version "4.4") ]]; then
binary_props+=('nbmand')
fi
else
binary_props+=('nbmand')
fi
function toggle_prop
{
typeset ds=$1
typeset prop=$2
datasetexists $ds || log_fail "$ds does not exist"
typeset val=$(get_prop $prop $ds)
typeset newval='off'
[[ $val = $newval ]] && newval='on'
log_must zfs set $prop=$newval $ds
}
function toggle_binary_props
{
typeset ds=$1
typeset prop
for prop in "${binary_props[@]}"; do
toggle_prop $ds $prop
done
}
function randomize_ds_props
{
typeset ds=$1
typeset prop proplist val
datasetexists $ds || log_fail "$ds does not exist"
if ds_is_volume $ds; then
toggle_prop $ds readonly
proplist="${vol_props[@]}"
elif ds_is_filesystem $ds; then
toggle_binary_props $ds
proplist="${fs_props[@]}"
else
log_fail "$ds is neither a volume nor a file system"
fi
for prop in $proplist; do
typeset val=$(get_rand_prop "${prop}_prop_vals" 1 0)
log_must zfs set $prop=$val $ds
done
}
|