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 */
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to