6 # This test needs to be run on the client
9 LUSTRE=${LUSTRE:-`dirname $0`/..}
10 . $LUSTRE/tests/test-framework.sh
14 . ${CONFIG:=$LUSTRE/tests/cfg/lmv.sh}
20 SETUP=${SETUP:-"setup"}
21 CLEANUP=${CLEANUP:-"cleanup"}
25 CRYPT_TYPE=${CRYPT_TYPE:-"gks"}
26 TMPFILE=${TMPFILE:-"/tmp/encrypt.tmp"}
27 RUN_UID=${RUN_UID:-1000}
32 if [ "$MDSCOUNT" -gt 1 ]; then
34 for mds in `mds_list`; do
35 MDSDEV=$TMP/${mds}-`hostname`
36 add_mds $mds --dev $MDSDEV --size $MDSSIZE --lmv lmv1_svc
38 add_lov_to_lmv lov1 lmv1_svc --stripe_sz $STRIPE_BYTES \
39 --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
42 add_mds $SINGLEMDS --dev $MDSDEV --size $MDSSIZE
43 if [ ! -z "$$SINGLEMDSfailover_HOST" ]; then
44 add_mdsfailover $SINGLEMDS --dev $MDSDEV --size $MDSSIZE
46 add_lov lov1 $SINGLEMDS --stripe_sz $STRIPE_BYTES \
47 --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
50 add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
51 add_ost ost2 --lov lov1 --dev ${OSTDEV}-2 --size $OSTSIZE
52 if [ $CRYPT_TYPE == "gks" ]; then
54 add_client client $MDS --lov lov1 --gks gks_svc --path $MOUNT
56 add_client client $MDS --lov lov1 --path $MOUNT
64 # make sure we are using the primary MDS, so the config log will
65 # be able to clean up properly.
66 activemds=`facet_active $SINGLEMDS`
67 if [ $activemds != "$SINGLEMDS" ]; then
71 umount $MOUNT2 || true
74 if [ $CRYPT_TYPE == "gks" ]; then
77 for mds in `mds_list`; do
78 stop $mds ${FORCE} $MDSLCONFARGS
80 stop ost2 ${FORCE} --dump cleanup.log
81 stop ost ${FORCE} --dump cleanup.log
86 if [ "$ONLY" == "cleanup" ]; then
87 sysctl -w portals.debug=0 || true
96 start_krb5_kdc || exit 1
97 start_lsvcgssd || exit 2
99 start ost --reformat $OSTLCONFARGS
100 start ost2 --reformat $OSTLCONFARGS
101 [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
102 for mds in `mds_list`; do
103 start $mds --reformat $MDSLCONFARGS
105 if [ $CRYPT_TYPE == "gks" ]; then
106 start_gks gks || exit 4
108 grep " $MOUNT " /proc/mounts || zconf_mount `hostname` $MOUNT
109 grep " $MOUNT2 " /proc/mounts || zconf_mount `hostname` $MOUNT2
114 if [ "$ONLY" == "setup" ]; then
119 grep " $MOUNT " /proc/mounts && umount $MOUNT
120 zconf_mount `hostname` $NAME
124 grep " $MOUNT " /proc/mounts && umount $MOUNT
125 zconf_mount `hostname` $MOUNT
126 $LCTL set_crypt $MOUNT $CRYPT_TYPE
132 dd if=/dev/urandom of=$TMPFILE bs=1024 count=1024
136 enable_encrypt $MOUNT
137 cp $TMPFILE $DIR1/1a0
138 cp $TMPFILE $DIR2/1a1
139 diff -u $DIR1/1a0 $DIR2/1a1 || error "files are different"
140 disable_encrypt $MOUNT
141 diff -u $DIR1/1a0 $DIR2/1a1 && error "write encryption failed"
142 enable_encrypt $MOUNT
143 diff -u $DIR1/1a0 $DIR2/1a1 || error "files are different"
145 run_test 1a "read/write encryption============="
149 enable_encrypt $MOUNT
151 setfacl -m u:bin:rw $DIR1/2a0
152 cp $TMPFILE $DIR1/2a0
153 cp $TMPFILE $DIR2/2a1
154 diff -u $DIR1/2a0 $DIR2/2a1 || error "files are different"
155 disable_encrypt $MOUNT
156 diff -u $DIR1/2a0 $DIR2/2a1 && error "write encryption failed"
157 enable_encrypt $MOUNT
158 diff -u $DIR1/2a0 $DIR2/2a1 || error "files are different"
160 run_test 2a "read/write encryption with acl============="
164 enable_encrypt $MOUNT
165 cp $TMPFILE $DIR1/3a0
166 cp $TMPFILE $DIR2/3a1
167 chown $RUN_UID $DIR1/3a0
168 echo aaaaaaaaaaaaaaaaaaaa >> $DIR1/3a0 || error "chown write error"
169 echo aaaaaaaaaaaaaaaaaaaa >> $DIR1/3a1
170 diff -u $DIR1/3a0 $DIR2/3a1 || error "files are different"
171 disable_encrypt $MOUNT
172 diff -u $DIR1/3a0 $DIR2/3a1 && error "write encryption failed"
173 enable_encrypt $MOUNT
174 diff -u $DIR1/3a0 $DIR2/3a1 || error "files are different"
176 run_test 3a "write chown encryption============="
180 enable_encrypt $MOUNT
181 cp $TMPFILE $DIR1/4a0
182 cp $TMPFILE $DIR2/4a1
183 setfacl -m u:bin:rw $DIR1/4a0
184 echo aaaaaaaaaaaaaaaaaaaa >> $DIR1/4a0 || error "chown write error"
185 echo aaaaaaaaaaaaaaaaaaaa >> $DIR1/4a1
186 diff -u $DIR1/4a0 $DIR2/4a1 || error "files are different"
187 disable_encrypt $MOUNT
188 diff -u $DIR1/4a0 $DIR2/4a1 && error "write encryption failed"
189 enable_encrypt $MOUNT
190 diff -u $DIR1/4a0 $DIR2/4a1 || error "files are different"
192 run_test 4a "write chacl encryption============="
196 enable_encrypt $MOUNT
197 cp $TMPFILE $DIR1/5a0
198 cp $TMPFILE $DIR2/5a1
199 setfacl -m u:bin:rw $DIR1/5a0
200 chown $RUN_UID $DIR1/5a0
201 echo aaaaaaaaaaaaaaaaaaaa >> $DIR1/5a0 || error "chown write error"
202 echo aaaaaaaaaaaaaaaaaaaa >> $DIR1/5a1
203 diff -u $DIR1/5a0 $DIR2/5a1 || error "files are different"
204 echo "enable crypt read success"
205 disable_encrypt $MOUNT
206 diff -u $DIR1/5a0 $DIR2/5a1 && error "write encryption failed"
207 enable_encrypt $MOUNT
208 diff -u $DIR1/5a0 $DIR2/5a1 || error "files are different"
210 run_test 5a "write chacl encryption============="
214 enable_encrypt $MOUNT
215 cp $TMPFILE $DIR1/6a0
216 cp $TMPFILE $DIR2/6a1
218 setfacl -m u:bin:rw $DIR1/6a0
219 echo aaaaaaaaaaaaaaaaaaaa >> $DIR1/6a0 || error "chown write error"
220 echo aaaaaaaaaaaaaaaaaaaa >> $DIR1/6a1
221 diff -u $DIR1/6a0 $DIR2/6a1 || error "files are different"
222 echo "enable crypt read success"
223 disable_encrypt $MOUNT
224 diff -u $DIR1/6a0 $DIR2/6a1 && error "write encryption failed"
225 enable_encrypt $MOUNT
226 diff -u $DIR1/6a0 $DIR2/6a1 || error "files are different"
228 run_test 6a "write chmod/setfacl encryption============="