diff options
author | Kaleb S KEITHLEY <kkeithle@redhat.com> | 2016-05-23 15:41:51 -0400 |
---|---|---|
committer | Kaleb KEITHLEY <kkeithle@redhat.com> | 2016-05-24 02:36:44 -0700 |
commit | 2de43f41b0d9a4e6b08447e86cc83ac3f4bc7684 (patch) | |
tree | 3db5cba7d7a3cab7a142981d52670ac20f14c2bd /extras/ganesha/ocf/ganesha_grace | |
parent | df931b2c6b2755e57b9d49e3fb045646e6e892fd (diff) |
common-ha: post fail-back, ganesha.nfsds are not put into NFS-GRACE
A little known, rarely used feature of pacemaker called
"notification" is used to follow the status of the ganesha.nfsds
in the cluster. This is done with location constraints and other
Black Magick.
When a nfsd dies, the ganesha-active attribute is cleared, the
associated floating IP (VIP) fails over to another node, and the
ganesha_grace notify method is invoked with post-stop on all the
nodes where the ganesha.nfsd is still running. The notify methods
send dbus msgs to put their nfsds into NFS-GRACE, and the nfsds
perform their grace processing, e.g. taking over locks from the
failed nfsd.
N.B. Fail-back was originally not planned to be a feature for
glusterfs-3.7, but we sorta got it for free.
For fail-back, the opposite occurs. The ganesha-active attribute
is recreated, the floating IP fails back, and the notify method is
invoked with pre-start on all the nodes where the surviving
ganesha.nfsds continue to run. The notify methods send dbus msgs
again to put their nsfds into NFS-GRACE again, and the nfsds clean
up their locks.
backport mainline
> http://review.gluster.org/14506
> BUG: 1338967
release-3.8
> http://review.gluster.org/14507
> BUG: 1338968
Change-Id: I3fc64afa20ae3a928143d69aa533a8df68dd680e
BUG: 1338969
Signed-off-by: Kaleb S KEITHLEY <kkeithle@redhat.com>
Reviewed-on: http://review.gluster.org/14508
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Smoke: Gluster Build System <jenkins@build.gluster.com>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: soumya k <skoduri@redhat.com>
Diffstat (limited to 'extras/ganesha/ocf/ganesha_grace')
-rw-r--r-- | extras/ganesha/ocf/ganesha_grace | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/extras/ganesha/ocf/ganesha_grace b/extras/ganesha/ocf/ganesha_grace index dc4d6577daa..21b95ddb6d7 100644 --- a/extras/ganesha/ocf/ganesha_grace +++ b/extras/ganesha/ocf/ganesha_grace @@ -142,10 +142,11 @@ ganesha_grace_stop() ganesha_grace_notify() { + # since this is a clone RA we should only ever see pre-start + # or post-stop mode="${OCF_RESKEY_CRM_meta_notify_type}-${OCF_RESKEY_CRM_meta_notify_operation}" - case "$mode" in - post-stop) - ocf_log debug "stop_uname:${OCF_RESKEY_CRM_meta_notify_stop_uname}" + case "${mode}" in + pre-start | post-stop) dbus-send --print-reply --system --dest=org.ganesha.nfsd /org/ganesha/nfsd/admin org.ganesha.nfsd.admin.grace string:${OCF_RESKEY_CRM_meta_notify_stop_uname} if [ $? -ne 0 ]; then ocf_log info "dbus-send --print-reply --system --dest=org.ganesha.nfsd /org/ganesha/nfsd/admin org.ganesha.nfsd.admin.grace string:${OCF_RESKEY_CRM_meta_notify_stop_uname} failed" |