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: Linux-HA-Dev@lists.linux-ha.org http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev Home Page: http://linux-ha.org/