1: #!/bin/sh
2:
3: # AdvancedCopy Manager
4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2007
5:
6: #
7: # Postprocessing of Replication(Destination) processing
8: #
9: #Argument: $1 Device name of Destination disk
10: #
11: #Error number
12: # 2: Argument error
13: #11: mount error
14: #12: fsck error
15:
16: # Argument check
17: case $# in
18: 1)
19: ;;
20: *)
21: exit 2
22: ;;
23: esac
24:
25: device=$1
26:
27: # Determination of postprocessing file name
28: if [ "`echo $device | /usr/bin/grep "/dev/dsk/"`" != "" ]
29: then
30: # /dev/dsk/c?t?d?s? -> c?t?d?s?
31: dev="`echo $device | /usr/bin/sed "s/\/dev\/dsk\///"`"
32: elif [ "`echo $device | /usr/bin/grep "/dev/FJSV"`" != "" ]
33: then
34: # /dev/FJSVmphd/dsk/mplb?s? -> mplb?s?
35: # /dev/FJSVmphd/dsk/mphd?s? -> mphd?s?
36: dev="`echo $device | /usr/bin/cut -d/ -f5`"
37: elif [ "`echo $device | /usr/bin/grep "/dev/sfdsk/"`" != "" ]
38: then
39: if [ "`echo $device | /usr/bin/grep ":"`" != "" ]
40: then
41: # /dev/sfdsk/class/dsk/volume:c?t?d? -> class_volume_c?t?d?
42: dev="`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`"
43: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`"
44: dev="`echo $dev | /usr/bin/sed "s/:/_/"`"
45: device="`echo $device | /usr/bin/cut -d: -f1`"
46: else
47: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
48: dev="_gds_`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`"
49: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`"
50: fi
51: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dsk/"`" != "" ]
52: then
53: # /dev/vx/dsk/volume -> _vx_rootdg_volume
54: # /dev/vx/dsk/disk-group/volume -> _vx_disk-group_volume
55: dev=_vx_"`echo $device | /usr/bin/awk -F\/ '{ if (NF == 6) { print $5"_"$6 } else print "rootdg_"$5 }'`"
56: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dmp/"`" != "" ]
57: then
58: # /dev/vx/dmp/device -> _vx_pv_device
59: dev=_vx_pv_"`echo $device | /usr/bin/cut -d/ -f5`"
60: else
61: exit 0
62: fi
63: post_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".dpre"
64:
65: err_log_path="/var/opt/FJSVswsrp/"$SWSTGNODE"/log"
66:
67: # Confirmation of postprocessing
68: if [ ! -r $post_file ]
69: then
70: exit 0
71: fi
72: post="`/usr/bin/cat $post_file | /usr/bin/cut -d',' -f1`"
73: mount_point="`/usr/bin/cat $post_file | /usr/bin/cut -d',' -f2`"
74:
75: # Confirmation of FStype
76: fs="`/usr/sbin/fstyp $device 2> /dev/null`"
77: if [ $? != 0 ]
78: then
79: fs=""
80: fi
81:
82: # When source device cannot be unmounted, fsck for destination device is needed
83: #
84: #if [ "$device" = "/dev/dsk/cXtXdXsX" -o "$device" = "/dev/dsk/cYtYdYsY" ]
85: #then
86: #fsck_dev="`echo $device | sed "s/\/dsk\//\/rdsk\//"`"
87: #
88: #if [ "$fs" = "" ]
89: #then
90: #fsck -m $fsck_dev > /dev/null 2>&1
91: #else
92: #if [ "$fs" = "sfxfs" ]
93: #then
94: #sfxadm $fsck_dev > /dev/null 2>&1
95: #fsck -y -F $fs -o p,log $fsck_dev > /dev/null 2>&1
96: #else
97: #fsck -m -F $fs $fsck_dev > /dev/null 2>&1
98: #fi
99: #fi
100: #if [ $? != 0 ]
101: #then
102: #if [ "$fs" = "" ]
103: #then
104: #result="`fsck -n $fsck_dev |grep \?`"
105: #else
106: #result="`fsck -n -F $fs $fsck_dev |grep \?`"
107: #fi
108: #if [ "$result" = "FILE SYSTEM STATE IN SUPERBLOCK IS WRONG; FIX? no" ]
109: #then
110: #if [ "$fs" = "" ]
111: #then
112: #fsck -y $fsck_dev > /dev/null 2>&1
113: #else
114: #fsck -y -F $fs $fsck_dev > /dev/null 2>&1
115: #fi
116: #if [ $? != 0 ]
117: #then
118: #if [ "$fs" = "" ]
119: #then
120: #fsck -y $fsck_dev > $err_log_path/$dev.fsck 2>&1
121: #else
122: #fsck -y -F $fs $fsck_dev > $err_log_path/$dev.fsck 2>&1
123: #fi
124: #if [ $? != 0 ]
125: #then
126: #exit 12
127: #else
128: #rm -f $err_log_path/$dev.fsck
129: #fi
130: #fi
131: #else
132: #echo "$result" > $err_log_path/$dev.fsck
133: #exit 12
134: #fi
135: #fi
136: #fi
137:
138: # No processing
139: if [ "$post" = "none" ]
140: then
141: /usr/bin/rm -rf $post_file 2> /dev/null
142: exit 0
143: fi
144:
145: # mount processing
146: if [ "$post" = "mount" ]
147: then
148: /usr/bin/df -l $device > /dev/null 2>&1
149: if [ $? != 0 ]
150: then
151: if [ "$fs" = "" ]
152: then
153: /usr/sbin/mount $device $mount_point 2> /dev/null
154: else
155: if [ "$fs" = "sfxfs" ]
156: then
157: dev="`echo $device | /usr/bin/sed "s/\/dsk\//\/rdsk\//"`"
158: /usr/sbin/sfxadm $dev > /dev/null 2>&1
159: fi
160: /usr/sbin/mount -F $fs $device $mount_point 2> /dev/null
161: fi
162: if [ $? != 0 ]
163: then
164: retry_count=3
165: sleep_time=1
166: result_flag=1
167:
168: while [ $retry_count -gt 0 ]
169: do
170: if [ "$fs" = "" ]
171: then
172: /usr/sbin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
173: else
174: if [ "$fs" = "sfxfs" ]
175: then
176: dev="`echo $device | /usr/bin/sed "s/\/dsk\//\/rdsk\//"`"
177: /usr/sbin/sfxadm $dev > $err_log_path/$dev.sfxadm 2>&1
178: fi
179: /usr/sbin/mount -F $fs $device $mount_point > $err_log_path/$dev.sfxadm 2>&1
180: fi
181: if [ $? != 0 ]
182: then
183: retry_count=`expr $retry_count - 1`
184: /usr/bin/sleep $sleep_time
185: else
186: result_flag=0
187: break
188: fi
189: done
190:
191: if [ $result_flag != 0 ]
192: then
193: exit 11
194: fi
195: fi
196: fi
197: /usr/bin/rm -rf $post_file 2> /dev/null
198: exit 0
199: fi
200:
201: exit 0 |