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>