5 CHECKSTAT=${CHECKSTAT:-"./checkstat -v"}
6 MOUNT=${MOUNT:-/mnt/lustre}
10 sh llmountcleanup.sh > /dev/null
15 sh llrmount.sh > /dev/null
29 mount | grep $MOUNT || $START
31 echo '== touch .../f ; rm .../f ======================== test 0'
33 $CHECKSTAT -t file $MOUNT/f || error
35 $CHECKSTAT -a $MOUNT/f || error
40 echo '== mkdir .../d1; mkdir .../d1/d2 ================= test 1'
43 $CHECKSTAT -t dir $MOUNT/d1/d2 || error
48 echo '== rmdir .../d1/d2; rmdir .../d1 ================= test 1b'
51 $CHECKSTAT -a $MOUNT/d1 || error
56 echo '== mkdir .../d2; touch .../d2/f ================== test 2'
59 $CHECKSTAT -t file $MOUNT/d2/f || error
64 echo '== rm -r .../d2; touch .../d2/f ================== test 2b'
66 $CHECKSTAT -a $MOUNT/d2 || error
71 echo '== mkdir .../d3 ================================== test 3'
73 $CHECKSTAT -t dir $MOUNT/d3 || error
77 echo '== touch .../d3/f ================================ test 3b'
79 $CHECKSTAT -t file $MOUNT/d3/f || error
83 echo '== rm -r .../d3 ================================== test 3c'
85 $CHECKSTAT -a $MOUNT/d3 || error
90 echo '== mkdir .../d4 ================================== test 4'
92 $CHECKSTAT -t dir $MOUNT/d4 || error
96 echo '== mkdir .../d4/d2 =============================== test 4b'
98 $CHECKSTAT -t dir $MOUNT/d4/d2 || error
103 echo '== mkdir .../d5; mkdir .../d5/d2; chmod .../d5/d2 = test 5'
106 chmod 0666 $MOUNT/d5/d2
107 $CHECKSTAT -t dir -p 0666 $MOUNT/d5/d2 || error
112 echo '== touch .../f6; chmod .../f6 ==================== test 6'
115 $CHECKSTAT -t file -p 0666 $MOUNT/f6 || error
120 echo '== mkdir .../d7; mcreate .../d7/f; chmod .../d7/f = test 7'
122 ./mcreate $MOUNT/d7/f
123 chmod 0666 $MOUNT/d7/f
124 $CHECKSTAT -t file -p 0666 $MOUNT/d7/f || error
129 echo '== mkdir .../d8; touch .../d8/f; chmod .../d8/f == test 8'
132 chmod 0666 $MOUNT/d8/f
133 $CHECKSTAT -t file -p 0666 $MOUNT/d8/f || error
139 echo '== mkdir .../d9 .../d9/d2 .../d9/d2/d3 =========== test 9'
142 mkdir $MOUNT/d9/d2/d3
143 $CHECKSTAT -t dir $MOUNT/d9/d2/d3 || error
149 echo '== mkdir .../d10 .../d10/d2; touch .../d10/d2/f = test 10'
152 touch $MOUNT/d10/d2/f
153 $CHECKSTAT -t file $MOUNT/d10/d2/f || error
158 echo '== mkdir .../d11 d11/d2; chmod .../d11/d2 ======= test 11'
161 chmod 0666 $MOUNT/d11/d2
162 chmod 0555 $MOUNT/d11/d2
163 $CHECKSTAT -t dir -p 0555 $MOUNT/d11/d2 || error
168 echo '== mkdir .../d12; touch .../d12/f; chmod .../d12/f == test 12'
171 chmod 0666 $MOUNT/d12/f
172 chmod 0555 $MOUNT/d12/f
173 $CHECKSTAT -t file -p 0555 $MOUNT/d12/f || error
178 echo '== mkdir .../d13; cp /etc/passwd .../d13/f; > .../d13/f == test 13'
180 cp /etc/hosts $MOUNT/d13/f
182 $CHECKSTAT -t file -s 0 $MOUNT/d13/f || error
188 echo '================================================== test 14'
192 $CHECKSTAT -a $MOUNT/d14/f || error
198 echo '================================================== test 15'
201 mv $MOUNT/d15/f $MOUNT/d15/f2
202 $CHECKSTAT -t file $MOUNT/d15/f2 || error
207 echo '================================================== test 16'
211 $CHECKSTAT -a $MOUNT/d16/f || error
216 echo '== symlinks: create, remove (dangling and real) == test 17'
219 ln -s $MOUNT/d17/f $MOUNT/d17/l-exist
220 ln -s no-such-file $MOUNT/d17/l-dangle
222 $CHECKSTAT -l $MOUNT/d17/f $MOUNT/d17/l-exist || error
223 $CHECKSTAT -f -t f $MOUNT/d17/l-exist || error
224 $CHECKSTAT -l no-such-file $MOUNT/d17/l-dangle || error
225 $CHECKSTAT -fa $MOUNT/d17/l-dangle || error
226 rm -f $MOUNT/l-dangle
228 $CHECKSTAT -a $MOUNT/l-dangle || error
229 $CHECKSTAT -a $MOUNT/l-exist || error
234 echo "== touch .../f ; ls ... ========================= test 18"
241 echo "== touch .../f ; ls -l ... ====================== test 19"
245 $CHECKSTAT -a $MOUNT/f || error
250 echo "== touch .../f ; ls -l ... ====================== test 20"
260 $CHECKSTAT -a $MOUNT/f || error
265 echo '== write to dangling link ======================== test 21'
267 [ -f $MOUNT/d21/dangle ] && rm -f $MOUNT/d21/dangle
268 ln -s dangle $MOUNT/d21/link
269 echo foo >> $MOUNT/d21/link
270 cat $MOUNT/d21/dangle
271 $CHECKSTAT -t link $MOUNT/d21/link || error
272 $CHECKSTAT -f -t file $MOUNT/d21/link || error
277 echo '== unpack tar archive as non-root user =========== test 22'
279 which sudo && chown 4711 $MOUNT/d22
280 SUDO=`which sudo 2> /dev/null` && SUDO="$SUDO -u #4711" || SUDO=""
281 $SUDO tar cf - /etc/hosts /etc/sysconfig/network | $SUDO tar xfC - $MOUNT/d22
282 ls -lR $MOUNT/d22/etc
283 $CHECKSTAT -t dir $MOUNT/d22/etc || error
284 [ -z "$SUDO" ] || $CHECKSTAT -u \#4711 $MOUNT/d22/etc || error
289 echo '== O_CREAT|O_EXCL in subdir ====================== test 23'
291 ./toexcl $MOUNT/d23/f23
292 ./toexcl -e $MOUNT/d23/f23 || error
297 echo '== rename sanity ================================= test24'
298 echo '-- same directory rename'
299 echo '-- test 24-R1: touch a ; rename a b'
302 mv $MOUNT/R1/f $MOUNT/R1/g
303 $CHECKSTAT -t file $MOUNT/R1/g || error
308 echo '-- test 24-R2: touch a b ; rename a b;'
310 touch $MOUNT/R2/{f,g}
311 mv $MOUNT/R2/f $MOUNT/R2/g
312 $CHECKSTAT -a $MOUNT/R2/f || error
313 $CHECKSTAT -t file $MOUNT/R2/g || error
318 echo '-- test 24-R3: mkdir a ; rename a b;'
321 mv $MOUNT/R3/f $MOUNT/R3/g
322 $CHECKSTAT -a $MOUNT/R3/f || error
323 $CHECKSTAT -t dir $MOUNT/R3/g || error
328 echo '-- test 24-R4: mkdir a b ; rename a b;'
330 mkdir $MOUNT/R4/{f,g}
331 perl -e "rename \"$MOUNT/R4/f\", \"$MOUNT/R4/g\";"
332 $CHECKSTAT -a $MOUNT/R4/f || error
333 $CHECKSTAT -t dir $MOUNT/R4/g || error
338 echo '-- cross directory renames --'
339 echo '-- test 24-R5: touch a ; rename a b'
342 mv $MOUNT/R5a/f $MOUNT/R5b/g
343 $CHECKSTAT -a $MOUNT/R5a/f || error
344 $CHECKSTAT -t file $MOUNT/R5b/g || error
349 echo '-- test 24-R6: touch a ; rename a b'
351 touch $MOUNT/R6a/f $MOUNT/R6b/g
352 mv $MOUNT/R6a/f $MOUNT/R6b/g
353 $CHECKSTAT -a $MOUNT/R6a/f || error
354 $CHECKSTAT -t file $MOUNT/R6b/g || error
359 echo '-- test 24-R7: touch a ; rename a b'
362 mv $MOUNT/R7a/f $MOUNT/R7b/g
363 $CHECKSTAT -a $MOUNT/R7a/f || error
364 $CHECKSTAT -t dir $MOUNT/R7b/g || error
369 echo '-- test 24-R8: touch a ; rename a b'
371 mkdir $MOUNT/R8a/f $MOUNT/R8b/g
372 perl -e "rename \"$MOUNT/R8a/f\", \"$MOUNT/R8b/g\";"
373 $CHECKSTAT -a $MOUNT/R8a/f || error
374 $CHECKSTAT -t dir $MOUNT/R8b/g || error
379 echo "-- rename error cases"
380 echo "-- test 24-R9 target error: touch f ; mkdir a ; rename f a"
384 perl -e "rename \"$MOUNT/R9/f\", \"$MOUNT/R9/a\";"
385 $CHECKSTAT -t file $MOUNT/R9/f || error
386 $CHECKSTAT -t dir $MOUNT/R9/a || error
387 $CHECKSTAT -a file $MOUNT/R9/a/f || error
392 echo "--test 24-R10 source does not exist"
394 perl -e "rename \"$MOUNT/R10/f\", \"$MOUNT/R10/g\""
395 $CHECKSTAT -t dir $MOUNT/R10 || error
396 $CHECKSTAT -a $MOUNT/R10/f || error
397 $CHECKSTAT -a $MOUNT/R10/g || error
402 echo '== symlink sanity ================================ test25'
403 echo "--test 25.1 create file in symlinked directory"
411 echo "--test 25.2 lookup file in symlinked directory"
412 $CHECKSTAT -t file $MOUNT/s25/foo
417 echo "--test 26 multiple component symlink"
419 mkdir $MOUNT/d26/d26-2
420 ln -s d26/d26-2 $MOUNT/s26
426 echo "--test 26.1 multiple component symlink at the end of a lookup"
427 ln -s d26/d26-2/foo $MOUNT/s26-2
433 echo "--test 26.2 a chain of symlinks"
435 touch $MOUNT/d26.2/foo
436 ln -s d26.2 $MOUNT/s26.2-1
437 ln -s s26.2-1 $MOUNT/s26.2-2
438 ln -s s26.2-2 $MOUNT/s26.2-3
439 chmod 0666 $MOUNT/s26.2-3/foo
444 echo '== cleanup ========================================='
445 rm -r $MOUNT/[Rdfs][1-9]*
447 echo '======================= finished ======================='