From owner-svn-src-all@FreeBSD.ORG Fri Apr 1 10:19:07 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4EC41106566B; Fri, 1 Apr 2011 10:19:07 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 2E1288FC08; Fri, 1 Apr 2011 10:19:05 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id NAA22892; Fri, 01 Apr 2011 13:19:04 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4D95A697.3050009@FreeBSD.org> Date: Fri, 01 Apr 2011 13:19:03 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110309 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, svn-src-head@FreeBSD.org X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: Subject: svn commit r220401- in head: lib/libc/gen sys/kern sys/sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Apr 2011 10:19:07 -0000 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 */