summaryrefslogtreecommitdiffstats
path: root/extras
diff options
context:
space:
mode:
authorKaleb S KEITHLEY <kkeithle@redhat.com>2016-05-23 15:41:51 -0400
committerKaleb KEITHLEY <kkeithle@redhat.com>2016-05-24 02:36:44 -0700
commit2de43f41b0d9a4e6b08447e86cc83ac3f4bc7684 (patch)
tree3db5cba7d7a3cab7a142981d52670ac20f14c2bd /extras
parentdf931b2c6b2755e57b9d49e3fb045646e6e892fd (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')
-rw-r--r--extras/ganesha/ocf/ganesha_grace7
1 files changed, 4 insertions, 3 deletions
diff --git a/extras/ganesha/ocf/ganesha_grace b/extras/ganesha/ocf/ganesha_grace
index dc4d657..21b95dd 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"