[Cluster-devel] [PATCH] rgmanager: Fix CIFS mount handling in netfs.sh
Lon Hohberger
lhh at redhat.com
Tue Oct 26 20:29:39 UTC 2010
Portions based on a patch by Eduardo Alvarenga.
Resolves: rhbz#640676
Signed-off-by: Lon Hohberger <lhh at redhat.com>
---
rgmanager/src/resources/netfs.sh | 135 +++++++++++++++++++++-----------------
1 files changed, 76 insertions(+), 59 deletions(-)
diff --git a/rgmanager/src/resources/netfs.sh b/rgmanager/src/resources/netfs.sh
index 2cc6863..1a669d3 100755
--- a/rgmanager/src/resources/netfs.sh
+++ b/rgmanager/src/resources/netfs.sh
@@ -196,7 +196,7 @@ verify_mountpoint()
[ -d "$OCF_RESKEY_mountpoint" ] && return 0
ocf_log err "$OCF_RESKEY_mountpoint is not a directory"
-
+
return 1
}
@@ -392,7 +392,14 @@ startNFSFilesystem() {
host=${OCF_RESKEY_host}
exp=${OCF_RESKEY_export}
- fullpath=$host:$exp
+ case $OCF_RESKEY_fstype in
+ cifs)
+ fullpath="//$host/$exp"
+ ;;
+ *)
+ fullpath=$host:$exp
+ ;;
+ esac
#
# Ensure we've got a valid directory
@@ -445,12 +452,12 @@ startFilesystem: Creating mount point $mp for $fullpath"
ocf_log debug "mount $fstype_option $mount_options $fullpath $mp"
case $OCF_RESKEY_fstype in
- nfs|nfs4)
- mount -t $OCF_RESKEY_fstype $mount_options $host:$exp $mp
- ;;
- cifs)
- mount -t $OCF_RESKEY_fstype $mount_options //$host/$exp $mp
- ;;
+ cifs)
+ mount -t $OCF_RESKEY_fstype $mount_options //$host/$exp $mp
+ ;;
+ *) # nfs/nfs4
+ mount -t $OCF_RESKEY_fstype $mount_options $host:$exp $mp
+ ;;
esac
ret_val=$?
@@ -459,7 +466,7 @@ startFilesystem: Creating mount point $mp for $fullpath"
'mount $fstype_option $mount_options $fullpath $mp' failed, error=$ret_val"
return $FAIL
fi
-
+
return $SUCCESS
}
@@ -497,11 +504,19 @@ stopNFSFilesystem() {
return $FAIL
;;
esac
-
+
#
# Get the host/path
#
- fullpath="${OCF_RESKEY_host}:${OCF_RESKEY_export}"
+ case $OCF_RESKEY_fstype in
+ cifs)
+ fullpath="//${OCF_RESKEY_host}/${OCF_RESKEY_export}"
+ ;;
+ *) # nfs / nfs4
+ fullpath="${OCF_RESKEY_host}:${OCF_RESKEY_export}"
+ ;;
+ esac
+
#
# Get the force unmount setting if there is a mount point.
@@ -517,61 +532,54 @@ stopNFSFilesystem() {
#
# Unmount
#
- while [ ! "$done" ]; do
- isMounted $fullpath $mp
- case $? in
- $NO)
- ocf_log debug "$fullpath is not mounted"
- umount_failed=
- done=$YES
- ;;
- $FAIL)
- return $FAIL
- ;;
- $YES)
- case ${OCF_RESKEY_no_unmount} in
- $YES_STR) no_umount="$YES" ;;
- 1) no_umount="$YES" ;;
- *) no_umount="" ;;
- esac
-
- if [ "$no_umount" ]; then
- ocf_log info "skipping unmount operation of $mp"
- return $SUCCESS
- fi
+ while [ ! "$done" ]; do
+ isMounted $fullpath $mp
+ case $? in
+ $NO)
+ ocf_log debug "$fullpath is not mounted"
+ umount_failed=
+ done=$YES
+ ;;
+ $FAIL)
+ return $FAIL
+ ;;
+ $YES)
+ case ${OCF_RESKEY_no_unmount} in
+ $YES_STR) no_umount="$YES" ;;
+ 1) no_umount="$YES" ;;
+ *) no_umount="" ;;
+ esac
- sync; sync; sync
- ocf_log info "unmounting $mp"
+ if [ "$no_umount" ]; then
+ ocf_log info "skipping unmount operation of $mp"
+ return $SUCCESS
+ fi
+
+ sync; sync; sync
+ ocf_log info "unmounting $mp"
umount $mp
- if [ $? -eq 0 ]; then
+ if [ $? -eq 0 ]; then
umount_failed=
done=$YES
continue
- fi
+ fi
- umount_failed=yes
+ umount_failed=yes
- if [ "$force_umount" ]; then
- if [ $try -eq 1 ]; then
- fuser -TERM -kvm "$mp"
- else
- fuser -kvm "$mp"
+ if [ "$force_umount" ]; then
+ if [ $try -eq 1 ]; then
+ fuser -TERM -kvm "$mp"
+ else
+ fuser -kvm "$mp"
+ fi
fi
- fi
-
- if [ $try -ge $max_tries ]; then
- done=$YES
- else
- sleep $sleep_time
- let try=try+1
- fi
- ;;
- *)
- return $FAIL
- ;;
- esac
+ ;;
+ *)
+ return $FAIL
+ ;;
+ esac
if [ $try -ge $max_tries ]; then
done=$YES
@@ -580,9 +588,9 @@ stopNFSFilesystem() {
let try=try+1
fi
done # while
+
if [ -n "$umount_failed" ]; then
ocf_log err "'umount $fullpath' failed ($mp), error=$ret_val"
-
return $FAIL
fi
@@ -618,9 +626,18 @@ stop)
exit $?
;;
status|monitor)
- isMounted ${OCF_RESKEY_host}:${OCF_RESKEY_export} \
+ case $OCF_RESKEY_fstype in
+ cifs)
+ isMounted //${OCF_RESKEY_host}/${OCF_RESKEY_export} \
${OCF_RESKEY_mountpoint}
- exit $?
+ exit $?
+ ;;
+ *) # nfs/nfs4
+ isMounted ${OCF_RESKEY_host}:${OCF_RESKEY_export} \
+ ${OCF_RESKEY_mountpoint}
+ exit $?
+ ;;
+ esac
;;
restart)
stopNFSFilesystem
--
1.7.2.3
More information about the Cluster-devel
mailing list