Done and Done.
dir -> directory
fsid is now a parameter to the RA, never generated or stored on volume.
I sent a patch, I hope that is what you wanted. I also tested this new
version out, after reconfiguring my resources, they started back up
fine.
diff -r 61cf8556ad31 heartbeat/exportfs
--- a/heartbeat/exportfs Wed Mar 24 20:10:42 2010 +0100
+++ b/heartbeat/exportfs Thu Mar 25 10:06:28 2010 -0400
@@ -46,7 +46,7 @@
<content type="string" default="" />
</parameter>
-<parameter name="dir" unique="0" required="1">
+<parameter name="directory" unique="0" required="1">
<longdesc lang="en">
The directory which you wish to export using NFS.
</longdesc>
@@ -56,6 +56,17 @@
<content type="string" default="" />
</parameter>
+<parameter name="fsid" unique="0" required="1">
+<longdesc lang="en">
+The fsid option to pass to exportfs. This should be a unique positive integer, avoid 0 unless you understand it's special status.
+This value will override any fsid provided via the options parameter.
+</longdesc>
+<shortdesc lang="en">
+Unique fsid within cluster.
+</shortdesc>
+<content type="string" default="" />
+</parameter>
+
</parameters>
<actions>
@@ -97,19 +108,19 @@
backup_rmtab ()
{
- grep ${OCF_RESKEY_dir} /var/lib/nfs/rmtab > ${OCF_RESKEY_dir}/.rmtab
+ grep ${OCF_RESKEY_directory} /var/lib/nfs/rmtab > ${OCF_RESKEY_directory}/.rmtab
}
clean_rmtab ()
{
- REMOVE=`echo ${OCF_RESKEY_dir} | sed 's/\//\\\\\//g'`
+ REMOVE=`echo ${OCF_RESKEY_directory} | sed 's/\//\\\\\//g'`
sed -i -e /${REMOVE}/d /var/lib/nfs/rmtab
}
exportfs_monitor ()
{
fn=`/bin/mktemp`
- grep "${OCF_RESKEY_dir}" /var/lib/nfs/etab > $fn 2>&1
+ grep "${OCF_RESKEY_directory}" /var/lib/nfs/etab > $fn 2>&1
rc=$?
#Adapt grep status code to OCF return code
@@ -134,26 +145,23 @@
OPTIONS="${OCF_RESKEY_options}"
OPTPREFIX=','
fi
- #generate fsid if none provided...
- if [ ! `echo ${OPTIONS} | grep fsid` ]; then
- if [ -f ${OCF_RESKEY_dir}/.fsid ]; then
- FSID=`cat ${OCF_RESKEY_dir}/.fsid`
- else
- FSID=$RANDOM
- fi
- echo $FSID > ${OCF_RESKEY_dir}/.fsid
- OPTIONS="${OPTIONS}${OPTPREFIX}fsid=${FSID}"
+ if [ `echo ${OPTIONS} | grep fsid` ]; then
+ #replace fsid provided in options list with one provided in fsid param.
+ OPTIONS=`echo ${OPTIONS} | sed 's/fsid=[0-9]\+/fsid=${OCF_RESKEY_fsid}/g'`
+ else
+ #tack the fsid option onto our options list.
+ OPTIONS="${OPTIONS}${OPTPREFIX}fsid=${OCF_RESKEY_fsid}"
fi
OPTIONS="-o ${OPTIONS}"
fn=`/bin/mktemp`
- exportfs ${OPTIONS} ${OCF_RESKEY_clientspec}:${OCF_RESKEY_dir} > $fn 2>&1
+ exportfs ${OPTIONS} ${OCF_RESKEY_clientspec}:${OCF_RESKEY_directory} > $fn 2>&1
rc=$?
#restore saved rmtab backup from other server:
- if [ -f ${OCF_RESKEY_dir}/.rmtab ]; then
- cat ${OCF_RESKEY_dir}/.rmtab >> /var/lib/nfs/rmtab
- rm -f ${OCF_RESKEY_dir}/.rmtab
+ if [ -f ${OCF_RESKEY_directory}/.rmtab ]; then
+ cat ${OCF_RESKEY_directory}/.rmtab >> /var/lib/nfs/rmtab
+ rm -f ${OCF_RESKEY_directory}/.rmtab
fi
/bin/sh $0 backup &
@@ -174,12 +182,12 @@
ocf_log info "Un-exporting file system ..."
fn=`/bin/mktemp`
- exportfs -u ${OCF_RESKEY_clientspec}:${OCF_RESKEY_dir} > $fn 2>&1
+ exportfs -u ${OCF_RESKEY_clientspec}:${OCF_RESKEY_directory} > $fn 2>&1
rc=$?
- if [ -f ${OCF_RESKEY_dir}/.exportfs_backup.pid ]; then
- kill `cat ${OCF_RESKEY_dir}/.exportfs_backup.pid`
- rm ${OCF_RESKEY_dir}/.exportfs_backup.pid
+ if [ -f ${OCF_RESKEY_directory}/.exportfs_backup.pid ]; then
+ kill `cat ${OCF_RESKEY_directory}/.exportfs_backup.pid`
+ rm ${OCF_RESKEY_directory}/.exportfs_backup.pid
fi
backup_rmtab
@@ -198,7 +206,7 @@
exportfs_backup ()
{
- echo $$ > ${OCF_RESKEY_dir}/.exportfs_backup.pid
+ echo $$ > ${OCF_RESKEY_directory}/.exportfs_backup.pid
while [ 1 ]; do
backup_rmtab
sleep 2
@@ -207,7 +215,7 @@
exportfs_validate ()
{
- if [ -d $OCF_RESKEY_dir ]; then
+ if [ -d $OCF_RESKEY_directory ]; then
return $OCF_SUCCESS
else
exit $OCF_ERR_ARGS
_______________________________________________________
Linux-HA-Dev: [email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
Home Page: http://linux-ha.org/