1 #
2 # CDDL HEADER START
3 #
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
7 #
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
12 #
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 #
19 # CDDL HEADER END
20 #
21
22 #
23 # Copyright 2009 Sun Microsystems, Inc. All rights reserved.
24 # Use is subject to license terms.
25 #
26
27 #
28 # Copyright (c) 2013 by Delphix. All rights reserved.
29 #
30
31 . $STF_SUITE/include/libtest.shlib
32 . $STF_SUITE/tests/functional/userquota/userquota.cfg
33
34 #
35 # reset the userquota and groupquota and delete temporary files
36 #
37 function cleanup_quota
38 {
39 if datasetexists $QFS; then
40 log_must $ZFS set userquota@$QUSER1=none $QFS
41 log_must $ZFS set userquota@$QUSER2=none $QFS
42 log_must $ZFS set groupquota@$QGROUP=none $QFS
43 recovery_writable $QFS
44 fi
45
46 [[ -f $QFILE ]] && log_must $RM -f $QFILE
47 [[ -f $OFILE ]] && log_must $RM -f $OFILE
48 $SYNC
49
50 return 0
51 }
52
53 #
54 # delete user and group that created during the test
55 #
56 function clean_user_group
57 {
58 for usr in $QUSER1 $QUSER2; do
59 log_must del_user $usr
60 done
61
62 log_must del_group $QGROUP
63
64 return 0
65 }
66
67 #
68 # make the $QFS's mountpoint writable for all users
69 #
70 function mkmount_writable
71 {
72 typeset fs=$1
73 typeset mntp=$(get_prop mountpoint $fs)
74 log_must $CHMOD 0777 $mntp
75 }
76
77 #
78 # recovery the directory permission for $QFS
79 #
80 function recovery_writable
81 {
82 typeset fs=$1
83 typeset mntp=$(get_prop mountpoint $fs)
84 log_must $CHMOD 0755 $mntp
85 }
86
87 #
88 # check the quota value of a specific FS
89 #
90 function check_quota
91 {
92 typeset fs=$2
93 typeset prop=$1
94 typeset expected=$3
95 typeset value=$(get_prop $prop $fs)
96
97 if (($value != $expected)); then
98 return 1
99 fi
100 }
101
102 #
103 # zfs get prop, which return raw value not -p value.
104 #
105 function get_value # property dataset
106 {
107 typeset prop_val
108 typeset prop=$1
109 typeset dataset=$2
110
111 prop_val=$($ZFS get -H -o value $prop $dataset 2>/dev/null)
112 if [[ $? -ne 0 ]]; then
113 log_note "Unable to get $prop property for dataset " \
114 "$dataset"
115 return 1
116 fi
117
118 $ECHO $prop_val
119 return 0
120 }