The name of a script file for pre-processing of a backup is as follows.
/etc/opt/FJSVswsts/sh/OpcBackup.pre
/etc/opt/FJSVswsts/<logic node name>/sh/OpcBackup.pre
1: #!/bin/sh 2: 3: # AdvancedCopy Manager 4: # Copyright FUJITSU LIMITED, 2002-2012 5: 6: # 7: # Preprocessing of backup processing 8: # 9: # Argument: $1 Device name of transaction disk 10: # $2 Mount point of transaction disk 11: # $3 Device name of backup disk 12: # 13: # Error number 14: # 2: Argument error 15: # 10: umount error 16: # 13: Illegal mount type (bind/stack mount) 17: 18: 19: # Argument check 20: case $# in 21: 1) 22: ;; 23: 2) 24: ;; 25: 3) 26: ;; 27: *) 28: exit 2 29: ;; 30: esac 31: 32: device="`echo $1`" 33: mount_point="`echo $2`" 34: bk_device="`echo $3`" 35: 36: # Determination postprocessing file name 37: 38: if [ "$SWSTGNODE" != "" ] 39: then 40: swstg_node="/`echo $SWSTGNODE`" 41: else 42: swstg_node="" 43: fi 44: 45: err_log_path="/var/opt/FJSVswsts"$swstg_node"/log" 46: 47: if [ "`echo $device | /bin/grep "/dev/sd"`" != "" ] 48: then 49: # /dev/sd? -> sd? 50: dev="`echo $device | /bin/sed "s/\/dev\///"`" 51: elif [ "`echo $device | /bin/grep "/dev/vd"`" != "" ] 52: then 53: # /dev/vd? -> vd? 54: dev="`echo $device | /bin/sed "s/\/dev\///"`" 55: elif [ "`echo $device | /bin/grep "/dev/FJSV"`" != "" ] 56: then 57: # /dev/FJSVmphd/dsk/mplb?s? -> mplb?s? 58: # /dev/FJSVmphd/dsk/mphd?s? -> mphd?s? 59: dev="`echo $device | /bin/cut -d/ -f5`" 60: elif [ "`echo $device | /bin/grep "/dev/sfdsk/"`" != "" ] 61: then 62: if [ "`echo $device | /bin/grep ":"`" != "" ] 63: then 64: devnam="`echo $device | /bin/cut -d: -f2-`" 65: # /dev/sfdsk/class/dsk/volume:sd? -> class_volume_sd? 66: dev="`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`" 67: dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`" 68: dev="`echo $dev | /bin/sed "s/:/_/"`" 69: device="`echo $device | /bin/cut -d: -f1`" 70: if [ "`echo $devnam | /bin/grep "/dev/disk/by-id/"`" != "" ] 71: then 72: # /dev/sfdsk/class/dsk/volume:/dev/disk/by-id/<device> -> class_volume__by_id_<device> 73: dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-id\//_by-id_/"`" 74: elif [ "`echo $devnam | /bin/grep "/dev/disk/by-path/"`" != "" ] 75: then 76: # /dev/sfdsk/class/dsk/volume:/dev/disk/by-path/<device> -> class_volume__by_path_<device> 77: dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-path\//_by-path_/"`" 78: fi 79: else 80: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume 81: dev="_gds_`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`" 82: dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`" 83: fi 84: elif [ "`echo $device | /bin/grep "/dev/vx/dmp/"`" != "" ] 85: then 86: # /dev/vx/dmp/device -> _vx_pv_device 87: dev="_vx_pv_`echo $device | /bin/sed "s/\/dev\/vx\/dmp\///"`" 88: elif [ "`echo $device | /bin/grep "/dev/mapper/"`" != "" ] 89: then 90: # "/dev/mapper/<device>" -> "_mapper_<device>" 91: dev="_mapper_`echo $device | /bin/sed "s/\/dev\/mapper\///"`" 92: elif [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" ] 93: then 94: # "/dev/disk/by-id/<device>" -> "_by-id_<device>" 95: dev="_by-id_`echo $device | /bin/sed "s/\/dev\/disk\/by-id\///"`" 96: elif [ "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ] 97: then 98: # "/dev/disk/by-path/<device>" -> "_by-path_<device>" 99: dev="_by-path_`echo $device | /bin/sed "s/\/dev\/disk\/by-path\///"`" 100: else 101: exit 0 102: fi 103: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre" 104: fstype_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".fstype" 105: bd_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".bd" 106: 107: if [ "$mount_point" != "" ] 108: then 109: 110: # When device cannot be unmounted 111: # 112: # if [ "$device" = "/dev/sdX" -o "$device" = "/dev/sdY" ] 113: # then 114: # if [ "$bk_device" != "" ] 115: # then 116: # echo $bk_device > $bd_file 117: # fi 118: # /bin/awk "\$2==\"$mount_point\" {print \$3}" /proc/mounts > $fstype_file 119: # /bin/sync 120: # /bin/sync 121: # /bin/sync 122: # echo "fsck" > $post_file 123: 124: # When device can be unmounted 125: # 126: # else 127: if [ `/bin/cat /proc/mounts |/bin/cut -d' ' -f 2|/bin/grep "^$mount_point\$"|/usr/bin/wc -w` != 1 ]; then 128: # stack mount (multi device on $mount_point) 129: /bin/mount > $err_log_path/$dev.umount 2>&1 130: exit 13 131: fi 132: if [ `/bin/cat /proc/mounts |/bin/cut -d' ' -f 1|/bin/grep "^$device\$"|/usr/bin/wc -w` != 1 ]; then 133: cdevice="/dev/`/usr/bin/readlink $device | /bin/sed "s/..\/..\///"`" 134: if [ `/bin/cat /proc/mounts |/bin/cut -d' ' -f 1|/bin/grep "^$cdevice\$"|/usr/bin/wc -w` != 1 ]; then 135: # bind mount (device has multi mount point) 136: /bin/mount > $err_log_path/$dev.umount 2>&1 137: exit 13 138: fi 139: fi 140: 141: /bin/awk "\$2==\"$mount_point\" {print \$3}" /proc/mounts > $fstype_file 142: /bin/umount $mount_point 2>/dev/null 143: if [ $? != 0 ] 144: then 145: retry_count=3 146: sleep_time=1 147: result_flag=1 148: 149: while [ $retry_count -gt 0 ] 150: do 151: /bin/umount $mount_point > $err_log_path/$dev.umount 2>&1 152: if [ $? != 0 ] 153: then 154: retry_count=`expr $retry_count - 1` 155: /bin/sleep $sleep_time 156: else 157: /bin/rm -f $err_log_path/$dev.umount 158: result_flag=0 159: break 160: fi 161: done 162: 163: if [ $result_flag != 0 ] 164: then 165: /sbin/fuser -vum $mount_point> $err_log_path/$dev.fuser 2>&1 166: /bin/ps -ef > $err_log_path/$dev.ps 2>&1 167: 168: exit 10 169: fi 170: fi 171: echo "mount" > $post_file 172: 173: # fi 174: 175: # When device was not mounted 176: # 177: else 178: echo "none" > $post_file 179: fi 180: 181: exit 0