Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 01 Apr 2011 13:19:03 +0300
From:      Andriy Gapon <avg@FreeBSD.org>
To:        src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, svn-src-head@FreeBSD.org
Subject:   svn commit r220401- in head: lib/libc/gen sys/kern sys/sys
Message-ID:  <4D95A697.3050009@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
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 */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D95A697.3050009>