Hi John,

On Thu, Dec 13, 2012 at 12:08:56AM -0700, John Shi wrote:
> 
> Hi Dejan,
> 
>   I have a patch for nfsserver agent in resource-agents package.
> 
> sm-notify was invoked in nfsserver, with -d option, sm-notify doesn't fork, 
> and without time limit, it tries to  reach each client for 15 minutes, still 
> spending this time in the  startup procedure of the resource, so this option 
> has been removed as fix  for git commit 
> ae83f2befdafdfae633afa1553f5d7c4f72d0196
> 
> I think it should be an option to set or unset the -d, and we can improve 
> this even beter we could use the option -m to set the retrytime. 

OK, I guess that there could be use cases where the failover
would wait until all clients get notified.

> The patch added 2 parameters for nfsserver agent: 
> 
> OCF_RESKEY_nfs_notify_foreground:  
>        type: boolean
>        default  'false' ,    
>        'false'  to unset -d,  'true' to set -d
> 
> OCF_RESKEY_nfs_notify_retry_time:  
>       type: integer      
>       default '15'
> 
> Best regards,
> John     
> 
> From f98a19be89eff8cb3f46a8957c4d81be694a2921 Mon Sep 17 00:00:00 2001
> From: John Shi <j...@suse.com>
> Date: Wed, 12 Dec 2012 15:50:39 +0800
> Subject: [PATCH] Medium: nfsserver: make the retry time for sm-notify in the
>  nfsserver resource agent configurable

The two options are actually independent. So, they should be
either put into two patches or the description modified to
better reflect the change.

> ---
>  heartbeat/nfsserver |   38 +++++++++++++++++++++++++++++++++++++-
>  1 file changed, 37 insertions(+), 1 deletion(-)
> 
> diff --git a/heartbeat/nfsserver b/heartbeat/nfsserver
> index 6414e3a..974bff9 100755
> --- a/heartbeat/nfsserver
> +++ b/heartbeat/nfsserver
> @@ -14,6 +14,8 @@ fi
>  
>  DEFAULT_INIT_SCRIPT="/etc/init.d/nfsserver"
>  DEFAULT_NOTIFY_CMD="/sbin/sm-notify"
> +DEFAULT_NOTIFY_FOREGROUND="false"
> +DEFAULT_NOTIFY_RETRY_TIME=15
>  DEFAULT_RPCPIPEFS_DIR="/var/lib/nfs/rpc_pipefs"
>  
>  nfsserver_meta_data() {
> @@ -55,6 +57,28 @@ The tool to send out notification.
>  <content type="string" default="$DEFAULT_NOTIFY_CMD" />
>  </parameter>
>  
> +<parameter name="nfs_notify_foreground" unique="0" required="0">
> +<longdesc lang="en">
> +Keeps sm-notify attached to its controlling terminal and running in the 
> foreground.
> +</longdesc>
> +<shortdesc lang="en">
> +Keeps sm-notify running in the foreground.
> +</shortdesc>
> +<content type="boolean" default="$DEFAULT_NOTIFY_FOREGROUND" />
> +</parameter>
> +
> +<parameter name="nfs_notify_retry_time" unique="0" required="0">
> +<longdesc lang="en">
> +Specifies the length of sm-notify retry time, in minutes, to continue 
> retrying notifications to unresponsive hosts.  
> +If this option is not specified, sm-notify attempts to send notifications 
> for 15 minutes. Specifying a value of 0 
> +causes sm-notify to continue sending notifications to unresponsive peers 
> until it is manually killed.
> +</longdesc>
> +<shortdesc lang="en">
> +Specifies the length of sm-notify retry time(minutes).
> +</shortdesc>
> +<content type="integer" default="$DEFAULT_NOTIFY_RETRY_TIME" />
> +</parameter>
> +
>  <parameter name="nfs_shared_infodir" unique="0" required="1">
>  <longdesc lang="en">
>  The nfsserver resource agent will save nfs related information in this 
> specific directory.
> @@ -129,6 +153,8 @@ esac
>  fp="$OCF_RESKEY_nfs_shared_infodir"
>  : ${OCF_RESKEY_nfs_init_script="$DEFAULT_INIT_SCRIPT"}
>  : ${OCF_RESKEY_nfs_notify_cmd="$DEFAULT_NOTIFY_CMD"}
> +: ${OCF_RESKEY_nfs_notify_foreground="$DEFAULT_NOTIFY_FOREGROUND"}
> +: ${OCF_RESKEY_nfs_notify_retry_time="$DEFAULT_NOTIFY_RETRY_TIME"}
>  
>  if [ -z ${OCF_RESKEY_rpcpipefs_dir} ]; then
>       rpcpipefs_make_dir=$fp/rpc_pipefs
> @@ -220,7 +246,17 @@ nfsserver_start ()
>       #Notify the nfs server has been moved or rebooted
>       #The init script do that already, but with the hostname, which may be 
> ignored by client
>       #we have to do it again with the nfs_ip 
> -     local opts="-f -v"
> +     local opts
> +
> +     if ! ocf_is_decimal "$OCF_RESKEY_nfs_notify_retry_time"; then
> +             ocf_log err "Invalid OCF_RESKEY_nfs_notify_retry_time 
> [$OCF_RESKEY_nfs_notify_retry_time]"
> +             return $OCF_ERR_CONFIGURED
> +     fi
> +     if ocf_is_true "$OCF_RESKEY_nfs_notify_foreground"; then
> +             opts="-d"
> +     fi
> +     opts="$opts -m $OCF_RESKEY_nfs_notify_retry_time -f -v"

This might be a bit better:

# set default options
local opts="-f -v"

# add option for notify_retry_time, if set
if [ -n "$OCF_RESKEY_nfs_notify_retry_time" ]; then
        if ! ocf_is_decimal "$OCF_RESKEY_nfs_notify_retry_time"; then
                ocf_log err "Invalid OCF_RESKEY_nfs_notify_retry_time 
[$OCF_RESKEY_nfs_notify_retry_time]"
                return $OCF_ERR_CONFIGURED
        fi
        opts="$opts -m $OCF_RESKEY_nfs_notify_retry_time"
fi

# run in foreground, if requested
if ocf_is_true "$OCF_RESKEY_nfs_notify_foreground"; then
        opts="$opts -d"
fi

What do you say?

Cheers,

Dejan
_______________________________________________________
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/

Reply via email to