All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH kNFSd 000 of 4] Introduction
@ 2005-10-14  2:23 NeilBrown
  2005-10-14  2:23 ` [PATCH kNFSd 001 of 4] fix setattr-on-symlink error return NeilBrown
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: NeilBrown @ 2005-10-14  2:23 UTC (permalink / raw)
  To: Andrew Morton; +Cc: nfs

4 patches for kNFSd in 2.6

I might have sent the first one already, so if it conflicts, just drop it.

Patch '3' should replace
  knfsd-allowing-rpcnfsd-to-setting-of-the-port-transport-and-version-the-server-will-use.patch
which contains some elements that are still under discussion.

Thanks,
NeilBrown


 [PATCH kNFSd 001 of 4] fix setattr-on-symlink error return
 [PATCH kNFSd 002 of 4] Restore functionality to read from file in /proc/fs/nfsd/
 [PATCH kNFSd 003 of 4] Allow run-time selection of NFS versions to export
 [PATCH kNFSd 004 of 4] Fix some minor sign problems in nfsd/xdr


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

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

* [PATCH kNFSd 001 of 4] fix setattr-on-symlink error return
  2005-10-14  2:23 [PATCH kNFSd 000 of 4] Introduction NeilBrown
@ 2005-10-14  2:23 ` NeilBrown
  2005-10-14 12:29   ` Peter Staubach
  2005-10-14  2:23 ` [PATCH kNFSd 002 of 4] Restore functionality to read from file in /proc/fs/nfsd/ NeilBrown
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 11+ messages in thread
From: NeilBrown @ 2005-10-14  2:23 UTC (permalink / raw)
  To: Andrew Morton; +Cc: nfs



This is a somewhat cosmetic fix to keep the SpecFS validation test
from complaining.
SpecFS want's to try chmod on symlinks, and ext3 and reiser (at least)
return ENOTSUPP.
Probably both sides are being silly, but it is easiest to simply make
it a non-issue and filter out chmod requests on symlinks at the nfsd level.

Signed-off-by: Olaf Kirch <okir@suse.de>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>

### Diffstat output
 ./fs/nfsd/vfs.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff ./fs/nfsd/vfs.c~current~ ./fs/nfsd/vfs.c
--- ./fs/nfsd/vfs.c~current~	2005-10-14 12:01:38.000000000 +1000
+++ ./fs/nfsd/vfs.c	2005-10-14 12:02:07.000000000 +1000
@@ -254,12 +254,19 @@ nfsd_setattr(struct svc_rqst *rqstp, str
 
 	/* Get inode */
 	err = fh_verify(rqstp, fhp, ftype, accmode);
-	if (err || !iap->ia_valid)
+	if (err)
 		goto out;
 
 	dentry = fhp->fh_dentry;
 	inode = dentry->d_inode;
 
+	/* Ignore any mode updates on symlinks */
+	if (S_ISLNK(inode->i_mode))
+		iap->ia_valid &= ~ATTR_MODE;
+
+	if (!iap->ia_valid)
+		goto out;
+
 	/* NFSv2 does not differentiate between "set-[ac]time-to-now"
 	 * which only requires access, and "set-[ac]time-to-X" which
 	 * requires ownership.


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

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

* [PATCH kNFSd 002 of 4] Restore functionality to read from file in /proc/fs/nfsd/
  2005-10-14  2:23 [PATCH kNFSd 000 of 4] Introduction NeilBrown
  2005-10-14  2:23 ` [PATCH kNFSd 001 of 4] fix setattr-on-symlink error return NeilBrown
@ 2005-10-14  2:23 ` NeilBrown
  2005-10-14  2:23 ` [PATCH kNFSd 003 of 4] Allow run-time selection of NFS versions to export NeilBrown
  2005-10-14  2:23 ` [PATCH kNFSd 004 of 4] Fix some minor sign problems in nfsd/xdr NeilBrown
  3 siblings, 0 replies; 11+ messages in thread
From: NeilBrown @ 2005-10-14  2:23 UTC (permalink / raw)
  To: Andrew Morton; +Cc: nfs


Most files in the nfsd filesystems are transaction files.
You write a request, and read a response.
For some (e.g. 'threads') it makes sense to just be able to read
and get the current value.
This functionality did exist but was broken recently when someone
modified nfsctl.c without going through the maintainer.
This patch fixes the regression.

Signed-off-by: Neil Brown <neilb@suse.de>

### Diffstat output
 ./fs/nfsd/nfsctl.c |   16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff ./fs/nfsd/nfsctl.c~current~ ./fs/nfsd/nfsctl.c
--- ./fs/nfsd/nfsctl.c~current~	2005-10-14 12:01:38.000000000 +1000
+++ ./fs/nfsd/nfsctl.c	2005-10-14 12:02:35.000000000 +1000
@@ -104,9 +104,23 @@ static ssize_t nfsctl_transaction_write(
 	return rv;
 }
 
+static ssize_t nfsctl_transaction_read(struct file *file, char __user *buf, size_t size, loff_t *pos)
+{
+	if (! file->private_data) {
+		/* An attempt to read a transaction file without writing
+		 * causes a 0-byte write so that the file can return
+		 * state information
+		 */
+		ssize_t rv = nfsctl_transaction_write(file, buf, 0, pos);
+		if (rv < 0)
+			return rv;
+	}
+	return simple_transaction_read(file, buf, size, pos);
+}
+
 static struct file_operations transaction_ops = {
 	.write		= nfsctl_transaction_write,
-	.read		= simple_transaction_read,
+	.read		= nfsctl_transaction_read,
 	.release	= simple_transaction_release,
 };
 


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

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

* [PATCH kNFSd 003 of 4] Allow run-time selection of NFS versions to export
  2005-10-14  2:23 [PATCH kNFSd 000 of 4] Introduction NeilBrown
  2005-10-14  2:23 ` [PATCH kNFSd 001 of 4] fix setattr-on-symlink error return NeilBrown
  2005-10-14  2:23 ` [PATCH kNFSd 002 of 4] Restore functionality to read from file in /proc/fs/nfsd/ NeilBrown
@ 2005-10-14  2:23 ` NeilBrown
  2005-10-14  2:23 ` [PATCH kNFSd 004 of 4] Fix some minor sign problems in nfsd/xdr NeilBrown
  3 siblings, 0 replies; 11+ messages in thread
From: NeilBrown @ 2005-10-14  2:23 UTC (permalink / raw)
  To: Andrew Morton; +Cc: nfs


Provide a file in the NFSD filesystem that allows setting
and querying of which version of NFS are being exported.
Changes are only allowed while no server is running.

Signed-off-by: Steve Dickson <steved@redhat.com>
Signed-off-by: Neil Brown <neilb@suse.de>

### Diffstat output
 ./fs/nfsd/nfsctl.c             |   70 ++++++++++++++++++++++++++++++++++++
 ./fs/nfsd/nfssvc.c             |   79 ++++++++++++++++++++++++++---------------
 ./include/linux/nfsd/nfsd.h    |    2 -
 ./include/linux/nfsd/syscall.h |   17 ++++++++
 4 files changed, 139 insertions(+), 29 deletions(-)

diff ./fs/nfsd/nfsctl.c~current~ ./fs/nfsd/nfsctl.c
--- ./fs/nfsd/nfsctl.c~current~	2005-10-14 12:02:35.000000000 +1000
+++ ./fs/nfsd/nfsctl.c	2005-10-14 12:02:52.000000000 +1000
@@ -23,6 +23,7 @@
 #include <linux/seq_file.h>
 #include <linux/pagemap.h>
 #include <linux/init.h>
+#include <linux/string.h>
 
 #include <linux/nfs.h>
 #include <linux/nfsd_idmap.h>
@@ -35,6 +36,8 @@
 
 #include <asm/uaccess.h>
 
+unsigned int nfsd_versbits = ~0;
+
 /*
  *	We have a single directory with 9 nodes in it.
  */
@@ -51,6 +54,7 @@ enum {
 	NFSD_Fh,
 	NFSD_Threads,
 	NFSD_Leasetime,
+	NFSD_Versions,
 	NFSD_RecoveryDir,
 };
 
@@ -67,6 +71,7 @@ static ssize_t write_getfs(struct file *
 static ssize_t write_filehandle(struct file *file, char *buf, size_t size);
 static ssize_t write_threads(struct file *file, char *buf, size_t size);
 static ssize_t write_leasetime(struct file *file, char *buf, size_t size);
+static ssize_t write_versions(struct file *file, char *buf, size_t size);
 static ssize_t write_recoverydir(struct file *file, char *buf, size_t size);
 
 static ssize_t (*write_op[])(struct file *, char *, size_t) = {
@@ -80,6 +85,7 @@ static ssize_t (*write_op[])(struct file
 	[NFSD_Fh] = write_filehandle,
 	[NFSD_Threads] = write_threads,
 	[NFSD_Leasetime] = write_leasetime,
+	[NFSD_Versions] = write_versions,
 	[NFSD_RecoveryDir] = write_recoverydir,
 };
 
@@ -343,6 +349,69 @@ static ssize_t write_threads(struct file
 	return strlen(buf);
 }
 
+static ssize_t write_versions(struct file *file, char *buf, size_t size)
+{
+	/*
+	 * Format:
+	 *   [-/+]vers [-/+]vers ...
+	 */
+	char *mesg = buf;
+	char *vers, sign;
+	int len, num;
+	ssize_t tlen = 0;
+	char *sep;
+
+	if (size>0) {
+		if (nfsd_serv)
+			return -EBUSY;
+		if (buf[size-1] != '\n')
+			return -EINVAL;
+		buf[size-1] = 0;
+
+		vers = mesg;
+		len = qword_get(&mesg, vers, size);
+		if (len <= 0) return -EINVAL;
+		do {
+			sign = *vers;
+			if (sign == '+' || sign == '-')
+				num = simple_strtol((vers+1), NULL, 0);
+			else
+				num = simple_strtol(vers, NULL, 0);
+			switch(num) {
+			case 2:
+			case 3:
+			case 4:
+				if (sign != '-')
+					NFSCTL_VERSET(nfsd_versbits, num);
+				else
+					NFSCTL_VERUNSET(nfsd_versbits, num);
+				break;
+			default:
+				return -EINVAL;
+			}
+			vers += len + 1;
+			tlen += len;
+		} while ((len = qword_get(&mesg, vers, size)) > 0);
+		/* If all get turned off, turn them back on, as
+		 * having no versions is BAD
+		 */
+		if ((nfsd_versbits & NFSCTL_VERALL)==0)
+			nfsd_versbits = NFSCTL_VERALL;
+	}
+	/* Now write current state into reply buffer */
+	len = 0;
+	sep = "";
+	for (num=2 ; num <= 4 ; num++)
+		if (NFSCTL_VERISSET(NFSCTL_VERALL, num)) {
+			len += sprintf(buf+len, "%s%c%d", sep,
+				       NFSCTL_VERISSET(nfsd_versbits, num)?'+':'-',
+				       num);
+			sep = " ";
+		}
+	len += sprintf(buf+len, "\n");
+	return len;
+}
+
 extern time_t nfs4_leasetime(void);
 
 static ssize_t write_leasetime(struct file *file, char *buf, size_t size)
@@ -407,6 +476,7 @@ static int nfsd_fill_super(struct super_
 		[NFSD_Leasetime] = {"nfsv4leasetime", &transaction_ops, S_IWUSR|S_IRUSR},
 		[NFSD_RecoveryDir] = {"nfsv4recoverydir", &transaction_ops, S_IWUSR|S_IRUSR},
 #endif
+		[NFSD_Versions] = {"versions", &transaction_ops, S_IWUSR|S_IRUSR},
 		/* last one */ {""}
 	};
 	return simple_fill_super(sb, 0x6e667364, nfsd_files);

diff ./fs/nfsd/nfssvc.c~current~ ./fs/nfsd/nfssvc.c
--- ./fs/nfsd/nfssvc.c~current~	2005-10-14 12:01:38.000000000 +1000
+++ ./fs/nfsd/nfssvc.c	2005-10-14 12:02:52.000000000 +1000
@@ -30,6 +30,7 @@
 #include <linux/nfsd/nfsd.h>
 #include <linux/nfsd/stats.h>
 #include <linux/nfsd/cache.h>
+#include <linux/nfsd/syscall.h>
 #include <linux/lockd/bind.h>
 #include <linux/nfsacl.h>
 
@@ -52,7 +53,7 @@
 extern struct svc_program	nfsd_program;
 static void			nfsd(struct svc_rqst *rqstp);
 struct timeval			nfssvc_boot;
-static struct svc_serv 		*nfsd_serv;
+       struct svc_serv 		*nfsd_serv;
 static atomic_t			nfsd_busy;
 static unsigned long		nfsd_last_call;
 static DEFINE_SPINLOCK(nfsd_call_lock);
@@ -63,6 +64,31 @@ struct nfsd_list {
 };
 static struct list_head nfsd_list = LIST_HEAD_INIT(nfsd_list);
 
+static struct svc_version *	nfsd_version[] = {
+	[2] = &nfsd_version2,
+#if defined(CONFIG_NFSD_V3)
+	[3] = &nfsd_version3,
+#endif
+#if defined(CONFIG_NFSD_V4)
+	[4] = &nfsd_version4,
+#endif
+};
+
+#define NFSD_MINVERS    	2
+#define NFSD_NRVERS		(sizeof(nfsd_version)/sizeof(nfsd_version[0]))
+static struct svc_version *nfsd_versions[NFSD_NRVERS];
+
+struct svc_program		nfsd_program = {
+	.pg_prog		= NFS_PROGRAM,		/* program number */
+	.pg_nvers		= NFSD_NRVERS,		/* nr of entries in nfsd_version */
+	.pg_vers		= nfsd_versions,	/* version table */
+	.pg_name		= "nfsd",		/* program name */
+	.pg_class		= "nfsd",		/* authentication class */
+	.pg_stats		= &nfsd_svcstats,	/* version table */
+	.pg_authenticate	= &svc_set_client,	/* export authentication */
+
+};
+
 /*
  * Maximum number of nfsd processes
  */
@@ -80,11 +106,12 @@ int
 nfsd_svc(unsigned short port, int nrservs)
 {
 	int	error;
-	int	none_left;	
+	int	none_left, found_one, i;
 	struct list_head *victim;
 	
 	lock_kernel();
-	dprintk("nfsd: creating service\n");
+	dprintk("nfsd: creating service: vers 0x%x\n",
+		nfsd_versbits);
 	error = -EINVAL;
 	if (nrservs <= 0)
 		nrservs = 0;
@@ -99,6 +126,27 @@ nfsd_svc(unsigned short port, int nrserv
 	if (error<0)
 		goto out;
 	if (!nfsd_serv) {
+		/*
+		 * Use the nfsd_ctlbits to define which
+		 * versions that will be advertised.
+		 * If nfsd_ctlbits doesn't list any version,
+		 * export them all.
+		 */
+		found_one = 0;
+
+		for (i = NFSD_MINVERS; i < NFSD_NRVERS; i++) {
+			if (NFSCTL_VERISSET(nfsd_versbits, i)) {
+				nfsd_program.pg_vers[i] = nfsd_version[i];
+				found_one = 1;
+			} else
+				nfsd_program.pg_vers[i] = NULL;
+		}
+
+		if (!found_one) {
+			for (i = NFSD_MINVERS; i < NFSD_NRVERS; i++)
+				nfsd_program.pg_vers[i] = nfsd_version[i];
+		}
+
 		atomic_set(&nfsd_busy, 0);
 		error = -ENOMEM;
 		nfsd_serv = svc_create(&nfsd_program, NFSD_BUFSIZE);
@@ -389,28 +437,3 @@ static struct svc_stat	nfsd_acl_svcstats
 #else
 #define nfsd_acl_program_p	NULL
 #endif /* defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL) */
-
-extern struct svc_version nfsd_version2, nfsd_version3, nfsd_version4;
-
-static struct svc_version *	nfsd_version[] = {
-	[2] = &nfsd_version2,
-#if defined(CONFIG_NFSD_V3)
-	[3] = &nfsd_version3,
-#endif
-#if defined(CONFIG_NFSD_V4)
-	[4] = &nfsd_version4,
-#endif
-};
-
-#define NFSD_NRVERS		(sizeof(nfsd_version)/sizeof(nfsd_version[0]))
-struct svc_program		nfsd_program = {
-	.pg_next		= nfsd_acl_program_p,
-	.pg_prog		= NFS_PROGRAM,		/* program number */
-	.pg_nvers		= NFSD_NRVERS,		/* nr of entries in nfsd_version */
-	.pg_vers		= nfsd_version,		/* version table */
-	.pg_name		= "nfsd",		/* program name */
-	.pg_class		= "nfsd",		/* authentication class */
-	.pg_stats		= &nfsd_svcstats,	/* version table */
-	.pg_authenticate	= &svc_set_client,	/* export authentication */
-
-};

diff ./include/linux/nfsd/nfsd.h~current~ ./include/linux/nfsd/nfsd.h
--- ./include/linux/nfsd/nfsd.h~current~	2005-10-14 12:01:38.000000000 +1000
+++ ./include/linux/nfsd/nfsd.h	2005-10-14 12:02:52.000000000 +1000
@@ -60,7 +60,7 @@ typedef int (*nfsd_dirop_t)(struct inode
 extern struct svc_program	nfsd_program;
 extern struct svc_version	nfsd_version2, nfsd_version3,
 				nfsd_version4;
-
+extern struct svc_serv		*nfsd_serv;
 /*
  * Function prototypes.
  */

diff ./include/linux/nfsd/syscall.h~current~ ./include/linux/nfsd/syscall.h
--- ./include/linux/nfsd/syscall.h~current~	2005-10-14 12:01:38.000000000 +1000
+++ ./include/linux/nfsd/syscall.h	2005-10-14 12:02:52.000000000 +1000
@@ -39,6 +39,21 @@
 #define NFSCTL_GETFD		7	/* get an fh by path (used by mountd) */
 #define	NFSCTL_GETFS		8	/* get an fh by path with max FH len */
 
+/*
+ * Macros used to set version
+ */
+#define NFSCTL_VERSET(_cltbits, _v)   ((_cltbits) |=  (1 << (_v)))
+#define NFSCTL_VERUNSET(_cltbits, _v) ((_cltbits) &= ~(1 << (_v)))
+#define NFSCTL_VERISSET(_cltbits, _v) ((_cltbits) & (1 << (_v)))
+
+#if defined(CONFIG_NFSD_V4)
+#define	NFSCTL_VERALL	(0x1c /* 0b011100 */)
+#elif defined(CONFIG_NFSD_V3)
+#define	NFSCTL_VERALL	(0x0c /* 0b001100 */)
+#else
+#define	NFSCTL_VERALL	(0x04 /* 0b000100 */)
+#endif
+
 /* SVC */
 struct nfsctl_svc {
 	unsigned short		svc_port;
@@ -120,6 +135,8 @@ extern int		exp_delclient(struct nfsctl_
 extern int		exp_export(struct nfsctl_export *nxp);
 extern int		exp_unexport(struct nfsctl_export *nxp);
 
+extern unsigned int nfsd_versbits;
+
 #endif /* __KERNEL__ */
 
 #endif /* NFSD_SYSCALL_H */


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

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

* [PATCH kNFSd 004 of 4] Fix some minor sign problems in nfsd/xdr
  2005-10-14  2:23 [PATCH kNFSd 000 of 4] Introduction NeilBrown
                   ` (2 preceding siblings ...)
  2005-10-14  2:23 ` [PATCH kNFSd 003 of 4] Allow run-time selection of NFS versions to export NeilBrown
@ 2005-10-14  2:23 ` NeilBrown
  3 siblings, 0 replies; 11+ messages in thread
From: NeilBrown @ 2005-10-14  2:23 UTC (permalink / raw)
  To: Andrew Morton; +Cc: nfs


There are a couple of tests which could possibly be confused by
extremely large numbers appearing in 'xdr' packets.
I think the closest to an exploit you could get would be writing
random data from a free page into a file - i.e. leak data
out of kernel space.

I'm fairly sure they cannot be used for remote compromise.


Signed-off-by: Neil Brown <neilb@suse.de>

### Diffstat output
 ./fs/nfsd/nfs3xdr.c          |    3 ++-
 ./include/linux/nfsd/xdr3.h  |    2 +-
 ./include/linux/sunrpc/svc.h |    3 ++-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff ./fs/nfsd/nfs3xdr.c~current~ ./fs/nfsd/nfs3xdr.c
--- ./fs/nfsd/nfs3xdr.c~current~	2005-10-14 12:01:38.000000000 +1000
+++ ./fs/nfsd/nfs3xdr.c	2005-10-14 12:03:04.000000000 +1000
@@ -366,7 +366,8 @@ nfs3svc_decode_writeargs(struct svc_rqst
 	len = args->len = ntohl(*p++);
 
 	hdr = (void*)p - rqstp->rq_arg.head[0].iov_base;
-	if (rqstp->rq_arg.len < len + hdr)
+	if (rqstp->rq_arg.len < hdr ||
+	    rqstp->rq_arg.len - hdr < len)
 		return 0;
 
 	args->vec[0].iov_base = (void*)p;

diff ./include/linux/nfsd/xdr3.h~current~ ./include/linux/nfsd/xdr3.h
--- ./include/linux/nfsd/xdr3.h~current~	2005-10-14 12:01:38.000000000 +1000
+++ ./include/linux/nfsd/xdr3.h	2005-10-14 12:03:04.000000000 +1000
@@ -42,7 +42,7 @@ struct nfsd3_writeargs {
 	__u64			offset;
 	__u32			count;
 	int			stable;
-	int			len;
+	__u32			len;
 	struct kvec		vec[RPCSVC_MAXPAGES];
 	int			vlen;
 };

diff ./include/linux/sunrpc/svc.h~current~ ./include/linux/sunrpc/svc.h
--- ./include/linux/sunrpc/svc.h~current~	2005-10-14 12:01:38.000000000 +1000
+++ ./include/linux/sunrpc/svc.h	2005-10-14 12:03:04.000000000 +1000
@@ -171,7 +171,8 @@ xdr_argsize_check(struct svc_rqst *rqstp
 {
 	char *cp = (char *)p;
 	struct kvec *vec = &rqstp->rq_arg.head[0];
-	return cp - (char*)vec->iov_base <= vec->iov_len;
+	return cp >= (char*)vec->iov_base
+		&& cp <= (char*)vec->iov_base + vec->iov_len;
 }
 
 static inline int


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

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

* Re: [PATCH kNFSd 001 of 4] fix setattr-on-symlink error return
  2005-10-14  2:23 ` [PATCH kNFSd 001 of 4] fix setattr-on-symlink error return NeilBrown
@ 2005-10-14 12:29   ` Peter Staubach
  2005-10-14 18:41     ` James Yarbrough
  0 siblings, 1 reply; 11+ messages in thread
From: Peter Staubach @ 2005-10-14 12:29 UTC (permalink / raw)
  To: NeilBrown; +Cc: Andrew Morton, nfs

NeilBrown wrote:

>This is a somewhat cosmetic fix to keep the SpecFS validation test
>from complaining.
>SpecFS want's to try chmod on symlinks, and ext3 and reiser (at least)
>return ENOTSUPP.
>Probably both sides are being silly, but it is easiest to simply make
>it a non-issue and filter out chmod requests on symlinks at the nfsd level.
>

Wouldn't it be better to fix the testsuite to not do this?  Doesn't the
testsuite also fail when run against ext3 and/or reiser file systems?

This is just overhead which will slow the NFS server a tiny bit.

Just out of curiosity, how does the testsuite even generate a chmod(2)
request on a symbolic link?  The chmod(2) system call semantics should
not allow this.

    Thanx...

       ps


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

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

* Re: [PATCH kNFSd 001 of 4] fix setattr-on-symlink error return
  2005-10-14 12:29   ` Peter Staubach
@ 2005-10-14 18:41     ` James Yarbrough
  2005-10-14 19:35       ` Peter Staubach
  0 siblings, 1 reply; 11+ messages in thread
From: James Yarbrough @ 2005-10-14 18:41 UTC (permalink / raw)
  To: Peter Staubach; +Cc: NeilBrown, Andrew Morton, nfs

As I recall, the SpecFS tests exercise the NFS protocols directly, rather
than through the filesystem interface provided by the client OS.

Peter Staubach wrote:
> 
> Just out of curiosity, how does the testsuite even generate a chmod(2)
> request on a symbolic link?  The chmod(2) system call semantics should
> not allow this.

-- 
jmy@sgi.com
650 933 3124

Let's get ta jigglin'!


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

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

* Re: [PATCH kNFSd 001 of 4] fix setattr-on-symlink error return
  2005-10-14 18:41     ` James Yarbrough
@ 2005-10-14 19:35       ` Peter Staubach
  2005-10-14 19:42         ` James Yarbrough
  0 siblings, 1 reply; 11+ messages in thread
From: Peter Staubach @ 2005-10-14 19:35 UTC (permalink / raw)
  To: James Yarbrough; +Cc: NeilBrown, Andrew Morton, nfs

James Yarbrough wrote:

>As I recall, the SpecFS tests exercise the NFS protocols directly, rather
>than through the filesystem interface provided by the client OS.
>
>Peter Staubach wrote:
>  
>
>>Just out of curiosity, how does the testsuite even generate a chmod(2)
>>request on a symbolic link?  The chmod(2) system call semantics should
>>not allow this.
>>    
>>

Are we talking about the SPEC SFS benchmark or something else?

    Thanx...

       ps


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

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

* Re: [PATCH kNFSd 001 of 4] fix setattr-on-symlink error return
  2005-10-14 19:35       ` Peter Staubach
@ 2005-10-14 19:42         ` James Yarbrough
  2005-10-14 19:46           ` Peter Staubach
  0 siblings, 1 reply; 11+ messages in thread
From: James Yarbrough @ 2005-10-14 19:42 UTC (permalink / raw)
  To: Peter Staubach; +Cc: NeilBrown, Andrew Morton, nfs

I thought we were talking about Spec SFS.
I could be confused, though.

-- 
jmy@sgi.com
650 933 3124

Let's get ta jigglin'!


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

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

* Re: [PATCH kNFSd 001 of 4] fix setattr-on-symlink error return
  2005-10-14 19:42         ` James Yarbrough
@ 2005-10-14 19:46           ` Peter Staubach
  2005-10-14 19:54             ` James Yarbrough
  0 siblings, 1 reply; 11+ messages in thread
From: Peter Staubach @ 2005-10-14 19:46 UTC (permalink / raw)
  To: James Yarbrough; +Cc: NeilBrown, Andrew Morton, nfs

James Yarbrough wrote:

>I thought we were talking about Spec SFS.
>I could be confused, though.
>

I assumed that "SpecFS" was something different than "SPEC SFS".  I know
that I am confused.  :-)

       ps


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

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

* Re: [PATCH kNFSd 001 of 4] fix setattr-on-symlink error return
  2005-10-14 19:46           ` Peter Staubach
@ 2005-10-14 19:54             ` James Yarbrough
  0 siblings, 0 replies; 11+ messages in thread
From: James Yarbrough @ 2005-10-14 19:54 UTC (permalink / raw)
  To: Peter Staubach; +Cc: NeilBrown, Andrew Morton, nfs

Peter Staubach wrote:
> 
> I assumed that "SpecFS" was something different than "SPEC SFS".  I know
> that I am confused.  :-)
> 

I thought it was just a typo.
It seems that King Crimson was correct:  "Confusion will be my epitaph"

-- 
jmy@sgi.com
650 933 3124

Let's get ta jigglin'!


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

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

end of thread, other threads:[~2005-10-14 19:54 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-14  2:23 [PATCH kNFSd 000 of 4] Introduction NeilBrown
2005-10-14  2:23 ` [PATCH kNFSd 001 of 4] fix setattr-on-symlink error return NeilBrown
2005-10-14 12:29   ` Peter Staubach
2005-10-14 18:41     ` James Yarbrough
2005-10-14 19:35       ` Peter Staubach
2005-10-14 19:42         ` James Yarbrough
2005-10-14 19:46           ` Peter Staubach
2005-10-14 19:54             ` James Yarbrough
2005-10-14  2:23 ` [PATCH kNFSd 002 of 4] Restore functionality to read from file in /proc/fs/nfsd/ NeilBrown
2005-10-14  2:23 ` [PATCH kNFSd 003 of 4] Allow run-time selection of NFS versions to export NeilBrown
2005-10-14  2:23 ` [PATCH kNFSd 004 of 4] Fix some minor sign problems in nfsd/xdr NeilBrown

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.