All of lore.kernel.org
 help / color / mirror / Atom feed
* Patch to enable rmtab's that are symbolic links
@ 2002-10-12  8:06 Juan Gomez
  0 siblings, 0 replies; 4+ messages in thread
From: Juan Gomez @ 2002-10-12  8:06 UTC (permalink / raw)
  To: nfs; +Cc: juang


In clustered NAS environments we have found useful to support
symbolic links to the rmtab files. I would like to propose the following
patch for review and future inclusion on nfs-utils so that this feature
can be supported.

Regards, Juan

diff -ur nfs-utils/utils/mountd/rmtab.c nfs-utils-new-mountd/utils/mountd/rmtab.c
--- nfs-utils/utils/mountd/rmtab.c	Wed May 31 17:57:13 2000
+++ nfs-utils-new-mountd/utils/mountd/rmtab.c	Sat Oct 12 07:54:01 2002
@@ -8,7 +8,9 @@
 
 #include "config.h"
 
+#include <sys/types.h>
 #include <sys/stat.h>
+#include <unistd.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <netdb.h>
@@ -18,6 +20,40 @@
 #include "xio.h"
 #include "mountd.h"
 
+#include <limits.h> /* PATH_MAX */
+
+/* If new path is a link do not destroy it but place the
+ * file where the link points.
+ */
+
+static int 
+slink_safe_rename(const char * oldpath, const char * newpath)
+{
+  int r;
+  struct stat s;
+  char slink_path[PATH_MAX];
+  char real_newpath = newpath;
+
+  if((lstat(newpath, &s) == 0) && (S_ISLNK(s.st_mode))) {
+
+    /* New path is a symbolic link, do not destroy but follow */
+
+    if((r = readlink(newpath, slink_path, PATH_MAX))==-1) {
+
+      return -1;
+
+    }
+
+    slink_path[ (r < PATH_MAX) ? (r + 1) : (PATH_MAX - 1)] = '\0';
+
+    real_newpath = slink_path;
+
+  }
+
+  return rename(oldpath, real_newpath);
+
+}/* static int slink_safe_rename() */
+
 void
 mountlist_add(nfs_export *exp, const char *path)
 {
@@ -82,7 +118,7 @@
 		if (!match || rep->r_count)
 			fputrmtabent(fp, rep, NULL);
 	}
-	if (rename(_PATH_RMTABTMP, _PATH_RMTAB) < 0) {
+	if (slink_safe_rename(_PATH_RMTABTMP, _PATH_RMTAB) < 0) {
 		xlog(L_ERROR, "couldn't rename %s to %s",
 				_PATH_RMTABTMP, _PATH_RMTAB);
 	}
@@ -130,7 +166,7 @@
 		}
 		fputrmtabent(fp, rep, NULL);
 	}
-	if (rename(_PATH_RMTABTMP, _PATH_RMTAB) < 0) {
+	if (slink_safe_rename(_PATH_RMTABTMP, _PATH_RMTAB) < 0) {
 		xlog(L_ERROR, "couldn't rename %s to %s",
 				_PATH_RMTABTMP, _PATH_RMTAB);
 	}



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Patch to enable rmtab's that are symbolic links
@ 2002-10-15 16:07 Juan Gomez
  2002-10-15 16:35 ` H. J. Lu
  0 siblings, 1 reply; 4+ messages in thread
From: Juan Gomez @ 2002-10-15 16:07 UTC (permalink / raw)
  To: nfs


has anyone had anytime to look into this? could anyone include it in the
distribution?

Juan

----- Forwarded by Juan Gomez/Almaden/IBM on 10/15/02 09:09 AM -----
                                                                                                                                       
                      Juan Gomez                                                                                                       
                      <gomez@cs.sjsu.ed        To:       nfs@lists.sourceforge.net                                                     
                      u>                       cc:       Juan Gomez/Almaden/IBM@IBMUS                                                  
                                               Subject:  Patch to enable rmtab's that are symbolic links                               
                      10/12/02 01:06 AM                                                                                                
                                                                                                                                       
                                                                                                                                       




In clustered NAS environments we have found useful to support
symbolic links to the rmtab files. I would like to propose the following
patch for review and future inclusion on nfs-utils so that this feature
can be supported.

Regards, Juan

diff -ur nfs-utils/utils/mountd/rmtab.c
nfs-utils-new-mountd/utils/mountd/rmtab.c
--- nfs-utils/utils/mountd/rmtab.c         Wed May 31 17:57:13 2000
+++ nfs-utils-new-mountd/utils/mountd/rmtab.c          Sat Oct 12 07:54:01
2002
@@ -8,7 +8,9 @@

 #include "config.h"

+#include <sys/types.h>
 #include <sys/stat.h>
+#include <unistd.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <netdb.h>
@@ -18,6 +20,40 @@
 #include "xio.h"
 #include "mountd.h"

+#include <limits.h> /* PATH_MAX */
+
+/* If new path is a link do not destroy it but place the
+ * file where the link points.
+ */
+
+static int
+slink_safe_rename(const char * oldpath, const char * newpath)
+{
+  int r;
+  struct stat s;
+  char slink_path[PATH_MAX];
+  char real_newpath = newpath;
+
+  if((lstat(newpath, &s) == 0) && (S_ISLNK(s.st_mode))) {
+
+    /* New path is a symbolic link, do not destroy but follow */
+
+    if((r = readlink(newpath, slink_path, PATH_MAX))==-1) {
+
+      return -1;
+
+    }
+
+    slink_path[ (r < PATH_MAX) ? (r + 1) : (PATH_MAX - 1)] = '\0';
+
+    real_newpath = slink_path;
+
+  }
+
+  return rename(oldpath, real_newpath);
+
+}/* static int slink_safe_rename() */
+
 void
 mountlist_add(nfs_export *exp, const char *path)
 {
@@ -82,7 +118,7 @@
                         if (!match || rep->r_count)
                                     fputrmtabent(fp, rep, NULL);
             }
-            if (rename(_PATH_RMTABTMP, _PATH_RMTAB) < 0) {
+            if (slink_safe_rename(_PATH_RMTABTMP, _PATH_RMTAB) < 0) {
                         xlog(L_ERROR, "couldn't rename %s to %s",
                                                 _PATH_RMTABTMP,
_PATH_RMTAB);
             }
@@ -130,7 +166,7 @@
                         }
                         fputrmtabent(fp, rep, NULL);
             }
-            if (rename(_PATH_RMTABTMP, _PATH_RMTAB) < 0) {
+            if (slink_safe_rename(_PATH_RMTABTMP, _PATH_RMTAB) < 0) {
                         xlog(L_ERROR, "couldn't rename %s to %s",
                                                 _PATH_RMTABTMP,
_PATH_RMTAB);
             }






-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Patch to enable rmtab's that are symbolic links
  2002-10-15 16:07 Patch to enable rmtab's that are symbolic links Juan Gomez
@ 2002-10-15 16:35 ` H. J. Lu
  0 siblings, 0 replies; 4+ messages in thread
From: H. J. Lu @ 2002-10-15 16:35 UTC (permalink / raw)
  To: Juan Gomez; +Cc: nfs

On Tue, Oct 15, 2002 at 09:07:12AM -0700, Juan Gomez wrote:
> 
> has anyone had anytime to look into this? could anyone include it in the
> distribution?
> 
> Juan
> 

I checked it into CVS. Please check it out.

Thanks.


H.J.


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Patch to enable rmtab's that are symbolic links
@ 2002-10-15 17:14 Juan Gomez
  0 siblings, 0 replies; 4+ messages in thread
From: Juan Gomez @ 2002-10-15 17:14 UTC (permalink / raw)
  To: H. J. Lu; +Cc: nfs

                                                                                                               
                                                                                                               
                                                                                                               


Thanks a lot H.J.


Juan



                                                                                                                                       
                      "H. J. Lu"                                                                                                       
                      <hjl@lucon.org>          To:       Juan Gomez/Almaden/IBM@IBMUS                                                  
                                               cc:       nfs@lists.sourceforge.net                                                     
                      10/15/02 09:35 AM        Subject:  Re: [NFS] Patch to enable rmtab's that are symbolic links                     
                                                                                                                                       
                                                                                                                                       
                                                                                                                                       



On Tue, Oct 15, 2002 at 09:07:12AM -0700, Juan Gomez wrote:
>
> has anyone had anytime to look into this? could anyone include it in the
> distribution?
>
> Juan
>

I checked it into CVS. Please check it out.

Thanks.


H.J.





-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2002-10-15 17:14 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-10-15 16:07 Patch to enable rmtab's that are symbolic links Juan Gomez
2002-10-15 16:35 ` H. J. Lu
  -- strict thread matches above, loose matches on Subject: below --
2002-10-15 17:14 Juan Gomez
2002-10-12  8:06 Juan Gomez

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.