Module Name:    src
Committed By:   drochner
Date:           Wed Nov  9 18:29:28 UTC 2011

Modified Files:
        src/sys/kern: vfs_xattr.c

Log Message:
for the *xattr() calls, return ENOTSUP rather than EOPNOTSUPP if
the filesystem doesn't support extended attributes -- this is how
it is documented in Linux manpages
(on Linux itself, ENOTSUP and EOPNOTSUPP are the same value)
approved by Emmanuel Dreyfus


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/sys/kern/vfs_xattr.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/vfs_xattr.c
diff -u src/sys/kern/vfs_xattr.c:1.28 src/sys/kern/vfs_xattr.c:1.29
--- src/sys/kern/vfs_xattr.c:1.28	Fri Jul 22 12:46:18 2011
+++ src/sys/kern/vfs_xattr.c	Wed Nov  9 18:29:28 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_xattr.c,v 1.28 2011/07/22 12:46:18 manu Exp $	*/
+/*	$NetBSD: vfs_xattr.c,v 1.29 2011/11/09 18:29:28 drochner Exp $	*/
 
 /*-
  * Copyright (c) 2005, 2008 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_xattr.c,v 1.28 2011/07/22 12:46:18 manu Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_xattr.c,v 1.29 2011/11/09 18:29:28 drochner Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -786,6 +786,8 @@ xattr_native(const char *key) {
 }
 #undef MATCH_NS
 
+#define XATTR_ERRNO(e) ((e) == EOPNOTSUPP ? ENOTSUP : (e))
+
 int
 sys_setxattr(struct lwp *l, const struct sys_setxattr_args *uap, register_t *retval)
 {
@@ -821,7 +823,7 @@ sys_setxattr(struct lwp *l, const struct
 	vrele(vp);
 out:
 	*retval = (error == 0) ? 0 : -1;
-	return (error);
+	return (XATTR_ERRNO(error));
 }
 
 int
@@ -859,7 +861,7 @@ sys_lsetxattr(struct lwp *l, const struc
 	vrele(vp);
 out:
 	*retval = (error == 0) ? 0 : -1;
-	return (error);
+	return (XATTR_ERRNO(error));
 }
 
 int
@@ -898,7 +900,7 @@ sys_fsetxattr(struct lwp *l, const struc
 	fd_putfile(SCARG(uap, fd));
 out:
 	*retval = (error == 0) ? 0 : -1;
-	return (error);
+	return (XATTR_ERRNO(error));
 }
 
 int
@@ -931,7 +933,7 @@ sys_getxattr(struct lwp *l, const struct
 	    attrname, SCARG(uap, value), SCARG(uap, size), l, retval);
 
 	vrele(vp);
-	return (error);
+	return (XATTR_ERRNO(error));
 }
 
 int
@@ -964,7 +966,7 @@ sys_lgetxattr(struct lwp *l, const struc
 	    attrname, SCARG(uap, value), SCARG(uap, size), l, retval);
 
 	vrele(vp);
-	return (error);
+	return (XATTR_ERRNO(error));
 }
 
 int
@@ -998,7 +1000,7 @@ sys_fgetxattr(struct lwp *l, const struc
 	    attrname, SCARG(uap, value), SCARG(uap, size), l, retval);
 
 	fd_putfile(SCARG(uap, fd));
-	return (error);
+	return (XATTR_ERRNO(error));
 }
 
 int
@@ -1051,7 +1053,7 @@ sys_listxattr(struct lwp *l, const struc
 
 out:
 	vrele(vp);
-	return (error);
+	return (XATTR_ERRNO(error));
 }
 
 int
@@ -1102,7 +1104,7 @@ sys_llistxattr(struct lwp *l, const stru
 	*retval = listsize_usr + listsize_sys; 	
 out:
 	vrele(vp);
-	return (error);
+	return (XATTR_ERRNO(error));
 }
 
 int
@@ -1156,7 +1158,7 @@ sys_flistxattr(struct lwp *l, const stru
 out:
 
 	fd_putfile(SCARG(uap, fd));
-	return (error);
+	return (XATTR_ERRNO(error));
 }
 
 int
@@ -1186,7 +1188,7 @@ sys_removexattr(struct lwp *l, const str
 	error = extattr_delete_vp(vp, namespace, attrname, l);
 
 	vrele(vp);
-	return (error);
+	return (XATTR_ERRNO(error));
 }
 
 int
@@ -1216,7 +1218,7 @@ sys_lremovexattr(struct lwp *l, const st
 	error = extattr_delete_vp(vp, namespace, attrname, l);
 
 	vrele(vp);
-	return (error);
+	return (XATTR_ERRNO(error));
 }
 
 int
@@ -1247,5 +1249,5 @@ sys_fremovexattr(struct lwp *l, const st
 	error = extattr_delete_vp(vp, namespace, attrname, l);
 
 	fd_putfile(SCARG(uap, fd));
-	return (error);
+	return (XATTR_ERRNO(error));
 }

Reply via email to