70a035e920
The basic goal of the High Availability Linux project is to provide a high availability (clustering) solution for Linux (and Unix-like) which promotes reliability, availability, and serviceability (RAS) through a community development effort. Inspired from an original submission by Sebastian Reitenbach (maintainer) whom I want to thank for his work and patience.
152 lines
4.5 KiB
Plaintext
152 lines
4.5 KiB
Plaintext
$OpenBSD: patch-resources_OCF_Filesystem,v 1.1.1.1 2007/11/21 18:48:39 ajacoutot Exp $
|
|
--- resources/OCF/Filesystem.orig Thu Oct 25 09:40:41 2007
|
|
+++ resources/OCF/Filesystem Mon Nov 12 11:13:26 2007
|
|
@@ -74,6 +74,7 @@
|
|
. ${OCF_ROOT}/resource.d/heartbeat/.ocf-shellfuncs
|
|
|
|
#######################################################################
|
|
+HOSTOS=`uname`
|
|
|
|
usage() {
|
|
cat <<-EOT
|
|
@@ -168,7 +169,7 @@ END
|
|
#
|
|
flushbufs() {
|
|
if have_binary $BLOCKDEV ; then
|
|
- if [ "$blockdevice" = "yes" ] ; then
|
|
+ if [ "$blockdevice" == "yes" ] ; then
|
|
$BLOCKDEV --flushbufs $1
|
|
return $?
|
|
fi
|
|
@@ -176,11 +177,11 @@ flushbufs() {
|
|
return 0
|
|
}
|
|
|
|
-# Take advantage of /proc/mounts if present, use portabel mount command
|
|
+# Take advantage of /etc/mtab if present, use portabel mount command
|
|
# otherwise. Normalize format to "dev mountpoint fstype".
|
|
list_mounts() {
|
|
- if [ -f "/proc/mounts" -a -r "/proc/mounts" ]; then
|
|
- cut -d' ' -f1,2,3 </proc/mounts
|
|
+ if [ -f "/etc/mtab" -a -r "/etc/mtab" ]; then
|
|
+ cut -d' ' -f1,2,3 </etc/mtab
|
|
else
|
|
$MOUNT | cut -d' ' -f1,3,5
|
|
fi
|
|
@@ -277,7 +278,7 @@ ocfs2_init()
|
|
fi
|
|
fi
|
|
|
|
- if [ $blockdevice = "no" ]; then
|
|
+ if [ $blockdevice == "no" ]; then
|
|
ocf_log err "$DEVICE: ocfs2 needs a block device instead."
|
|
exit $OCF_ERR_GENERIC
|
|
fi
|
|
@@ -342,20 +343,22 @@ Filesystem_start()
|
|
return $OCF_SUCCESS
|
|
fi
|
|
|
|
- # Insert SCSI module
|
|
- # TODO: This probably should go away. Why should the filesystem
|
|
- # RA magically load a kernel module?
|
|
- $MODPROBE scsi_hostadapter >/dev/null 2>&1
|
|
+ if [ "X${HOSTOS}" != "XOpenBSD" ];then
|
|
+ # Insert SCSI module
|
|
+ # TODO: This probably should go away. Why should the filesystem
|
|
+ # RA magically load a kernel module?
|
|
+ $MODPROBE scsi_hostadapter >/dev/null 2>&1
|
|
|
|
- if [ -z "$FSTYPE" ]; then
|
|
- : No FSTYPE specified, rely on the system has the right file-system support already
|
|
- else
|
|
- # Insert Filesystem module
|
|
- $MODPROBE $FSTYPE >/dev/null 2>&1
|
|
- grep -e "$FSTYPE"'$' /proc/filesystems >/dev/null
|
|
- if [ $? -ne 0 ] ; then
|
|
- ocf_log err "Couldn't find filesystem $FSTYPE in /proc/filesystems"
|
|
- return $OCF_ERR_ARGS
|
|
+ if [ -z "$FSTYPE" ]; then
|
|
+ : No FSTYPE specified, rely on the system has the right file-system support already
|
|
+ else
|
|
+ # Insert Filesystem module
|
|
+ $MODPROBE $FSTYPE >/dev/null 2>&1
|
|
+ grep -e "$FSTYPE"'$' /proc/filesystems >/dev/null
|
|
+ if [ $? -ne 0 ] ; then
|
|
+ ocf_log err "Couldn't find filesystem $FSTYPE in /proc/filesystems"
|
|
+ return $OCF_ERR_ARGS
|
|
+ fi
|
|
fi
|
|
fi
|
|
|
|
@@ -363,7 +366,7 @@ Filesystem_start()
|
|
# NOTE: Some filesystem types don't need this step... Please modify
|
|
# accordingly
|
|
|
|
- if [ $blockdevice = "yes" ]; then
|
|
+ if [ $blockdevice == "yes" ]; then
|
|
if [ "$DEVICE" != "/dev/null" -a ! -b "$DEVICE" ] ; then
|
|
ocf_log err "Couldn't find device [$DEVICE]. Expected /dev/??? to exist"
|
|
exit $OCF_ERR_ARGS
|
|
@@ -377,9 +380,9 @@ Filesystem_start()
|
|
then
|
|
ocf_log info "Starting filesystem check on $DEVICE"
|
|
if [ -z "$FSTYPE" ]; then
|
|
- $FSCK -a $DEVICE
|
|
+ $FSCK -p $DEVICE
|
|
else
|
|
- $FSCK -t $FSTYPE -a $DEVICE
|
|
+ $FSCK -t $FSTYPE -p $DEVICE
|
|
fi
|
|
|
|
# NOTE: if any errors at all are detected, it returns non-zero
|
|
@@ -599,10 +602,18 @@ Filesystem_stop()
|
|
# fuser returns a non-zero return code if none of the
|
|
# specified files is accessed or in case of a fatal
|
|
# error.
|
|
- if $FUSER -$sig -m -k $SUB ; then
|
|
- ocf_log info "Some processes on $SUB were signalled"
|
|
+ if [ "X${HOSTOS}" == "XOpenBSD" ];then
|
|
+ PIDS=`fstat | grep ${SUB} | awk '{print $3}'`
|
|
+ for PID in ${PIDS};do
|
|
+ kill -9 ${PID}
|
|
+ ocf_log info "Sent kill -9 to ${PID}"
|
|
+ done
|
|
else
|
|
- ocf_log info "No processes on $SUB were signalled"
|
|
+ if $FUSER -$sig -m -k $SUB ; then
|
|
+ ocf_log info "Some processes on $SUB were signalled"
|
|
+ else
|
|
+ ocf_log info "No processes on $SUB were signalled"
|
|
+ fi
|
|
fi
|
|
sleep 1
|
|
fi
|
|
@@ -723,10 +734,12 @@ case $DEVICE in
|
|
/dev/null) # Special case for BSC
|
|
blockdevice=yes
|
|
;;
|
|
-*) if [ ! -b "$DEVICE" -a "X$OP" != Xstart ] ; then
|
|
+*) if [ ! -b "$DEVICE" -a ! -d "$DEVICE" -a "X$OP" != Xstart ] ; then
|
|
ocf_log warn "Couldn't find device [$DEVICE]. Expected /dev/??? to exist"
|
|
fi
|
|
- blockdevice=yes
|
|
+ if [ ! -d "$DEVICE" ];then
|
|
+ blockdevice=yes
|
|
+ fi
|
|
;;
|
|
esac
|
|
|
|
@@ -749,9 +762,11 @@ else
|
|
fi
|
|
|
|
# Check to make sure the utilites are found
|
|
+if [ "X${HOSTOS}" != "XOpenBSD" ];then
|
|
check_binary $MODPROBE
|
|
-check_binary $FSCK
|
|
check_binary $FUSER
|
|
+fi
|
|
+check_binary $FSCK
|
|
check_binary $MOUNT
|
|
check_binary $UMOUNT
|
|
|