[fedfs-utils] [PATCH 01/13] libjunction: Restore mode bits when deleting junction metadata

Chuck Lever chuck.lever at oracle.com
Fri Feb 1 09:19:51 PST 2013


Deleting junction metadata is supposed to restore a directory's
previous mode bits.  Or at the very least, the sticky bit should be
removed to prevent the kernel from treating this directory like a
junction.

"nfsref remove" currently doesn't do this.  The problem is that
the {fedfs,nfs}_delete_junction() twins do not restore the previous
mode bits.  These should both call junction_restore_mode().

This breakage was introduced in 0.9-devel by commit b01b24fd
"libjunction: Deprecate trusted.junction.type xattr", Thu Oct 11
14:59:50 2012, which incorrectly removed call sites for the
junction_restore_mode() function.

Signed-off-by: Chuck Lever <chuck.lever at oracle.com>
---

 src/libjunction/fedfs.c |    4 ++++
 src/libjunction/nfs.c   |    4 ++++
 2 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/src/libjunction/fedfs.c b/src/libjunction/fedfs.c
index eed51b3..a06298a 100644
--- a/src/libjunction/fedfs.c
+++ b/src/libjunction/fedfs.c
@@ -352,6 +352,10 @@ fedfs_delete_junction(const char *pathname)
 	if (retval != FEDFS_OK)
 		return retval;
 
+	retval = junction_restore_mode(pathname);
+	if (retval != FEDFS_OK)
+		return retval;
+
 	return fedfs_remove_fsn(pathname);
 }
 
diff --git a/src/libjunction/nfs.c b/src/libjunction/nfs.c
index b6bac49..42c1015 100644
--- a/src/libjunction/nfs.c
+++ b/src/libjunction/nfs.c
@@ -802,6 +802,10 @@ nfs_delete_junction(const char *pathname)
 	if (retval != FEDFS_OK)
 		return retval;
 
+	retval = junction_restore_mode(pathname);
+	if (retval != FEDFS_OK)
+		return retval;
+
 	return nfs_remove_locations(pathname);
 }
 




More information about the fedfs-utils-devel mailing list