Whamcloud - gitweb
current branches now use lnet from HEAD
[fs/lustre-release.git] / lustre / tests / sanity-ost_add_del.sh
1 #!/bin/sh
2
3 set -e
4
5 LUSTRE=${LUSTRE:-`dirname $0`/..}
6 . $LUSTRE/tests/test-framework.sh
7
8 init_test_env $@
9
10 . ${CONFIG:=$LUSTRE/tests/cfg/lmv.sh}
11
12 build_test_filter
13
14 assert_env MDSCOUNT
15
16 SETUP=${SETUP:-"setup"}
17 CLEANUP=${CLEANUP:-"cleanup"}
18
19 DIR1=${DIR1:-$MOUNT1}
20 LCTL=${LCTL:-"$LUSTRE/utils/lctl"}
21 gen_config() {
22     rm -f $XMLCONFIG
23
24     if [ "$MDSCOUNT" -gt 1 ]; then
25         add_lmv lmv1_svc
26         for mds in `mds_list`; do
27             MDSDEV=$TMP/${mds}-`hostname`
28             add_mds $mds --dev $MDSDEV --size $MDSSIZE --lmv lmv1_svc
29         done
30         add_lov_to_lmv lov1 lmv1_svc --stripe_sz $STRIPE_BYTES \
31             --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
32         MDS=lmv1
33     else
34         add_mds $SINGLEMDS --dev $MDSDEV --size $MDSSIZE
35         if [ ! -z "$$SINGLEMDSfailover_HOST" ]; then
36              add_mdsfailover $SINGLEMDS --dev $MDSDEV --size $MDSSIZE
37         fi
38         add_lov lov1 $SINGLEMDS --stripe_sz $STRIPE_BYTES \
39             --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
40         MDS=$SINGLEMDS_svc
41     fi
42     add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
43     add_ost ost2 --lov lov1 --dev ${OSTDEV}-2 --size $OSTSIZE
44    
45     add_client client $MDS --lov lov1 --path $MOUNT
46 }
47
48 build_test_filter
49
50 cleanup() {
51     # make sure we are using the primary MDS, so the config log will
52     # be able to clean up properly.
53     activemds=`facet_active $SINGLEMDS`
54     if [ $activemds != "$SINGLEMDS" ]; then
55         fail $SINGLEMDS
56     fi
57     
58     umount $MOUNT || true
59     rmmod llite
60     for mds in `mds_list`; do
61         stop $mds ${FORCE} $MDSLCONFARGS
62     done
63     stop ost2 ${FORCE} --dump cleanup.log
64     stop ost ${FORCE} --dump cleanup.log
65     stop_lgssd
66     stop_lsvcgssd
67 }
68
69 if [ "$ONLY" == "cleanup" ]; then
70     sysctl -w portals.debug=0 || true
71     cleanup
72     exit
73 fi
74
75
76 setup() {
77     gen_config
78
79     start_krb5_kdc || exit 1
80     start_lsvcgssd || exit 2
81     start_lgssd || exit 3
82     start ost --reformat $OSTLCONFARGS 
83     start ost2 --reformat $OSTLCONFARGS 
84     [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
85     for mds in `mds_list`; do
86         start $mds --reformat $MDSLCONFARGS
87     done
88     grep " $MOUNT " /proc/mounts || zconf_mount `hostname` $MOUNT
89 }
90
91 mkdir -p $DIR
92 $SETUP
93
94 if [ "$ONLY" == "setup" ]; then
95     exit 0
96 fi
97
98 online_ost_del() {
99         cp -p $XMLCONFIG ${XMLCONFIG}.pre_del
100         do_lmc --commit 
101         do_lmc --delete ost --node ost_facet --ost ost_svc
102         for mds in `mds_list`; do
103                 do_facet ${mds} ${LCONF} --nomod --nosetup --write_conf --node ${mds}_facet  --ptldebug $PTLDEBUG $XMLCONFIG 
104         done
105         
106         for mds in `mds_list`; do
107                 MDS_CONFIG_UPDATE="/proc/fs/lustre/mds/${mds}_svc/config_update"
108                 echo \ > ${MDS_CONFIG_UPDATE} || rc=$?
109         done
110         echo \ > /proc/fs/lustre/llite/fs0/config_update || rc=$?
111         cp -p $XMLCONFIG $XMLCONFIG.bak
112         cp -p $XMLCONFIG.pre_del $XMLCONFIG 
113         stop ost --force 
114         cp -p $XMLCONFIG.bak $XMLCONFIG
115 }
116
117 online_ost_add() {
118         do_lmc --commit
119         add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE || exit 3
120         
121         start ost --reformat $OSTLCONFARGS
122         for mds in `mds_list`; do
123                 do_facet ${mds} ${LCONF} --nomod --nosetup --write_conf --node ${mds}_facet --ptldebug $PTLDEBUG $XMLCONFIG 
124         done
125         for mds in `mds_list`; do
126                 MDS_CONFIG_UPDATE="/proc/fs/lustre/mds/${mds}_svc/config_update"
127                 echo \ > ${MDS_CONFIG_UPDATE} || rc=$?
128         done
129         echo \ > /proc/fs/lustre/llite/fs0/config_update || rc=$?
130 }
131
132 test_1a() {
133         dd if=/dev/urandom of=/mnt/lustre/a bs=1024 count=1024
134         sync
135         online_ost_del
136         dd if=/dev/urandom of=/mnt/lustre/b bs=1024 count=1024
137         sync
138         online_ost_add
139         dd if=/dev/urandom of=/mnt/lustre/c bs=1024 count=1024
140 }
141
142 run_test 1a "online ost add/del...."
143 $CLEANUP
144