svn commit r220401- in head: lib/libc/gen sys/kern sys/sys
Andriy Gapon
avg at FreeBSD.org
Fri Apr 1 10:19:07 UTC 2011
Author: avg
Date: Fri Apr 1 07:28:21 2011
New Revision: 220401
URL: http://svn.freebsd.org/changeset/base/220401
Log:
errno: add a new error code EDAVE
This error code should be used when a system, having a superior
knowledge of its state and environment, has to deny a user action.
Introduce the first usage of the new error code in vfs unmount to
deny unmounting of root filesystem.
Inspired by: 2001: The Space Odyssey
Inspired by: GDB 7
Inspired by: EDOOFUS
MFC after: Apr 1 2012
Modified:
lib/libc/gen/errlst.c
sys/kern/vfs_mount.c
sys/sys/errno.h
Modified: lib/libc/gen/errlst.c
===================================================================
--- lib/libc/gen/errlst.c (revision 220181)
+++ lib/libc/gen/errlst.c (working copy)
@@ -152,5 +152,6 @@ const char *const sys_errlist[] = {
"Protocol error", /* 92 - EPROTO */
"Capabilities insufficient", /* 93 - ENOTCAPABLE */
"Not permitted in capability mode", /* 94 - ECAPMODE */
+ "I'm sorry Dave, I'm afraid I can't do that", /* 95 - EDAVE */
};
const int sys_nerr = sizeof(sys_errlist) / sizeof(sys_errlist[0]);
Modified: sys/kern/vfs_mount.c
===================================================================
--- sys/kern/vfs_mount.c (revision 220181)
+++ sys/kern/vfs_mount.c (working copy)
@@ -1206,7 +1206,7 @@ unmount(td, uap)
*/
if (mp->mnt_flag & MNT_ROOTFS) {
mtx_unlock(&Giant);
- return (EINVAL);
+ return (EDAVE);
}
error = dounmount(mp, uap->flags, td);
mtx_unlock(&Giant);
Modified: sys/sys/errno.h
===================================================================
--- sys/sys/errno.h (revision 220181)
+++ sys/sys/errno.h (working copy)
@@ -175,13 +175,17 @@ __END_DECLS
#ifndef _POSIX_SOURCE
#define ENOTCAPABLE 93 /* Capabilities insufficient */
-#define ECAPMODE 94 /* Not permitted in capability mode */
+#define ECAPMODE 94 /* Not permitted in capability mode */
#endif /* _POSIX_SOURCE */
#ifndef _POSIX_SOURCE
-#define ELAST 94 /* Must be equal largest errno */
+#define EDAVE 95 /* I'm sorry Dave, I'm afraid I can't do that. */
#endif /* _POSIX_SOURCE */
+#ifndef _POSIX_SOURCE
+#define ELAST 95 /* Must be equal largest errno */
+#endif /* _POSIX_SOURCE */
+
#ifdef _KERNEL
/* pseudo-errors returned inside kernel to modify return to process */
#define ERESTART (-1) /* restart syscall */
More information about the svn-src-all
mailing list