7 WM_DEFAULT_USER="oracle"
8 WM_DEFAULT_GROUP="oracle"
9 WM_CONF_PATH="/etc/wwidmap"
10 WM_DEV_PATH="oracleasm/disks"
11 WM_MAP_PATH="${WM_CONF_PATH}/map"
12 WM_CONF="${WM_CONF_PATH}/conf"
13 WM_USER="$WM_DEFAULT_USER"
14 WM_GROUP="$WM_DEFAULT_GROUP"
15 WM_LOCK="/var/lock/wm.lock"
16 WM_SCSI_ID="/sbin/scsi_id"
17 WM_SCSI_ID_FLAGS="-g -u"
27 echo "WARNING: $@" 1>&2
31 [ "$WM_DEBUG" == "yes" ] && echo "$@" 1>&2
35 print_wwid_mapping() {
37 if [ "$WWID" == "" ]; then
40 debug "NNAME for WWID '$WWID' is: '${WWIDMAP[$WWID]}' (${TYPEMAP[$WWID]})"
43 # store the WWID map to disk
45 TMP_MAP=$(mktemp --tmpdir=$WM_CONF_DIR)
46 if [ ! -f $TMP_MAP ]; then
47 error "could not write temporary file"
50 for WWID in ${!WWIDMAP[@]}; do
51 echo "$WWID ${WWIDMAP[$WWID]} ${TYPEMAP[$WWID]}"
53 mv $TMP_MAP $WM_MAP_PATH
56 # read the WWID map from disk
58 if [ ! -f $WM_MAP_PATH ] || [ ! -r $WM_MAP_PATH ]; then
59 error "$WM_MAP_PATH does not exist or is not readable"
62 while read WWID NNAME TYPE; do
63 if [[ $WWID == \#* ]]; then
66 WWIDMAP[$WWID]="$NNAME"
67 NAMEMAP[$NNAME]="$WWID"
68 TYPEMAP[$WWID]="$TYPE"
72 # add_wwid_mapping <wwid> <nickname> <sd|mpath>
77 if [ "$WWID" == "" ]; then
81 if [ "$NNAME" == "" ]; then
82 warn "no nickname given"
85 if [ "${NAMEMAP[$WWID]}" != "" ]; then
86 warn "$WWID already mapped to name ${NAMEMAP[$WWID]}; replacing it."
88 WWIDMAP[$WWID]="$NNAME"
89 NAMEMAP[$NNAME]="$WWID"
93 # del_wwid_mapping <wwid>
97 if [ "$WWID" == "" ]; then
100 if [ "${WWIDMAP[$WWID]}" == "" ]; then
101 warn "WARNING: $WWID does not exist; doing nothing."
104 NNAME=${WWIDMAP[$WWID]}
106 unset NAMEMAP[$NNAME]
111 $WM_SCSI_ID $WM_SCSI_ID_FLAGS $1
116 Configuring the udev wwid map.
118 This will configure persistent mappings and permissions for storage
119 devices. The current values will be shown in brackets ('[]'). Hitting
120 <ENTER> without typing an answer will keep the current value. Ctrl-C
125 echo -n "Default user to own device nodes [$WM_USER]: "
127 if [ "$_WM_USER" != "" ]; then
130 echo -n "Default group to own device nodes [$WM_GROUP]: "
132 if [ "$_WM_GROUP" != "" ]; then
135 echo -n "Default device directory [$WM_DEV_PATH]: "
137 if [ "$_WM_DEV_PATH" != "" ]; then
138 WM_DEV_PATH=$_WM_DEV_PATH;
140 debug "WM_DEV_PATH=\"$WM_DEV_PATH\""
141 debug "WM_USER=\"$WM_USER\""
142 debug "WM_GROUP=\"$WM_GROUP\""
143 echo -n "Writing wwid map configuration: "
144 TMP_CONF=$(mktemp --tmpdir=$WM_CONF_PATH)
145 if [ ! -f $TMP_CONF ]; then
147 error "could not write temporary file"
150 echo "WM_DEV_PATH=\"$WM_DEV_PATH\"" >> $TMP_CONF
151 echo "WM_USER=\"$WM_USER\"" >> $TMP_CONF
152 echo "WM_GROUP=\"$WM_GROUP\"" >> $TMP_CONF
153 mv $TMP_CONF $WM_CONF
154 if [ "$?" != 0 ]; then
155 error "could not create configuration file $WM_CONF"
161 # createdisk <nickname> <device>
166 if [ "$DEV" == "" ] || [ "$NNAME" == "" ]; then
167 echo "Usage: $0 createdisk <nickname> <device>"
170 WWID=$(wm_scsi_id $DEV)
171 add_wwid_mapping $WWID $NNAME "sd"
178 if [ "$NNAME" == "" ]; then
179 echo "Usage: $0 deletedisk <nickname>"
182 WWID=${NAMEMAP[$NNAME]}
183 if [ "$WWID" == "" ]; then
184 error "\"$NNAME\" does not exist"
185 echo "Usage: $0 deletedisk <nickname>"
188 echo -n "Removing wwid map disk \"$NNAME\":"
189 del_wwid_mapping $WWID \
195 for D in ${WWIDMAP[@]}; do
201 warn "(unimplemented)"
205 warn "(unimplemented)"
211 if [ "$WWID" == "" ] || [ "${WWIDMAP[$WWID]}" == "" ]; then
212 echo "Usage: $0 map <wwid>" 1>&2
216 echo "WM_NAME=$WM_DEV_PATH/${WWIDMAP[$WWID]}"
217 echo "WM_TYPE=${TYPEMAP[$WWID]}"
218 echo "WM_USER=$WM_USER"
219 echo "WM_GROUP=$WM_GROUP"
250 echo "{configure|createdisk|deletedisk|scandisks|querydisk|map}"