Whamcloud - gitweb
LU-10670 test: make sanity-flr test_43 more reliable
[fs/lustre-release.git] / lustre / tests / racer / file_create.sh
1 #!/bin/bash
2 trap 'kill $(jobs -p)' EXIT
3 RACER_ENABLE_DOM=${RACER_ENABLE_DOM:-false}
4 DIR=$1
5 MAX=$2
6 MAX_MB=${RACER_MAX_MB:-8}
7
8 . $LUSTRE/tests/test-framework.sh
9
10 OSTCOUNT=${OSTCOUNT:-$($LFS df $DIR 2> /dev/null | grep -c OST)}
11
12 layout=(raid0 raid0)
13
14 # check if it supports PFL layout
15 [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.10.0) ]] &&
16         layout+=(pfl pfl pfl)
17
18 # check if it supports DoM
19 if $RACER_ENABLE_DOM ; then
20         [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.10.53) ]] &&
21                 layout+=(dom dom dom)
22 fi
23
24 [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.10.55) ]] &&
25         layout+=(flr flr flr)
26
27 echo "layout: ${layout[*]}"
28
29 while /bin/true; do
30         file=$((RANDOM % MAX))
31         # $RANDOM is between 0 and 32767, and we want $blockcount in 64kB units
32         blockcount=$((RANDOM * MAX_MB / 32 / 64))
33         stripecount=$((RANDOM % (OSTCOUNT + 1)))
34
35         [ $stripecount -gt 0 ] && {
36                 stripesize=$(((RANDOM % 16 + 1) * 64))K
37                 pattern=${layout[$RANDOM % ${#layout[*]}]}
38
39                 case $pattern in
40                 dom) opt="setstripe -E $stripesize -L mdt -E eof -c $stripecount -S 1M" ;;
41                 pfl) opt="setstripe -E 1M -S $stripesize -E eof -c $stripecount -S 2M" ;;
42                 flr) opt="mirror create -N2 -E 1M -S $stripesize -E eof -c $stripecount -S 2M" ;;
43                 raid0) opt="setstripe -S $stripesize -c $stripecount" ;;
44                 esac
45
46                 $LFS $opt $DIR/$file 2> /dev/null || true
47         }
48
49         # offset between 0 and 16MB (256 64k chunks), with 1/2 at offset 0
50         seek=$((RANDOM / 64)); [ $seek -gt 256 ] && seek=0
51         dd if=/dev/zero of=$DIR/$file bs=64k count=$blockcount \
52                 seek=$seek 2> /dev/null || true
53 done
54