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>
78 debug "add_wwid_mapping WWID=\"$WWID\" NNAME=\"$NNAME\""
79 if [ "$WWID" == "" ]; then
83 if [ "$NNAME" == "" ]; then
84 warn "no nickname given"
87 if [ "${NAMEMAP[$WWID]}" != "" ]; then
88 warn "$WWID already mapped to name ${NAMEMAP[$WWID]}; replacing it."
90 WWIDMAP[$WWID]="$NNAME"
91 NAMEMAP[$NNAME]="$WWID"
92 TYPEMAP[$WWID]=${TYPE:-"sd"}
95 # del_wwid_mapping <wwid>
99 if [ "$WWID" == "" ]; then
102 if [ "${WWIDMAP[$WWID]}" == "" ]; then
103 warn "WARNING: $WWID does not exist; doing nothing."
106 NNAME=${WWIDMAP[$WWID]}
108 unset NAMEMAP[$NNAME]
113 $WM_SCSI_ID $WM_SCSI_ID_FLAGS $1
118 Configuring the udev wwid map.
120 This will configure persistent mappings and permissions for storage
121 devices. The current values will be shown in brackets ('[]'). Hitting
122 <ENTER> without typing an answer will keep the current value. Ctrl-C
127 echo -n "Default user to own device nodes [$WM_USER]: "
129 if [ "$_WM_USER" != "" ]; then
132 echo -n "Default group to own device nodes [$WM_GROUP]: "
134 if [ "$_WM_GROUP" != "" ]; then
137 echo -n "Default device directory [$WM_DEV_PATH]: "
139 if [ "$_WM_DEV_PATH" != "" ]; then
140 WM_DEV_PATH=$_WM_DEV_PATH;
142 debug "WM_DEV_PATH=\"$WM_DEV_PATH\""
143 debug "WM_USER=\"$WM_USER\""
144 debug "WM_GROUP=\"$WM_GROUP\""
145 echo -n "Writing wwid map configuration: "
146 TMP_CONF=$(mktemp --tmpdir=$WM_CONF_PATH)
147 if [ ! -f $TMP_CONF ]; then
149 error "could not write temporary file"
152 echo "WM_DEV_PATH=\"$WM_DEV_PATH\"" >> $TMP_CONF
153 echo "WM_USER=\"$WM_USER\"" >> $TMP_CONF
154 echo "WM_GROUP=\"$WM_GROUP\"" >> $TMP_CONF
155 mv $TMP_CONF $WM_CONF
156 if [ "$?" != 0 ]; then
157 error "could not create configuration file $WM_CONF"
163 # createdisk <nickname> <device>
168 if [ "$DEV" == "" ] || [ "$NNAME" == "" ]; then
169 echo "Usage: $0 createdisk <nickname> <device>"
172 debug "wm_createdisk: WWID=\"$WWID\" DEV=\"$DEV\" NNAME=\"$NNAME\""
173 WWID=$(wm_scsi_id $DEV)
174 add_wwid_mapping $WWID $NNAME "sd"
181 if [ "$NNAME" == "" ]; then
182 echo "Usage: $0 deletedisk <nickname>"
185 WWID=${NAMEMAP[$NNAME]}
186 if [ "$WWID" == "" ]; then
187 error "\"$NNAME\" does not exist"
188 echo "Usage: $0 deletedisk <nickname>"
191 echo -n "Removing wwid map disk \"$NNAME\":"
192 del_wwid_mapping $WWID \
198 for D in ${WWIDMAP[@]}; do
204 warn "(unimplemented)"
208 warn "(unimplemented)"
214 if [ "$WWID" == "" ] || [ "${WWIDMAP[$WWID]}" == "" ]; then
215 echo "Usage: $0 map <wwid>" 1>&2
219 echo "WM_NAME=$WM_DEV_PATH/${WWIDMAP[$WWID]}"
220 echo "WM_TYPE=${TYPEMAP[$WWID]}"
221 echo "WM_USER=$WM_USER"
222 echo "WM_GROUP=$WM_GROUP"
225 # no point optimizing this out for configure
251 echo "{configure|createdisk|deletedisk|scandisks|querydisk|map}"