From: "Fabio M. Di Nitto" <fdini...@redhat.com>

Resolves: rhbz#822053

Signed-off-by: Fabio M. Di Nitto <fdini...@redhat.com>
---
 rgmanager/src/resources/fs.sh.in |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/rgmanager/src/resources/fs.sh.in b/rgmanager/src/resources/fs.sh.in
index c43c177..404fe01 100644
--- a/rgmanager/src/resources/fs.sh.in
+++ b/rgmanager/src/resources/fs.sh.in
@@ -135,6 +135,18 @@ do_metadata()
            <content type="boolean"/>
        </parameter>
 
+       <parameter name="nfsrestart" inherit="nfsrestart">
+           <longdesc lang="en">
+               If set and unmounting the file system fails, the node will
+               try to restart nfs daemon and nfs lockd to drop all filesystem
+               references. Use this option as last resource.
+           </longdesc>
+           <shortdesc lang="en">
+               Enable NFS daemon and lockd workaround
+           </shortdesc>
+           <content type="boolean"/>
+       </parameter>
+
        <parameter name="fsid">
            <longdesc lang="en">
                File system ID for NFS exports.  This can be overridden
@@ -446,6 +458,20 @@ do_force_unmount() {
                export nfslock_reclaim=1
        fi
 
+       if [ "$OCF_RESKEY_nfsrestart" = "yes" ] || \
+          [ "$OCF_RESKEY_nfsrestart" = "1" ]; then
+               if [ -f /proc/fs/nfsd/threads ]; then
+                       ocf_log warning "Restarting nfsd/nfslock"
+                       nfsdthreads="$(cat /proc/fs/nfsd/threads)"
+                       service nfslock stop
+                       rpc.nfsd 0
+                       rpc.nfsd $nfsdthreads
+                       service nfslock start
+               else
+                       ocf_log err "Unable to determin nfsd information. nfsd 
restart aborted"
+               fi
+       fi
+
        # Proceed with fuser -kvm...
        return 1
 }
-- 
1.7.7.6

Reply via email to