ctdb-doc: Fix example NFS Ganesha recovery directory maintenance logic
authorMartin Schwenke <martin@meltin.net>
Thu, 28 Apr 2016 02:02:47 +0000 (12:02 +1000)
committerMartin Schwenke <martins@samba.org>
Tue, 3 May 2016 02:43:19 +0000 (04:43 +0200)
This currently fails exactly when it is needed: when there is a
dangling link pointing into an unmounted filesystem.  This happens
because [ -e <dangling-link> ] returns false.  The solution is simply
to remove that check.

Now the first condition in the "if" statement catches the backward
compatibility case where $GANRECDIR used to be a directory.  It will
also catch other problems, such as if a file has been created in this
location.  If nothing exists then it will silently succeed (due to
-f).

The second case catches a symlink pointing to the wrong place (e.g. in
an unmounted filesystem).

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/doc/examples/nfs-ganesha-callout

index 3f0a016c3874340d28344b19a660c70cd594d613..a3d04714786ac46d58b13ebeb5cf69c96c83b34f 100755 (executable)
@@ -145,15 +145,13 @@ create_ganesha_recdirs ()
     _mntpt=$(echo "$_mounts" | sort | awk 'NR == 1 {print $3}')
     _link_dst="${_mntpt}/${CTDB_GANESHA_REC_SUBDIR}"
     mkdir -vp "$_link_dst"
-    if [ -e "$GANRECDIR" ]; then
-        if [ ! -L "$GANRECDIR" ] ; then
-            rm -vrf "$GANRECDIR"
-       else
-           _t=$(readlink "$GANRECDIR")
-           if [ "$_t" != "$_link_dst" ] ; then
-               rm -v "$GANRECDIR"
-           fi
-        fi
+    if [ ! -L "$GANRECDIR" ] ; then
+        rm -vrf "$GANRECDIR"
+    else
+       _t=$(readlink "$GANRECDIR")
+       if [ "$_t" != "$_link_dst" ] ; then
+           rm -v "$GANRECDIR"
+       fi
     fi
     # This is not an "else".  It also re-creates the link if it was
     # removed above!