From owner-svn-src-projects@FreeBSD.ORG Sun Nov 30 05:44:58 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A49991065675; Sun, 30 Nov 2008 05:44:58 +0000 (UTC) (envelope-from sam@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9D0398FC13; Sun, 30 Nov 2008 05:44:58 +0000 (UTC) (envelope-from sam@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mAU5iwFZ073771; Sun, 30 Nov 2008 05:44:58 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mAU5iwsJ073770; Sun, 30 Nov 2008 05:44:58 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200811300544.mAU5iwsJ073770@svn.freebsd.org> From: Sam Leffler Date: Sun, 30 Nov 2008 05:44:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185466 - projects/ath_hal X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Nov 2008 05:44:58 -0000 Author: sam Date: Sun Nov 30 05:44:58 2008 New Revision: 185466 URL: http://svn.freebsd.org/changeset/base/185466 Log: move bus+softc typedefs to ah_osdep.h so we can eliminate the opaque write-around; it doesn't work for some platforms (e.g. ia64) and is now pointless Modified: projects/ath_hal/ah.h Modified: projects/ath_hal/ah.h ============================================================================== --- projects/ath_hal/ah.h Sun Nov 30 05:10:14 2008 (r185465) +++ projects/ath_hal/ah.h Sun Nov 30 05:44:58 2008 (r185466) @@ -28,18 +28,6 @@ * reference as the first parameter. */ -/* - * Bus i/o type definitions. We define a platform-independent - * set of types that are mapped to platform-dependent data for - * register read/write operations. We use types that are large - * enough to hold a pointer; smaller data should fit and only - * require type coercion to work. Larger data can be stored - * elsewhere and a reference passed for the bus tag and/or handle. - */ -typedef void* HAL_SOFTC; /* pointer to driver/OS state */ -typedef void* HAL_BUS_TAG; /* opaque bus i/o id tag */ -typedef void* HAL_BUS_HANDLE; /* opaque bus i/o handle */ - #include "ah_osdep.h" /* From owner-svn-src-projects@FreeBSD.ORG Sun Nov 30 05:45:19 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 17B841065670; Sun, 30 Nov 2008 05:45:19 +0000 (UTC) (envelope-from sam@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EB5BD8FC0C; Sun, 30 Nov 2008 05:45:18 +0000 (UTC) (envelope-from sam@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mAU5jIV0073824; Sun, 30 Nov 2008 05:45:18 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mAU5jIWv073823; Sun, 30 Nov 2008 05:45:18 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200811300545.mAU5jIWv073823@svn.freebsd.org> From: Sam Leffler Date: Sun, 30 Nov 2008 05:45:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185467 - projects/ath_hal X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Nov 2008 05:45:19 -0000 Author: sam Date: Sun Nov 30 05:45:18 2008 New Revision: 185467 URL: http://svn.freebsd.org/changeset/base/185467 Log: not needed any more Deleted: projects/ath_hal/version.h From owner-svn-src-projects@FreeBSD.ORG Sun Nov 30 07:24:37 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3C9D2106564A; Sun, 30 Nov 2008 07:24:37 +0000 (UTC) (envelope-from sam@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3A3738FC14; Sun, 30 Nov 2008 07:24:37 +0000 (UTC) (envelope-from sam@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mAU7ObjN078580; Sun, 30 Nov 2008 07:24:37 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mAU7ObXm078579; Sun, 30 Nov 2008 07:24:37 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200811300724.mAU7ObXm078579@svn.freebsd.org> From: Sam Leffler Date: Sun, 30 Nov 2008 07:24:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185469 - projects/ath_hal/ar5212 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Nov 2008 07:24:37 -0000 Author: sam Date: Sun Nov 30 07:24:36 2008 New Revision: 185469 URL: http://svn.freebsd.org/changeset/base/185469 Log: make code compile Modified: projects/ath_hal/ar5212/ar5212_xmit.c Modified: projects/ath_hal/ar5212/ar5212_xmit.c ============================================================================== --- projects/ath_hal/ar5212/ar5212_xmit.c Sun Nov 30 05:55:24 2008 (r185468) +++ projects/ath_hal/ar5212/ar5212_xmit.c Sun Nov 30 07:24:36 2008 (r185469) @@ -548,10 +548,10 @@ ar5212NumTxPending(struct ath_hal *ah, u if (OS_REG_READ(ah, AR_Q_TXE) & (1 << q)) npend = 1; /* arbitrarily return 1 */ } -#ifdef DEBUG +#ifdef AH_DEBUG if (npend && (AH5212(ah)->ah_txq[q].tqi_type == HAL_TX_QUEUE_CAB)) { if (OS_REG_READ(ah, AR_Q_RDYTIMESHDN) & (1 << q)) { - isrPrintf("RTSD on CAB queue\n"); + ath_hal_printf(ah, "RTSD on CAB queue\n"); /* Clear the ReadyTime shutdown status bits */ OS_REG_WRITE(ah, AR_Q_RDYTIMESHDN, 1 << q); } From owner-svn-src-projects@FreeBSD.ORG Sun Nov 30 07:25:04 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4EDB31065673; Sun, 30 Nov 2008 07:25:04 +0000 (UTC) (envelope-from sam@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4CA588FC1A; Sun, 30 Nov 2008 07:25:04 +0000 (UTC) (envelope-from sam@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mAU7P4Ru078658; Sun, 30 Nov 2008 07:25:04 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mAU7P4hO078657; Sun, 30 Nov 2008 07:25:04 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200811300725.mAU7P4hO078657@svn.freebsd.org> From: Sam Leffler Date: Sun, 30 Nov 2008 07:25:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185470 - projects/ath_hal/ar5212 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Nov 2008 07:25:04 -0000 Author: sam Date: Sun Nov 30 07:25:03 2008 New Revision: 185470 URL: http://svn.freebsd.org/changeset/base/185470 Log: purge useless code Modified: projects/ath_hal/ar5212/ar5212_xmit.c Modified: projects/ath_hal/ar5212/ar5212_xmit.c ============================================================================== --- projects/ath_hal/ar5212/ar5212_xmit.c Sun Nov 30 07:24:36 2008 (r185469) +++ projects/ath_hal/ar5212/ar5212_xmit.c Sun Nov 30 07:25:03 2008 (r185470) @@ -548,15 +548,6 @@ ar5212NumTxPending(struct ath_hal *ah, u if (OS_REG_READ(ah, AR_Q_TXE) & (1 << q)) npend = 1; /* arbitrarily return 1 */ } -#ifdef AH_DEBUG - if (npend && (AH5212(ah)->ah_txq[q].tqi_type == HAL_TX_QUEUE_CAB)) { - if (OS_REG_READ(ah, AR_Q_RDYTIMESHDN) & (1 << q)) { - ath_hal_printf(ah, "RTSD on CAB queue\n"); - /* Clear the ReadyTime shutdown status bits */ - OS_REG_WRITE(ah, AR_Q_RDYTIMESHDN, 1 << q); - } - } -#endif return npend; } From owner-svn-src-projects@FreeBSD.ORG Tue Dec 2 20:48:45 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8B6741065675; Tue, 2 Dec 2008 20:48:45 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7B0278FC1E; Tue, 2 Dec 2008 20:48:45 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB2Kmjht071036; Tue, 2 Dec 2008 20:48:45 GMT (envelope-from lulf@svn.freebsd.org) Received: (from lulf@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB2KmjmY071035; Tue, 2 Dec 2008 20:48:45 GMT (envelope-from lulf@svn.freebsd.org) Message-Id: <200812022048.mB2KmjmY071035@svn.freebsd.org> From: Ulf Lilleengen Date: Tue, 2 Dec 2008 20:48:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185569 - projects/csup_cvsmode/contrib/csup X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Dec 2008 20:48:45 -0000 Author: lulf Date: Tue Dec 2 20:48:45 2008 New Revision: 185569 URL: http://svn.freebsd.org/changeset/base/185569 Log: - Fix a bug where deltas was not sorted on RCS dates _and_ revision number. Modified: projects/csup_cvsmode/contrib/csup/rcsfile.c Modified: projects/csup_cvsmode/contrib/csup/rcsfile.c ============================================================================== --- projects/csup_cvsmode/contrib/csup/rcsfile.c Tue Dec 2 19:49:41 2008 (r185568) +++ projects/csup_cvsmode/contrib/csup/rcsfile.c Tue Dec 2 20:48:45 2008 (r185569) @@ -1207,7 +1207,7 @@ rcsfile_insertdelta(struct branch *b, st } else { /* XXX: here we depend on the date being set, but it * should be before this is called anyway. */ - if (rcsnum_cmp(d->revdate, d2->revdate) <= 0) { + if (rcsnum_cmp(d->revdate, d2->revdate) < 0) { LIST_INSERT_BEFORE(d2, d, delta_next); return; } From owner-svn-src-projects@FreeBSD.ORG Tue Dec 2 20:50:37 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C15E1106564A; Tue, 2 Dec 2008 20:50:37 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B121A8FC14; Tue, 2 Dec 2008 20:50:37 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB2KobCO071110; Tue, 2 Dec 2008 20:50:37 GMT (envelope-from lulf@svn.freebsd.org) Received: (from lulf@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB2KobgO071109; Tue, 2 Dec 2008 20:50:37 GMT (envelope-from lulf@svn.freebsd.org) Message-Id: <200812022050.mB2KobgO071109@svn.freebsd.org> From: Ulf Lilleengen Date: Tue, 2 Dec 2008 20:50:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185570 - projects/csup_cvsmode/contrib/csup X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Dec 2008 20:50:37 -0000 Author: lulf Date: Tue Dec 2 20:50:37 2008 New Revision: 185570 URL: http://svn.freebsd.org/changeset/base/185570 Log: - Print out information about what file that is edited before it is edited instead of after. Modified: projects/csup_cvsmode/contrib/csup/updater.c Modified: projects/csup_cvsmode/contrib/csup/updater.c ============================================================================== --- projects/csup_cvsmode/contrib/csup/updater.c Tue Dec 2 20:48:45 2008 (r185569) +++ projects/csup_cvsmode/contrib/csup/updater.c Tue Dec 2 20:50:37 2008 (r185570) @@ -1569,6 +1569,10 @@ updater_rcsedit(struct updater *up, stru /* Macro for making touching an RCS file faster. */ #define UPDATER_OPENRCS(rf, up, path, name, cvsroot, tag) do { \ if ((rf) == NULL) { \ + lprintf(1, " Edit %s", fup->coname); \ + if (fup->attic) \ + lprintf(1, " -> Attic"); \ + lprintf(1, "\n"); \ (rf) = rcsfile_frompath((path), (name), (cvsroot), \ (tag)); \ if ((rf) == NULL) { \ @@ -1660,10 +1664,6 @@ updater_rcsedit(struct updater *up, stru fattr_free(oldfattr); goto finish; } - lprintf(1, " Edit %s", fup->coname); - if (fup->attic) - lprintf(1, " -> Attic"); - lprintf(1, "\n"); /* Write and rename temp file. */ dest = stream_open_file(fup->temppath, From owner-svn-src-projects@FreeBSD.ORG Tue Dec 2 20:51:38 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AED3F106564A; Tue, 2 Dec 2008 20:51:38 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from bene2.itea.ntnu.no (bene2.itea.ntnu.no [IPv6:2001:700:300:3::57]) by mx1.freebsd.org (Postfix) with ESMTP id 3303E8FC08; Tue, 2 Dec 2008 20:51:38 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from localhost (localhost [127.0.0.1]) by bene2.itea.ntnu.no (Postfix) with ESMTP id 25B9D90004; Tue, 2 Dec 2008 21:51:36 +0100 (CET) Received: from nobby (unknown [IPv6:2001:700:300:3::184]) by bene2.itea.ntnu.no (Postfix) with ESMTP id A527390003; Tue, 2 Dec 2008 21:51:35 +0100 (CET) Date: Tue, 2 Dec 2008 20:51:31 +0100 From: Ulf Lilleengen To: src-committers@freebsd.org, svn-src-projects@freebsd.org Message-ID: <20081202195131.GA1483@nobby.lan> References: <200812022048.mB2KmjmY071035@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200812022048.mB2KmjmY071035@svn.freebsd.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: Debian amavisd-new at bene2.itea.ntnu.no Cc: Subject: Re: svn commit: r185569 - projects/csup_cvsmode/contrib/csup X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Dec 2008 20:51:38 -0000 On Tue, Dec 02, 2008 at 08:48:45PM +0000, Ulf Lilleengen wrote: > Author: lulf > Date: Tue Dec 2 20:48:45 2008 > New Revision: 185569 > URL: http://svn.freebsd.org/changeset/base/185569 > > Log: > - Fix a bug where deltas was not sorted on RCS dates _and_ revision number. > > Modified: > projects/csup_cvsmode/contrib/csup/rcsfile.c > Tested by: Christian Weisgerber -- Ulf Lilleengen From owner-svn-src-projects@FreeBSD.ORG Wed Dec 3 20:02:26 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9D6011065678; Wed, 3 Dec 2008 20:02:26 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 889868FC13; Wed, 3 Dec 2008 20:02:26 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB3K2QLe000210; Wed, 3 Dec 2008 20:02:26 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB3K2Qjx000199; Wed, 3 Dec 2008 20:02:26 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200812032002.mB3K2Qjx000199@svn.freebsd.org> From: Kip Macy Date: Wed, 3 Dec 2008 20:02:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185590 - in projects/releng_7_xen: contrib/smbfs contrib/smbfs/lib/smb lib/libarchive lib/libarchive/test release release/doc/en_US.ISO8859-1/hardware release/doc/en_US.ISO8859-1/relno... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Dec 2008 20:02:26 -0000 Author: kmacy Date: Wed Dec 3 20:02:25 2008 New Revision: 185590 URL: http://svn.freebsd.org/changeset/base/185590 Log: IF_RELENG_7 185198:185562 Added: projects/releng_7_xen/share/man/man4/ale.4 projects/releng_7_xen/sys/dev/ale/ projects/releng_7_xen/sys/dev/ale/if_ale.c projects/releng_7_xen/sys/dev/ale/if_alereg.h projects/releng_7_xen/sys/dev/ale/if_alevar.h projects/releng_7_xen/sys/modules/ale/ projects/releng_7_xen/sys/modules/ale/Makefile Modified: projects/releng_7_xen/contrib/smbfs/ (props changed) projects/releng_7_xen/contrib/smbfs/lib/smb/nb_name.c projects/releng_7_xen/lib/libarchive/ (props changed) projects/releng_7_xen/lib/libarchive/archive_entry.c projects/releng_7_xen/lib/libarchive/archive_entry.h projects/releng_7_xen/lib/libarchive/archive_entry_private.h projects/releng_7_xen/lib/libarchive/archive_read_support_format_zip.c projects/releng_7_xen/lib/libarchive/archive_write_disk.c projects/releng_7_xen/lib/libarchive/test/test_entry.c projects/releng_7_xen/lib/libarchive/test/test_read_format_zip.c projects/releng_7_xen/lib/libarchive/test/test_read_format_zip.zip.uu projects/releng_7_xen/lib/libarchive/test/test_write_disk.c projects/releng_7_xen/lib/libarchive/test/test_write_disk_hardlink.c projects/releng_7_xen/release/Makefile projects/releng_7_xen/release/doc/en_US.ISO8859-1/hardware/article.sgml projects/releng_7_xen/release/doc/en_US.ISO8859-1/relnotes/article.sgml projects/releng_7_xen/release/doc/zh_CN.GB2312/hardware/article.sgml projects/releng_7_xen/release/doc/zh_CN.GB2312/relnotes/article.sgml projects/releng_7_xen/release/scripts/package-split.py projects/releng_7_xen/share/man/man4/ (props changed) projects/releng_7_xen/share/man/man4/Makefile projects/releng_7_xen/share/man/man4/altq.4 projects/releng_7_xen/share/man/man4/igb.4 (props changed) projects/releng_7_xen/share/man/man4/miibus.4 projects/releng_7_xen/share/man/man4/vlan.4 projects/releng_7_xen/share/man/man4/zyd.4 projects/releng_7_xen/share/man/man9/ (props changed) projects/releng_7_xen/share/man/man9/bus_dma.9 projects/releng_7_xen/share/man/man9/ktr.9 projects/releng_7_xen/sys/ (props changed) projects/releng_7_xen/sys/amd64/conf/GENERIC projects/releng_7_xen/sys/boot/forth/loader.conf projects/releng_7_xen/sys/boot/i386/boot0/boot0.S projects/releng_7_xen/sys/conf/NOTES projects/releng_7_xen/sys/conf/files projects/releng_7_xen/sys/dev/cxgb/common/cxgb_ael1002.c projects/releng_7_xen/sys/dev/cxgb/common/cxgb_common.h projects/releng_7_xen/sys/dev/cxgb/common/cxgb_ctl_defs.h projects/releng_7_xen/sys/dev/cxgb/common/cxgb_t3_hw.c projects/releng_7_xen/sys/dev/cxgb/cxgb_main.c projects/releng_7_xen/sys/dev/cxgb/cxgb_sge.c projects/releng_7_xen/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c projects/releng_7_xen/sys/dev/cxgb/ulp/tom/cxgb_tom.c projects/releng_7_xen/sys/dev/cxgb/ulp/tom/cxgb_tom_sysctl.c projects/releng_7_xen/sys/dev/e1000/e1000_80003es2lan.c projects/releng_7_xen/sys/dev/e1000/e1000_82540.c projects/releng_7_xen/sys/dev/e1000/e1000_82541.c projects/releng_7_xen/sys/dev/e1000/e1000_82542.c projects/releng_7_xen/sys/dev/e1000/e1000_82543.c projects/releng_7_xen/sys/dev/e1000/e1000_82571.c projects/releng_7_xen/sys/dev/e1000/e1000_82575.c projects/releng_7_xen/sys/dev/e1000/e1000_82575.h projects/releng_7_xen/sys/dev/e1000/e1000_api.c projects/releng_7_xen/sys/dev/e1000/e1000_api.h projects/releng_7_xen/sys/dev/e1000/e1000_defines.h projects/releng_7_xen/sys/dev/e1000/e1000_hw.h projects/releng_7_xen/sys/dev/e1000/e1000_ich8lan.c projects/releng_7_xen/sys/dev/e1000/e1000_ich8lan.h projects/releng_7_xen/sys/dev/e1000/e1000_mac.c projects/releng_7_xen/sys/dev/e1000/e1000_mac.h projects/releng_7_xen/sys/dev/e1000/e1000_manage.c projects/releng_7_xen/sys/dev/e1000/e1000_nvm.c projects/releng_7_xen/sys/dev/e1000/e1000_osdep.c projects/releng_7_xen/sys/dev/e1000/e1000_osdep.h projects/releng_7_xen/sys/dev/e1000/e1000_phy.c projects/releng_7_xen/sys/dev/e1000/e1000_phy.h projects/releng_7_xen/sys/dev/e1000/e1000_regs.h projects/releng_7_xen/sys/dev/e1000/if_em.c projects/releng_7_xen/sys/dev/e1000/if_em.h projects/releng_7_xen/sys/dev/e1000/if_igb.c projects/releng_7_xen/sys/dev/e1000/if_igb.h projects/releng_7_xen/sys/dev/fb/s3_pci.c projects/releng_7_xen/sys/dev/ixgbe/ixgbe.c projects/releng_7_xen/sys/dev/ixgbe/ixgbe.h projects/releng_7_xen/sys/dev/ixgbe/ixgbe_82598.c projects/releng_7_xen/sys/dev/ixgbe/ixgbe_api.c projects/releng_7_xen/sys/dev/ixgbe/ixgbe_api.h projects/releng_7_xen/sys/dev/ixgbe/ixgbe_common.c projects/releng_7_xen/sys/dev/ixgbe/ixgbe_common.h projects/releng_7_xen/sys/dev/ixgbe/ixgbe_osdep.h projects/releng_7_xen/sys/dev/ixgbe/ixgbe_phy.c projects/releng_7_xen/sys/dev/ixgbe/ixgbe_phy.h projects/releng_7_xen/sys/dev/ixgbe/ixgbe_type.h projects/releng_7_xen/sys/dev/random/randomdev.c projects/releng_7_xen/sys/dev/random/randomdev_soft.c projects/releng_7_xen/sys/dev/vr/if_vr.c projects/releng_7_xen/sys/fs/cd9660/cd9660_node.c projects/releng_7_xen/sys/fs/cd9660/cd9660_rrip.c projects/releng_7_xen/sys/i386/conf/GENERIC projects/releng_7_xen/sys/ia64/include/atomic.h projects/releng_7_xen/sys/kern/uipc_socket.c projects/releng_7_xen/sys/modules/Makefile projects/releng_7_xen/sys/modules/cxgb/ (props changed) projects/releng_7_xen/sys/netinet/ip_divert.c projects/releng_7_xen/sys/netinet/ip_output.c projects/releng_7_xen/sys/netinet/raw_ip.c projects/releng_7_xen/sys/netinet6/in6_pcb.c projects/releng_7_xen/sys/pci/agp_i810.c projects/releng_7_xen/sys/pci/agpreg.h projects/releng_7_xen/sys/security/audit/audit_syscalls.c projects/releng_7_xen/sys/security/mac_bsdextended/mac_bsdextended.c projects/releng_7_xen/sys/sys/param.h projects/releng_7_xen/sys/vm/vm_pageout.c projects/releng_7_xen/usr.bin/tar/ (props changed) projects/releng_7_xen/usr.bin/tar/write.c projects/releng_7_xen/usr.sbin/pkg_install/add/main.c projects/releng_7_xen/usr.sbin/sysinstall/ (props changed) projects/releng_7_xen/usr.sbin/sysinstall/devices.c Modified: projects/releng_7_xen/contrib/smbfs/lib/smb/nb_name.c ============================================================================== --- projects/releng_7_xen/contrib/smbfs/lib/smb/nb_name.c Wed Dec 3 18:45:38 2008 (r185589) +++ projects/releng_7_xen/contrib/smbfs/lib/smb/nb_name.c Wed Dec 3 20:02:25 2008 (r185590) @@ -169,7 +169,7 @@ nb_name_encode(struct nb_name *np, u_cha memsetw(cp + 2, NB_NAMELEN - 1, NBENCODE(' ')); cp += NB_ENCNAMELEN; } else { - for (i = 0; *name && i < NB_NAMELEN; i++, cp += 2, name++) + for (i = 0; *name && i < NB_NAMELEN - 1; i++, cp += 2, name++) *(u_short*)cp = NBENCODE(toupper(*name)); i = NB_NAMELEN - i - 1; if (i > 0) { Modified: projects/releng_7_xen/lib/libarchive/archive_entry.c ============================================================================== --- projects/releng_7_xen/lib/libarchive/archive_entry.c Wed Dec 3 18:45:38 2008 (r185589) +++ projects/releng_7_xen/lib/libarchive/archive_entry.c Wed Dec 3 20:02:25 2008 (r185590) @@ -395,8 +395,7 @@ archive_entry_clone(struct archive_entry aes_copy(&entry2->ae_hardlink, &entry->ae_hardlink); aes_copy(&entry2->ae_pathname, &entry->ae_pathname); aes_copy(&entry2->ae_symlink, &entry->ae_symlink); - entry2->ae_hardlinkset = entry->ae_hardlinkset; - entry2->ae_symlinkset = entry->ae_symlinkset; + entry2->ae_set = entry->ae_set; aes_copy(&entry2->ae_uname, &entry->ae_uname); /* Copy ACL data over. */ @@ -455,12 +454,24 @@ archive_entry_atime_nsec(struct archive_ return (entry->ae_stat.aest_atime_nsec); } +int +archive_entry_atime_is_set(struct archive_entry *entry) +{ + return (entry->ae_set & AE_SET_ATIME); +} + time_t archive_entry_ctime(struct archive_entry *entry) { return (entry->ae_stat.aest_ctime); } +int +archive_entry_ctime_is_set(struct archive_entry *entry) +{ + return (entry->ae_set & AE_SET_CTIME); +} + long archive_entry_ctime_nsec(struct archive_entry *entry) { @@ -562,17 +573,17 @@ archive_entry_gname_w(struct archive_ent const char * archive_entry_hardlink(struct archive_entry *entry) { - if (!entry->ae_hardlinkset) - return (NULL); - return (aes_get_mbs(&entry->ae_hardlink)); + if (entry->ae_set & AE_SET_HARDLINK) + return (aes_get_mbs(&entry->ae_hardlink)); + return (NULL); } const wchar_t * archive_entry_hardlink_w(struct archive_entry *entry) { - if (!entry->ae_hardlinkset) - return (NULL); - return (aes_get_wcs(&entry->ae_hardlink)); + if (entry->ae_set & AE_SET_HARDLINK) + return (aes_get_wcs(&entry->ae_hardlink)); + return (NULL); } ino_t @@ -599,6 +610,12 @@ archive_entry_mtime_nsec(struct archive_ return (entry->ae_stat.aest_mtime_nsec); } +int +archive_entry_mtime_is_set(struct archive_entry *entry) +{ + return (entry->ae_set & AE_SET_MTIME); +} + unsigned int archive_entry_nlink(struct archive_entry *entry) { @@ -651,6 +668,12 @@ archive_entry_size(struct archive_entry return (entry->ae_stat.aest_size); } +int +archive_entry_size_is_set(struct archive_entry *entry) +{ + return (entry->ae_set & AE_SET_SIZE); +} + const char * archive_entry_sourcepath(struct archive_entry *entry) { @@ -660,17 +683,17 @@ archive_entry_sourcepath(struct archive_ const char * archive_entry_symlink(struct archive_entry *entry) { - if (!entry->ae_symlinkset) - return (NULL); - return (aes_get_mbs(&entry->ae_symlink)); + if (entry->ae_set & AE_SET_SYMLINK) + return (aes_get_mbs(&entry->ae_symlink)); + return (NULL); } const wchar_t * archive_entry_symlink_w(struct archive_entry *entry) { - if (!entry->ae_symlinkset) - return (NULL); - return (aes_get_wcs(&entry->ae_symlink)); + if (entry->ae_set & AE_SET_SYMLINK) + return (aes_get_wcs(&entry->ae_symlink)); + return (NULL); } uid_t @@ -773,7 +796,9 @@ archive_entry_set_hardlink(struct archiv { aes_set_mbs(&entry->ae_hardlink, target); if (target != NULL) - entry->ae_hardlinkset = 1; + entry->ae_set |= AE_SET_HARDLINK; + else + entry->ae_set &= ~AE_SET_HARDLINK; } void @@ -781,7 +806,9 @@ archive_entry_copy_hardlink(struct archi { aes_copy_mbs(&entry->ae_hardlink, target); if (target != NULL) - entry->ae_hardlinkset = 1; + entry->ae_set |= AE_SET_HARDLINK; + else + entry->ae_set &= ~AE_SET_HARDLINK; } void @@ -789,26 +816,44 @@ archive_entry_copy_hardlink_w(struct arc { aes_copy_wcs(&entry->ae_hardlink, target); if (target != NULL) - entry->ae_hardlinkset = 1; + entry->ae_set |= AE_SET_HARDLINK; + else + entry->ae_set &= ~AE_SET_HARDLINK; } void archive_entry_set_atime(struct archive_entry *entry, time_t t, long ns) { entry->stat_valid = 0; + entry->ae_set |= AE_SET_ATIME; entry->ae_stat.aest_atime = t; entry->ae_stat.aest_atime_nsec = ns; } void +archive_entry_unset_atime(struct archive_entry *entry) +{ + archive_entry_set_atime(entry, 0, 0); + entry->ae_set &= ~AE_SET_ATIME; +} + +void archive_entry_set_ctime(struct archive_entry *entry, time_t t, long ns) { entry->stat_valid = 0; + entry->ae_set |= AE_SET_CTIME; entry->ae_stat.aest_ctime = t; entry->ae_stat.aest_ctime_nsec = ns; } void +archive_entry_unset_ctime(struct archive_entry *entry) +{ + archive_entry_set_ctime(entry, 0, 0); + entry->ae_set &= ~AE_SET_CTIME; +} + +void archive_entry_set_dev(struct archive_entry *entry, dev_t d) { entry->stat_valid = 0; @@ -836,7 +881,7 @@ archive_entry_set_devminor(struct archiv void archive_entry_set_link(struct archive_entry *entry, const char *target) { - if (entry->ae_symlinkset) + if (entry->ae_set & AE_SET_SYMLINK) aes_set_mbs(&entry->ae_symlink, target); else aes_set_mbs(&entry->ae_hardlink, target); @@ -846,7 +891,7 @@ archive_entry_set_link(struct archive_en void archive_entry_copy_link(struct archive_entry *entry, const char *target) { - if (entry->ae_symlinkset) + if (entry->ae_set & AE_SET_SYMLINK) aes_copy_mbs(&entry->ae_symlink, target); else aes_copy_mbs(&entry->ae_hardlink, target); @@ -856,7 +901,7 @@ archive_entry_copy_link(struct archive_e void archive_entry_copy_link_w(struct archive_entry *entry, const wchar_t *target) { - if (entry->ae_symlinkset) + if (entry->ae_set & AE_SET_SYMLINK) aes_copy_wcs(&entry->ae_symlink, target); else aes_copy_wcs(&entry->ae_hardlink, target); @@ -865,7 +910,7 @@ archive_entry_copy_link_w(struct archive int archive_entry_update_link_utf8(struct archive_entry *entry, const char *target) { - if (entry->ae_symlinkset) + if (entry->ae_set & AE_SET_SYMLINK) return (aes_update_utf8(&entry->ae_symlink, target)); else return (aes_update_utf8(&entry->ae_hardlink, target)); @@ -882,11 +927,19 @@ void archive_entry_set_mtime(struct archive_entry *entry, time_t m, long ns) { entry->stat_valid = 0; + entry->ae_set |= AE_SET_MTIME; entry->ae_stat.aest_mtime = m; entry->ae_stat.aest_mtime_nsec = ns; } void +archive_entry_unset_mtime(struct archive_entry *entry) +{ + archive_entry_set_mtime(entry, 0, 0); + entry->ae_set &= ~AE_SET_MTIME; +} + +void archive_entry_set_nlink(struct archive_entry *entry, unsigned int nlink) { entry->stat_valid = 0; @@ -954,6 +1007,14 @@ archive_entry_set_size(struct archive_en { entry->stat_valid = 0; entry->ae_stat.aest_size = s; + entry->ae_set |= AE_SET_SIZE; +} + +void +archive_entry_unset_size(struct archive_entry *entry) +{ + archive_entry_set_size(entry, 0); + entry->ae_set &= ~AE_SET_SIZE; } void @@ -967,7 +1028,9 @@ archive_entry_set_symlink(struct archive { aes_set_mbs(&entry->ae_symlink, linkname); if (linkname != NULL) - entry->ae_symlinkset = 1; + entry->ae_set |= AE_SET_SYMLINK; + else + entry->ae_set &= ~AE_SET_SYMLINK; } void @@ -975,7 +1038,9 @@ archive_entry_copy_symlink(struct archiv { aes_copy_mbs(&entry->ae_symlink, linkname); if (linkname != NULL) - entry->ae_symlinkset = 1; + entry->ae_set |= AE_SET_SYMLINK; + else + entry->ae_set &= ~AE_SET_SYMLINK; } void @@ -983,7 +1048,9 @@ archive_entry_copy_symlink_w(struct arch { aes_copy_wcs(&entry->ae_symlink, linkname); if (linkname != NULL) - entry->ae_symlinkset = 1; + entry->ae_set |= AE_SET_SYMLINK; + else + entry->ae_set &= ~AE_SET_SYMLINK; } void Modified: projects/releng_7_xen/lib/libarchive/archive_entry.h ============================================================================== --- projects/releng_7_xen/lib/libarchive/archive_entry.h Wed Dec 3 18:45:38 2008 (r185589) +++ projects/releng_7_xen/lib/libarchive/archive_entry.h Wed Dec 3 20:02:25 2008 (r185590) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2003-2008 Tim Kientzle * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -152,12 +152,29 @@ __LA_DECL struct archive_entry *archive_ /* * Retrieve fields from an archive_entry. + * + * There are a number of implicit conversions among these fields. For + * example, if a regular string field is set and you read the _w wide + * character field, the entry will implicitly convert narrow-to-wide + * using the current locale. Similarly, dev values are automatically + * updated when you write devmajor or devminor and vice versa. + * + * In addition, fields can be "set" or "unset." Unset string fields + * return NULL, non-string fields have _is_set() functions to test + * whether they've been set. You can "unset" a string field by + * assigning NULL; non-string fields have _unset() functions to + * unset them. + * + * Note: There is one ambiguity in the above; string fields will + * also return NULL when implicit character set conversions fail. + * This is usually what you want. */ - __LA_DECL time_t archive_entry_atime(struct archive_entry *); __LA_DECL long archive_entry_atime_nsec(struct archive_entry *); +__LA_DECL int archive_entry_atime_is_set(struct archive_entry *); __LA_DECL time_t archive_entry_ctime(struct archive_entry *); __LA_DECL long archive_entry_ctime_nsec(struct archive_entry *); +__LA_DECL int archive_entry_ctime_is_set(struct archive_entry *); __LA_DECL dev_t archive_entry_dev(struct archive_entry *); __LA_DECL dev_t archive_entry_devmajor(struct archive_entry *); __LA_DECL dev_t archive_entry_devminor(struct archive_entry *); @@ -175,6 +192,7 @@ __LA_DECL __LA_INO_T archive_entry_ino( __LA_DECL __LA_MODE_T archive_entry_mode(struct archive_entry *); __LA_DECL time_t archive_entry_mtime(struct archive_entry *); __LA_DECL long archive_entry_mtime_nsec(struct archive_entry *); +__LA_DECL int archive_entry_mtime_is_set(struct archive_entry *); __LA_DECL unsigned int archive_entry_nlink(struct archive_entry *); __LA_DECL const char *archive_entry_pathname(struct archive_entry *); __LA_DECL const wchar_t *archive_entry_pathname_w(struct archive_entry *); @@ -183,6 +201,7 @@ __LA_DECL dev_t archive_entry_rdevmajo __LA_DECL dev_t archive_entry_rdevminor(struct archive_entry *); __LA_DECL const char *archive_entry_sourcepath(struct archive_entry *); __LA_DECL int64_t archive_entry_size(struct archive_entry *); +__LA_DECL int archive_entry_size_is_set(struct archive_entry *); __LA_DECL const char *archive_entry_strmode(struct archive_entry *); __LA_DECL const char *archive_entry_symlink(struct archive_entry *); __LA_DECL const wchar_t *archive_entry_symlink_w(struct archive_entry *); @@ -195,10 +214,16 @@ __LA_DECL const wchar_t *archive_entry_u * * Note that string 'set' functions do not copy the string, only the pointer. * In contrast, 'copy' functions do copy the object pointed to. + * + * Note: As of libarchive 2.4, 'set' functions do copy the string and + * are therefore exact synonyms for the 'copy' versions. The 'copy' + * names will be retired in libarchive 3.0. */ __LA_DECL void archive_entry_set_atime(struct archive_entry *, time_t, long); +__LA_DECL void archive_entry_unset_atime(struct archive_entry *); __LA_DECL void archive_entry_set_ctime(struct archive_entry *, time_t, long); +__LA_DECL void archive_entry_unset_ctime(struct archive_entry *); __LA_DECL void archive_entry_set_dev(struct archive_entry *, dev_t); __LA_DECL void archive_entry_set_devmajor(struct archive_entry *, dev_t); __LA_DECL void archive_entry_set_devminor(struct archive_entry *, dev_t); @@ -226,6 +251,7 @@ __LA_DECL void archive_entry_copy_link_w __LA_DECL int archive_entry_update_link_utf8(struct archive_entry *, const char *); __LA_DECL void archive_entry_set_mode(struct archive_entry *, __LA_MODE_T); __LA_DECL void archive_entry_set_mtime(struct archive_entry *, time_t, long); +__LA_DECL void archive_entry_unset_mtime(struct archive_entry *); __LA_DECL void archive_entry_set_nlink(struct archive_entry *, unsigned int); __LA_DECL void archive_entry_set_pathname(struct archive_entry *, const char *); __LA_DECL void archive_entry_copy_pathname(struct archive_entry *, const char *); @@ -236,6 +262,7 @@ __LA_DECL void archive_entry_set_rdev(st __LA_DECL void archive_entry_set_rdevmajor(struct archive_entry *, dev_t); __LA_DECL void archive_entry_set_rdevminor(struct archive_entry *, dev_t); __LA_DECL void archive_entry_set_size(struct archive_entry *, int64_t); +__LA_DECL void archive_entry_unset_size(struct archive_entry *); __LA_DECL void archive_entry_copy_sourcepath(struct archive_entry *, const char *); __LA_DECL void archive_entry_set_symlink(struct archive_entry *, const char *); __LA_DECL void archive_entry_copy_symlink(struct archive_entry *, const char *); @@ -257,6 +284,7 @@ __LA_DECL int archive_entry_update_uname __LA_DECL const struct stat *archive_entry_stat(struct archive_entry *); __LA_DECL void archive_entry_copy_stat(struct archive_entry *, const struct stat *); + /* * ACL routines. This used to simply store and return text-format ACL * strings, but that proved insufficient for a number of reasons: Modified: projects/releng_7_xen/lib/libarchive/archive_entry_private.h ============================================================================== --- projects/releng_7_xen/lib/libarchive/archive_entry_private.h Wed Dec 3 18:45:38 2008 (r185589) +++ projects/releng_7_xen/lib/libarchive/archive_entry_private.h Wed Dec 3 20:02:25 2008 (r185590) @@ -136,6 +136,14 @@ struct archive_entry { dev_t aest_rdevminor; } ae_stat; + int ae_set; /* bitmap of fields that are currently set */ +#define AE_SET_HARDLINK 1 +#define AE_SET_SYMLINK 2 +#define AE_SET_ATIME 4 +#define AE_SET_CTIME 8 +#define AE_SET_MTIME 16 +#define AE_SET_SIZE 64 + /* * Use aes here so that we get transparent mbs<->wcs conversions. */ @@ -147,8 +155,6 @@ struct archive_entry { struct aes ae_pathname; /* Name of entry */ struct aes ae_symlink; /* symlink contents */ struct aes ae_uname; /* Name of owner */ - unsigned char ae_hardlinkset; - unsigned char ae_symlinkset; /* Not used within libarchive; useful for some clients. */ struct aes ae_sourcepath; /* Path this entry is sourced from. */ Modified: projects/releng_7_xen/lib/libarchive/archive_read_support_format_zip.c ============================================================================== --- projects/releng_7_xen/lib/libarchive/archive_read_support_format_zip.c Wed Dec 3 18:45:38 2008 (r185589) +++ projects/releng_7_xen/lib/libarchive/archive_read_support_format_zip.c Wed Dec 3 20:02:25 2008 (r185590) @@ -444,7 +444,9 @@ zip_read_file_header(struct archive_read archive_entry_set_mtime(entry, zip->mtime, 0); archive_entry_set_ctime(entry, zip->ctime, 0); archive_entry_set_atime(entry, zip->atime, 0); - archive_entry_set_size(entry, zip->uncompressed_size); + /* Set the size only if it's meaningful. */ + if (0 == (zip->flags & ZIP_LENGTH_AT_END)) + archive_entry_set_size(entry, zip->uncompressed_size); zip->entry_bytes_remaining = zip->compressed_size; zip->entry_offset = 0; @@ -573,12 +575,16 @@ archive_read_format_zip_read_data(struct } break; } + if (r != ARCHIVE_OK) + return (r); /* Update checksum */ - if (r == ARCHIVE_OK && *size) { + if (*size) zip->entry_crc32 = crc32(zip->entry_crc32, *buff, *size); - } - return (r); + /* Return EOF immediately if this is a non-regular file. */ + if (AE_IFREG != (zip->mode & AE_IFMT)) + return (ARCHIVE_EOF); + return (ARCHIVE_OK); } /* Modified: projects/releng_7_xen/lib/libarchive/archive_write_disk.c ============================================================================== --- projects/releng_7_xen/lib/libarchive/archive_write_disk.c Wed Dec 3 18:45:38 2008 (r185589) +++ projects/releng_7_xen/lib/libarchive/archive_write_disk.c Wed Dec 3 20:02:25 2008 (r185590) @@ -176,7 +176,7 @@ struct archive_write_disk { int fd; /* Current offset for writing data to the file. */ off_t offset; - /* Maximum size of file. */ + /* Maximum size of file, -1 if unknown. */ off_t filesize; /* Dir we were in before this restore; only for deep paths. */ int restore_pwd; @@ -231,7 +231,8 @@ static int set_time(struct archive_write static struct fixup_entry *sort_dir_list(struct fixup_entry *p); static gid_t trivial_lookup_gid(void *, const char *, gid_t); static uid_t trivial_lookup_uid(void *, const char *, uid_t); - +static ssize_t write_data_block(struct archive_write_disk *, + const char *, size_t, off_t); static struct archive_vtable *archive_write_disk_vtable(void); @@ -337,7 +338,10 @@ _archive_write_header(struct archive *_a a->offset = 0; a->uid = a->user_uid; a->mode = archive_entry_mode(a->entry); - a->filesize = archive_entry_size(a->entry); + if (archive_entry_size_is_set(a->entry)) + a->filesize = archive_entry_size(a->entry); + else + a->filesize = -1; archive_strcpy(&(a->_name_data), archive_entry_pathname(a->entry)); a->name = a->_name_data.s; archive_clear_error(&a->archive); @@ -439,15 +443,25 @@ _archive_write_header(struct archive *_a fe->mode = a->mode; } - if (a->deferred & TODO_TIMES) { + if ((a->deferred & TODO_TIMES) + && (archive_entry_mtime_is_set(entry) + || archive_entry_atime_is_set(entry))) { fe = current_fixup(a, archive_entry_pathname(entry)); fe->fixup |= TODO_TIMES; - fe->mtime = archive_entry_mtime(entry); - fe->mtime_nanos = archive_entry_mtime_nsec(entry); - fe->atime = archive_entry_atime(entry); - fe->atime_nanos = archive_entry_atime_nsec(entry); - if (fe->atime == 0 && fe->atime_nanos == 0) + if (archive_entry_mtime_is_set(entry)) { + fe->mtime = archive_entry_mtime(entry); + fe->mtime_nanos = archive_entry_mtime_nsec(entry); + } else { + fe->mtime = a->start_time; + fe->mtime_nanos = 0; + } + if (archive_entry_atime_is_set(entry)) { + fe->atime = archive_entry_atime(entry); + fe->atime_nanos = archive_entry_atime_nsec(entry); + } else { fe->atime = a->start_time; + fe->atime_nanos = 0; + } } if (a->deferred & TODO_FFLAGS) { @@ -486,89 +500,113 @@ archive_write_disk_set_skip_file(struct } static ssize_t -_archive_write_data_block(struct archive *_a, - const void *buff, size_t size, off_t offset) +write_data_block(struct archive_write_disk *a, + const char *buff, size_t size, off_t offset) { - struct archive_write_disk *a = (struct archive_write_disk *)_a; ssize_t bytes_written = 0; - ssize_t block_size, bytes_to_write; - int r = ARCHIVE_OK; + ssize_t block_size = 0, bytes_to_write; + int r; - __archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC, - ARCHIVE_STATE_DATA, "archive_write_disk_block"); - if (a->fd < 0) { - archive_set_error(&a->archive, 0, "File not open"); + if (a->filesize == 0 || a->fd < 0) { + archive_set_error(&a->archive, 0, + "Attempt to write to an empty file"); return (ARCHIVE_WARN); } - archive_clear_error(&a->archive); if (a->flags & ARCHIVE_EXTRACT_SPARSE) { if ((r = _archive_write_disk_lazy_stat(a)) != ARCHIVE_OK) return (r); block_size = a->pst->st_blksize; - } else - block_size = -1; - - if ((off_t)(offset + size) > a->filesize) { - size = (size_t)(a->filesize - a->offset); - archive_set_error(&a->archive, 0, - "Write request too large"); - r = ARCHIVE_WARN; } + if (a->filesize >= 0 && (off_t)(offset + size) > a->filesize) + size = (size_t)(a->filesize - offset); + /* Write the data. */ while (size > 0) { - if (block_size != -1) { - const char *buf; - - for (buf = buff; size; ++buf, --size, ++offset) { - if (*buf != '\0') + if (block_size == 0) { + bytes_to_write = size; + } else { + /* We're sparsifying the file. */ + const char *p, *end; + off_t block_end; + + /* Skip leading zero bytes. */ + for (p = buff, end = buff + size; p < end; ++p) { + if (*p != '\0') break; } + offset += p - buff; + size -= p - buff; + buff = p; if (size == 0) break; - bytes_to_write = block_size - offset % block_size; - buff = buf; - } else + + /* Calculate next block boundary after offset. */ + block_end + = (offset / block_size) * block_size + block_size; + + /* If the adjusted write would cross block boundary, + * truncate it to the block boundary. */ bytes_to_write = size; + if (offset + bytes_to_write > block_end) + bytes_to_write = block_end - offset; + } + /* Seek if necessary to the specified offset. */ if (offset != a->last_offset) { if (lseek(a->fd, offset, SEEK_SET) < 0) { - archive_set_error(&a->archive, errno, "Seek failed"); + archive_set_error(&a->archive, errno, + "Seek failed"); return (ARCHIVE_FATAL); } } - bytes_written = write(a->fd, buff, size); + bytes_written = write(a->fd, buff, bytes_to_write); if (bytes_written < 0) { archive_set_error(&a->archive, errno, "Write failed"); return (ARCHIVE_WARN); } - buff = (const char *)buff + bytes_written; + buff += bytes_written; size -= bytes_written; offset += bytes_written; a->archive.file_position += bytes_written; a->archive.raw_position += bytes_written; a->last_offset = a->offset = offset; } - a->offset = offset; - return (r); + return (bytes_written); +} + +static ssize_t +_archive_write_data_block(struct archive *_a, + const void *buff, size_t size, off_t offset) +{ + struct archive_write_disk *a = (struct archive_write_disk *)_a; + ssize_t r; + + __archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC, + ARCHIVE_STATE_DATA, "archive_write_disk_block"); + + r = write_data_block(a, buff, size, offset); + + if (r < 0) + return (r); + if ((size_t)r < size) { + archive_set_error(&a->archive, 0, + "Write request too large"); + return (ARCHIVE_WARN); + } + return (ARCHIVE_OK); } static ssize_t _archive_write_data(struct archive *_a, const void *buff, size_t size) { struct archive_write_disk *a = (struct archive_write_disk *)_a; - int r; __archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC, ARCHIVE_STATE_DATA, "archive_write_data"); - if (a->fd < 0) - return (ARCHIVE_OK); - r = _archive_write_data_block(_a, buff, size, a->offset); - if (r < ARCHIVE_OK) - return (r); - return size; + return (write_data_block(a, buff, size, a->offset)); } static int @@ -584,7 +622,15 @@ _archive_write_finish_entry(struct archi return (ARCHIVE_OK); archive_clear_error(&a->archive); - if (a->last_offset != a->filesize && a->fd >= 0) { + /* Pad or truncate file to the right size. */ + if (a->fd < 0) { + /* There's no file. */ + } else if (a->filesize < 0) { + /* File size is unknown, so we can't set the size. */ + } else if (a->last_offset == a->filesize) { + /* Last write ended at exactly the filesize; we're done. */ + /* Hopefully, this is the common case. */ + } else { if (ftruncate(a->fd, a->filesize) == -1 && a->filesize == 0) { archive_set_error(&a->archive, errno, @@ -601,7 +647,8 @@ _archive_write_finish_entry(struct archi if (a->st.st_size != a->filesize) { const char nul = '\0'; if (lseek(a->fd, a->st.st_size - 1, SEEK_SET) < 0) { - archive_set_error(&a->archive, errno, "Seek failed"); + archive_set_error(&a->archive, errno, + "Seek failed"); return (ARCHIVE_FATAL); } if (write(a->fd, &nul, 1) < 0) { @@ -609,6 +656,7 @@ _archive_write_finish_entry(struct archi "Write to restore size failed"); return (ARCHIVE_FATAL); } + a->pst = NULL; } } @@ -975,7 +1023,7 @@ create_filesystem_object(struct archive_ * If the hardlink does carry data, let the last * archive entry decide ownership. */ - if (r == 0 && a->filesize == 0) { + if (r == 0 && a->filesize <= 0) { a->todo = 0; a->deferred = 0; } if (r == 0 && a->filesize > 0) { @@ -1635,18 +1683,31 @@ set_time(struct archive_write_disk *a) { struct timeval times[2]; - times[1].tv_sec = archive_entry_mtime(a->entry); - times[1].tv_usec = archive_entry_mtime_nsec(a->entry) / 1000; + /* If no time was provided, we're done. */ + if (!archive_entry_atime_is_set(a->entry) + && !archive_entry_mtime_is_set(a->entry)) + return (ARCHIVE_OK); - times[0].tv_sec = archive_entry_atime(a->entry); - times[0].tv_usec = archive_entry_atime_nsec(a->entry) / 1000; + /* We know at least one is set, so... */ + if (archive_entry_mtime_is_set(a->entry)) { + times[1].tv_sec = archive_entry_mtime(a->entry); + times[1].tv_usec = archive_entry_mtime_nsec(a->entry) / 1000; + } else { + times[1].tv_sec = a->start_time; + times[1].tv_usec = 0; + } /* If no atime was specified, use start time instead. */ /* In theory, it would be marginally more correct to use * time(NULL) here, but that would cost us an extra syscall * for little gain. */ - if (times[0].tv_sec == 0 && times[0].tv_usec == 0) + if (archive_entry_atime_is_set(a->entry)) { + times[0].tv_sec = archive_entry_atime(a->entry); + times[0].tv_usec = archive_entry_atime_nsec(a->entry) / 1000; + } else { times[0].tv_sec = a->start_time; + times[0].tv_usec = 0; + } #ifdef HAVE_FUTIMES if (a->fd >= 0 && futimes(a->fd, times) == 0) { @@ -1684,10 +1745,24 @@ set_time(struct archive_write_disk *a) { struct utimbuf times; - times.modtime = archive_entry_mtime(a->entry); - times.actime = archive_entry_atime(a->entry); - if (times.actime == 0) + /* If no time was provided, we're done. */ + if (!archive_entry_atime_is_set(a->entry) + && !archive_entry_mtime_is_set(a->entry)) + return (ARCHIVE_OK); + + /* We know at least one is set, so... */ + /* Set mtime from mtime if set, else start time. */ + if (archive_entry_mtime_is_set(a->entry)) + times.modtime = archive_entry_mtime(a->entry); + else + times.modtime = a->start_time; + + /* Set atime from provided atime, else mtime. */ + if (archive_entry_atime_is_set(a->entry)) + times.actime = archive_entry_atime(a->entry); + else times.actime = a->start_time; + if (!S_ISLNK(a->mode) && utime(a->name, ×) != 0) { archive_set_error(&a->archive, errno, "Can't update time for %s", a->name); Modified: projects/releng_7_xen/lib/libarchive/test/test_entry.c ============================================================================== --- projects/releng_7_xen/lib/libarchive/test/test_entry.c Wed Dec 3 18:45:38 2008 (r185589) +++ projects/releng_7_xen/lib/libarchive/test/test_entry.c Wed Dec 3 20:02:25 2008 (r185590) @@ -69,14 +69,25 @@ DEFINE_TEST(test_entry) * The following tests are ordered alphabetically by the * name of the field. */ + /* atime */ archive_entry_set_atime(e, 13579, 24680); assertEqualInt(archive_entry_atime(e), 13579); assertEqualInt(archive_entry_atime_nsec(e), 24680); + archive_entry_unset_atime(e); + assertEqualInt(archive_entry_atime(e), 0); + assertEqualInt(archive_entry_atime_nsec(e), 0); + assert(!archive_entry_atime_is_set(e)); + /* ctime */ archive_entry_set_ctime(e, 13580, 24681); assertEqualInt(archive_entry_ctime(e), 13580); assertEqualInt(archive_entry_ctime_nsec(e), 24681); + archive_entry_unset_ctime(e); + assertEqualInt(archive_entry_ctime(e), 0); + assertEqualInt(archive_entry_ctime_nsec(e), 0); + assert(!archive_entry_ctime_is_set(e)); + #if ARCHIVE_VERSION_STAMP >= 1009000 /* dev */ archive_entry_set_dev(e, 235); @@ -85,6 +96,7 @@ DEFINE_TEST(test_entry) skipping("archive_entry_dev()"); #endif /* devmajor/devminor are tested specially below. */ + #if ARCHIVE_VERSION_STAMP >= 1009000 /* filetype */ archive_entry_set_filetype(e, AE_IFREG); @@ -92,10 +104,13 @@ DEFINE_TEST(test_entry) #else skipping("archive_entry_filetype()"); #endif + /* fflags are tested specially below */ + /* gid */ archive_entry_set_gid(e, 204); assertEqualInt(archive_entry_gid(e), 204); + /* gname */ archive_entry_set_gname(e, "group"); assertEqualString(archive_entry_gname(e), "group"); @@ -104,6 +119,7 @@ DEFINE_TEST(test_entry) assertEqualWString(archive_entry_gname_w(e), L"wgroup"); memset(wbuff, 0, sizeof(wbuff)); assertEqualWString(archive_entry_gname_w(e), L"wgroup"); + /* hardlink */ archive_entry_set_hardlink(e, "hardlinkname"); assertEqualString(archive_entry_hardlink(e), "hardlinkname"); @@ -158,10 +174,16 @@ DEFINE_TEST(test_entry) /* mode */ archive_entry_set_mode(e, 0123456); assertEqualInt(archive_entry_mode(e), 0123456); + /* mtime */ archive_entry_set_mtime(e, 13581, 24682); assertEqualInt(archive_entry_mtime(e), 13581); assertEqualInt(archive_entry_mtime_nsec(e), 24682); + archive_entry_unset_mtime(e); + assertEqualInt(archive_entry_mtime(e), 0); + assertEqualInt(archive_entry_mtime_nsec(e), 0); + assert(!archive_entry_mtime_is_set(e)); + #if ARCHIVE_VERSION_STAMP >= 1009000 /* nlink */ archive_entry_set_nlink(e, 736); @@ -169,6 +191,7 @@ DEFINE_TEST(test_entry) #else skipping("archive_entry_nlink()"); #endif + /* pathname */ archive_entry_set_pathname(e, "path"); assertEqualString(archive_entry_pathname(e), "path"); @@ -184,6 +207,7 @@ DEFINE_TEST(test_entry) assertEqualWString(archive_entry_pathname_w(e), L"wpath"); memset(wbuff, 0, sizeof(wbuff)); assertEqualWString(archive_entry_pathname_w(e), L"wpath"); + #if ARCHIVE_VERSION_STAMP >= 1009000 /* rdev */ archive_entry_set_rdev(e, 532); @@ -192,9 +216,14 @@ DEFINE_TEST(test_entry) skipping("archive_entry_rdev()"); #endif /* rdevmajor/rdevminor are tested specially below. */ + /* size */ archive_entry_set_size(e, 987654321); assertEqualInt(archive_entry_size(e), 987654321); + archive_entry_unset_size(e); + assertEqualInt(archive_entry_size(e), 0); + assert(!archive_entry_size_is_set(e)); + /* symlink */ archive_entry_set_symlink(e, "symlinkname"); assertEqualString(archive_entry_symlink(e), "symlinkname"); @@ -207,9 +236,11 @@ DEFINE_TEST(test_entry) #endif archive_entry_copy_symlink_w(e, L"wsymlink"); assertEqualWString(archive_entry_symlink_w(e), L"wsymlink"); + /* uid */ archive_entry_set_uid(e, 83); assertEqualInt(archive_entry_uid(e), 83); + /* uname */ archive_entry_set_uname(e, "user"); assertEqualString(archive_entry_uname(e), "user"); Modified: projects/releng_7_xen/lib/libarchive/test/test_read_format_zip.c ============================================================================== --- projects/releng_7_xen/lib/libarchive/test/test_read_format_zip.c Wed Dec 3 18:45:38 2008 (r185589) +++ projects/releng_7_xen/lib/libarchive/test/test_read_format_zip.c Wed Dec 3 20:02:25 2008 (r185590) @@ -25,6 +25,12 @@ #include "test.h" __FBSDID("$FreeBSD$"); +/* + * The reference file for this has been manually tweaked so that: + * * file2 has length-at-end but file1 does not + * * file2 has an invalid CRC + */ + DEFINE_TEST(test_read_format_zip) { const char *refname = "test_read_format_zip.zip"; @@ -57,7 +63,8 @@ DEFINE_TEST(test_read_format_zip) assertA(0 == archive_read_next_header(a, &ae)); assertEqualString("file2", archive_entry_pathname(ae)); assertEqualInt(1179605932, archive_entry_mtime(ae)); - assertEqualInt(18, archive_entry_size(ae)); + failure("file2 has length-at-end, so we shouldn't see a valid size"); + assertEqualInt(0, archive_entry_size_is_set(ae)); failure("file2 has a bad CRC, so reading to end should fail"); assertEqualInt(ARCHIVE_WARN, archive_read_data(a, buff, 19)); assert(0 == memcmp(buff, "hello\nhello\nhello\n", 18)); Modified: projects/releng_7_xen/lib/libarchive/test/test_read_format_zip.zip.uu ============================================================================== --- projects/releng_7_xen/lib/libarchive/test/test_read_format_zip.zip.uu Wed Dec 3 18:45:38 2008 (r185589) +++ projects/releng_7_xen/lib/libarchive/test/test_read_format_zip.zip.uu Wed Dec 3 20:02:25 2008 (r185590) @@ -1,13 +1,14 @@ $FreeBSD$ begin 644 test_read_format_zip.zip -M4$L#!`H``````%EFLS8````````````````$`!4`9&ER+U54"0`#&55/1AE5 -M3T95>`0`Z`/H`U!+`P04````"`!O9K,V.C=F/0H````2````!0`5`&9I;&4Q -M550)``-!54]&K%M/1E5X!`#H`^@#RTC-R%8T$@H````2````!0`5`&9I;&4R550)``.L6T]&K%M/1E5X!`#H`^@#RTC- -MR%8T$@H````2````!0`-```````!````I(%Y```` -H9FEL93)55`4``ZQ;3T95>```4$L%!@`````#``,`OP```+L````````` +M4$L#!`H`"````%EFLS8````````````````$`!4`9&ER+U54"0`#&55/1M19 +M_4A5>`0`Z`/H`U!+!P@```````````````!02P,$%`````@`;V:S-CHW9CT* +M````$@````4`%0!F:6QE,554"0`#055/1L!9_4A5>`0`Z`/H`\M(S`0`Z`/H`\M(S```4$L!`A<#%``(``@`;V:S-CHW9CT*````$@````4`#0`` +M`````0```.V!1P```&9I;&4Q550%``-!54]&57@``%!+`0(7`Q0`"``(`%IJ +MLS8Z-V8]"@```!(````%``T```````$```#M@8D```!F:6QE,E54!0`#K%M/ +;1E5X``!02P4&``````,``P"_````VP`````` ` end Modified: projects/releng_7_xen/lib/libarchive/test/test_write_disk.c ============================================================================== --- projects/releng_7_xen/lib/libarchive/test/test_write_disk.c Wed Dec 3 18:45:38 2008 (r185589) +++ projects/releng_7_xen/lib/libarchive/test/test_write_disk.c Wed Dec 3 20:02:25 2008 (r185590) @@ -84,7 +84,7 @@ static void create_reg_file(struct archi * the entry being a maximum size. */ archive_entry_set_size(ae, sizeof(data)); - archive_entry_set_mtime(ae, 123456789, 0); + archive_entry_set_mtime(ae, 123456789, 0); assertEqualIntA(ad, 0, archive_write_header(ad, ae)); assertEqualInt(sizeof(data), archive_write_data(ad, data, sizeof(data))); assertEqualIntA(ad, 0, archive_write_finish_entry(ad)); @@ -152,6 +152,61 @@ static void create_reg_file2(struct arch free(compare); free(data); } + +static void create_reg_file3(struct archive_entry *ae, const char *msg) +{ + static const char data[]="abcdefghijklmnopqrstuvwxyz"; + struct archive *ad; + struct stat st; + + /* Write the entry to disk. */ + assert((ad = archive_write_disk_new()) != NULL); + failure("%s", msg); + /* Set the size smaller than the data and verify the truncation. */ + archive_entry_set_size(ae, 5); + assertEqualIntA(ad, 0, archive_write_header(ad, ae)); + assertEqualInt(5, archive_write_data(ad, data, sizeof(data))); + assertEqualIntA(ad, 0, archive_write_finish_entry(ad)); +#if ARCHIVE_VERSION_NUMBER < 2000000 + archive_write_finish(ad); +#else + assertEqualInt(0, archive_write_finish(ad)); +#endif + /* Test the entry on disk. */ + assert(0 == stat(archive_entry_pathname(ae), &st)); + failure("st.st_mode=%o archive_entry_mode(ae)=%o", + st.st_mode, archive_entry_mode(ae)); + assertEqualInt(st.st_mode, (archive_entry_mode(ae) & ~UMASK)); + assertEqualInt(st.st_size, 5); +} + + +static void create_reg_file4(struct archive_entry *ae, const char *msg) +{ + static const char data[]="abcdefghijklmnopqrstuvwxyz"; + struct archive *ad; + struct stat st; + + /* Write the entry to disk. */ + assert((ad = archive_write_disk_new()) != NULL); + /* Leave the size unset. The data should not be truncated. */ + assertEqualIntA(ad, 0, archive_write_header(ad, ae)); + assertEqualInt(ARCHIVE_OK, *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed Dec 3 20:28:32 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7D54C1065677; Wed, 3 Dec 2008 20:28:32 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6B8CC8FC1C; Wed, 3 Dec 2008 20:28:32 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB3KSW11000840; Wed, 3 Dec 2008 20:28:32 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB3KSW8j000838; Wed, 3 Dec 2008 20:28:32 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200812032028.mB3KSW8j000838@svn.freebsd.org> From: Kip Macy Date: Wed, 3 Dec 2008 20:28:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185591 - projects/releng_7_xen/sys/i386/xen X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Dec 2008 20:28:32 -0000 Author: kmacy Date: Wed Dec 3 20:28:32 2008 New Revision: 185591 URL: http://svn.freebsd.org/changeset/base/185591 Log: merge 184954, 185325, 185245 - convert suspend mutex from semaphore to sx lock - make initvalues able to handle an arbitrary number of page directories or page tables at startup - ensure that all pages used as page tables are bzeroed and then mapped read-only - make sure that sysmaps->{CADDR1, CADDR2} are initialized Modified: projects/releng_7_xen/sys/i386/xen/pmap.c projects/releng_7_xen/sys/i386/xen/xen_machdep.c Modified: projects/releng_7_xen/sys/i386/xen/pmap.c ============================================================================== --- projects/releng_7_xen/sys/i386/xen/pmap.c Wed Dec 3 20:02:25 2008 (r185590) +++ projects/releng_7_xen/sys/i386/xen/pmap.c Wed Dec 3 20:28:32 2008 (r185591) @@ -246,7 +246,7 @@ struct sysmaps { static struct sysmaps sysmaps_pcpu[MAXCPU]; pt_entry_t *CMAP1 = 0; static pt_entry_t *CMAP3; -caddr_t CADDR1 = 0, ptvmmap = 0; +caddr_t ptvmmap = 0; static caddr_t CADDR3; struct msgbuf *msgbufp = 0; @@ -459,9 +459,11 @@ pmap_bootstrap(vm_paddr_t firstaddr) mtx_init(&sysmaps->lock, "SYSMAPS", NULL, MTX_DEF); SYSMAP(caddr_t, sysmaps->CMAP1, sysmaps->CADDR1, 1) SYSMAP(caddr_t, sysmaps->CMAP2, sysmaps->CADDR2, 1) + PT_SET_MA(sysmaps->CADDR1, 0); + PT_SET_MA(sysmaps->CADDR2, 0); } - SYSMAP(caddr_t, CMAP1, CADDR1, 1) SYSMAP(caddr_t, CMAP3, CADDR3, 1) + PT_SET_MA(CADDR3, 0); /* @@ -488,7 +490,6 @@ pmap_bootstrap(vm_paddr_t firstaddr) mtx_init(&PMAP2mutex, "PMAP2", NULL, MTX_DEF); virtual_avail = va; - PT_SET_MA(CADDR1, 0); /* * Leave in place an identity mapping (virt == phys) for the low 1 MB Modified: projects/releng_7_xen/sys/i386/xen/xen_machdep.c ============================================================================== --- projects/releng_7_xen/sys/i386/xen/xen_machdep.c Wed Dec 3 20:02:25 2008 (r185590) +++ projects/releng_7_xen/sys/i386/xen/xen_machdep.c Wed Dec 3 20:28:32 2008 (r185591) @@ -821,16 +821,17 @@ initvalues(start_info_t *startinfo) vm_offset_t cur_space, cur_space_pt; struct physdev_set_iopl set_iopl; - vm_paddr_t KPTphys, IdlePTDma; vm_paddr_t console_page_ma, xen_store_ma; - vm_offset_t KPTphysoff, tmpva; + vm_offset_t tmpva; vm_paddr_t shinfo; #ifdef PAE vm_paddr_t IdlePDPTma, IdlePDPTnewma; vm_paddr_t IdlePTDnewma[4]; pd_entry_t *IdlePDPTnew, *IdlePTDnew; + vm_paddr_t IdlePTDma[4]; #else - vm_paddr_t pdir_shadow_ma; + vm_paddr_t IdlePTDma[1]; + #endif unsigned long i; int ncpus = MAXCPU; @@ -850,10 +851,37 @@ initvalues(start_info_t *startinfo) #endif xen_start_info = startinfo; xen_phys_machine = (xen_pfn_t *)startinfo->mfn_list; + IdlePTD = (pd_entry_t *)((uint8_t *)startinfo->pt_base + PAGE_SIZE); + l1_pages = 0; + +#ifdef PAE + l3_pages = 1; + l2_pages = 0; + IdlePDPT = (pd_entry_t *)startinfo->pt_base; + IdlePDPTma = xpmap_ptom(VTOP(startinfo->pt_base)); + for (i = (((KERNBASE >> 18) & PAGE_MASK) >> 30); + (i < 4) && (IdlePDPT[i] != 0); i++) + l2_pages++; + /* + * Note that only one page directory has been allocated at this point. + * Thus, if KERNBASE + */ + for (i = 0; i < l2_pages; i++) + IdlePTDma[i] = xpmap_ptom(VTOP(IdlePTD + i*PAGE_SIZE)); +#else + l3_pages = 0; + l2_pages = 1; +#endif + for (i = (((KERNBASE>>18) & PAGE_MASK)>>PAGE_SHIFT); + (i>PDRSHIFT)); i++) + if (IdlePTD[i] != 0) + l1_pages++; + /* number of pages allocated after the pts + 1*/; cur_space = xen_start_info->pt_base + - ((xen_start_info->nr_pt_frames) + 3 )*PAGE_SIZE; + (l3_pages + l2_pages + l1_pages + 1)*PAGE_SIZE; + printk("initvalues(): wooh - availmem=%x,%x\n", avail_space, cur_space); printk("KERNBASE=%x,pt_base=%x, VTOPFN(base)=%x, nr_pt_frames=%x\n", @@ -861,55 +889,13 @@ initvalues(start_info_t *startinfo) xen_start_info->nr_pt_frames); xendebug_flags = 0; /* 0xffffffff; */ - /* allocate 4 pages for bootmem allocator */ - bootmem_start = bootmem_current = (char *)cur_space; - cur_space += (4 * PAGE_SIZE); - bootmem_end = (char *)cur_space; - - /* allocate page for gdt */ - gdt = (union descriptor *)cur_space; - cur_space += PAGE_SIZE*ncpus; - - /* allocate page for ldt */ - ldt = (union descriptor *)cur_space; cur_space += PAGE_SIZE; - cur_space += PAGE_SIZE; - - HYPERVISOR_shared_info = (shared_info_t *)cur_space; - cur_space += PAGE_SIZE; - - xen_store = (struct ringbuf_head *)cur_space; - cur_space += PAGE_SIZE; - - console_page = (char *)cur_space; - cur_space += PAGE_SIZE; - #ifdef ADD_ISA_HOLE shift_phys_machine(xen_phys_machine, xen_start_info->nr_pages); #endif /* * pre-zero unused mapped pages - mapped on 4MB boundary */ -#ifdef PAE - IdlePDPT = (pd_entry_t *)startinfo->pt_base; - IdlePDPTma = xpmap_ptom(VTOP(startinfo->pt_base)); - /* - * Note that only one page directory has been allocated at this point. - * Thus, if KERNBASE - */ - IdlePTD = (pd_entry_t *)((uint8_t *)startinfo->pt_base + PAGE_SIZE); - IdlePTDma = xpmap_ptom(VTOP(IdlePTD)); - l3_pages = 1; -#else - IdlePTD = (pd_entry_t *)startinfo->pt_base; - IdlePTDma = xpmap_ptom(VTOP(startinfo->pt_base)); - l3_pages = 0; -#endif - l2_pages = 1; - l1_pages = xen_start_info->nr_pt_frames - l2_pages - l3_pages; - - KPTphysoff = (l2_pages + l3_pages)*PAGE_SIZE; - KPTphys = xpmap_ptom(VTOP(startinfo->pt_base + KPTphysoff)); XENPRINTF("IdlePTD %p\n", IdlePTD); XENPRINTF("nr_pages: %ld shared_info: 0x%lx flags: 0x%lx pt_base: 0x%lx " "mod_start: 0x%lx mod_len: 0x%lx\n", @@ -918,16 +904,6 @@ initvalues(start_info_t *startinfo) xen_start_info->mod_start, xen_start_info->mod_len); /* Map proc0's KSTACK */ - proc0kstack = cur_space; cur_space += (KSTACK_PAGES * PAGE_SIZE); - printk("proc0kstack=%u\n", proc0kstack); - - /* vm86/bios stack */ - cur_space += PAGE_SIZE; - - /* Map space for the vm86 region */ - vm86paddr = (vm_offset_t)cur_space; - cur_space += (PAGE_SIZE * 3); - #ifdef PAE IdlePDPTnew = (pd_entry_t *)cur_space; cur_space += PAGE_SIZE; bzero(IdlePDPTnew, PAGE_SIZE); @@ -948,7 +924,6 @@ initvalues(start_info_t *startinfo) for (i = 0; i < 4; i++) IdlePDPTnew[i] = IdlePTDnewma[i] | PG_V; - __asm__("nop;"); /* * * re-map the new PDPT read-only @@ -959,17 +934,30 @@ initvalues(start_info_t *startinfo) * Unpin the current PDPT */ xen_pt_unpin(IdlePDPTma); - - for (i = 0; i < 20; i++) { - int startidx = ((KERNBASE >> 18) & PAGE_MASK) >> 3; - - if (IdlePTD[startidx + i] == 0) { - l1_pages = i; - break; - } - } #endif /* PAE */ + proc0kstack = cur_space; cur_space += (KSTACK_PAGES * PAGE_SIZE); + printk("proc0kstack=%u\n", proc0kstack); + + /* vm86/bios stack */ + cur_space += PAGE_SIZE; + + /* Map space for the vm86 region */ + vm86paddr = (vm_offset_t)cur_space; + cur_space += (PAGE_SIZE * 3); + + /* allocate 4 pages for bootmem allocator */ + bootmem_start = bootmem_current = (char *)cur_space; + cur_space += (4 * PAGE_SIZE); + bootmem_end = (char *)cur_space; + + /* allocate pages for gdt */ + gdt = (union descriptor *)cur_space; + cur_space += PAGE_SIZE*ncpus; + + /* allocate page for ldt */ + ldt = (union descriptor *)cur_space; cur_space += PAGE_SIZE; + cur_space += PAGE_SIZE; /* unmap remaining pages from initial 4MB chunk * @@ -1005,10 +993,10 @@ initvalues(start_info_t *startinfo) * make sure that all the initial page table pages * have been zeroed */ - PT_SET_MA(cur_space_pt, + PT_SET_MA(cur_space, xpmap_ptom(VTOP(cur_space)) | PG_V | PG_RW); - bzero((char *)cur_space_pt, PAGE_SIZE); - PT_SET_MA(cur_space_pt, (vm_paddr_t)0); + bzero((char *)cur_space, PAGE_SIZE); + PT_SET_MA(cur_space, (vm_paddr_t)0); xen_pt_pin(xpmap_ptom(VTOP(cur_space))); xen_queue_pt_update((vm_paddr_t)(IdlePTDnewma[pdir] + curoffset*sizeof(vm_paddr_t)), @@ -1030,6 +1018,15 @@ initvalues(start_info_t *startinfo) IdlePTD = IdlePTDnew; IdlePDPT = IdlePDPTnew; IdlePDPTma = IdlePDPTnewma; + + HYPERVISOR_shared_info = (shared_info_t *)cur_space; + cur_space += PAGE_SIZE; + + xen_store = (struct ringbuf_head *)cur_space; + cur_space += PAGE_SIZE; + + console_page = (char *)cur_space; + cur_space += PAGE_SIZE; /* * shared_info is an unsigned long so this will randomly break if @@ -1038,7 +1035,6 @@ initvalues(start_info_t *startinfo) */ shinfo = xen_start_info->shared_info; PT_SET_MA(HYPERVISOR_shared_info, shinfo | PG_KERNEL); - printk("#4\n"); xen_store_ma = (((vm_paddr_t)xen_start_info->store_mfn) << PAGE_SHIFT); From owner-svn-src-projects@FreeBSD.ORG Wed Dec 3 22:47:34 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3B6E9106564A; Wed, 3 Dec 2008 22:47:34 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 284378FC34; Wed, 3 Dec 2008 22:47:33 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB3MlX1t003651; Wed, 3 Dec 2008 22:47:33 GMT (envelope-from lulf@svn.freebsd.org) Received: (from lulf@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB3MlX8o003646; Wed, 3 Dec 2008 22:47:33 GMT (envelope-from lulf@svn.freebsd.org) Message-Id: <200812032247.mB3MlX8o003646@svn.freebsd.org> From: Ulf Lilleengen Date: Wed, 3 Dec 2008 22:47:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185592 - projects/csup_cvsmode/contrib/csup X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Dec 2008 22:47:34 -0000 Author: lulf Date: Wed Dec 3 22:47:33 2008 New Revision: 185592 URL: http://svn.freebsd.org/changeset/base/185592 Log: A few bugfixes: - Instead of including protocol info in diffs, strip them before adding deltatext and take this into account when applying the diff later. - Don't use strlen when the string in the RCS file may contain garbage. This got caught in the checksumming before, but was not fixed until now. Instead of using strlen, pass the token length when adding log and text entries to a delta. Add an extra length parameter to duptext() to record the token length. - When adding new branches to a file, add them in at the tail instead of the head of the list to get correct ordering when writing out. - Input stream when diffing was opened twice. - Don't expand keywords in diffs between deltas. Modified: projects/csup_cvsmode/contrib/csup/diff.c projects/csup_cvsmode/contrib/csup/rcsfile.c projects/csup_cvsmode/contrib/csup/rcsfile.h projects/csup_cvsmode/contrib/csup/rcsparse.c projects/csup_cvsmode/contrib/csup/updater.c Modified: projects/csup_cvsmode/contrib/csup/diff.c ============================================================================== --- projects/csup_cvsmode/contrib/csup/diff.c Wed Dec 3 20:28:32 2008 (r185591) +++ projects/csup_cvsmode/contrib/csup/diff.c Wed Dec 3 22:47:33 2008 (r185592) @@ -140,10 +140,10 @@ diff_apply(struct stream *rd, struct str } line = stream_getln(rd, NULL); } - if (line == NULL) + if (comode && line == NULL) return (-1); /* If we got ".+", there's no ending newline. */ - if (strcmp(line, ".+") == 0 && !empty) + if (comode && strcmp(line, ".+") == 0 && !empty) noeol = 1; ec.where = 0; while ((line = stream_getln(orig, &size)) != NULL) Modified: projects/csup_cvsmode/contrib/csup/rcsfile.c ============================================================================== --- projects/csup_cvsmode/contrib/csup/rcsfile.c Wed Dec 3 20:28:32 2008 (r185591) +++ projects/csup_cvsmode/contrib/csup/rcsfile.c Wed Dec 3 22:47:33 2008 (r185592) @@ -204,7 +204,7 @@ rcsfile_frompath(char *path, char *name, rf->branch = NULL; rf->strictlock = 0; rf->comment = NULL; - rf->expand = -1; + rf->expand = EXPAND_DEFAULT; rf->desc = NULL; infp = fopen(path, "r"); @@ -263,7 +263,7 @@ rcsfile_send_details(struct rcsfile *rf, if (error) return(error); /* Write expand. */ - if (rf->expand >= 0) { + if (rf->expand != EXPAND_DEFAULT) { error = proto_printf(wr, "E %s\n", keyword_encode_expand(rf->expand)); if (error) @@ -561,7 +561,6 @@ rcsfile_puttext(struct rcsfile *rf, stru error = -1; goto cleanup; } - rd = stream_open_buf(diffbase->text); di->di_rcsfile = rf->name; di->di_cvsroot = rf->cvsroot; di->di_revnum = d->revnum; @@ -569,9 +568,9 @@ rcsfile_puttext(struct rcsfile *rf, stru di->di_author = d->author; di->di_tag = rf->colltag; di->di_state = d->state; - di->di_expand = rf->expand; + di->di_expand = EXPAND_OLD; k = keyword_new(); - + rd = stream_open_buf(diffbase->text); error = diff_reverse(rd, orig, dest, k, di); if (error) { @@ -634,7 +633,7 @@ rcsfile_getdeltatext(struct rcsfile *rf, di->di_author = d->author; di->di_tag = rf->colltag; di->di_state = d->state; - di->di_expand = rf->expand; + di->di_expand = EXPAND_OLD; rd = stream_open_buf(d->text); k = keyword_new(); error = diff_apply(rd, orig, dest, k, di, 0); @@ -1010,7 +1009,7 @@ rcsfile_addelta(struct rcsfile *rf, char b = xmalloc(sizeof(struct branch)); b->revnum = brev; LIST_INIT(&b->deltalist); - STAILQ_INSERT_HEAD(&d_bp->branchlist, b, branch_next); + STAILQ_INSERT_TAIL(&d_bp->branchlist, b, branch_next); } /* Insert both into the tree, and into the lookup list. */ @@ -1222,32 +1221,35 @@ rcsfile_insertdelta(struct branch *b, st /* Add logtext to a delta. Assume the delta already exists. */ int -rcsdelta_addlog(struct delta *d, char *log) +rcsdelta_addlog(struct delta *d, char *log, int len) { struct stream *dest; assert(d != NULL); + /* Strip away '@' at beginning and end. */ log++; - log[strlen(log) - 1] = '\0'; - + len--; + log[len - 1] = '\0'; dest = stream_open_buf(d->log); - stream_write(dest, log, strlen(log)); + stream_write(dest, log, len - 1); stream_close(dest); return (0); } /* Add deltatext to a delta. Assume the delta already exists. */ int -rcsdelta_addtext(struct delta *d, char *text) +rcsdelta_addtext(struct delta *d, char *text, int len) { struct stream *dest; assert(d != NULL); + /* Strip away '@' at beginning and end. */ text++; - text[strlen(text) - 1] = '\0'; + len--; + text[len - 1] = '\0'; dest = stream_open_buf(d->text); - stream_write(dest, text, strlen(text)); + stream_write(dest, text, len - 1); stream_close(dest); return (0); } Modified: projects/csup_cvsmode/contrib/csup/rcsfile.h ============================================================================== --- projects/csup_cvsmode/contrib/csup/rcsfile.h Wed Dec 3 20:28:32 2008 (r185591) +++ projects/csup_cvsmode/contrib/csup/rcsfile.h Wed Dec 3 22:47:33 2008 (r185592) @@ -63,8 +63,8 @@ struct delta *rcsfile_addelta(struct rcs void rcsfile_importdelta(struct rcsfile *, char *, char *, char *, char *, char *); -int rcsdelta_addlog(struct delta *, char *); -int rcsdelta_addtext(struct delta *, char *); +int rcsdelta_addlog(struct delta *, char *, int); +int rcsdelta_addtext(struct delta *, char *, int); void rcsdelta_appendlog(struct delta *, char *, size_t); void rcsdelta_appendtext(struct delta *, char *, size_t); void rcsdelta_setstate(struct delta *, char *); Modified: projects/csup_cvsmode/contrib/csup/rcsparse.c ============================================================================== --- projects/csup_cvsmode/contrib/csup/rcsparse.c Wed Dec 3 20:28:32 2008 (r185591) +++ projects/csup_cvsmode/contrib/csup/rcsparse.c Wed Dec 3 22:47:33 2008 (r185592) @@ -45,7 +45,7 @@ static void asserttoken(yyscan_t *, int) static int parse_admin(struct rcsfile *, yyscan_t *); static int parse_deltas(struct rcsfile *, yyscan_t *, int); static int parse_deltatexts(struct rcsfile *, yyscan_t *, int); -static char *duptext(yyscan_t *); +static char *duptext(yyscan_t *, int *); struct string { char *str; @@ -63,15 +63,18 @@ asserttoken(yyscan_t *sp, int token) } static char * -duptext(yyscan_t *sp) +duptext(yyscan_t *sp, int *arglen) { char *tmp, *val; int len; tmp = rcsget_text(*sp); len = rcsget_leng(*sp); - val = xmalloc(len + 2); - strlcpy(val, tmp, len + 1); + val = xmalloc(len + 1); + memcpy(val, tmp, len); + val[len] = '\0'; + if (arglen != NULL) + *arglen = len; return (val); } @@ -92,7 +95,7 @@ rcsparse_run(struct rcsfile *rf, FILE *i tok = parse_deltas(rf, &scanner, tok); assert(tok == KEYWORD); asserttoken(&scanner, STRING); - desc = duptext(&scanner); + desc = duptext(&scanner, NULL); rcsfile_setval(rf, RCSFILE_DESC, desc); free(desc); tok = rcslex(scanner); @@ -118,7 +121,7 @@ parse_admin(struct rcsfile *rf, yyscan_t /* head {num}; */ asserttoken(sp, KEYWORD); asserttoken(sp, NUM); - head = duptext(sp); + head = duptext(sp, NULL); rcsfile_setval(rf, RCSFILE_HEAD, head); free(head); asserttoken(sp, SEMIC); @@ -127,7 +130,7 @@ parse_admin(struct rcsfile *rf, yyscan_t token = rcslex(*sp); if (token == KEYWORD_TWO) { asserttoken(sp, NUM); - branch = duptext(sp); + branch = duptext(sp, NULL); rcsfile_setval(rf, RCSFILE_BRANCH, branch); free(branch); asserttoken(sp, SEMIC); @@ -138,7 +141,7 @@ parse_admin(struct rcsfile *rf, yyscan_t assert(token == KEYWORD); token = rcslex(*sp); while (token == ID) { - id = duptext(sp); + id = duptext(sp, NULL); rcsfile_addaccess(rf, id); free(id); token = rcslex(*sp); @@ -149,10 +152,10 @@ parse_admin(struct rcsfile *rf, yyscan_t asserttoken(sp, KEYWORD); token = rcslex(*sp); while (token == ID) { - tag = duptext(sp); + tag = duptext(sp, NULL); asserttoken(sp, COLON); asserttoken(sp, NUM); - revnum = duptext(sp); + revnum = duptext(sp, NULL); rcsfile_importtag(rf, tag, revnum); free(tag); free(revnum); @@ -182,7 +185,7 @@ parse_admin(struct rcsfile *rf, yyscan_t } else if (!strcmp(tmp, "comment")) { token = rcslex(*sp); if (token == STRING) { - comment = duptext(sp); + comment = duptext(sp, NULL); rcsfile_setval(rf, RCSFILE_COMMENT, comment); free(comment); } @@ -191,7 +194,7 @@ parse_admin(struct rcsfile *rf, yyscan_t } else if (!strcmp(tmp, "expand")) { token = rcslex(*sp); if (token == STRING) { - expand = duptext(sp); + expand = duptext(sp, NULL); rcsfile_setval(rf, RCSFILE_EXPAND, expand); free(expand); } @@ -231,22 +234,22 @@ parse_deltas(struct rcsfile *rf, yyscan_ /* num */ assert(token == NUM); - revnum = duptext(sp); + revnum = duptext(sp, NULL); /* date num; */ asserttoken(sp, KEYWORD); asserttoken(sp, NUM); - revdate = duptext(sp); + revdate = duptext(sp, NULL); asserttoken(sp, SEMIC); /* author id; */ asserttoken(sp, KEYWORD); asserttoken(sp, ID); - author = duptext(sp); + author = duptext(sp, NULL); asserttoken(sp, SEMIC); /* state {id}; */ asserttoken(sp, KEYWORD); token = rcslex(*sp); if (token == ID) { - state = duptext(sp); + state = duptext(sp, NULL); token = rcslex(*sp); } assert(token == SEMIC); @@ -261,7 +264,7 @@ parse_deltas(struct rcsfile *rf, yyscan_ asserttoken(sp, KEYWORD); token = rcslex(*sp); if (token == NUM) { - next = duptext(sp); + next = duptext(sp, NULL); token = rcslex(*sp); } assert(token == SEMIC); @@ -298,7 +301,7 @@ parse_deltatexts(struct rcsfile *rf, yys { struct delta *d; char *log, *revnum, *text; - int error; + int error, len; error = 0; /* In case we don't have deltatexts. */ @@ -307,7 +310,7 @@ parse_deltatexts(struct rcsfile *rf, yys do { /* num */ assert(token == NUM); - revnum = duptext(sp); + revnum = duptext(sp, NULL); /* Get delta we're adding text to. */ d = rcsfile_getdelta(rf, revnum); free(revnum); @@ -315,8 +318,8 @@ parse_deltatexts(struct rcsfile *rf, yys /* log string */ asserttoken(sp, KEYWORD); asserttoken(sp, STRING); - log = duptext(sp); - error = rcsdelta_addlog(d, log); + log = duptext(sp, &len); + error = rcsdelta_addlog(d, log, len); free(log); if (error) return (-1); @@ -335,8 +338,8 @@ parse_deltatexts(struct rcsfile *rf, yys /* text string */ assert(token == KEYWORD); asserttoken(sp, STRING); - text = duptext(sp); - error = rcsdelta_addtext(d, text); + text = duptext(sp, &len); + error = rcsdelta_addtext(d, text, len); /* * If this happens, something is wrong with the RCS file, and it * should be resent. Modified: projects/csup_cvsmode/contrib/csup/updater.c ============================================================================== --- projects/csup_cvsmode/contrib/csup/updater.c Wed Dec 3 20:28:32 2008 (r185591) +++ projects/csup_cvsmode/contrib/csup/updater.c Wed Dec 3 22:47:33 2008 (r185592) @@ -1724,7 +1724,6 @@ updater_addelta(struct rcsfile *rf, stru { struct delta *d; size_t size; - int stop; char *author, *cmd, *diffbase, *line, *logline; char *revdate, *revnum, *state, *textline; @@ -1780,15 +1779,15 @@ updater_addelta(struct rcsfile *rf, stru break; case 'T': /* Do the same as in 'C' command. */ - stop = 0; textline = stream_getln(rd, &size); while (textline != NULL) { if (size == 2 && *textline == '.') - stop = 1; + break; if (size == 3 && memcmp(textline, ".+", 2) == 0) { /* Truncate newline. */ - stop = 1; + rcsdelta_truncatetext(d, -1); + break; } if (size >= 3 && memcmp(textline, "..", 2) == 0) { @@ -1796,8 +1795,6 @@ updater_addelta(struct rcsfile *rf, stru textline++; } rcsdelta_appendtext(d, textline, size); - if (stop) - break; textline = stream_getln(rd, &size); } break; From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 04:11:16 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0D1CD106564A; Thu, 4 Dec 2008 04:11:16 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F17DD8FC08; Thu, 4 Dec 2008 04:11:15 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB44BFH0010255; Thu, 4 Dec 2008 04:11:15 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB44BFCD010254; Thu, 4 Dec 2008 04:11:15 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200812040411.mB44BFCD010254@svn.freebsd.org> From: Kip Macy Date: Thu, 4 Dec 2008 04:11:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185599 - projects/releng_7_xen/sys/vm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 04:11:16 -0000 Author: kmacy Date: Thu Dec 4 04:11:15 2008 New Revision: 185599 URL: http://svn.freebsd.org/changeset/base/185599 Log: ensure that start of available memory is after allocated pages Modified: projects/releng_7_xen/sys/vm/vm_page.c Modified: projects/releng_7_xen/sys/vm/vm_page.c ============================================================================== --- projects/releng_7_xen/sys/vm/vm_page.c Thu Dec 4 02:23:01 2008 (r185598) +++ projects/releng_7_xen/sys/vm/vm_page.c Thu Dec 4 04:11:15 2008 (r185599) @@ -246,6 +246,9 @@ vm_page_startup(vm_offset_t vaddr) ++nblocks; total += size; } +#ifdef XEN + low_water = 0; +#endif end = phys_avail[biggestone+1]; From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 04:11:42 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 07FDA106564A; Thu, 4 Dec 2008 04:11:42 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EC9778FC1B; Thu, 4 Dec 2008 04:11:41 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB44BfjY010298; Thu, 4 Dec 2008 04:11:41 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB44Bf3X010297; Thu, 4 Dec 2008 04:11:41 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200812040411.mB44Bf3X010297@svn.freebsd.org> From: Kip Macy Date: Thu, 4 Dec 2008 04:11:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185600 - projects/releng_6_xen/sys/vm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 04:11:42 -0000 Author: kmacy Date: Thu Dec 4 04:11:41 2008 New Revision: 185600 URL: http://svn.freebsd.org/changeset/base/185600 Log: ensure that start of available memory is after allocated pages Modified: projects/releng_6_xen/sys/vm/vm_page.c Modified: projects/releng_6_xen/sys/vm/vm_page.c ============================================================================== --- projects/releng_6_xen/sys/vm/vm_page.c Thu Dec 4 04:11:15 2008 (r185599) +++ projects/releng_6_xen/sys/vm/vm_page.c Thu Dec 4 04:11:41 2008 (r185600) @@ -238,6 +238,10 @@ vm_page_startup(vm_offset_t vaddr) total += size; } +#ifdef XEN + low_water = 0; +#endif + end = phys_avail[biggestone+1]; /* From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 04:12:46 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 59A851065670; Thu, 4 Dec 2008 04:12:46 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4A27D8FC1B; Thu, 4 Dec 2008 04:12:46 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB44CkGA010353; Thu, 4 Dec 2008 04:12:46 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB44Ckgt010352; Thu, 4 Dec 2008 04:12:46 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200812040412.mB44Ckgt010352@svn.freebsd.org> From: Kip Macy Date: Thu, 4 Dec 2008 04:12:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185601 - projects/release_6_3_xen/sys/vm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 04:12:46 -0000 Author: kmacy Date: Thu Dec 4 04:12:46 2008 New Revision: 185601 URL: http://svn.freebsd.org/changeset/base/185601 Log: ensure that start of available memory is after allocated pages Modified: projects/release_6_3_xen/sys/vm/vm_page.c Modified: projects/release_6_3_xen/sys/vm/vm_page.c ============================================================================== --- projects/release_6_3_xen/sys/vm/vm_page.c Thu Dec 4 04:11:41 2008 (r185600) +++ projects/release_6_3_xen/sys/vm/vm_page.c Thu Dec 4 04:12:46 2008 (r185601) @@ -238,6 +238,10 @@ vm_page_startup(vm_offset_t vaddr) total += size; } +#ifdef XEN + low_water = 0; +#endif + end = phys_avail[biggestone+1]; /* From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 05:15:03 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8C8421065670; Thu, 4 Dec 2008 05:15:03 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7B2888FC13; Thu, 4 Dec 2008 05:15:03 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB45F3bf011580; Thu, 4 Dec 2008 05:15:03 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB45F3jE011579; Thu, 4 Dec 2008 05:15:03 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200812040515.mB45F3jE011579@svn.freebsd.org> From: Kip Macy Date: Thu, 4 Dec 2008 05:15:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185602 - projects/releng_7_xen/sys/i386/xen X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 05:15:03 -0000 Author: kmacy Date: Thu Dec 4 05:15:03 2008 New Revision: 185602 URL: http://svn.freebsd.org/changeset/base/185602 Log: fix initialization for case of normal kernbase remove unused shutdown code Modified: projects/releng_7_xen/sys/i386/xen/xen_machdep.c Modified: projects/releng_7_xen/sys/i386/xen/xen_machdep.c ============================================================================== --- projects/releng_7_xen/sys/i386/xen/xen_machdep.c Thu Dec 4 04:12:46 2008 (r185601) +++ projects/releng_7_xen/sys/i386/xen/xen_machdep.c Thu Dec 4 05:15:03 2008 (r185602) @@ -36,8 +36,10 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include +#include #include #include #include @@ -61,7 +63,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -859,7 +860,7 @@ initvalues(start_info_t *startinfo) l2_pages = 0; IdlePDPT = (pd_entry_t *)startinfo->pt_base; IdlePDPTma = xpmap_ptom(VTOP(startinfo->pt_base)); - for (i = (((KERNBASE >> 18) & PAGE_MASK) >> 30); + for (i = (KERNBASE >> 30); (i < 4) && (IdlePDPT[i] != 0); i++) l2_pages++; /* @@ -868,15 +869,20 @@ initvalues(start_info_t *startinfo) */ for (i = 0; i < l2_pages; i++) IdlePTDma[i] = xpmap_ptom(VTOP(IdlePTD + i*PAGE_SIZE)); + + l2_pages = (l2_pages == 0) ? 1 : l2_pages; #else l3_pages = 0; l2_pages = 1; #endif for (i = (((KERNBASE>>18) & PAGE_MASK)>>PAGE_SHIFT); - (i>PDRSHIFT)); i++) - if (IdlePTD[i] != 0) - l1_pages++; - + (i>PDRSHIFT)); i++) { + + if (IdlePTD[i] == 0) + break; + l1_pages++; + } + /* number of pages allocated after the pts + 1*/; cur_space = xen_start_info->pt_base + @@ -1119,220 +1125,6 @@ trap_info_t trap_table[] = { }; -static void -shutdown_handler(struct xenbus_watch *watch, - const char **vec, unsigned int len) -{ - char *str; - struct xenbus_transaction xbt; - int err, howto; - struct reboot_args uap; - - howto = 0; - - again: - err = xenbus_transaction_start(&xbt); - if (err) - return; - str = (char *)xenbus_read(xbt, "control", "shutdown", NULL); - /* Ignore read errors and empty reads. */ - if (XENBUS_IS_ERR_READ(str)) { - xenbus_transaction_end(xbt, 1); - return; - } - - xenbus_write(xbt, "control", "shutdown", ""); - - err = xenbus_transaction_end(xbt, 0); - if (err == EAGAIN) { - free(str, M_DEVBUF); - goto again; - } - - if (strcmp(str, "reboot") == 0) - howto = 0; - else if (strcmp(str, "poweroff") == 0) - howto |= (RB_POWEROFF | RB_HALT); - else if (strcmp(str, "halt") == 0) - howto |= RB_HALT; - else if (strcmp(str, "suspend") == 0) - howto = -1; - else { - printf("Ignoring shutdown request: %s\n", str); - goto done; - } -#ifdef notyet - if (howto == -1) { - do_suspend(NULL); - goto done; - } -#else - if (howto == -1) { - printf("suspend not currently supported\n"); - goto done; - } -#endif - uap.opt = howto; - reboot(curthread, &uap); - done: - free(str, M_DEVBUF); -} - -static struct xenbus_watch shutdown_watch = { - .node = "control/shutdown", - .callback = shutdown_handler -}; - - -void setup_shutdown_watcher(void *unused); - - -void -setup_shutdown_watcher(void *unused) -{ - if (register_xenbus_watch(&shutdown_watch)) - printf("Failed to set shutdown watcher\n"); -} - - -SYSINIT(shutdown, SI_SUB_RUN_SCHEDULER, SI_ORDER_ANY, setup_shutdown_watcher, NULL); - -#ifdef notyet - -static void -xen_suspend(void *ignore) -{ - int i, j, k, fpp; - - extern void time_resume(void); - extern unsigned long max_pfn; - extern unsigned long *pfn_to_mfn_frame_list_list; - extern unsigned long *pfn_to_mfn_frame_list[]; - -#ifdef CONFIG_SMP -#error "do_suspend must be run cpu 0 - need to create separate thread" - cpumask_t prev_online_cpus; - int vcpu_prepare(int vcpu); -#endif - - int err = 0; - - PANIC_IF(smp_processor_id() != 0); - -#if defined(CONFIG_SMP) && !defined(CONFIG_HOTPLUG_CPU) - if (num_online_cpus() > 1) { - printk(KERN_WARNING "Can't suspend SMP guests " - "without CONFIG_HOTPLUG_CPU\n"); - return -EOPNOTSUPP; - } -#endif - - xenbus_suspend(); - -#ifdef CONFIG_SMP - lock_cpu_hotplug(); - /* - * Take all other CPUs offline. We hold the hotplug semaphore to - * avoid other processes bringing up CPUs under our feet. - */ - cpus_clear(prev_online_cpus); - while (num_online_cpus() > 1) { - for_each_online_cpu(i) { - if (i == 0) - continue; - unlock_cpu_hotplug(); - err = cpu_down(i); - lock_cpu_hotplug(); - if (err != 0) { - printk(KERN_CRIT "Failed to take all CPUs " - "down: %d.\n", err); - goto out_reenable_cpus; - } - cpu_set(i, prev_online_cpus); - } - } -#endif /* CONFIG_SMP */ - - preempt_disable(); - - - __cli(); - preempt_enable(); -#ifdef SMP - unlock_cpu_hotplug(); -#endif - gnttab_suspend(); - - pmap_kremove(HYPERVISOR_shared_info); - - xen_start_info->store_mfn = mfn_to_pfn(xen_start_info->store_mfn); - xen_start_info->console.domU.mfn = mfn_to_pfn(xen_start_info->console.domU.mfn); - - /* - * We'll stop somewhere inside this hypercall. When it returns, - * we'll start resuming after the restore. - */ - HYPERVISOR_suspend(VTOMFN(xen_start_info)); - - pmap_kenter_ma(HYPERVISOR_shared_info, xen_start_info->shared_info); - set_fixmap(FIX_SHARED_INFO, xen_start_info->shared_info); - -#if 0 - memset(empty_zero_page, 0, PAGE_SIZE); -#endif - HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list_list = - VTOMFN(pfn_to_mfn_frame_list_list); - - fpp = PAGE_SIZE/sizeof(unsigned long); - for (i = 0, j = 0, k = -1; i < max_pfn; i += fpp, j++) { - if ((j % fpp) == 0) { - k++; - pfn_to_mfn_frame_list_list[k] = - VTOMFN(pfn_to_mfn_frame_list[k]); - j = 0; - } - pfn_to_mfn_frame_list[k][j] = - VTOMFN(&phys_to_machine_mapping[i]); - } - HYPERVISOR_shared_info->arch.max_pfn = max_pfn; - - gnttab_resume(); - - irq_resume(); - - time_resume(); - - __sti(); - - xencons_resume(); - -#ifdef CONFIG_SMP - for_each_cpu(i) - vcpu_prepare(i); - -#endif - /* - * Only resume xenbus /after/ we've prepared our VCPUs; otherwise - * the VCPU hotplug callback can race with our vcpu_prepare - */ - xenbus_resume(); - -#ifdef CONFIG_SMP - out_reenable_cpus: - for_each_cpu_mask(i, prev_online_cpus) { - j = cpu_up(i); - if ((j != 0) && !cpu_online(i)) { - printk(KERN_CRIT "Failed to bring cpu " - "%d back up (%d).\n", - i, j); - err = j; - } - } -#endif - return err; -} - -#endif /* notyet */ /********** CODE WORTH KEEPING ABOVE HERE *****************/ void xen_failsafe_handler(void); From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 05:19:50 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A7D2106564A; Thu, 4 Dec 2008 05:19:50 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 46DA88FC08; Thu, 4 Dec 2008 05:19:50 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB45JoYp011693; Thu, 4 Dec 2008 05:19:50 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB45Jntb011688; Thu, 4 Dec 2008 05:19:49 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200812040519.mB45Jntb011688@svn.freebsd.org> From: Kip Macy Date: Thu, 4 Dec 2008 05:19:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185603 - in projects/releng_7_xen/sys: conf dev/xen/blkfront dev/xen/console dev/xen/netfront i386/include/xen xen xen/xenbus X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 05:19:50 -0000 Author: kmacy Date: Thu Dec 4 05:19:49 2008 New Revision: 185603 URL: http://svn.freebsd.org/changeset/base/185603 Log: Integrate 185444 and 185578 from dfr Use newbus to managed devices and plug a race in netfront Added: projects/releng_7_xen/sys/xen/xenbus/xenbus_if.m projects/releng_7_xen/sys/xen/xenbus/xenbusvar.h Deleted: projects/releng_7_xen/sys/i386/include/xen/xenbus.h Modified: projects/releng_7_xen/sys/conf/files projects/releng_7_xen/sys/dev/xen/blkfront/blkfront.c projects/releng_7_xen/sys/dev/xen/blkfront/block.h projects/releng_7_xen/sys/dev/xen/console/console.c projects/releng_7_xen/sys/dev/xen/netfront/netfront.c projects/releng_7_xen/sys/xen/gnttab.c projects/releng_7_xen/sys/xen/gnttab.h projects/releng_7_xen/sys/xen/xenbus/xenbus_client.c projects/releng_7_xen/sys/xen/xenbus/xenbus_comms.c projects/releng_7_xen/sys/xen/xenbus/xenbus_comms.h projects/releng_7_xen/sys/xen/xenbus/xenbus_dev.c projects/releng_7_xen/sys/xen/xenbus/xenbus_probe.c projects/releng_7_xen/sys/xen/xenbus/xenbus_probe_backend.c projects/releng_7_xen/sys/xen/xenbus/xenbus_xs.c Modified: projects/releng_7_xen/sys/conf/files ============================================================================== --- projects/releng_7_xen/sys/conf/files Thu Dec 4 05:15:03 2008 (r185602) +++ projects/releng_7_xen/sys/conf/files Thu Dec 4 05:19:49 2008 (r185603) @@ -2212,10 +2212,14 @@ xen/evtchn/evtchn_dev.c o xen/xenbus/xenbus_client.c optional xen xen/xenbus/xenbus_comms.c optional xen xen/xenbus/xenbus_dev.c optional xen +xen/xenbus/xenbus_if.m optional xen xen/xenbus/xenbus_probe.c optional xen -xen/xenbus/xenbus_probe_backend.c optional xen +#xen/xenbus/xenbus_probe_backend.c optional xen xen/xenbus/xenbus_xs.c optional xen dev/xen/console/console.c optional xen dev/xen/console/xencons_ring.c optional xen dev/xen/blkfront/blkfront.c optional xen dev/xen/netfront/netfront.c optional xen +#dev/xen/xenpci/xenpci.c optional xen +#xen/xenbus/xenbus_newbus.c optional xenhvm + Modified: projects/releng_7_xen/sys/dev/xen/blkfront/blkfront.c ============================================================================== --- projects/releng_7_xen/sys/dev/xen/blkfront/blkfront.c Thu Dec 4 05:15:03 2008 (r185602) +++ projects/releng_7_xen/sys/dev/xen/blkfront/blkfront.c Thu Dec 4 05:19:49 2008 (r185603) @@ -43,9 +43,10 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include +#include +#include #include #include @@ -53,15 +54,17 @@ __FBSDID("$FreeBSD$"); #include +#include "xenbus_if.h" + #define ASSERT(S) KASSERT(S, (#S)) /* prototypes */ struct xb_softc; static void xb_startio(struct xb_softc *sc); -static void connect(struct blkfront_info *); -static void blkfront_closing(struct xenbus_device *); -static int blkfront_remove(struct xenbus_device *); -static int talk_to_backend(struct xenbus_device *, struct blkfront_info *); -static int setup_blkring(struct xenbus_device *, struct blkfront_info *); +static void connect(device_t, struct blkfront_info *); +static void blkfront_closing(device_t); +static int blkfront_detach(device_t); +static int talk_to_backend(device_t, struct blkfront_info *); +static int setup_blkring(device_t, struct blkfront_info *); static void blkif_int(void *); #if 0 static void blkif_restart_queue(void *arg); @@ -136,22 +139,95 @@ pfn_to_mfn(vm_paddr_t pfn) } +/* + * Translate Linux major/minor to an appropriate name and unit + * number. For HVM guests, this allows us to use the same drive names + * with blkfront as the emulated drives, easing transition slightly. + */ +static void +blkfront_vdevice_to_unit(int vdevice, int *unit, const char **name) +{ + static struct vdev_info { + int major; + int shift; + int base; + const char *name; + } info[] = { + {3, 6, 0, "ad"}, /* ide0 */ + {22, 6, 2, "ad"}, /* ide1 */ + {33, 6, 4, "ad"}, /* ide2 */ + {34, 6, 6, "ad"}, /* ide3 */ + {56, 6, 8, "ad"}, /* ide4 */ + {57, 6, 10, "ad"}, /* ide5 */ + {88, 6, 12, "ad"}, /* ide6 */ + {89, 6, 14, "ad"}, /* ide7 */ + {90, 6, 16, "ad"}, /* ide8 */ + {91, 6, 18, "ad"}, /* ide9 */ + + {8, 4, 0, "da"}, /* scsi disk0 */ + {65, 4, 16, "da"}, /* scsi disk1 */ + {66, 4, 32, "da"}, /* scsi disk2 */ + {67, 4, 48, "da"}, /* scsi disk3 */ + {68, 4, 64, "da"}, /* scsi disk4 */ + {69, 4, 80, "da"}, /* scsi disk5 */ + {70, 4, 96, "da"}, /* scsi disk6 */ + {71, 4, 112, "da"}, /* scsi disk7 */ + {128, 4, 128, "da"}, /* scsi disk8 */ + {129, 4, 144, "da"}, /* scsi disk9 */ + {130, 4, 160, "da"}, /* scsi disk10 */ + {131, 4, 176, "da"}, /* scsi disk11 */ + {132, 4, 192, "da"}, /* scsi disk12 */ + {133, 4, 208, "da"}, /* scsi disk13 */ + {134, 4, 224, "da"}, /* scsi disk14 */ + {135, 4, 240, "da"}, /* scsi disk15 */ + + {202, 4, 0, "xbd"}, /* xbd */ + + {0, 0, 0, NULL}, + }; + int major = vdevice >> 8; + int minor = vdevice & 0xff; + int i; + + if (vdevice & (1 << 28)) { + *unit = (vdevice & ((1 << 28) - 1)) >> 8; + *name = "xbd"; + } + + for (i = 0; info[i].major; i++) { + if (info[i].major == major) { + *unit = info[i].base + (minor >> info[i].shift); + *name = info[i].name; + return; + } + } + + *unit = minor >> 4; + *name = "xbd"; +} + int -xlvbd_add(blkif_sector_t capacity, int unit, uint16_t vdisk_info, uint16_t sector_size, - struct blkfront_info *info) +xlvbd_add(device_t dev, blkif_sector_t capacity, + int vdevice, uint16_t vdisk_info, uint16_t sector_size, + struct blkfront_info *info) { struct xb_softc *sc; - int error = 0; - int unitno = unit - 767; + int unit, error = 0; + const char *name; + + blkfront_vdevice_to_unit(vdevice, &unit, &name); sc = (struct xb_softc *)malloc(sizeof(*sc), M_DEVBUF, M_WAITOK|M_ZERO); - sc->xb_unit = unitno; + sc->xb_unit = unit; sc->xb_info = info; info->sc = sc; + if (strcmp(name, "xbd")) + device_printf(dev, "attaching as %s%d\n", name, unit); + memset(&sc->xb_disk, 0, sizeof(sc->xb_disk)); sc->xb_disk = disk_alloc(); - sc->xb_disk->d_unit = unitno; + sc->xb_disk->d_unit = unit; sc->xb_disk->d_open = blkif_open; sc->xb_disk->d_close = blkif_close; sc->xb_disk->d_ioctl = blkif_ioctl; @@ -226,19 +302,33 @@ xb_strategy(struct bio *bp) return; } +static int +blkfront_probe(device_t dev) +{ + + if (!strcmp(xenbus_get_type(dev), "vbd")) { + device_set_desc(dev, "Virtual Block Device"); + device_quiet(dev); + return (0); + } -/* Setup supplies the backend dir, virtual device. + return (ENXIO); +} -We place an event channel and shared frame entries. -We watch backend to wait if it's ok. */ -static int blkfront_probe(struct xenbus_device *dev, - const struct xenbus_device_id *id) +/* + * Setup supplies the backend dir, virtual device. We place an event + * channel and shared frame entries. We watch backend to wait if it's + * ok. + */ +static int +blkfront_attach(device_t dev) { - int err, vdevice, i; + int err, vdevice, i, unit; struct blkfront_info *info; + const char *name; /* FIXME: Use dynamic device id if this is not set. */ - err = xenbus_scanf(XBT_NIL, dev->nodename, + err = xenbus_scanf(XBT_NIL, xenbus_get_node(dev), "virtual-device", "%i", &vdevice); if (err != 1) { xenbus_dev_fatal(dev, err, "reading virtual-device"); @@ -246,11 +336,11 @@ static int blkfront_probe(struct xenbus_ return (err); } - info = malloc(sizeof(*info), M_DEVBUF, M_NOWAIT|M_ZERO); - if (info == NULL) { - xenbus_dev_fatal(dev, ENOMEM, "allocating info structure"); - return ENOMEM; - } + blkfront_vdevice_to_unit(vdevice, &unit, &name); + if (!strcmp(name, "xbd")) + device_set_unit(dev, unit); + + info = device_get_softc(dev); /* * XXX debug only @@ -270,23 +360,20 @@ static int blkfront_probe(struct xenbus_ info->shadow[BLK_RING_SIZE-1].req.id = 0x0fffffff; /* Front end dir is a number, which is used as the id. */ - info->handle = strtoul(strrchr(dev->nodename,'/')+1, NULL, 0); - dev->dev_driver_data = info; + info->handle = strtoul(strrchr(xenbus_get_node(dev),'/')+1, NULL, 0); err = talk_to_backend(dev, info); if (err) { - free(info, M_DEVBUF); - dev->dev_driver_data = NULL; return err; } - return 0; + return (0); } - -static int blkfront_resume(struct xenbus_device *dev) +static int +blkfront_resume(device_t dev) { - struct blkfront_info *info = dev->dev_driver_data; + struct blkfront_info *info = device_get_softc(dev); int err; DPRINTK("blkfront_resume: %s\n", dev->nodename); @@ -301,8 +388,8 @@ static int blkfront_resume(struct xenbus } /* Common code used when first setting up, and when resuming. */ -static int talk_to_backend(struct xenbus_device *dev, - struct blkfront_info *info) +static int +talk_to_backend(device_t dev, struct blkfront_info *info) { const char *message = NULL; struct xenbus_transaction xbt; @@ -320,19 +407,24 @@ static int talk_to_backend(struct xenbus goto destroy_blkring; } - err = xenbus_printf(xbt, dev->nodename, + err = xenbus_printf(xbt, xenbus_get_node(dev), "ring-ref","%u", info->ring_ref); if (err) { message = "writing ring-ref"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, + err = xenbus_printf(xbt, xenbus_get_node(dev), "event-channel", "%u", irq_to_evtchn_port(info->irq)); if (err) { message = "writing event-channel"; goto abort_transaction; } - + err = xenbus_printf(xbt, xenbus_get_node(dev), + "protocol", "%s", XEN_IO_PROTO_ABI_NATIVE); + if (err) { + message = "writing protocol"; + goto abort_transaction; + } err = xenbus_transaction_end(xbt, 0); if (err) { if (err == -EAGAIN) @@ -340,7 +432,7 @@ static int talk_to_backend(struct xenbus xenbus_dev_fatal(dev, err, "completing transaction"); goto destroy_blkring; } - xenbus_switch_state(dev, XenbusStateInitialised); + xenbus_set_state(dev, XenbusStateInitialised); return 0; @@ -355,7 +447,7 @@ static int talk_to_backend(struct xenbus } static int -setup_blkring(struct xenbus_device *dev, struct blkfront_info *info) +setup_blkring(device_t dev, struct blkfront_info *info) { blkif_sring_t *sring; int err; @@ -378,7 +470,7 @@ setup_blkring(struct xenbus_device *dev, } info->ring_ref = err; - err = bind_listening_port_to_irqhandler(dev->otherend_id, + err = bind_listening_port_to_irqhandler(xenbus_get_otherend_id(dev), "xbd", (driver_intr_t *)blkif_int, info, INTR_TYPE_BIO | INTR_MPSAFE, NULL); if (err <= 0) { @@ -398,10 +490,10 @@ setup_blkring(struct xenbus_device *dev, /** * Callback received when the backend's state changes. */ -static void backend_changed(struct xenbus_device *dev, - XenbusState backend_state) +static void +blkfront_backend_changed(device_t dev, XenbusState backend_state) { - struct blkfront_info *info = dev->dev_driver_data; + struct blkfront_info *info = device_get_softc(dev); DPRINTK("blkfront:backend_changed.\n"); @@ -416,7 +508,7 @@ static void backend_changed(struct xenbu break; case XenbusStateConnected: - connect(info); + connect(dev, info); break; case XenbusStateClosing: @@ -447,7 +539,7 @@ static void backend_changed(struct xenbu ** the details about the physical device - #sectors, size, etc). */ static void -connect(struct blkfront_info *info) +connect(device_t dev, struct blkfront_info *info) { unsigned long sectors, sector_size; unsigned int binfo; @@ -457,28 +549,34 @@ connect(struct blkfront_info *info) (info->connected == BLKIF_STATE_SUSPENDED) ) return; - DPRINTK("blkfront.c:connect:%s.\n", info->xbdev->otherend); + DPRINTK("blkfront.c:connect:%s.\n", xenbus_get_otherend_path(dev)); - err = xenbus_gather(XBT_NIL, info->xbdev->otherend, + err = xenbus_gather(XBT_NIL, xenbus_get_otherend_path(dev), "sectors", "%lu", §ors, "info", "%u", &binfo, "sector-size", "%lu", §or_size, NULL); if (err) { - xenbus_dev_fatal(info->xbdev, err, - "reading backend fields at %s", - info->xbdev->otherend); + xenbus_dev_fatal(dev, err, + "reading backend fields at %s", + xenbus_get_otherend_path(dev)); return; } - err = xenbus_gather(XBT_NIL, info->xbdev->otherend, + err = xenbus_gather(XBT_NIL, xenbus_get_otherend_path(dev), "feature-barrier", "%lu", &info->feature_barrier, NULL); if (err) info->feature_barrier = 0; - xlvbd_add(sectors, info->vdevice, binfo, sector_size, info); + device_printf(dev, "%juMB <%s> at %s", + (uintmax_t) sectors / (1048576 / sector_size), + device_get_desc(dev), + xenbus_get_node(dev)); + bus_print_child_footer(device_get_parent(dev), dev); - (void)xenbus_switch_state(info->xbdev, XenbusStateConnected); + xlvbd_add(dev, sectors, info->vdevice, binfo, sector_size, info); + + (void)xenbus_set_state(dev, XenbusStateConnected); /* Kick pending requests. */ mtx_lock(&blkif_io_lock); @@ -498,11 +596,12 @@ connect(struct blkfront_info *info) * the backend. Once is this done, we can switch to Closed in * acknowledgement. */ -static void blkfront_closing(struct xenbus_device *dev) +static void +blkfront_closing(device_t dev) { - struct blkfront_info *info = dev->dev_driver_data; + struct blkfront_info *info = device_get_softc(dev); - DPRINTK("blkfront_closing: %s removed\n", dev->nodename); + DPRINTK("blkfront_closing: %s removed\n", xenbus_get_node(dev)); if (info->mi) { DPRINTK("Calling xlvbd_del\n"); @@ -510,20 +609,19 @@ static void blkfront_closing(struct xenb info->mi = NULL; } - xenbus_switch_state(dev, XenbusStateClosed); + xenbus_set_state(dev, XenbusStateClosed); } -static int blkfront_remove(struct xenbus_device *dev) +static int +blkfront_detach(device_t dev) { - struct blkfront_info *info = dev->dev_driver_data; + struct blkfront_info *info = device_get_softc(dev); - DPRINTK("blkfront_remove: %s removed\n", dev->nodename); + DPRINTK("blkfront_remove: %s removed\n", xenbus_get_node(dev)); blkif_free(info, 0); - free(info, M_DEVBUF); - return 0; } @@ -631,8 +729,9 @@ blkif_close(struct disk *dp) /* Check whether we have been instructed to close. We will have ignored this request initially, as the device was still mounted. */ - struct xenbus_device * dev = sc->xb_info->xbdev; - XenbusState state = xenbus_read_driver_state(dev->otherend); + device_t dev = sc->xb_info->xbdev; + XenbusState state = + xenbus_read_driver_state(xenbus_get_otherend_path(dev)); if (state == XenbusStateClosing) blkfront_closing(dev); @@ -731,7 +830,7 @@ static int blkif_queue_request(struct bi gnttab_grant_foreign_access_ref( ref, - info->xbdev->otherend_id, + xenbus_get_otherend_id(info->xbdev), buffer_ma >> PAGE_SHIFT, ring_req->operation & 1 ); /* ??? */ info->shadow[id].frame[ring_req->nr_segments] = @@ -952,7 +1051,7 @@ blkif_recover(struct blkfront_info *info for (j = 0; j < req->nr_segments; j++) gnttab_grant_foreign_access_ref( req->seg[j].gref, - info->xbdev->otherend_id, + xenbus_get_otherend_id(info->xbdev), pfn_to_mfn(info->shadow[req->id].frame[j]), 0 /* assume not readonly */); @@ -963,7 +1062,7 @@ blkif_recover(struct blkfront_info *info free(copy, M_DEVBUF); - xenbus_switch_state(info->xbdev, XenbusStateConnected); + xenbus_set_state(info->xbdev, XenbusStateConnected); /* Now safe for us to use the shared ring */ mtx_lock(&blkif_io_lock); @@ -979,48 +1078,30 @@ blkif_recover(struct blkfront_info *info mtx_unlock(&blkif_io_lock); } -static int -blkfront_is_ready(struct xenbus_device *dev) -{ - struct blkfront_info *info = dev->dev_driver_data; - - return info->is_ready; -} - -static struct xenbus_device_id blkfront_ids[] = { - { "vbd" }, - { "" } -}; - - -static struct xenbus_driver blkfront = { - .name = "vbd", - .ids = blkfront_ids, - .probe = blkfront_probe, - .remove = blkfront_remove, - .resume = blkfront_resume, - .otherend_changed = backend_changed, - .is_ready = blkfront_is_ready, -}; - - - -static void -xenbus_init(void) -{ - xenbus_register_frontend(&blkfront); -} +/* ** Driver registration ** */ +static device_method_t blkfront_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, blkfront_probe), + DEVMETHOD(device_attach, blkfront_attach), + DEVMETHOD(device_detach, blkfront_detach), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, blkfront_resume), + + /* Xenbus interface */ + DEVMETHOD(xenbus_backend_changed, blkfront_backend_changed), + + { 0, 0 } +}; + +static driver_t blkfront_driver = { + "xbd", + blkfront_methods, + sizeof(struct blkfront_info), +}; +devclass_t blkfront_devclass; + +DRIVER_MODULE(xbd, xenbus, blkfront_driver, blkfront_devclass, 0, 0); MTX_SYSINIT(ioreq, &blkif_io_lock, "BIO LOCK", MTX_NOWITNESS); /* XXX how does one enroll a lock? */ -SYSINIT(xbdev, SI_SUB_PSEUDO, SI_ORDER_SECOND, xenbus_init, NULL); - -/* - * Local variables: - * mode: C - * c-set-style: "BSD" - * c-basic-offset: 8 - * tab-width: 4 - * indent-tabs-mode: t - * End: - */ Modified: projects/releng_7_xen/sys/dev/xen/blkfront/block.h ============================================================================== --- projects/releng_7_xen/sys/dev/xen/blkfront/block.h Thu Dec 4 05:15:03 2008 (r185602) +++ projects/releng_7_xen/sys/dev/xen/blkfront/block.h Thu Dec 4 05:19:49 2008 (r185603) @@ -60,7 +60,7 @@ struct xb_softc { */ struct blkfront_info { - struct xenbus_device *xbdev; + device_t xbdev; dev_t dev; struct gendisk *gd; int vdevice; @@ -89,7 +89,7 @@ struct blkfront_info /* Note that xlvbd_add doesn't call add_disk for you: you're expected to call add_disk on info->gd once the disk is properly connected up. */ -int xlvbd_add(blkif_sector_t capacity, int device, +int xlvbd_add(device_t, blkif_sector_t capacity, int device, uint16_t vdisk_info, uint16_t sector_size, struct blkfront_info *info); void xlvbd_del(struct blkfront_info *info); Modified: projects/releng_7_xen/sys/dev/xen/console/console.c ============================================================================== --- projects/releng_7_xen/sys/dev/xen/console/console.c Thu Dec 4 05:15:03 2008 (r185602) +++ projects/releng_7_xen/sys/dev/xen/console/console.c Thu Dec 4 05:19:49 2008 (r185603) @@ -294,6 +294,12 @@ xencons_rx(char *buf, unsigned len) int i; struct tty *tp = xccons; +#if 1 + if (len > 0 && buf[0] == '`') + printf("%08lx %08lx\r", + HYPERVISOR_shared_info->evtchn_pending[0], + HYPERVISOR_shared_info->evtchn_mask[0]); +#endif for (i = 0; i < len; i++) { if (xen_console_up) (*linesw[tp->t_line]->l_rint)(buf[i], tp); Modified: projects/releng_7_xen/sys/dev/xen/netfront/netfront.c ============================================================================== --- projects/releng_7_xen/sys/dev/xen/netfront/netfront.c Thu Dec 4 05:15:03 2008 (r185602) +++ projects/releng_7_xen/sys/dev/xen/netfront/netfront.c Thu Dec 4 05:19:49 2008 (r185603) @@ -25,6 +25,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -65,13 +66,14 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include #include #include +#include +#include "xenbus_if.h" #define GRANT_INVALID_REF 0 @@ -117,19 +119,19 @@ static void xn_watchdog(struct ifnet *); static void show_device(struct netfront_info *sc); #ifdef notyet -static void netfront_closing(struct xenbus_device *dev); +static void netfront_closing(device_t dev); #endif static void netif_free(struct netfront_info *info); -static int netfront_remove(struct xenbus_device *dev); +static int netfront_detach(device_t dev); -static int talk_to_backend(struct xenbus_device *dev, struct netfront_info *info); -static int create_netdev(struct xenbus_device *dev, struct ifnet **ifp); +static int talk_to_backend(device_t dev, struct netfront_info *info); +static int create_netdev(device_t dev); static void netif_disconnect_backend(struct netfront_info *info); -static int setup_device(struct xenbus_device *dev, struct netfront_info *info); +static int setup_device(device_t dev, struct netfront_info *info); static void end_access(int ref, void *page); /* Xenolinux helper functions */ -static int network_connect(struct ifnet *ifp); +int network_connect(struct netfront_info *); static void xn_free_rx_ring(struct netfront_info *); @@ -222,7 +224,7 @@ struct netfront_info { grant_ref_t grant_rx_ref[NET_TX_RING_SIZE + 1]; #define TX_MAX_TARGET min(NET_RX_RING_SIZE, 256) - struct xenbus_device *xbdev; + device_t xbdev; int tx_ring_ref; int rx_ring_ref; uint8_t mac[ETHER_ADDR_LEN]; @@ -328,7 +330,7 @@ xennet_get_rx_ref(struct netfront_info * #define WPRINTK(fmt, args...) \ printf("[XEN] " fmt, ##args) #define DPRINTK(fmt, args...) \ - printf("[XEN] " fmt, ##args) + printf("[XEN] %s: " fmt, __func__, ##args) static __inline struct mbuf* @@ -341,14 +343,14 @@ makembuf (struct mbuf *buf) if (! m) return 0; - M_MOVE_PKTHDR(m, buf); + M_MOVE_PKTHDR(m, buf); - m_cljget(m, M_DONTWAIT, MJUMPAGESIZE); + m_cljget(m, M_DONTWAIT, MJUMPAGESIZE); m->m_pkthdr.len = buf->m_pkthdr.len; m->m_len = buf->m_len; - m_copydata(buf, 0, buf->m_pkthdr.len, mtod(m,caddr_t) ); + m_copydata(buf, 0, buf->m_pkthdr.len, mtod(m,caddr_t) ); - m->m_ext.ext_args = (caddr_t *)(uintptr_t)(vtophys(mtod(m,caddr_t)) >> PAGE_SHIFT); + m->m_ext.ext_args = (caddr_t *)(uintptr_t)(vtophys(mtod(m,caddr_t)) >> PAGE_SHIFT); return m; } @@ -360,12 +362,12 @@ makembuf (struct mbuf *buf) * Return 0 on success, or errno on error. */ static int -xen_net_read_mac(struct xenbus_device *dev, uint8_t mac[]) +xen_net_read_mac(device_t dev, uint8_t mac[]) { char *s; int i; char *e; - char *macstr = xenbus_read(XBT_NIL, dev->nodename, "mac", NULL); + char *macstr = xenbus_read(XBT_NIL, xenbus_get_node(dev), "mac", NULL); if (IS_ERR(macstr)) { return PTR_ERR(macstr); } @@ -389,23 +391,28 @@ xen_net_read_mac(struct xenbus_device *d * Connected state. */ static int -netfront_probe(struct xenbus_device *dev, const struct xenbus_device_id *id) +netfront_probe(device_t dev) { + + if (!strcmp(xenbus_get_type(dev), "vif")) { + device_set_desc(dev, "Virtual Network Interface"); + return (0); + } + + return (ENXIO); +} + +static int +netfront_attach(device_t dev) +{ int err; - struct ifnet *ifp; - struct netfront_info *info; - printf("netfront_probe() \n"); - - err = create_netdev(dev, &ifp); + err = create_netdev(dev); if (err) { xenbus_dev_fatal(dev, err, "creating netdev"); return err; } - info = ifp->if_softc; - dev->dev_driver_data = info; - return 0; } @@ -417,11 +424,11 @@ netfront_probe(struct xenbus_device *dev * rest of the kernel. */ static int -netfront_resume(struct xenbus_device *dev) +netfront_resume(device_t dev) { - struct netfront_info *info = dev->dev_driver_data; + struct netfront_info *info = device_get_softc(dev); - DPRINTK("%s\n", dev->nodename); + DPRINTK("%s\n", xenbus_get_node(dev)); netif_disconnect_backend(info); return (0); @@ -430,15 +437,16 @@ netfront_resume(struct xenbus_device *de /* Common code used when first setting up, and when resuming. */ static int -talk_to_backend(struct xenbus_device *dev, struct netfront_info *info) +talk_to_backend(device_t dev, struct netfront_info *info) { const char *message; struct xenbus_transaction xbt; + const char *node = xenbus_get_node(dev); int err; err = xen_net_read_mac(dev, info->mac); if (err) { - xenbus_dev_fatal(dev, err, "parsing %s/mac", dev->nodename); + xenbus_dev_fatal(dev, err, "parsing %s/mac", node); goto out; } @@ -453,47 +461,47 @@ talk_to_backend(struct xenbus_device *de xenbus_dev_fatal(dev, err, "starting transaction"); goto destroy_ring; } - err = xenbus_printf(xbt, dev->nodename, "tx-ring-ref","%u", + err = xenbus_printf(xbt, node, "tx-ring-ref","%u", info->tx_ring_ref); if (err) { message = "writing tx ring-ref"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "rx-ring-ref","%u", + err = xenbus_printf(xbt, node, "rx-ring-ref","%u", info->rx_ring_ref); if (err) { message = "writing rx ring-ref"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, + err = xenbus_printf(xbt, node, "event-channel", "%u", irq_to_evtchn_port(info->irq)); if (err) { message = "writing event-channel"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "request-rx-copy", "%u", + err = xenbus_printf(xbt, node, "request-rx-copy", "%u", info->copying_receiver); if (err) { message = "writing request-rx-copy"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "feature-rx-notify", "%d", 1); + err = xenbus_printf(xbt, node, "feature-rx-notify", "%d", 1); if (err) { message = "writing feature-rx-notify"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "feature-no-csum-offload", "%d", 1); + err = xenbus_printf(xbt, node, "feature-no-csum-offload", "%d", 1); if (err) { message = "writing feature-no-csum-offload"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "feature-sg", "%d", 1); + err = xenbus_printf(xbt, node, "feature-sg", "%d", 1); if (err) { message = "writing feature-sg"; goto abort_transaction; } #ifdef HAVE_TSO - err = xenbus_printf(xbt, dev->nodename, "feature-gso-tcpv4", "%d", 1); + err = xenbus_printf(xbt, node, "feature-gso-tcpv4", "%d", 1); if (err) { message = "writing feature-gso-tcpv4"; goto abort_transaction; @@ -521,7 +529,7 @@ talk_to_backend(struct xenbus_device *de static int -setup_device(struct xenbus_device *dev, struct netfront_info *info) +setup_device(device_t dev, struct netfront_info *info) { netif_tx_sring_t *txs; netif_rx_sring_t *rxs; @@ -564,9 +572,9 @@ setup_device(struct xenbus_device *dev, info->rx_ring_ref = err; #if 0 - network_connect(ifp); + network_connect(info); #endif - err = bind_listening_port_to_irqhandler(dev->otherend_id, + err = bind_listening_port_to_irqhandler(xenbus_get_otherend_id(dev), "xn", xn_intr, info, INTR_TYPE_NET | INTR_MPSAFE, NULL); if (err <= 0) { @@ -589,14 +597,13 @@ setup_device(struct xenbus_device *dev, * Callback received when the backend's state changes. */ static void -backend_changed(struct xenbus_device *dev, - XenbusState backend_state) +netfront_backend_changed(device_t dev, XenbusState newstate) { - struct netfront_info *sc = dev->dev_driver_data; + struct netfront_info *sc = device_get_softc(dev); - DPRINTK("\n"); - - switch (backend_state) { + DPRINTK("newstate=%d\n", newstate); + + switch (newstate) { case XenbusStateInitialising: case XenbusStateInitialised: case XenbusStateConnected: @@ -604,19 +611,19 @@ backend_changed(struct xenbus_device *de case XenbusStateClosed: case XenbusStateReconfigured: case XenbusStateReconfiguring: - break; + break; case XenbusStateInitWait: - if (dev->state != XenbusStateInitialising) + if (xenbus_get_state(dev) != XenbusStateInitialising) break; - if (network_connect(sc->xn_ifp) != 0) + if (network_connect(sc) != 0) break; - xenbus_switch_state(dev, XenbusStateConnected); + xenbus_set_state(dev, XenbusStateConnected); #ifdef notyet (void)send_fake_arp(netdev); #endif - break; break; + break; case XenbusStateClosing: - xenbus_frontend_closed(dev); + xenbus_set_state(dev, XenbusStateClosed); break; } } @@ -675,7 +682,8 @@ netif_release_tx_bufs(struct netfront_in if (((u_long)m) < KERNBASE) continue; gnttab_grant_foreign_access_ref(np->grant_tx_ref[i], - np->xbdev->otherend_id, virt_to_mfn(mtod(m, vm_offset_t)), + xenbus_get_otherend_id(np->xbdev), + virt_to_mfn(mtod(m, vm_offset_t)), GNTMAP_readonly); gnttab_release_grant_reference(&np->gref_tx_head, np->grant_tx_ref[i]); @@ -688,6 +696,7 @@ netif_release_tx_bufs(struct netfront_in static void network_alloc_rx_buffers(struct netfront_info *sc) { + int otherend_id = xenbus_get_otherend_id(sc->xbdev); unsigned short id; struct mbuf *m_new; int i, batch_target, notify; @@ -769,7 +778,7 @@ refill: if (sc->copying_receiver == 0) { gnttab_grant_foreign_transfer_ref(ref, - sc->xbdev->otherend_id, pfn); + otherend_id, pfn); sc->rx_pfn_array[nr_flips] = PFNTOMFN(pfn); if (!xen_feature(XENFEAT_auto_translated_physmap)) { /* Remove this page before passing @@ -782,7 +791,7 @@ refill: nr_flips++; } else { gnttab_grant_foreign_access_ref(ref, - sc->xbdev->otherend_id, + otherend_id, PFNTOMFN(pfn), 0); } req->id = id; @@ -856,110 +865,112 @@ xn_rxeof(struct netfront_info *np) multicall_entry_t *mcl; struct mbuf *m; struct mbuf_head rxq, errq; - int err, pages_flipped = 0; + int err, pages_flipped = 0, work_to_do; - XN_RX_LOCK_ASSERT(np); - if (!netfront_carrier_ok(np)) - return; + do { + XN_RX_LOCK_ASSERT(np); + if (!netfront_carrier_ok(np)) + return; - mbufq_init(&errq); - mbufq_init(&rxq); + mbufq_init(&errq); + mbufq_init(&rxq); - ifp = np->xn_ifp; + ifp = np->xn_ifp; - rp = np->rx.sring->rsp_prod; - rmb(); /* Ensure we see queued responses up to 'rp'. */ + rp = np->rx.sring->rsp_prod; + rmb(); /* Ensure we see queued responses up to 'rp'. */ - i = np->rx.rsp_cons; - while ((i != rp)) { - memcpy(rx, RING_GET_RESPONSE(&np->rx, i), sizeof(*rx)); - memset(extras, 0, sizeof(rinfo.extras)); - - m = NULL; - err = xennet_get_responses(np, &rinfo, rp, &m, - &pages_flipped); + i = np->rx.rsp_cons; + while ((i != rp)) { + memcpy(rx, RING_GET_RESPONSE(&np->rx, i), sizeof(*rx)); + memset(extras, 0, sizeof(rinfo.extras)); - if (unlikely(err)) { + m = NULL; + err = xennet_get_responses(np, &rinfo, rp, &m, + &pages_flipped); + + if (unlikely(err)) { if (m) - mbufq_tail(&errq, m); - np->stats.rx_errors++; - i = np->rx.rsp_cons; - continue; - } + mbufq_tail(&errq, m); + np->stats.rx_errors++; + i = np->rx.rsp_cons; + continue; + } - m->m_pkthdr.rcvif = ifp; - if ( rx->flags & NETRXF_data_validated ) { - /* Tell the stack the checksums are okay */ - /* - * XXX this isn't necessarily the case - need to add - * check - */ + m->m_pkthdr.rcvif = ifp; + if ( rx->flags & NETRXF_data_validated ) { + /* Tell the stack the checksums are okay */ + /* + * XXX this isn't necessarily the case - need to add + * check + */ - m->m_pkthdr.csum_flags |= - (CSUM_IP_CHECKED | CSUM_IP_VALID | CSUM_DATA_VALID - | CSUM_PSEUDO_HDR); - m->m_pkthdr.csum_data = 0xffff; - } + m->m_pkthdr.csum_flags |= + (CSUM_IP_CHECKED | CSUM_IP_VALID | CSUM_DATA_VALID + | CSUM_PSEUDO_HDR); + m->m_pkthdr.csum_data = 0xffff; + } - np->stats.rx_packets++; - np->stats.rx_bytes += m->m_pkthdr.len; + np->stats.rx_packets++; + np->stats.rx_bytes += m->m_pkthdr.len; - mbufq_tail(&rxq, m); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 08:17:35 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5D7371065670; Thu, 4 Dec 2008 08:17:35 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 48AE68FC1B; Thu, 4 Dec 2008 08:17:35 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB48HZKc015353; Thu, 4 Dec 2008 08:17:35 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB48HZAi015348; Thu, 4 Dec 2008 08:17:35 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200812040817.mB48HZAi015348@svn.freebsd.org> From: Kip Macy Date: Thu, 4 Dec 2008 08:17:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185606 - in projects/releng_6_xen/sys: conf dev/xen/blkfront dev/xen/netfront i386/conf i386/include/xen i386/xen vm xen xen/xenbus X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 08:17:35 -0000 Author: kmacy Date: Thu Dec 4 08:17:34 2008 New Revision: 185606 URL: http://svn.freebsd.org/changeset/base/185606 Log: Integrate 185578 from dfr Use newbus to manage devices Added: projects/releng_6_xen/sys/xen/xenbus/xenbus_if.m projects/releng_6_xen/sys/xen/xenbus/xenbusvar.h Deleted: projects/releng_6_xen/sys/i386/include/xen/xenbus.h Modified: projects/releng_6_xen/sys/conf/files projects/releng_6_xen/sys/dev/xen/blkfront/blkfront.c projects/releng_6_xen/sys/dev/xen/blkfront/block.h projects/releng_6_xen/sys/dev/xen/netfront/netfront.c projects/releng_6_xen/sys/i386/conf/XEN projects/releng_6_xen/sys/i386/xen/xen_machdep.c projects/releng_6_xen/sys/vm/vm_page.c projects/releng_6_xen/sys/xen/gnttab.c projects/releng_6_xen/sys/xen/gnttab.h projects/releng_6_xen/sys/xen/xenbus/xenbus_client.c projects/releng_6_xen/sys/xen/xenbus/xenbus_comms.c projects/releng_6_xen/sys/xen/xenbus/xenbus_comms.h projects/releng_6_xen/sys/xen/xenbus/xenbus_dev.c projects/releng_6_xen/sys/xen/xenbus/xenbus_probe.c projects/releng_6_xen/sys/xen/xenbus/xenbus_probe_backend.c projects/releng_6_xen/sys/xen/xenbus/xenbus_xs.c Modified: projects/releng_6_xen/sys/conf/files ============================================================================== --- projects/releng_6_xen/sys/conf/files Thu Dec 4 07:59:05 2008 (r185605) +++ projects/releng_6_xen/sys/conf/files Thu Dec 4 08:17:34 2008 (r185606) @@ -2054,10 +2054,14 @@ xen/evtchn/evtchn_dev.c o xen/xenbus/xenbus_client.c optional xen xen/xenbus/xenbus_comms.c optional xen xen/xenbus/xenbus_dev.c optional xen +xen/xenbus/xenbus_if.m optional xen xen/xenbus/xenbus_probe.c optional xen -xen/xenbus/xenbus_probe_backend.c optional xen +#xen/xenbus/xenbus_probe_backend.c optional xen xen/xenbus/xenbus_xs.c optional xen dev/xen/console/console.c optional xen dev/xen/console/xencons_ring.c optional xen dev/xen/blkfront/blkfront.c optional xen dev/xen/netfront/netfront.c optional xen +#dev/xen/xenpci/xenpci.c optional xen +#xen/xenbus/xenbus_newbus.c optional xenhvm + Modified: projects/releng_6_xen/sys/dev/xen/blkfront/blkfront.c ============================================================================== --- projects/releng_6_xen/sys/dev/xen/blkfront/blkfront.c Thu Dec 4 07:59:05 2008 (r185605) +++ projects/releng_6_xen/sys/dev/xen/blkfront/blkfront.c Thu Dec 4 08:17:34 2008 (r185606) @@ -43,9 +43,10 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include +#include +#include #include #include @@ -53,15 +54,17 @@ __FBSDID("$FreeBSD$"); #include +#include "xenbus_if.h" + #define ASSERT(S) KASSERT(S, (#S)) /* prototypes */ struct xb_softc; static void xb_startio(struct xb_softc *sc); -static void connect(struct blkfront_info *); -static void blkfront_closing(struct xenbus_device *); -static int blkfront_remove(struct xenbus_device *); -static int talk_to_backend(struct xenbus_device *, struct blkfront_info *); -static int setup_blkring(struct xenbus_device *, struct blkfront_info *); +static void connect(device_t, struct blkfront_info *); +static void blkfront_closing(device_t); +static int blkfront_detach(device_t); +static int talk_to_backend(device_t, struct blkfront_info *); +static int setup_blkring(device_t, struct blkfront_info *); static void blkif_int(void *); #if 0 static void blkif_restart_queue(void *arg); @@ -136,22 +139,95 @@ pfn_to_mfn(vm_paddr_t pfn) } +/* + * Translate Linux major/minor to an appropriate name and unit + * number. For HVM guests, this allows us to use the same drive names + * with blkfront as the emulated drives, easing transition slightly. + */ +static void +blkfront_vdevice_to_unit(int vdevice, int *unit, const char **name) +{ + static struct vdev_info { + int major; + int shift; + int base; + const char *name; + } info[] = { + {3, 6, 0, "ad"}, /* ide0 */ + {22, 6, 2, "ad"}, /* ide1 */ + {33, 6, 4, "ad"}, /* ide2 */ + {34, 6, 6, "ad"}, /* ide3 */ + {56, 6, 8, "ad"}, /* ide4 */ + {57, 6, 10, "ad"}, /* ide5 */ + {88, 6, 12, "ad"}, /* ide6 */ + {89, 6, 14, "ad"}, /* ide7 */ + {90, 6, 16, "ad"}, /* ide8 */ + {91, 6, 18, "ad"}, /* ide9 */ + + {8, 4, 0, "da"}, /* scsi disk0 */ + {65, 4, 16, "da"}, /* scsi disk1 */ + {66, 4, 32, "da"}, /* scsi disk2 */ + {67, 4, 48, "da"}, /* scsi disk3 */ + {68, 4, 64, "da"}, /* scsi disk4 */ + {69, 4, 80, "da"}, /* scsi disk5 */ + {70, 4, 96, "da"}, /* scsi disk6 */ + {71, 4, 112, "da"}, /* scsi disk7 */ + {128, 4, 128, "da"}, /* scsi disk8 */ + {129, 4, 144, "da"}, /* scsi disk9 */ + {130, 4, 160, "da"}, /* scsi disk10 */ + {131, 4, 176, "da"}, /* scsi disk11 */ + {132, 4, 192, "da"}, /* scsi disk12 */ + {133, 4, 208, "da"}, /* scsi disk13 */ + {134, 4, 224, "da"}, /* scsi disk14 */ + {135, 4, 240, "da"}, /* scsi disk15 */ + + {202, 4, 0, "xbd"}, /* xbd */ + + {0, 0, 0, NULL}, + }; + int major = vdevice >> 8; + int minor = vdevice & 0xff; + int i; + + if (vdevice & (1 << 28)) { + *unit = (vdevice & ((1 << 28) - 1)) >> 8; + *name = "xbd"; + } + + for (i = 0; info[i].major; i++) { + if (info[i].major == major) { + *unit = info[i].base + (minor >> info[i].shift); + *name = info[i].name; + return; + } + } + + *unit = minor >> 4; + *name = "xbd"; +} + int -xlvbd_add(blkif_sector_t capacity, int unit, uint16_t vdisk_info, uint16_t sector_size, - struct blkfront_info *info) +xlvbd_add(device_t dev, blkif_sector_t capacity, + int vdevice, uint16_t vdisk_info, uint16_t sector_size, + struct blkfront_info *info) { struct xb_softc *sc; - int error = 0; - int unitno = unit - 767; + int unit, error = 0; + const char *name; + + blkfront_vdevice_to_unit(vdevice, &unit, &name); sc = (struct xb_softc *)malloc(sizeof(*sc), M_DEVBUF, M_WAITOK|M_ZERO); - sc->xb_unit = unitno; + sc->xb_unit = unit; sc->xb_info = info; info->sc = sc; + if (strcmp(name, "xbd")) + device_printf(dev, "attaching as %s%d\n", name, unit); + memset(&sc->xb_disk, 0, sizeof(sc->xb_disk)); sc->xb_disk = disk_alloc(); - sc->xb_disk->d_unit = unitno; + sc->xb_disk->d_unit = unit; sc->xb_disk->d_open = blkif_open; sc->xb_disk->d_close = blkif_close; sc->xb_disk->d_ioctl = blkif_ioctl; @@ -226,19 +302,33 @@ xb_strategy(struct bio *bp) return; } +static int +blkfront_probe(device_t dev) +{ + + if (!strcmp(xenbus_get_type(dev), "vbd")) { + device_set_desc(dev, "Virtual Block Device"); + device_quiet(dev); + return (0); + } -/* Setup supplies the backend dir, virtual device. + return (ENXIO); +} -We place an event channel and shared frame entries. -We watch backend to wait if it's ok. */ -static int blkfront_probe(struct xenbus_device *dev, - const struct xenbus_device_id *id) +/* + * Setup supplies the backend dir, virtual device. We place an event + * channel and shared frame entries. We watch backend to wait if it's + * ok. + */ +static int +blkfront_attach(device_t dev) { - int err, vdevice, i; + int err, vdevice, i, unit; struct blkfront_info *info; + const char *name; /* FIXME: Use dynamic device id if this is not set. */ - err = xenbus_scanf(XBT_NIL, dev->nodename, + err = xenbus_scanf(XBT_NIL, xenbus_get_node(dev), "virtual-device", "%i", &vdevice); if (err != 1) { xenbus_dev_fatal(dev, err, "reading virtual-device"); @@ -246,11 +336,11 @@ static int blkfront_probe(struct xenbus_ return (err); } - info = malloc(sizeof(*info), M_DEVBUF, M_NOWAIT|M_ZERO); - if (info == NULL) { - xenbus_dev_fatal(dev, ENOMEM, "allocating info structure"); - return ENOMEM; - } + blkfront_vdevice_to_unit(vdevice, &unit, &name); + if (!strcmp(name, "xbd")) + device_set_unit(dev, unit); + + info = device_get_softc(dev); /* * XXX debug only @@ -270,23 +360,20 @@ static int blkfront_probe(struct xenbus_ info->shadow[BLK_RING_SIZE-1].req.id = 0x0fffffff; /* Front end dir is a number, which is used as the id. */ - info->handle = strtoul(strrchr(dev->nodename,'/')+1, NULL, 0); - dev->dev_driver_data = info; + info->handle = strtoul(strrchr(xenbus_get_node(dev),'/')+1, NULL, 0); err = talk_to_backend(dev, info); if (err) { - free(info, M_DEVBUF); - dev->dev_driver_data = NULL; return err; } - return 0; + return (0); } - -static int blkfront_resume(struct xenbus_device *dev) +static int +blkfront_resume(device_t dev) { - struct blkfront_info *info = dev->dev_driver_data; + struct blkfront_info *info = device_get_softc(dev); int err; DPRINTK("blkfront_resume: %s\n", dev->nodename); @@ -301,8 +388,8 @@ static int blkfront_resume(struct xenbus } /* Common code used when first setting up, and when resuming. */ -static int talk_to_backend(struct xenbus_device *dev, - struct blkfront_info *info) +static int +talk_to_backend(device_t dev, struct blkfront_info *info) { const char *message = NULL; struct xenbus_transaction xbt; @@ -320,19 +407,24 @@ static int talk_to_backend(struct xenbus goto destroy_blkring; } - err = xenbus_printf(xbt, dev->nodename, + err = xenbus_printf(xbt, xenbus_get_node(dev), "ring-ref","%u", info->ring_ref); if (err) { message = "writing ring-ref"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, + err = xenbus_printf(xbt, xenbus_get_node(dev), "event-channel", "%u", irq_to_evtchn_port(info->irq)); if (err) { message = "writing event-channel"; goto abort_transaction; } - + err = xenbus_printf(xbt, xenbus_get_node(dev), + "protocol", "%s", XEN_IO_PROTO_ABI_NATIVE); + if (err) { + message = "writing protocol"; + goto abort_transaction; + } err = xenbus_transaction_end(xbt, 0); if (err) { if (err == -EAGAIN) @@ -340,7 +432,7 @@ static int talk_to_backend(struct xenbus xenbus_dev_fatal(dev, err, "completing transaction"); goto destroy_blkring; } - xenbus_switch_state(dev, XenbusStateInitialised); + xenbus_set_state(dev, XenbusStateInitialised); return 0; @@ -355,7 +447,7 @@ static int talk_to_backend(struct xenbus } static int -setup_blkring(struct xenbus_device *dev, struct blkfront_info *info) +setup_blkring(device_t dev, struct blkfront_info *info) { blkif_sring_t *sring; int err; @@ -378,7 +470,7 @@ setup_blkring(struct xenbus_device *dev, } info->ring_ref = err; - err = bind_listening_port_to_irqhandler(dev->otherend_id, + err = bind_listening_port_to_irqhandler(xenbus_get_otherend_id(dev), "xbd", (driver_intr_t *)blkif_int, info, INTR_TYPE_BIO | INTR_MPSAFE, NULL); if (err <= 0) { @@ -398,10 +490,10 @@ setup_blkring(struct xenbus_device *dev, /** * Callback received when the backend's state changes. */ -static void backend_changed(struct xenbus_device *dev, - XenbusState backend_state) +static void +blkfront_backend_changed(device_t dev, XenbusState backend_state) { - struct blkfront_info *info = dev->dev_driver_data; + struct blkfront_info *info = device_get_softc(dev); DPRINTK("blkfront:backend_changed.\n"); @@ -416,7 +508,7 @@ static void backend_changed(struct xenbu break; case XenbusStateConnected: - connect(info); + connect(dev, info); break; case XenbusStateClosing: @@ -447,7 +539,7 @@ static void backend_changed(struct xenbu ** the details about the physical device - #sectors, size, etc). */ static void -connect(struct blkfront_info *info) +connect(device_t dev, struct blkfront_info *info) { unsigned long sectors, sector_size; unsigned int binfo; @@ -457,28 +549,34 @@ connect(struct blkfront_info *info) (info->connected == BLKIF_STATE_SUSPENDED) ) return; - DPRINTK("blkfront.c:connect:%s.\n", info->xbdev->otherend); + DPRINTK("blkfront.c:connect:%s.\n", xenbus_get_otherend_path(dev)); - err = xenbus_gather(XBT_NIL, info->xbdev->otherend, + err = xenbus_gather(XBT_NIL, xenbus_get_otherend_path(dev), "sectors", "%lu", §ors, "info", "%u", &binfo, "sector-size", "%lu", §or_size, NULL); if (err) { - xenbus_dev_fatal(info->xbdev, err, - "reading backend fields at %s", - info->xbdev->otherend); + xenbus_dev_fatal(dev, err, + "reading backend fields at %s", + xenbus_get_otherend_path(dev)); return; } - err = xenbus_gather(XBT_NIL, info->xbdev->otherend, + err = xenbus_gather(XBT_NIL, xenbus_get_otherend_path(dev), "feature-barrier", "%lu", &info->feature_barrier, NULL); if (err) info->feature_barrier = 0; - xlvbd_add(sectors, info->vdevice, binfo, sector_size, info); + device_printf(dev, "%juMB <%s> at %s", + (uintmax_t) sectors / (1048576 / sector_size), + device_get_desc(dev), + xenbus_get_node(dev)); + bus_print_child_footer(device_get_parent(dev), dev); - (void)xenbus_switch_state(info->xbdev, XenbusStateConnected); + xlvbd_add(dev, sectors, info->vdevice, binfo, sector_size, info); + + (void)xenbus_set_state(dev, XenbusStateConnected); /* Kick pending requests. */ mtx_lock(&blkif_io_lock); @@ -498,11 +596,12 @@ connect(struct blkfront_info *info) * the backend. Once is this done, we can switch to Closed in * acknowledgement. */ -static void blkfront_closing(struct xenbus_device *dev) +static void +blkfront_closing(device_t dev) { - struct blkfront_info *info = dev->dev_driver_data; + struct blkfront_info *info = device_get_softc(dev); - DPRINTK("blkfront_closing: %s removed\n", dev->nodename); + DPRINTK("blkfront_closing: %s removed\n", xenbus_get_node(dev)); if (info->mi) { DPRINTK("Calling xlvbd_del\n"); @@ -510,20 +609,19 @@ static void blkfront_closing(struct xenb info->mi = NULL; } - xenbus_switch_state(dev, XenbusStateClosed); + xenbus_set_state(dev, XenbusStateClosed); } -static int blkfront_remove(struct xenbus_device *dev) +static int +blkfront_detach(device_t dev) { - struct blkfront_info *info = dev->dev_driver_data; + struct blkfront_info *info = device_get_softc(dev); - DPRINTK("blkfront_remove: %s removed\n", dev->nodename); + DPRINTK("blkfront_remove: %s removed\n", xenbus_get_node(dev)); blkif_free(info, 0); - free(info, M_DEVBUF); - return 0; } @@ -631,8 +729,9 @@ blkif_close(struct disk *dp) /* Check whether we have been instructed to close. We will have ignored this request initially, as the device was still mounted. */ - struct xenbus_device * dev = sc->xb_info->xbdev; - XenbusState state = xenbus_read_driver_state(dev->otherend); + device_t dev = sc->xb_info->xbdev; + XenbusState state = + xenbus_read_driver_state(xenbus_get_otherend_path(dev)); if (state == XenbusStateClosing) blkfront_closing(dev); @@ -731,7 +830,7 @@ static int blkif_queue_request(struct bi gnttab_grant_foreign_access_ref( ref, - info->xbdev->otherend_id, + xenbus_get_otherend_id(info->xbdev), buffer_ma >> PAGE_SHIFT, ring_req->operation & 1 ); /* ??? */ info->shadow[id].frame[ring_req->nr_segments] = @@ -952,7 +1051,7 @@ blkif_recover(struct blkfront_info *info for (j = 0; j < req->nr_segments; j++) gnttab_grant_foreign_access_ref( req->seg[j].gref, - info->xbdev->otherend_id, + xenbus_get_otherend_id(info->xbdev), pfn_to_mfn(info->shadow[req->id].frame[j]), 0 /* assume not readonly */); @@ -963,7 +1062,7 @@ blkif_recover(struct blkfront_info *info free(copy, M_DEVBUF); - xenbus_switch_state(info->xbdev, XenbusStateConnected); + xenbus_set_state(info->xbdev, XenbusStateConnected); /* Now safe for us to use the shared ring */ mtx_lock(&blkif_io_lock); @@ -979,48 +1078,30 @@ blkif_recover(struct blkfront_info *info mtx_unlock(&blkif_io_lock); } -static int -blkfront_is_ready(struct xenbus_device *dev) -{ - struct blkfront_info *info = dev->dev_driver_data; - - return info->is_ready; -} - -static struct xenbus_device_id blkfront_ids[] = { - { "vbd" }, - { "" } -}; - - -static struct xenbus_driver blkfront = { - .name = "vbd", - .ids = blkfront_ids, - .probe = blkfront_probe, - .remove = blkfront_remove, - .resume = blkfront_resume, - .otherend_changed = backend_changed, - .is_ready = blkfront_is_ready, -}; - - - -static void -xenbus_init(void) -{ - xenbus_register_frontend(&blkfront); -} +/* ** Driver registration ** */ +static device_method_t blkfront_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, blkfront_probe), + DEVMETHOD(device_attach, blkfront_attach), + DEVMETHOD(device_detach, blkfront_detach), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, blkfront_resume), + + /* Xenbus interface */ + DEVMETHOD(xenbus_backend_changed, blkfront_backend_changed), + + { 0, 0 } +}; + +static driver_t blkfront_driver = { + "xbd", + blkfront_methods, + sizeof(struct blkfront_info), +}; +devclass_t blkfront_devclass; + +DRIVER_MODULE(xbd, xenbus, blkfront_driver, blkfront_devclass, 0, 0); MTX_SYSINIT(ioreq, &blkif_io_lock, "BIO LOCK", MTX_NOWITNESS); /* XXX how does one enroll a lock? */ -SYSINIT(xbdev, SI_SUB_PSEUDO, SI_ORDER_SECOND, xenbus_init, NULL); - -/* - * Local variables: - * mode: C - * c-set-style: "BSD" - * c-basic-offset: 8 - * tab-width: 4 - * indent-tabs-mode: t - * End: - */ Modified: projects/releng_6_xen/sys/dev/xen/blkfront/block.h ============================================================================== --- projects/releng_6_xen/sys/dev/xen/blkfront/block.h Thu Dec 4 07:59:05 2008 (r185605) +++ projects/releng_6_xen/sys/dev/xen/blkfront/block.h Thu Dec 4 08:17:34 2008 (r185606) @@ -60,7 +60,7 @@ struct xb_softc { */ struct blkfront_info { - struct xenbus_device *xbdev; + device_t xbdev; dev_t dev; struct gendisk *gd; int vdevice; @@ -89,7 +89,7 @@ struct blkfront_info /* Note that xlvbd_add doesn't call add_disk for you: you're expected to call add_disk on info->gd once the disk is properly connected up. */ -int xlvbd_add(blkif_sector_t capacity, int device, +int xlvbd_add(device_t, blkif_sector_t capacity, int device, uint16_t vdisk_info, uint16_t sector_size, struct blkfront_info *info); void xlvbd_del(struct blkfront_info *info); Modified: projects/releng_6_xen/sys/dev/xen/netfront/netfront.c ============================================================================== --- projects/releng_6_xen/sys/dev/xen/netfront/netfront.c Thu Dec 4 07:59:05 2008 (r185605) +++ projects/releng_6_xen/sys/dev/xen/netfront/netfront.c Thu Dec 4 08:17:34 2008 (r185606) @@ -25,6 +25,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -65,13 +66,14 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include #include #include +#include +#include "xenbus_if.h" #define GRANT_INVALID_REF 0 @@ -117,19 +119,19 @@ static void xn_watchdog(struct ifnet *); static void show_device(struct netfront_info *sc); #ifdef notyet -static void netfront_closing(struct xenbus_device *dev); +static void netfront_closing(device_t dev); #endif static void netif_free(struct netfront_info *info); -static int netfront_remove(struct xenbus_device *dev); +static int netfront_detach(device_t dev); -static int talk_to_backend(struct xenbus_device *dev, struct netfront_info *info); -static int create_netdev(struct xenbus_device *dev, struct ifnet **ifp); +static int talk_to_backend(device_t dev, struct netfront_info *info); +static int create_netdev(device_t dev); static void netif_disconnect_backend(struct netfront_info *info); -static int setup_device(struct xenbus_device *dev, struct netfront_info *info); +static int setup_device(device_t dev, struct netfront_info *info); static void end_access(int ref, void *page); /* Xenolinux helper functions */ -static int network_connect(struct ifnet *ifp); +int network_connect(struct netfront_info *); static void xn_free_rx_ring(struct netfront_info *); @@ -222,7 +224,7 @@ struct netfront_info { grant_ref_t grant_rx_ref[NET_TX_RING_SIZE + 1]; #define TX_MAX_TARGET min(NET_RX_RING_SIZE, 256) - struct xenbus_device *xbdev; + device_t xbdev; int tx_ring_ref; int rx_ring_ref; uint8_t mac[ETHER_ADDR_LEN]; @@ -328,7 +330,7 @@ xennet_get_rx_ref(struct netfront_info * #define WPRINTK(fmt, args...) \ printf("[XEN] " fmt, ##args) #define DPRINTK(fmt, args...) \ - printf("[XEN] " fmt, ##args) + printf("[XEN] %s: " fmt, __func__, ##args) static __inline struct mbuf* @@ -341,15 +343,15 @@ makembuf (struct mbuf *buf) if (! m) return 0; - M_MOVE_PKTHDR(m, buf); + M_MOVE_PKTHDR(m, buf); - m_cljget(m, M_DONTWAIT, MJUMPAGESIZE); + m_cljget(m, M_DONTWAIT, MJUMPAGESIZE); m->m_pkthdr.len = buf->m_pkthdr.len; m->m_len = buf->m_len; - m_copydata(buf, 0, buf->m_pkthdr.len, mtod(m,caddr_t) ); + m_copydata(buf, 0, buf->m_pkthdr.len, mtod(m,caddr_t) ); m->m_ext.ext_args = (caddr_t *)(uintptr_t)(vtophys(mtod(m,caddr_t)) >> PAGE_SHIFT); - + return m; } @@ -360,12 +362,12 @@ makembuf (struct mbuf *buf) * Return 0 on success, or errno on error. */ static int -xen_net_read_mac(struct xenbus_device *dev, uint8_t mac[]) +xen_net_read_mac(device_t dev, uint8_t mac[]) { char *s; int i; char *e; - char *macstr = xenbus_read(XBT_NIL, dev->nodename, "mac", NULL); + char *macstr = xenbus_read(XBT_NIL, xenbus_get_node(dev), "mac", NULL); if (IS_ERR(macstr)) { return PTR_ERR(macstr); } @@ -389,23 +391,28 @@ xen_net_read_mac(struct xenbus_device *d * Connected state. */ static int -netfront_probe(struct xenbus_device *dev, const struct xenbus_device_id *id) +netfront_probe(device_t dev) { + + if (!strcmp(xenbus_get_type(dev), "vif")) { + device_set_desc(dev, "Virtual Network Interface"); + return (0); + } + + return (ENXIO); +} + +static int +netfront_attach(device_t dev) +{ int err; - struct ifnet *ifp; - struct netfront_info *info; - printf("netfront_probe() \n"); - - err = create_netdev(dev, &ifp); + err = create_netdev(dev); if (err) { xenbus_dev_fatal(dev, err, "creating netdev"); return err; } - info = ifp->if_softc; - dev->dev_driver_data = info; - return 0; } @@ -417,11 +424,11 @@ netfront_probe(struct xenbus_device *dev * rest of the kernel. */ static int -netfront_resume(struct xenbus_device *dev) +netfront_resume(device_t dev) { - struct netfront_info *info = dev->dev_driver_data; + struct netfront_info *info = device_get_softc(dev); - DPRINTK("%s\n", dev->nodename); + DPRINTK("%s\n", xenbus_get_node(dev)); netif_disconnect_backend(info); return (0); @@ -430,15 +437,16 @@ netfront_resume(struct xenbus_device *de /* Common code used when first setting up, and when resuming. */ static int -talk_to_backend(struct xenbus_device *dev, struct netfront_info *info) +talk_to_backend(device_t dev, struct netfront_info *info) { const char *message; struct xenbus_transaction xbt; + const char *node = xenbus_get_node(dev); int err; err = xen_net_read_mac(dev, info->mac); if (err) { - xenbus_dev_fatal(dev, err, "parsing %s/mac", dev->nodename); + xenbus_dev_fatal(dev, err, "parsing %s/mac", node); goto out; } @@ -453,47 +461,47 @@ talk_to_backend(struct xenbus_device *de xenbus_dev_fatal(dev, err, "starting transaction"); goto destroy_ring; } - err = xenbus_printf(xbt, dev->nodename, "tx-ring-ref","%u", + err = xenbus_printf(xbt, node, "tx-ring-ref","%u", info->tx_ring_ref); if (err) { message = "writing tx ring-ref"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "rx-ring-ref","%u", + err = xenbus_printf(xbt, node, "rx-ring-ref","%u", info->rx_ring_ref); if (err) { message = "writing rx ring-ref"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, + err = xenbus_printf(xbt, node, "event-channel", "%u", irq_to_evtchn_port(info->irq)); if (err) { message = "writing event-channel"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "request-rx-copy", "%u", + err = xenbus_printf(xbt, node, "request-rx-copy", "%u", info->copying_receiver); if (err) { message = "writing request-rx-copy"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "feature-rx-notify", "%d", 1); + err = xenbus_printf(xbt, node, "feature-rx-notify", "%d", 1); if (err) { message = "writing feature-rx-notify"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "feature-no-csum-offload", "%d", 1); + err = xenbus_printf(xbt, node, "feature-no-csum-offload", "%d", 1); if (err) { message = "writing feature-no-csum-offload"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "feature-sg", "%d", 1); + err = xenbus_printf(xbt, node, "feature-sg", "%d", 1); if (err) { message = "writing feature-sg"; goto abort_transaction; } #ifdef HAVE_TSO - err = xenbus_printf(xbt, dev->nodename, "feature-gso-tcpv4", "%d", 1); + err = xenbus_printf(xbt, node, "feature-gso-tcpv4", "%d", 1); if (err) { message = "writing feature-gso-tcpv4"; goto abort_transaction; @@ -521,7 +529,7 @@ talk_to_backend(struct xenbus_device *de static int -setup_device(struct xenbus_device *dev, struct netfront_info *info) +setup_device(device_t dev, struct netfront_info *info) { netif_tx_sring_t *txs; netif_rx_sring_t *rxs; @@ -564,9 +572,9 @@ setup_device(struct xenbus_device *dev, info->rx_ring_ref = err; #if 0 - network_connect(ifp); + network_connect(info); #endif - err = bind_listening_port_to_irqhandler(dev->otherend_id, + err = bind_listening_port_to_irqhandler(xenbus_get_otherend_id(dev), "xn", xn_intr, info, INTR_TYPE_NET | INTR_MPSAFE, NULL); if (err <= 0) { @@ -589,14 +597,13 @@ setup_device(struct xenbus_device *dev, * Callback received when the backend's state changes. */ static void -backend_changed(struct xenbus_device *dev, - XenbusState backend_state) +netfront_backend_changed(device_t dev, XenbusState newstate) { - struct netfront_info *sc = dev->dev_driver_data; + struct netfront_info *sc = device_get_softc(dev); - DPRINTK("\n"); - - switch (backend_state) { + DPRINTK("newstate=%d\n", newstate); + + switch (newstate) { case XenbusStateInitialising: case XenbusStateInitialised: case XenbusStateConnected: @@ -604,19 +611,19 @@ backend_changed(struct xenbus_device *de case XenbusStateClosed: case XenbusStateReconfigured: case XenbusStateReconfiguring: - break; + break; case XenbusStateInitWait: - if (dev->state != XenbusStateInitialising) + if (xenbus_get_state(dev) != XenbusStateInitialising) break; - if (network_connect(sc->xn_ifp) != 0) + if (network_connect(sc) != 0) break; - xenbus_switch_state(dev, XenbusStateConnected); + xenbus_set_state(dev, XenbusStateConnected); #ifdef notyet (void)send_fake_arp(netdev); #endif - break; break; + break; case XenbusStateClosing: - xenbus_frontend_closed(dev); + xenbus_set_state(dev, XenbusStateClosed); break; } } @@ -675,7 +682,8 @@ netif_release_tx_bufs(struct netfront_in if (((u_long)m) < KERNBASE) continue; gnttab_grant_foreign_access_ref(np->grant_tx_ref[i], - np->xbdev->otherend_id, virt_to_mfn(mtod(m, vm_offset_t)), + xenbus_get_otherend_id(np->xbdev), + virt_to_mfn(mtod(m, vm_offset_t)), GNTMAP_readonly); gnttab_release_grant_reference(&np->gref_tx_head, np->grant_tx_ref[i]); @@ -688,6 +696,7 @@ netif_release_tx_bufs(struct netfront_in static void network_alloc_rx_buffers(struct netfront_info *sc) { + int otherend_id = xenbus_get_otherend_id(sc->xbdev); unsigned short id; struct mbuf *m_new; int i, batch_target, notify; @@ -769,7 +778,7 @@ refill: if (sc->copying_receiver == 0) { gnttab_grant_foreign_transfer_ref(ref, - sc->xbdev->otherend_id, pfn); + otherend_id, pfn); sc->rx_pfn_array[nr_flips] = PFNTOMFN(pfn); if (!xen_feature(XENFEAT_auto_translated_physmap)) { /* Remove this page before passing @@ -782,7 +791,7 @@ refill: nr_flips++; } else { gnttab_grant_foreign_access_ref(ref, - sc->xbdev->otherend_id, + otherend_id, PFNTOMFN(pfn), 0); } req->id = id; @@ -1297,6 +1306,7 @@ xn_tick(void *xsc) static void xn_start_locked(struct ifnet *ifp) { + int otherend_id; unsigned short id; struct mbuf *m_head, *new_m; struct netfront_info *sc; @@ -1307,6 +1317,7 @@ xn_start_locked(struct ifnet *ifp) int notify; sc = ifp->if_softc; + otherend_id = xenbus_get_otherend_id(sc->xbdev); tx_bytes = 0; if (!netfront_carrier_ok(sc)) @@ -1336,7 +1347,7 @@ xn_start_locked(struct ifnet *ifp) ref = gnttab_claim_grant_reference(&sc->gref_tx_head); KASSERT((short)ref >= 0, ("Negative ref")); mfn = virt_to_mfn(mtod(new_m, vm_offset_t)); - gnttab_grant_foreign_access_ref(ref, sc->xbdev->otherend_id, + gnttab_grant_foreign_access_ref(ref, otherend_id, mfn, GNTMAP_readonly); tx->gref = sc->grant_tx_ref[id] = ref; tx->size = new_m->m_pkthdr.len; @@ -1540,23 +1551,19 @@ xn_stop(struct netfront_info *sc) } /* START of Xenolinux helper functions adapted to FreeBSD */ -static int -network_connect(struct ifnet *ifp) +int +network_connect(struct netfront_info *np) { - struct netfront_info *np; int i, requeue_idx, err; grant_ref_t ref; netif_rx_request_t *req; u_int feature_rx_copy, feature_rx_flip; - printf("network_connect\n"); - - np = ifp->if_softc; - err = xenbus_scanf(XBT_NIL, np->xbdev->otherend, + err = xenbus_scanf(XBT_NIL, xenbus_get_otherend_path(np->xbdev), "feature-rx-copy", "%u", &feature_rx_copy); if (err != 1) feature_rx_copy = 0; - err = xenbus_scanf(XBT_NIL, np->xbdev->otherend, + err = xenbus_scanf(XBT_NIL, xenbus_get_otherend_path(np->xbdev), "feature-rx-flip", "%u", &feature_rx_flip); if (err != 1) feature_rx_flip = 1; @@ -1573,7 +1580,7 @@ network_connect(struct ifnet *ifp) /* Recovery procedure: */ err = talk_to_backend(np->xbdev, np); if (err) - return (err); + return (err); /* Step 1: Reinitialise variables. */ netif_release_tx_bufs(np); @@ -1591,11 +1598,11 @@ network_connect(struct ifnet *ifp) if (!np->copying_receiver) { gnttab_grant_foreign_transfer_ref(ref, - np->xbdev->otherend_id, + xenbus_get_otherend_id(np->xbdev), vtophys(mtod(m, vm_offset_t))); } else { gnttab_grant_foreign_access_ref(ref, - np->xbdev->otherend_id, + xenbus_get_otherend_id(np->xbdev), vtophys(mtod(m, vm_offset_t)), 0); } req->gref = ref; @@ -1622,7 +1629,6 @@ network_connect(struct ifnet *ifp) return (0); } - static void show_device(struct netfront_info *sc) { @@ -1642,25 +1648,18 @@ show_device(struct netfront_info *sc) #endif } -static int ifno = 0; - /** Create a network device. * @param handle device handle */ -static int -create_netdev(struct xenbus_device *dev, struct ifnet **ifpp) +int +create_netdev(device_t dev) { int i; struct netfront_info *np; int err; struct ifnet *ifp; - np = (struct netfront_info *)malloc(sizeof(struct netfront_info), - M_DEVBUF, M_NOWAIT); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 09:04:48 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AEF371065670; Thu, 4 Dec 2008 09:04:48 +0000 (UTC) (envelope-from dfr@rabson.org) Received: from itchy.rabson.org (unknown [IPv6:2002:50b1:e8f2:1::143]) by mx1.freebsd.org (Postfix) with ESMTP id 54CC28FC0C; Thu, 4 Dec 2008 09:04:47 +0000 (UTC) (envelope-from dfr@rabson.org) Received: from [IPv6:2001:470:909f:1:21b:63ff:feb8:5abc] (unknown [IPv6:2001:470:909f:1:21b:63ff:feb8:5abc]) by itchy.rabson.org (Postfix) with ESMTP id A15063FA9; Thu, 4 Dec 2008 09:04:46 +0000 (GMT) Message-Id: <057C7074-9680-49A7-94B2-E3B29717C501@rabson.org> From: Doug Rabson To: Kip Macy In-Reply-To: <200812040519.mB45Jntb011688@svn.freebsd.org> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v929.2) Date: Thu, 4 Dec 2008 09:04:46 +0000 References: <200812040519.mB45Jntb011688@svn.freebsd.org> X-Mailer: Apple Mail (2.929.2) Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r185603 - in projects/releng_7_xen/sys: conf dev/xen/blkfront dev/xen/console dev/xen/netfront i386/include/xen xen xen/xenbus X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 09:04:48 -0000 Be warned - this will rename your block devices. This includes some code I added to the blkfront driver which attempts to pick a disk name and unit number by decoding the Linux major/minor number. If you have a block device named in your Xen config file as 'hda', it will attach in FreeBSD as ad0. A device named 'xvda' should attach as 'xbd0' in FreeBSD. On 4 Dec 2008, at 05:19, Kip Macy wrote: > Author: kmacy > Date: Thu Dec 4 05:19:49 2008 > New Revision: 185603 > URL: http://svn.freebsd.org/changeset/base/185603 > > Log: > Integrate 185444 and 185578 from dfr > Use newbus to managed devices and plug a race in netfront > > Added: > projects/releng_7_xen/sys/xen/xenbus/xenbus_if.m > projects/releng_7_xen/sys/xen/xenbus/xenbusvar.h > Deleted: > projects/releng_7_xen/sys/i386/include/xen/xenbus.h > Modified: > projects/releng_7_xen/sys/conf/files > projects/releng_7_xen/sys/dev/xen/blkfront/blkfront.c > projects/releng_7_xen/sys/dev/xen/blkfront/block.h > projects/releng_7_xen/sys/dev/xen/console/console.c > projects/releng_7_xen/sys/dev/xen/netfront/netfront.c > projects/releng_7_xen/sys/xen/gnttab.c > projects/releng_7_xen/sys/xen/gnttab.h > projects/releng_7_xen/sys/xen/xenbus/xenbus_client.c > projects/releng_7_xen/sys/xen/xenbus/xenbus_comms.c > projects/releng_7_xen/sys/xen/xenbus/xenbus_comms.h > projects/releng_7_xen/sys/xen/xenbus/xenbus_dev.c > projects/releng_7_xen/sys/xen/xenbus/xenbus_probe.c > projects/releng_7_xen/sys/xen/xenbus/xenbus_probe_backend.c > projects/releng_7_xen/sys/xen/xenbus/xenbus_xs.c > > Modified: projects/releng_7_xen/sys/conf/files > = > = > = > = > = > = > = > = > ====================================================================== > --- projects/releng_7_xen/sys/conf/files Thu Dec 4 05:15:03 2008 > (r185602) > +++ projects/releng_7_xen/sys/conf/files Thu Dec 4 05:19:49 2008 > (r185603) > @@ -2212,10 +2212,14 @@ xen/evtchn/evtchn_dev.c o > xen/xenbus/xenbus_client.c optional xen > xen/xenbus/xenbus_comms.c optional xen > xen/xenbus/xenbus_dev.c optional xen > +xen/xenbus/xenbus_if.m optional xen > xen/xenbus/xenbus_probe.c optional xen > -xen/xenbus/xenbus_probe_backend.c optional xen > +#xen/xenbus/xenbus_probe_backend.c optional xen > xen/xenbus/xenbus_xs.c optional xen > dev/xen/console/console.c optional xen > dev/xen/console/xencons_ring.c optional xen > dev/xen/blkfront/blkfront.c optional xen > dev/xen/netfront/netfront.c optional xen > +#dev/xen/xenpci/xenpci.c optional xen > +#xen/xenbus/xenbus_newbus.c optional xenhvm > + > > Modified: projects/releng_7_xen/sys/dev/xen/blkfront/blkfront.c > = > = > = > = > = > = > = > = > ====================================================================== > --- projects/releng_7_xen/sys/dev/xen/blkfront/blkfront.c Thu Dec 4 > 05:15:03 2008 (r185602) > +++ projects/releng_7_xen/sys/dev/xen/blkfront/blkfront.c Thu Dec 4 > 05:19:49 2008 (r185603) > @@ -43,9 +43,10 @@ __FBSDID("$FreeBSD$"); > #include > #include > #include > -#include > #include > #include > +#include > +#include > > #include > #include > @@ -53,15 +54,17 @@ __FBSDID("$FreeBSD$"); > > #include > > +#include "xenbus_if.h" > + > #define ASSERT(S) KASSERT(S, (#S)) > /* prototypes */ > struct xb_softc; > static void xb_startio(struct xb_softc *sc); > -static void connect(struct blkfront_info *); > -static void blkfront_closing(struct xenbus_device *); > -static int blkfront_remove(struct xenbus_device *); > -static int talk_to_backend(struct xenbus_device *, struct > blkfront_info *); > -static int setup_blkring(struct xenbus_device *, struct > blkfront_info *); > +static void connect(device_t, struct blkfront_info *); > +static void blkfront_closing(device_t); > +static int blkfront_detach(device_t); > +static int talk_to_backend(device_t, struct blkfront_info *); > +static int setup_blkring(device_t, struct blkfront_info *); > static void blkif_int(void *); > #if 0 > static void blkif_restart_queue(void *arg); > @@ -136,22 +139,95 @@ pfn_to_mfn(vm_paddr_t pfn) > } > > > +/* > + * Translate Linux major/minor to an appropriate name and unit > + * number. For HVM guests, this allows us to use the same drive names > + * with blkfront as the emulated drives, easing transition slightly. > + */ > +static void > +blkfront_vdevice_to_unit(int vdevice, int *unit, const char **name) > +{ > + static struct vdev_info { > + int major; > + int shift; > + int base; > + const char *name; > + } info[] = { > + {3, 6, 0, "ad"}, /* ide0 */ > + {22, 6, 2, "ad"}, /* ide1 */ > + {33, 6, 4, "ad"}, /* ide2 */ > + {34, 6, 6, "ad"}, /* ide3 */ > + {56, 6, 8, "ad"}, /* ide4 */ > + {57, 6, 10, "ad"}, /* ide5 */ > + {88, 6, 12, "ad"}, /* ide6 */ > + {89, 6, 14, "ad"}, /* ide7 */ > + {90, 6, 16, "ad"}, /* ide8 */ > + {91, 6, 18, "ad"}, /* ide9 */ > + > + {8, 4, 0, "da"}, /* scsi disk0 */ > + {65, 4, 16, "da"}, /* scsi disk1 */ > + {66, 4, 32, "da"}, /* scsi disk2 */ > + {67, 4, 48, "da"}, /* scsi disk3 */ > + {68, 4, 64, "da"}, /* scsi disk4 */ > + {69, 4, 80, "da"}, /* scsi disk5 */ > + {70, 4, 96, "da"}, /* scsi disk6 */ > + {71, 4, 112, "da"}, /* scsi disk7 */ > + {128, 4, 128, "da"}, /* scsi disk8 */ > + {129, 4, 144, "da"}, /* scsi disk9 */ > + {130, 4, 160, "da"}, /* scsi disk10 */ > + {131, 4, 176, "da"}, /* scsi disk11 */ > + {132, 4, 192, "da"}, /* scsi disk12 */ > + {133, 4, 208, "da"}, /* scsi disk13 */ > + {134, 4, 224, "da"}, /* scsi disk14 */ > + {135, 4, 240, "da"}, /* scsi disk15 */ > + > + {202, 4, 0, "xbd"}, /* xbd */ > + > + {0, 0, 0, NULL}, > + }; > + int major = vdevice >> 8; > + int minor = vdevice & 0xff; > + int i; > + > + if (vdevice & (1 << 28)) { > + *unit = (vdevice & ((1 << 28) - 1)) >> 8; > + *name = "xbd"; > + } > + > + for (i = 0; info[i].major; i++) { > + if (info[i].major == major) { > + *unit = info[i].base + (minor >> info[i].shift); > + *name = info[i].name; > + return; > + } > + } > + > + *unit = minor >> 4; > + *name = "xbd"; > +} > + > int > -xlvbd_add(blkif_sector_t capacity, int unit, uint16_t vdisk_info, > uint16_t sector_size, > - struct blkfront_info *info) > +xlvbd_add(device_t dev, blkif_sector_t capacity, > + int vdevice, uint16_t vdisk_info, uint16_t sector_size, > + struct blkfront_info *info) > { > struct xb_softc *sc; > - int error = 0; > - int unitno = unit - 767; > + int unit, error = 0; > + const char *name; > + > + blkfront_vdevice_to_unit(vdevice, &unit, &name); > > sc = (struct xb_softc *)malloc(sizeof(*sc), M_DEVBUF, M_WAITOK| > M_ZERO); > - sc->xb_unit = unitno; > + sc->xb_unit = unit; > sc->xb_info = info; > info->sc = sc; > > + if (strcmp(name, "xbd")) > + device_printf(dev, "attaching as %s%d\n", name, unit); > + > memset(&sc->xb_disk, 0, sizeof(sc->xb_disk)); > sc->xb_disk = disk_alloc(); > - sc->xb_disk->d_unit = unitno; > + sc->xb_disk->d_unit = unit; > sc->xb_disk->d_open = blkif_open; > sc->xb_disk->d_close = blkif_close; > sc->xb_disk->d_ioctl = blkif_ioctl; > @@ -226,19 +302,33 @@ xb_strategy(struct bio *bp) > return; > } > > +static int > +blkfront_probe(device_t dev) > +{ > + > + if (!strcmp(xenbus_get_type(dev), "vbd")) { > + device_set_desc(dev, "Virtual Block Device"); > + device_quiet(dev); > + return (0); > + } > > -/* Setup supplies the backend dir, virtual device. > + return (ENXIO); > +} > > -We place an event channel and shared frame entries. > -We watch backend to wait if it's ok. */ > -static int blkfront_probe(struct xenbus_device *dev, > - const struct xenbus_device_id *id) > +/* > + * Setup supplies the backend dir, virtual device. We place an event > + * channel and shared frame entries. We watch backend to wait if > it's > + * ok. > + */ > +static int > +blkfront_attach(device_t dev) > { > - int err, vdevice, i; > + int err, vdevice, i, unit; > struct blkfront_info *info; > + const char *name; > > /* FIXME: Use dynamic device id if this is not set. */ > - err = xenbus_scanf(XBT_NIL, dev->nodename, > + err = xenbus_scanf(XBT_NIL, xenbus_get_node(dev), > "virtual-device", "%i", &vdevice); > if (err != 1) { > xenbus_dev_fatal(dev, err, "reading virtual-device"); > @@ -246,11 +336,11 @@ static int blkfront_probe(struct xenbus_ > return (err); > } > > - info = malloc(sizeof(*info), M_DEVBUF, M_NOWAIT|M_ZERO); > - if (info == NULL) { > - xenbus_dev_fatal(dev, ENOMEM, "allocating info structure"); > - return ENOMEM; > - } > + blkfront_vdevice_to_unit(vdevice, &unit, &name); > + if (!strcmp(name, "xbd")) > + device_set_unit(dev, unit); > + > + info = device_get_softc(dev); > > /* > * XXX debug only > @@ -270,23 +360,20 @@ static int blkfront_probe(struct xenbus_ > info->shadow[BLK_RING_SIZE-1].req.id = 0x0fffffff; > > /* Front end dir is a number, which is used as the id. */ > - info->handle = strtoul(strrchr(dev->nodename,'/')+1, NULL, 0); > - dev->dev_driver_data = info; > + info->handle = strtoul(strrchr(xenbus_get_node(dev),'/')+1, NULL, > 0); > > err = talk_to_backend(dev, info); > if (err) { > - free(info, M_DEVBUF); > - dev->dev_driver_data = NULL; > return err; > } > > - return 0; > + return (0); > } > > - > -static int blkfront_resume(struct xenbus_device *dev) > +static int > +blkfront_resume(device_t dev) > { > - struct blkfront_info *info = dev->dev_driver_data; > + struct blkfront_info *info = device_get_softc(dev); > int err; > > DPRINTK("blkfront_resume: %s\n", dev->nodename); > @@ -301,8 +388,8 @@ static int blkfront_resume(struct xenbus > } > > /* Common code used when first setting up, and when resuming. */ > -static int talk_to_backend(struct xenbus_device *dev, > - struct blkfront_info *info) > +static int > +talk_to_backend(device_t dev, struct blkfront_info *info) > { > const char *message = NULL; > struct xenbus_transaction xbt; > @@ -320,19 +407,24 @@ static int talk_to_backend(struct xenbus > goto destroy_blkring; > } > > - err = xenbus_printf(xbt, dev->nodename, > + err = xenbus_printf(xbt, xenbus_get_node(dev), > "ring-ref","%u", info->ring_ref); > if (err) { > message = "writing ring-ref"; > goto abort_transaction; > } > - err = xenbus_printf(xbt, dev->nodename, > + err = xenbus_printf(xbt, xenbus_get_node(dev), > "event-channel", "%u", irq_to_evtchn_port(info->irq)); > if (err) { > message = "writing event-channel"; > goto abort_transaction; > } > - > + err = xenbus_printf(xbt, xenbus_get_node(dev), > + "protocol", "%s", XEN_IO_PROTO_ABI_NATIVE); > + if (err) { > + message = "writing protocol"; > + goto abort_transaction; > + } > err = xenbus_transaction_end(xbt, 0); > if (err) { > if (err == -EAGAIN) > @@ -340,7 +432,7 @@ static int talk_to_backend(struct xenbus > xenbus_dev_fatal(dev, err, "completing transaction"); > goto destroy_blkring; > } > - xenbus_switch_state(dev, XenbusStateInitialised); > + xenbus_set_state(dev, XenbusStateInitialised); > > return 0; > > @@ -355,7 +447,7 @@ static int talk_to_backend(struct xenbus > } > > static int > -setup_blkring(struct xenbus_device *dev, struct blkfront_info *info) > +setup_blkring(device_t dev, struct blkfront_info *info) > { > blkif_sring_t *sring; > int err; > @@ -378,7 +470,7 @@ setup_blkring(struct xenbus_device *dev, > } > info->ring_ref = err; > > - err = bind_listening_port_to_irqhandler(dev->otherend_id, > + err = bind_listening_port_to_irqhandler(xenbus_get_otherend_id(dev), > "xbd", (driver_intr_t *)blkif_int, info, > INTR_TYPE_BIO | INTR_MPSAFE, NULL); > if (err <= 0) { > @@ -398,10 +490,10 @@ setup_blkring(struct xenbus_device *dev, > /** > * Callback received when the backend's state changes. > */ > -static void backend_changed(struct xenbus_device *dev, > - XenbusState backend_state) > +static void > +blkfront_backend_changed(device_t dev, XenbusState backend_state) > { > - struct blkfront_info *info = dev->dev_driver_data; > + struct blkfront_info *info = device_get_softc(dev); > > DPRINTK("blkfront:backend_changed.\n"); > > @@ -416,7 +508,7 @@ static void backend_changed(struct xenbu > break; > > case XenbusStateConnected: > - connect(info); > + connect(dev, info); > break; > > case XenbusStateClosing: > @@ -447,7 +539,7 @@ static void backend_changed(struct xenbu > ** the details about the physical device - #sectors, size, etc). > */ > static void > -connect(struct blkfront_info *info) > +connect(device_t dev, struct blkfront_info *info) > { > unsigned long sectors, sector_size; > unsigned int binfo; > @@ -457,28 +549,34 @@ connect(struct blkfront_info *info) > (info->connected == BLKIF_STATE_SUSPENDED) ) > return; > > - DPRINTK("blkfront.c:connect:%s.\n", info->xbdev->otherend); > + DPRINTK("blkfront.c:connect:%s.\n", xenbus_get_otherend_path(dev)); > > - err = xenbus_gather(XBT_NIL, info->xbdev->otherend, > + err = xenbus_gather(XBT_NIL, xenbus_get_otherend_path(dev), > "sectors", "%lu", §ors, > "info", "%u", &binfo, > "sector-size", "%lu", §or_size, > NULL); > if (err) { > - xenbus_dev_fatal(info->xbdev, err, > - "reading backend fields at %s", > - info->xbdev->otherend); > + xenbus_dev_fatal(dev, err, > + "reading backend fields at %s", > + xenbus_get_otherend_path(dev)); > return; > } > - err = xenbus_gather(XBT_NIL, info->xbdev->otherend, > + err = xenbus_gather(XBT_NIL, xenbus_get_otherend_path(dev), > "feature-barrier", "%lu", &info->feature_barrier, > NULL); > if (err) > info->feature_barrier = 0; > > - xlvbd_add(sectors, info->vdevice, binfo, sector_size, info); > + device_printf(dev, "%juMB <%s> at %s", > + (uintmax_t) sectors / (1048576 / sector_size), > + device_get_desc(dev), > + xenbus_get_node(dev)); > + bus_print_child_footer(device_get_parent(dev), dev); > > - (void)xenbus_switch_state(info->xbdev, XenbusStateConnected); > + xlvbd_add(dev, sectors, info->vdevice, binfo, sector_size, info); > + > + (void)xenbus_set_state(dev, XenbusStateConnected); > > /* Kick pending requests. */ > mtx_lock(&blkif_io_lock); > @@ -498,11 +596,12 @@ connect(struct blkfront_info *info) > * the backend. Once is this done, we can switch to Closed in > * acknowledgement. > */ > -static void blkfront_closing(struct xenbus_device *dev) > +static void > +blkfront_closing(device_t dev) > { > - struct blkfront_info *info = dev->dev_driver_data; > + struct blkfront_info *info = device_get_softc(dev); > > - DPRINTK("blkfront_closing: %s removed\n", dev->nodename); > + DPRINTK("blkfront_closing: %s removed\n", xenbus_get_node(dev)); > > if (info->mi) { > DPRINTK("Calling xlvbd_del\n"); > @@ -510,20 +609,19 @@ static void blkfront_closing(struct xenb > info->mi = NULL; > } > > - xenbus_switch_state(dev, XenbusStateClosed); > + xenbus_set_state(dev, XenbusStateClosed); > } > > > -static int blkfront_remove(struct xenbus_device *dev) > +static int > +blkfront_detach(device_t dev) > { > - struct blkfront_info *info = dev->dev_driver_data; > + struct blkfront_info *info = device_get_softc(dev); > > - DPRINTK("blkfront_remove: %s removed\n", dev->nodename); > + DPRINTK("blkfront_remove: %s removed\n", xenbus_get_node(dev)); > > blkif_free(info, 0); > > - free(info, M_DEVBUF); > - > return 0; > } > > @@ -631,8 +729,9 @@ blkif_close(struct disk *dp) > /* Check whether we have been instructed to close. We will > have ignored this request initially, as the device was > still mounted. */ > - struct xenbus_device * dev = sc->xb_info->xbdev; > - XenbusState state = xenbus_read_driver_state(dev->otherend); > + device_t dev = sc->xb_info->xbdev; > + XenbusState state = > + xenbus_read_driver_state(xenbus_get_otherend_path(dev)); > > if (state == XenbusStateClosing) > blkfront_closing(dev); > @@ -731,7 +830,7 @@ static int blkif_queue_request(struct bi > > gnttab_grant_foreign_access_ref( > ref, > - info->xbdev->otherend_id, > + xenbus_get_otherend_id(info->xbdev), > buffer_ma >> PAGE_SHIFT, > ring_req->operation & 1 ); /* ??? */ > info->shadow[id].frame[ring_req->nr_segments] = > @@ -952,7 +1051,7 @@ blkif_recover(struct blkfront_info *info > for (j = 0; j < req->nr_segments; j++) > gnttab_grant_foreign_access_ref( > req->seg[j].gref, > - info->xbdev->otherend_id, > + xenbus_get_otherend_id(info->xbdev), > pfn_to_mfn(info->shadow[req->id].frame[j]), > 0 /* assume not readonly */); > > @@ -963,7 +1062,7 @@ blkif_recover(struct blkfront_info *info > > free(copy, M_DEVBUF); > > - xenbus_switch_state(info->xbdev, XenbusStateConnected); > + xenbus_set_state(info->xbdev, XenbusStateConnected); > > /* Now safe for us to use the shared ring */ > mtx_lock(&blkif_io_lock); > @@ -979,48 +1078,30 @@ blkif_recover(struct blkfront_info *info > mtx_unlock(&blkif_io_lock); > } > > -static int > -blkfront_is_ready(struct xenbus_device *dev) > -{ > - struct blkfront_info *info = dev->dev_driver_data; > - > - return info->is_ready; > -} > - > -static struct xenbus_device_id blkfront_ids[] = { > - { "vbd" }, > - { "" } > -}; > - > - > -static struct xenbus_driver blkfront = { > - .name = "vbd", > - .ids = blkfront_ids, > - .probe = blkfront_probe, > - .remove = blkfront_remove, > - .resume = blkfront_resume, > - .otherend_changed = backend_changed, > - .is_ready = blkfront_is_ready, > -}; > - > - > - > -static void > -xenbus_init(void) > -{ > - xenbus_register_frontend(&blkfront); > -} > +/* ** Driver registration ** */ > +static device_method_t blkfront_methods[] = { > + /* Device interface */ > + DEVMETHOD(device_probe, blkfront_probe), > + DEVMETHOD(device_attach, blkfront_attach), > + DEVMETHOD(device_detach, blkfront_detach), > + DEVMETHOD(device_shutdown, bus_generic_shutdown), > + DEVMETHOD(device_suspend, bus_generic_suspend), > + DEVMETHOD(device_resume, blkfront_resume), > + > + /* Xenbus interface */ > + DEVMETHOD(xenbus_backend_changed, blkfront_backend_changed), > + > + { 0, 0 } > +}; > + > +static driver_t blkfront_driver = { > + "xbd", > + blkfront_methods, > + sizeof(struct blkfront_info), > +}; > +devclass_t blkfront_devclass; > + > +DRIVER_MODULE(xbd, xenbus, blkfront_driver, blkfront_devclass, 0, 0); > > MTX_SYSINIT(ioreq, &blkif_io_lock, "BIO LOCK", MTX_NOWITNESS); /* > XXX how does one enroll a lock? */ > -SYSINIT(xbdev, SI_SUB_PSEUDO, SI_ORDER_SECOND, xenbus_init, NULL); > > - > -/* > - * Local variables: > - * mode: C > - * c-set-style: "BSD" > - * c-basic-offset: 8 > - * tab-width: 4 > - * indent-tabs-mode: t > - * End: > - */ > > Modified: projects/releng_7_xen/sys/dev/xen/blkfront/block.h > = > = > = > = > = > = > = > = > ====================================================================== > --- projects/releng_7_xen/sys/dev/xen/blkfront/block.h Thu Dec 4 > 05:15:03 2008 (r185602) > +++ projects/releng_7_xen/sys/dev/xen/blkfront/block.h Thu Dec 4 > 05:19:49 2008 (r185603) > @@ -60,7 +60,7 @@ struct xb_softc { > */ > struct blkfront_info > { > - struct xenbus_device *xbdev; > + device_t xbdev; > dev_t dev; > struct gendisk *gd; > int vdevice; > @@ -89,7 +89,7 @@ struct blkfront_info > /* Note that xlvbd_add doesn't call add_disk for you: you're expected > to call add_disk on info->gd once the disk is properly connected > up. */ > -int xlvbd_add(blkif_sector_t capacity, int device, > +int xlvbd_add(device_t, blkif_sector_t capacity, int device, > uint16_t vdisk_info, uint16_t sector_size, struct > blkfront_info *info); > void xlvbd_del(struct blkfront_info *info); > > > Modified: projects/releng_7_xen/sys/dev/xen/console/console.c > = > = > = > = > = > = > = > = > ====================================================================== > --- projects/releng_7_xen/sys/dev/xen/console/console.c Thu Dec 4 > 05:15:03 2008 (r185602) > +++ projects/releng_7_xen/sys/dev/xen/console/console.c Thu Dec 4 > 05:19:49 2008 (r185603) > @@ -294,6 +294,12 @@ xencons_rx(char *buf, unsigned len) > int i; > struct tty *tp = xccons; > > +#if 1 > + if (len > 0 && buf[0] == '`') > + printf("%08lx %08lx\r", > + HYPERVISOR_shared_info->evtchn_pending[0], > + HYPERVISOR_shared_info->evtchn_mask[0]); > +#endif > for (i = 0; i < len; i++) { > if (xen_console_up) > (*linesw[tp->t_line]->l_rint)(buf[i], tp); > > Modified: projects/releng_7_xen/sys/dev/xen/netfront/netfront.c > = > = > = > = > = > = > = > = > ====================================================================== > --- projects/releng_7_xen/sys/dev/xen/netfront/netfront.c Thu Dec 4 > 05:15:03 2008 (r185602) > +++ projects/releng_7_xen/sys/dev/xen/netfront/netfront.c Thu Dec 4 > 05:19:49 2008 (r185603) > @@ -25,6 +25,7 @@ __FBSDID("$FreeBSD$"); > #include > #include > #include > +#include > #include > #include > #include > @@ -65,13 +66,14 @@ __FBSDID("$FreeBSD$"); > #include > #include > #include > -#include > #include > #include > #include > #include > #include > +#include > > +#include "xenbus_if.h" > > #define GRANT_INVALID_REF 0 > > @@ -117,19 +119,19 @@ static void xn_watchdog(struct ifnet *); > > static void show_device(struct netfront_info *sc); > #ifdef notyet > -static void netfront_closing(struct xenbus_device *dev); > +static void netfront_closing(device_t dev); > #endif > static void netif_free(struct netfront_info *info); > -static int netfront_remove(struct xenbus_device *dev); > +static int netfront_detach(device_t dev); > > -static int talk_to_backend(struct xenbus_device *dev, struct > netfront_info *info); > -static int create_netdev(struct xenbus_device *dev, struct ifnet > **ifp); > +static int talk_to_backend(device_t dev, struct netfront_info *info); > +static int create_netdev(device_t dev); > static void netif_disconnect_backend(struct netfront_info *info); > -static int setup_device(struct xenbus_device *dev, struct > netfront_info *info); > +static int setup_device(device_t dev, struct netfront_info *info); > static void end_access(int ref, void *page); > > /* Xenolinux helper functions */ > -static int network_connect(struct ifnet *ifp); > +int network_connect(struct netfront_info *); > > static void xn_free_rx_ring(struct netfront_info *); > > @@ -222,7 +224,7 @@ struct netfront_info { > grant_ref_t grant_rx_ref[NET_TX_RING_SIZE + 1]; > > #define TX_MAX_TARGET min(NET_RX_RING_SIZE, 256) > - struct xenbus_device *xbdev; > + device_t xbdev; > int tx_ring_ref; > int rx_ring_ref; > uint8_t mac[ETHER_ADDR_LEN]; > @@ -328,7 +330,7 @@ xennet_get_rx_ref(struct netfront_info * > #define WPRINTK(fmt, args...) \ > printf("[XEN] " fmt, ##args) > #define DPRINTK(fmt, args...) \ > - printf("[XEN] " fmt, ##args) > + printf("[XEN] %s: " fmt, __func__, ##args) > > > static __inline struct mbuf* > @@ -341,14 +343,14 @@ makembuf (struct mbuf *buf) > if (! m) > return 0; > > - M_MOVE_PKTHDR(m, buf); > + M_MOVE_PKTHDR(m, buf); > > - m_cljget(m, M_DONTWAIT, MJUMPAGESIZE); > + m_cljget(m, M_DONTWAIT, MJUMPAGESIZE); > m->m_pkthdr.len = buf->m_pkthdr.len; > m->m_len = buf->m_len; > - m_copydata(buf, 0, buf->m_pkthdr.len, mtod(m,caddr_t) ); > + m_copydata(buf, 0, buf->m_pkthdr.len, mtod(m,caddr_t) ); > > - m->m_ext.ext_args = (caddr_t *)(uintptr_t) > (vtophys(mtod(m,caddr_t)) >> PAGE_SHIFT); > + m->m_ext.ext_args = (caddr_t *)(uintptr_t) > (vtophys(mtod(m,caddr_t)) >> PAGE_SHIFT); > > return m; > } > @@ -360,12 +362,12 @@ makembuf (struct mbuf *buf) > * Return 0 on success, or errno on error. > */ > static int > -xen_net_read_mac(struct xenbus_device *dev, uint8_t mac[]) > +xen_net_read_mac(device_t dev, uint8_t mac[]) > { > char *s; > int i; > char *e; > - char *macstr = xenbus_read(XBT_NIL, dev->nodename, "mac", NULL); > + char *macstr = xenbus_read(XBT_NIL, xenbus_get_node(dev), "mac", > NULL); > if (IS_ERR(macstr)) { > return PTR_ERR(macstr); > } > @@ -389,23 +391,28 @@ xen_net_read_mac(struct xenbus_device *d > * Connected state. > */ > static int > -netfront_probe(struct xenbus_device *dev, const struct > xenbus_device_id *id) > +netfront_probe(device_t dev) > { > + > + if (!strcmp(xenbus_get_type(dev), "vif")) { > + device_set_desc(dev, "Virtual Network Interface"); > + return (0); > + } > + > + return (ENXIO); > +} > + > +static int > +netfront_attach(device_t dev) > +{ > int err; > - struct ifnet *ifp; > - struct netfront_info *info; > > - printf("netfront_probe() \n"); > - > - err = create_netdev(dev, &ifp); > + err = create_netdev(dev); > if (err) { > xenbus_dev_fatal(dev, err, "creating netdev"); > return err; > } > > - info = ifp->if_softc; > - dev->dev_driver_data = info; > - > return 0; > } > > @@ -417,11 +424,11 @@ netfront_probe(struct xenbus_device *dev > * rest of the kernel. > */ > static int > -netfront_resume(struct xenbus_device *dev) > +netfront_resume(device_t dev) > { > - struct netfront_info *info = dev->dev_driver_data; > + struct netfront_info *info = device_get_softc(dev); > > - DPRINTK("%s\n", dev->nodename); > + DPRINTK("%s\n", xenbus_get_node(dev)); > > netif_disconnect_backend(info); > return (0); > @@ -430,15 +437,16 @@ netfront_resume(struct xenbus_device *de > > /* Common code used when first setting up, and when resuming. */ > static int > -talk_to_backend(struct xenbus_device *dev, struct netfront_info > *info) > +talk_to_backend(device_t dev, struct netfront_info *info) > { > const char *message; > struct xenbus_transaction xbt; > + const char *node = xenbus_get_node(dev); > int err; > > err = xen_net_read_mac(dev, info->mac); > if (err) { > - xenbus_dev_fatal(dev, err, "parsing %s/mac", dev->nodename); > + xenbus_dev_fatal(dev, err, "parsing %s/mac", node); > goto out; > } > > @@ -453,47 +461,47 @@ talk_to_backend(struct xenbus_device *de > xenbus_dev_fatal(dev, err, "starting transaction"); > goto destroy_ring; > } > - err = xenbus_printf(xbt, dev->nodename, "tx-ring-ref","%u", > + err = xenbus_printf(xbt, node, "tx-ring-ref","%u", > info->tx_ring_ref); > if (err) { > message = "writing tx ring-ref"; > goto abort_transaction; > } > - err = xenbus_printf(xbt, dev->nodename, "rx-ring-ref","%u", > + err = xenbus_printf(xbt, node, "rx-ring-ref","%u", > info->rx_ring_ref); > if (err) { > message = "writing rx ring-ref"; > goto abort_transaction; > } > - err = xenbus_printf(xbt, dev->nodename, > + err = xenbus_printf(xbt, node, > "event-channel", "%u", irq_to_evtchn_port(info->irq)); > if (err) { > message = "writing event-channel"; > goto abort_transaction; > } > - err = xenbus_printf(xbt, dev->nodename, "request-rx-copy", "%u", > + err = xenbus_printf(xbt, node, "request-rx-copy", "%u", > info->copying_receiver); > if (err) { > message = "writing request-rx-copy"; > goto abort_transaction; > } > - err = xenbus_printf(xbt, dev->nodename, "feature-rx-notify", "%d", > 1); > + err = xenbus_printf(xbt, node, "feature-rx-notify", "%d", 1); > if (err) { > message = "writing feature-rx-notify"; > goto abort_transaction; > } > - err = xenbus_printf(xbt, dev->nodename, "feature-no-csum-offload", > "%d", 1); > + err = xenbus_printf(xbt, node, "feature-no-csum-offload", "%d", 1); > if (err) { > message = "writing feature-no-csum-offload"; > goto abort_transaction; > } > - err = xenbus_printf(xbt, dev->nodename, "feature-sg", "%d", 1); > + err = xenbus_printf(xbt, node, "feature-sg", "%d", 1); > if (err) { > message = "writing feature-sg"; > goto abort_transaction; > } > #ifdef HAVE_TSO > - err = xenbus_printf(xbt, dev->nodename, "feature-gso-tcpv4", "%d", > 1); > + err = xenbus_printf(xbt, node, "feature-gso-tcpv4", "%d", 1); > if (err) { > message = "writing feature-gso-tcpv4"; > goto abort_transaction; > @@ -521,7 +529,7 @@ talk_to_backend(struct xenbus_device *de > > > static int > -setup_device(struct xenbus_device *dev, struct netfront_info *info) > +setup_device(device_t dev, struct netfront_info *info) > { > netif_tx_sring_t *txs; > netif_rx_sring_t *rxs; > @@ -564,9 +572,9 @@ setup_device(struct xenbus_device *dev, > info->rx_ring_ref = err; > > #if 0 > - network_connect(ifp); > + network_connect(info); > #endif > - err = bind_listening_port_to_irqhandler(dev->otherend_id, > + err = bind_listening_port_to_irqhandler(xenbus_get_otherend_id(dev), > "xn", xn_intr, info, INTR_TYPE_NET | INTR_MPSAFE, NULL); > > if (err <= 0) { > @@ -589,14 +597,13 @@ setup_device(struct xenbus_device *dev, > * Callback received when the backend's state changes. > */ > static void > -backend_changed(struct xenbus_device *dev, > - XenbusState backend_state) > +netfront_backend_changed(device_t dev, XenbusState newstate) > { > - struct netfront_info *sc = dev->dev_driver_data; > + struct netfront_info *sc = device_get_softc(dev); > > - DPRINTK("\n"); > - > - switch (backend_state) { > + DPRINTK("newstate=%d\n", newstate); > + > + switch (newstate) { > case XenbusStateInitialising: > case XenbusStateInitialised: > case XenbusStateConnected: > @@ -604,19 +611,19 @@ backend_changed(struct xenbus_device *de > case XenbusStateClosed: > case XenbusStateReconfigured: > case XenbusStateReconfiguring: > - break; > + break; > case XenbusStateInitWait: > - if (dev->state != XenbusStateInitialising) > + if (xenbus_get_state(dev) != XenbusStateInitialising) > break; > - if (network_connect(sc->xn_ifp) != 0) > + if (network_connect(sc) != 0) > break; > - xenbus_switch_state(dev, XenbusStateConnected); > + xenbus_set_state(dev, XenbusStateConnected); > #ifdef notyet > (void)send_fake_arp(netdev); > #endif > - break; break; > + break; > case XenbusStateClosing: > - xenbus_frontend_closed(dev); > + xenbus_set_state(dev, XenbusStateClosed); > break; > } > } > @@ -675,7 +682,8 @@ netif_release_tx_bufs(struct netfront_in > if (((u_long)m) < KERNBASE) > continue; > gnttab_grant_foreign_access_ref(np->grant_tx_ref[i], > - np->xbdev->otherend_id, virt_to_mfn(mtod(m, vm_offset_t)), > + xenbus_get_otherend_id(np->xbdev), > + virt_to_mfn(mtod(m, vm_offset_t)), > GNTMAP_readonly); > gnttab_release_grant_reference(&np->gref_tx_head, > np->grant_tx_ref[i]); > @@ -688,6 +696,7 @@ netif_release_tx_bufs(struct netfront_in > static void > network_alloc_rx_buffers(struct netfront_info *sc) > { > + int otherend_id = xenbus_get_otherend_id(sc->xbdev); > unsigned short id; > struct mbuf *m_new; > int i, batch_target, notify; > @@ -769,7 +778,7 @@ refill: > > if (sc->copying_receiver == 0) { > gnttab_grant_foreign_transfer_ref(ref, > - sc->xbdev->otherend_id, pfn); > + otherend_id, pfn); > sc->rx_pfn_array[nr_flips] = PFNTOMFN(pfn); > if (!xen_feature(XENFEAT_auto_translated_physmap)) { > /* Remove this page before passing > @@ -782,7 +791,7 @@ refill: > nr_flips++; > } else { > gnttab_grant_foreign_access_ref(ref, > - sc->xbdev->otherend_id, > + otherend_id, > PFNTOMFN(pfn), 0); > } > req->id = id; > @@ -856,110 +865,112 @@ xn_rxeof(struct netfront_info *np) > multicall_entry_t *mcl; > struct mbuf *m; > struct mbuf_head rxq, errq; > - int err, pages_flipped = 0; > + int err, pages_flipped = 0, work_to_do; > > - XN_RX_LOCK_ASSERT(np); > - if (!netfront_carrier_ok(np)) > - return; > + do { > + XN_RX_LOCK_ASSERT(np); > + if (!netfront_carrier_ok(np)) > + return; > > - mbufq_init(&errq); > - mbufq_init(&rxq); > + mbufq_init(&errq); > + mbufq_init(&rxq); > > - ifp = np->xn_ifp; > + ifp = np->xn_ifp; > > - rp = np->rx.sring->rsp_prod; > - rmb(); /* Ensure we see queued responses up to 'rp'. */ > + rp = np->rx.sring->rsp_prod; > + rmb(); /* Ensure we see queued responses up to 'rp'. */ > > - i = np->rx.rsp_cons; > - while ((i != rp)) { > - memcpy(rx, RING_GET_RESPONSE(&np->rx, i), sizeof(*rx)); > - memset(extras, 0, sizeof(rinfo.extras)); > - > - m = NULL; > - err = xennet_get_responses(np, &rinfo, rp, &m, > - &pages_flipped); > + i = np->rx.rsp_cons; > + while ((i != rp)) { > + memcpy(rx, RING_GET_RESPONSE(&np->rx, i), sizeof(*rx)); > + memset(extras, 0, sizeof(rinfo.extras)); > > - if (unlikely(err)) { > + m = NULL; > + err = xennet_get_responses(np, &rinfo, rp, &m, > + &pages_flipped); > + > + if (unlikely(err)) { > if (m) > - mbufq_tail(&errq, m); > - np->stats.rx_errors++; > - i = np->rx.rsp_cons; > - continue; > - } > + mbufq_tail(&errq, m); > + np->stats.rx_errors++; > + i = np->rx.rsp_cons; > + continue; > + } > > - m->m_pkthdr.rcvif = ifp; > - if ( rx->flags & NETRXF_data_validated ) { > - /* Tell the stack the checksums are okay */ > - /* > - * XXX this isn't necessarily the case - need to add > - * check > - */ > + m->m_pkthdr.rcvif = ifp; > + if ( rx->flags & NETRXF_data_validated ) { > + /* Tell the stack the checksums are okay */ > + /* > + * XXX this isn't necessarily the case - need to add > + * check > + */ > > - m->m_pkthdr.csum_flags |= > - (CSUM_IP_CHECKED | CSUM_IP_VALID | CSUM_DATA_VALID > - | CSUM_PSEUDO_HDR); > - m->m_pkthdr.csum_data = 0xffff; > - } > + m->m_pkthdr.csum_flags |= > + (CSUM_IP_CHECKED | CSUM_IP_VALID | CSUM_DATA_VALID > + | CSUM_PSEUDO_HDR); > + m->m_pkthdr.csum_data = 0xffff; > + } > > - np->stats.rx_packets++; > - np->stats.rx_bytes += m->m_pkthdr.len; > + np->stats.rx_packets++; > + np->stats.rx_bytes += m->m_pkthdr.len; > > - mbufq_tail(&rxq, m); > > *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 15:34:54 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 83FEE1065764; Thu, 4 Dec 2008 15:34:54 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5A5498FC1D; Thu, 4 Dec 2008 15:34:54 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB4FYrt3024952; Thu, 4 Dec 2008 15:34:53 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB4FYrxO024951; Thu, 4 Dec 2008 15:34:53 GMT (envelope-from des@svn.freebsd.org) Message-Id: <200812041534.mB4FYrxO024951@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Thu, 4 Dec 2008 15:34:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185613 - in projects/quota64: . lib/libutil libexec/rpc.rquotad X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 15:34:54 -0000 Author: des Date: Thu Dec 4 15:34:53 2008 New Revision: 185613 URL: http://svn.freebsd.org/changeset/base/185613 Log: Bootstrap mergeinfo Modified: projects/quota64/ (props changed) projects/quota64/lib/libutil/ (props changed) projects/quota64/libexec/rpc.rquotad/ (props changed) From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 16:33:46 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F2F4F1065677; Thu, 4 Dec 2008 16:33:45 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C95D38FC22; Thu, 4 Dec 2008 16:33:45 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB4GXjgE026257; Thu, 4 Dec 2008 16:33:45 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB4GXjmK026256; Thu, 4 Dec 2008 16:33:45 GMT (envelope-from des@svn.freebsd.org) Message-Id: <200812041633.mB4GXjmK026256@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Thu, 4 Dec 2008 16:33:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185615 - in projects/quota64: . lib/libutil libexec/rpc.rquotad X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 16:33:46 -0000 Author: des Date: Thu Dec 4 16:33:45 2008 New Revision: 185615 URL: http://svn.freebsd.org/changeset/base/185615 Log: Propagate mergeinfo up the tree Modified: projects/quota64/ (props changed) projects/quota64/lib/libutil/ (props changed) projects/quota64/libexec/rpc.rquotad/ (props changed) From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 18:48:12 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EC4D11065677; Thu, 4 Dec 2008 18:48:12 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A016D8FC13; Thu, 4 Dec 2008 18:48:12 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB4ImC0G030573; Thu, 4 Dec 2008 18:48:12 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB4ImBtV030546; Thu, 4 Dec 2008 18:48:11 GMT (envelope-from des@svn.freebsd.org) Message-Id: <200812041848.mB4ImBtV030546@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Thu, 4 Dec 2008 18:48:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185617 - in projects/quota64: . bin/cat bin/chio bin/cp bin/df bin/ps bin/rcp bin/sh cddl cddl/compat/opensolaris/include cddl/compat/opensolaris/misc cddl/contrib/opensolaris/cmd/dtra... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 18:48:13 -0000 Author: des Date: Thu Dec 4 18:48:08 2008 New Revision: 185617 URL: http://svn.freebsd.org/changeset/base/185617 Log: integrate from head@185615 Added: projects/quota64/cddl/compat/opensolaris/include/libshare.h - copied unchanged from r185613, head/cddl/compat/opensolaris/include/libshare.h projects/quota64/cddl/contrib/opensolaris/cmd/zinject/ - copied from r185613, head/cddl/contrib/opensolaris/cmd/zinject/ projects/quota64/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c - copied unchanged from r185613, head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c projects/quota64/cddl/usr.bin/zinject/ - copied from r185613, head/cddl/usr.bin/zinject/ projects/quota64/contrib/ncurses/man/curs_memleaks.3x - copied unchanged from r185613, head/contrib/ncurses/man/curs_memleaks.3x projects/quota64/contrib/ncurses/misc/ncurses.supp - copied unchanged from r185613, head/contrib/ncurses/misc/ncurses.supp projects/quota64/contrib/openbsm/CREDITS - copied unchanged from r185613, head/contrib/openbsm/CREDITS projects/quota64/contrib/openbsm/INSTALL - copied unchanged from r185613, head/contrib/openbsm/INSTALL projects/quota64/contrib/openbsm/NEWS - copied unchanged from r185613, head/contrib/openbsm/NEWS projects/quota64/contrib/openbsm/bin/auditd/audit_triggers.defs - copied unchanged from r185613, head/contrib/openbsm/bin/auditd/audit_triggers.defs projects/quota64/contrib/openbsm/bin/auditd/auditd_control.defs - copied unchanged from r185613, head/contrib/openbsm/bin/auditd/auditd_control.defs projects/quota64/contrib/openbsm/compat/strlcpy.h - copied unchanged from r185613, head/contrib/openbsm/compat/strlcpy.h projects/quota64/contrib/openbsm/sys/ - copied from r185613, head/contrib/openbsm/sys/ projects/quota64/etc/rc.d/gssd - copied unchanged from r184632, head/etc/rc.d/gssd projects/quota64/gnu/usr.bin/gdb/gdbserver/fbsd-arm-low.c - copied unchanged from r185613, head/gnu/usr.bin/gdb/gdbserver/fbsd-arm-low.c projects/quota64/gnu/usr.bin/gdb/gdbserver/reg-arm.c - copied unchanged from r185613, head/gnu/usr.bin/gdb/gdbserver/reg-arm.c projects/quota64/lib/libc/string/ffsll.c (props changed) - copied unchanged from r184632, head/lib/libc/string/ffsll.c projects/quota64/lib/libc/string/flsll.c (props changed) - copied unchanged from r184632, head/lib/libc/string/flsll.c projects/quota64/lib/libkvm/kvm_minidump_arm.c - copied unchanged from r185613, head/lib/libkvm/kvm_minidump_arm.c projects/quota64/lib/libpmc/libpmcinternal.h - copied unchanged from r185613, head/lib/libpmc/libpmcinternal.h projects/quota64/lib/libusb20/ - copied from r184632, head/lib/libusb20/ projects/quota64/lib/libutil/kinfo_getfile.c - copied unchanged from r185613, head/lib/libutil/kinfo_getfile.c projects/quota64/lib/libutil/kinfo_getvmmap.c - copied unchanged from r185613, head/lib/libutil/kinfo_getvmmap.c projects/quota64/share/man/man4/ale.4 - copied unchanged from r185613, head/share/man/man4/ale.4 projects/quota64/share/man/man4/man4.arm/mge.4 - copied unchanged from r185613, head/share/man/man4/man4.arm/mge.4 projects/quota64/share/man/man4/sdhci.4 - copied unchanged from r184632, head/share/man/man4/sdhci.4 projects/quota64/share/man/man4/usb2_bluetooth.4 - copied unchanged from r184632, head/share/man/man4/usb2_bluetooth.4 projects/quota64/share/man/man4/usb2_controller.4 - copied unchanged from r184632, head/share/man/man4/usb2_controller.4 projects/quota64/share/man/man4/usb2_core.4 - copied unchanged from r184632, head/share/man/man4/usb2_core.4 projects/quota64/share/man/man4/usb2_ethernet.4 - copied unchanged from r184632, head/share/man/man4/usb2_ethernet.4 projects/quota64/share/man/man4/usb2_image.4 - copied unchanged from r184632, head/share/man/man4/usb2_image.4 projects/quota64/share/man/man4/usb2_input.4 - copied unchanged from r184632, head/share/man/man4/usb2_input.4 projects/quota64/share/man/man4/usb2_misc.4 - copied unchanged from r184632, head/share/man/man4/usb2_misc.4 projects/quota64/share/man/man4/usb2_ndis.4 - copied unchanged from r184632, head/share/man/man4/usb2_ndis.4 projects/quota64/share/man/man4/usb2_quirk.4 - copied unchanged from r184632, head/share/man/man4/usb2_quirk.4 projects/quota64/share/man/man4/usb2_serial.4 - copied unchanged from r184632, head/share/man/man4/usb2_serial.4 projects/quota64/share/man/man4/usb2_sound.4 - copied unchanged from r184632, head/share/man/man4/usb2_sound.4 projects/quota64/share/man/man4/usb2_storage.4 - copied unchanged from r184632, head/share/man/man4/usb2_storage.4 projects/quota64/share/man/man4/usb2_template.4 - copied unchanged from r184632, head/share/man/man4/usb2_template.4 projects/quota64/share/man/man4/usb2_wlan.4 - copied unchanged from r184632, head/share/man/man4/usb2_wlan.4 projects/quota64/sys/arm/arm/minidump_machdep.c - copied unchanged from r185613, head/sys/arm/arm/minidump_machdep.c projects/quota64/sys/arm/at91/at91_machdep.c - copied unchanged from r185613, head/sys/arm/at91/at91_machdep.c projects/quota64/sys/arm/at91/at91board.h - copied unchanged from r185613, head/sys/arm/at91/at91board.h projects/quota64/sys/arm/at91/board_bwct.c - copied unchanged from r185613, head/sys/arm/at91/board_bwct.c projects/quota64/sys/arm/at91/board_hl200.c - copied unchanged from r185613, head/sys/arm/at91/board_hl200.c projects/quota64/sys/arm/at91/board_kb920x.c - copied unchanged from r185613, head/sys/arm/at91/board_kb920x.c projects/quota64/sys/arm/at91/board_tsc4370.c - copied unchanged from r185613, head/sys/arm/at91/board_tsc4370.c projects/quota64/sys/arm/at91/std.bwct - copied unchanged from r185613, head/sys/arm/at91/std.bwct projects/quota64/sys/arm/at91/std.hl200 - copied unchanged from r185613, head/sys/arm/at91/std.hl200 projects/quota64/sys/arm/at91/std.tsc4370 - copied unchanged from r185613, head/sys/arm/at91/std.tsc4370 projects/quota64/sys/arm/conf/DEFAULTS - copied unchanged from r184632, head/sys/arm/conf/DEFAULTS projects/quota64/sys/arm/include/minidump.h - copied unchanged from r185613, head/sys/arm/include/minidump.h projects/quota64/sys/arm/mv/mv_pci.c - copied unchanged from r185613, head/sys/arm/mv/mv_pci.c projects/quota64/sys/boot/i386/gptzfsboot/ - copied from r185613, head/sys/boot/i386/gptzfsboot/ projects/quota64/sys/boot/i386/zfsboot/ - copied from r185613, head/sys/boot/i386/zfsboot/ projects/quota64/sys/boot/zfs/ - copied from r185613, head/sys/boot/zfs/ projects/quota64/sys/cddl/boot/ - copied from r185613, head/sys/cddl/boot/ projects/quota64/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c - copied unchanged from r185613, head/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c projects/quota64/sys/cddl/compat/opensolaris/sys/file.h - copied unchanged from r185613, head/sys/cddl/compat/opensolaris/sys/file.h projects/quota64/sys/cddl/compat/opensolaris/sys/kidmap.h - copied unchanged from r185613, head/sys/cddl/compat/opensolaris/sys/kidmap.h projects/quota64/sys/cddl/compat/opensolaris/sys/pathname.h - copied unchanged from r185613, head/sys/cddl/compat/opensolaris/sys/pathname.h projects/quota64/sys/cddl/compat/opensolaris/sys/refstr.h - copied unchanged from r185613, head/sys/cddl/compat/opensolaris/sys/refstr.h projects/quota64/sys/cddl/compat/opensolaris/sys/sid.h - copied unchanged from r185613, head/sys/cddl/compat/opensolaris/sys/sid.h projects/quota64/sys/cddl/compat/opensolaris/sys/sig.h - copied unchanged from r185613, head/sys/cddl/compat/opensolaris/sys/sig.h projects/quota64/sys/cddl/contrib/opensolaris/common/unicode/ - copied from r185613, head/sys/cddl/contrib/opensolaris/common/unicode/ projects/quota64/sys/cddl/contrib/opensolaris/common/zfs/zfs_comutil.c - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/common/zfs/zfs_comutil.c projects/quota64/sys/cddl/contrib/opensolaris/common/zfs/zfs_comutil.h - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/common/zfs/zfs_comutil.h projects/quota64/sys/cddl/contrib/opensolaris/common/zfs/zfs_deleg.c - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/common/zfs/zfs_deleg.c projects/quota64/sys/cddl/contrib/opensolaris/common/zfs/zfs_deleg.h - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/common/zfs/zfs_deleg.h projects/quota64/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c projects/quota64/sys/cddl/contrib/opensolaris/common/zfs/zprop_common.c - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/common/zfs/zprop_common.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/vnode.c - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/fs/vnode.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scrub.c - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scrub.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/rrwlock.c - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/rrwlock.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_deleg.h - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_deleg.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/rrwlock.h - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/rrwlock.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_boot.h - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_boot.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_fuid.h - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_fuid.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/acl.h - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/sys/acl.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/acl_impl.h - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/sys/acl_impl.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/extdirent.h - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/sys/extdirent.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/idmap.h - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/sys/idmap.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/sysevent/ - copied from r185613, head/sys/cddl/contrib/opensolaris/uts/common/sys/sysevent/ projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/u8_textprep.h - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/sys/u8_textprep.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/u8_textprep_data.h - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/sys/u8_textprep_data.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/vnode.h - copied unchanged from r185613, head/sys/cddl/contrib/opensolaris/uts/common/sys/vnode.h projects/quota64/sys/dev/adb/ - copied from r184632, head/sys/dev/adb/ projects/quota64/sys/dev/ale/ - copied from r185613, head/sys/dev/ale/ projects/quota64/sys/dev/ath/ath_hal/ - copied from r185613, head/sys/dev/ath/ath_hal/ projects/quota64/sys/dev/cfi/ - copied from r184632, head/sys/dev/cfi/ projects/quota64/sys/dev/hwpmc/hwpmc_core.c - copied unchanged from r185613, head/sys/dev/hwpmc/hwpmc_core.c projects/quota64/sys/dev/hwpmc/hwpmc_core.h - copied unchanged from r185613, head/sys/dev/hwpmc/hwpmc_core.h projects/quota64/sys/dev/hwpmc/hwpmc_intel.c - copied unchanged from r185613, head/sys/dev/hwpmc/hwpmc_intel.c projects/quota64/sys/dev/hwpmc/hwpmc_tsc.c - copied unchanged from r185613, head/sys/dev/hwpmc/hwpmc_tsc.c projects/quota64/sys/dev/hwpmc/hwpmc_tsc.h - copied unchanged from r185613, head/sys/dev/hwpmc/hwpmc_tsc.h projects/quota64/sys/dev/mn/ - copied from r184632, head/sys/dev/mn/ projects/quota64/sys/dev/sdhci/ - copied from r184632, head/sys/dev/sdhci/ projects/quota64/sys/dev/usb2/ - copied from r184632, head/sys/dev/usb2/ projects/quota64/sys/dev/usb2/serial/u3g2.c - copied unchanged from r185613, head/sys/dev/usb2/serial/u3g2.c projects/quota64/sys/kern/kern_cons.c (props changed) - copied unchanged from r184632, head/sys/kern/kern_cons.c projects/quota64/sys/kern/kern_osd.c - copied unchanged from r185613, head/sys/kern/kern_osd.c projects/quota64/sys/kern/subr_bufring.c - copied unchanged from r185613, head/sys/kern/subr_bufring.c projects/quota64/sys/kgssapi/ - copied from r184632, head/sys/kgssapi/ projects/quota64/sys/mips/conf/DEFAULTS - copied unchanged from r184632, head/sys/mips/conf/DEFAULTS projects/quota64/sys/modules/ale/ - copied from r185613, head/sys/modules/ale/ projects/quota64/sys/modules/amr/amr_cam/ - copied from r184632, head/sys/modules/amr/amr_cam/ projects/quota64/sys/modules/kgssapi/ - copied from r184632, head/sys/modules/kgssapi/ projects/quota64/sys/modules/kgssapi_krb5/ - copied from r184632, head/sys/modules/kgssapi_krb5/ projects/quota64/sys/modules/sdhci/ - copied from r184632, head/sys/modules/sdhci/ projects/quota64/sys/modules/usb2/ - copied from r184632, head/sys/modules/usb2/ projects/quota64/sys/netinet/tcp_hostcache.h - copied unchanged from r185613, head/sys/netinet/tcp_hostcache.h projects/quota64/sys/nfsclient/nfs_krpc.c - copied unchanged from r184632, head/sys/nfsclient/nfs_krpc.c projects/quota64/sys/nfsserver/nfs_fha.c - copied, changed from r184632, head/sys/nfsserver/nfs_fha.c projects/quota64/sys/nfsserver/nfs_fha.h - copied unchanged from r184632, head/sys/nfsserver/nfs_fha.h projects/quota64/sys/nfsserver/nfs_srvkrpc.c - copied, changed from r184632, head/sys/nfsserver/nfs_srvkrpc.c projects/quota64/sys/powerpc/mpc85xx/lbc.c - copied unchanged from r184632, head/sys/powerpc/mpc85xx/lbc.c projects/quota64/sys/powerpc/mpc85xx/lbc.h - copied unchanged from r184632, head/sys/powerpc/mpc85xx/lbc.h projects/quota64/sys/powerpc/powermac/cuda.c - copied unchanged from r184632, head/sys/powerpc/powermac/cuda.c projects/quota64/sys/powerpc/powermac/cudavar.h - copied unchanged from r184632, head/sys/powerpc/powermac/cudavar.h projects/quota64/sys/powerpc/powermac/macgpio.c - copied unchanged from r184632, head/sys/powerpc/powermac/macgpio.c projects/quota64/sys/powerpc/powermac/macgpiovar.h - copied unchanged from r184632, head/sys/powerpc/powermac/macgpiovar.h projects/quota64/sys/powerpc/powermac/pmu.c - copied unchanged from r184632, head/sys/powerpc/powermac/pmu.c projects/quota64/sys/powerpc/powermac/pmuvar.h - copied unchanged from r184632, head/sys/powerpc/powermac/pmuvar.h projects/quota64/sys/powerpc/powermac/viareg.h - copied unchanged from r184632, head/sys/powerpc/powermac/viareg.h projects/quota64/sys/rpc/replay.c - copied unchanged from r184632, head/sys/rpc/replay.c projects/quota64/sys/rpc/replay.h - copied unchanged from r184632, head/sys/rpc/replay.h projects/quota64/sys/rpc/rpcsec_gss/ - copied from r184632, head/sys/rpc/rpcsec_gss/ projects/quota64/sys/rpc/rpcsec_gss.h - copied unchanged from r184632, head/sys/rpc/rpcsec_gss.h projects/quota64/sys/security/mac/mac_cred.c (props changed) - copied unchanged from r184632, head/sys/security/mac/mac_cred.c projects/quota64/sys/security/mac_bsdextended/ugidfw_internal.h - copied unchanged from r184632, head/sys/security/mac_bsdextended/ugidfw_internal.h projects/quota64/sys/security/mac_bsdextended/ugidfw_system.c (props changed) - copied unchanged from r184632, head/sys/security/mac_bsdextended/ugidfw_system.c projects/quota64/sys/security/mac_bsdextended/ugidfw_vnode.c (props changed) - copied unchanged from r184632, head/sys/security/mac_bsdextended/ugidfw_vnode.c projects/quota64/sys/sys/buf_ring.h - copied unchanged from r185613, head/sys/sys/buf_ring.h projects/quota64/sys/sys/cfictl.h - copied, changed from r184632, head/sys/sys/cfictl.h projects/quota64/sys/sys/osd.h - copied unchanged from r185613, head/sys/sys/osd.h projects/quota64/sys/xen/xenbus/xenbus_if.m - copied unchanged from r185613, head/sys/xen/xenbus/xenbus_if.m projects/quota64/sys/xen/xenbus/xenbusvar.h - copied unchanged from r185613, head/sys/xen/xenbus/xenbusvar.h projects/quota64/tools/regression/acltools/ - copied from r185613, head/tools/regression/acltools/ projects/quota64/tools/regression/bin/sh/builtins/type1.0.stderr (props changed) - copied unchanged from r185613, head/tools/regression/bin/sh/builtins/type1.0.stderr projects/quota64/tools/regression/bin/sh/parameters/ - copied from r185613, head/tools/regression/bin/sh/parameters/ projects/quota64/tools/regression/fstest/tests/rename/21.t - copied unchanged from r185613, head/tools/regression/fstest/tests/rename/21.t projects/quota64/tools/regression/kgssapi/ - copied from r184632, head/tools/regression/kgssapi/ projects/quota64/tools/regression/rpcsec_gss/ - copied from r184632, head/tools/regression/rpcsec_gss/ projects/quota64/tools/regression/usr.bin/sed/regress.not.out - copied unchanged from r185613, head/tools/regression/usr.bin/sed/regress.not.out projects/quota64/tools/regression/zfs/ - copied from r185613, head/tools/regression/zfs/ projects/quota64/usr.bin/tar/cmdline.c - copied unchanged from r185613, head/usr.bin/tar/cmdline.c projects/quota64/usr.bin/tar/test/test_strip_components.c - copied unchanged from r185613, head/usr.bin/tar/test/test_strip_components.c projects/quota64/usr.sbin/dumpcis/ - copied from r185613, head/usr.sbin/dumpcis/ projects/quota64/usr.sbin/gssd/ - copied from r184632, head/usr.sbin/gssd/ projects/quota64/usr.sbin/pmcannotate/ - copied from r185613, head/usr.sbin/pmcannotate/ projects/quota64/usr.sbin/usbconfig/ - copied from r184632, head/usr.sbin/usbconfig/ Deleted: projects/quota64/contrib/ncurses/FREEBSD-vendor projects/quota64/contrib/openbsm/HISTORY projects/quota64/share/man/man9/vfs_mountedon.9 projects/quota64/sys/arm/at91/files.kb920x projects/quota64/sys/arm/at91/kb920x_machdep.c projects/quota64/sys/cddl/compat/opensolaris/sys/acl.h projects/quota64/sys/cddl/compat/opensolaris/sys/callb.h projects/quota64/sys/contrib/dev/ath/ projects/quota64/sys/i386/include/xen/xenbus.h projects/quota64/sys/kern/tty_cons.c projects/quota64/sys/modules/ath_hal/ projects/quota64/sys/pci/if_mn.c projects/quota64/tools/regression/bin/sh/builtins/type1.0.stdout projects/quota64/usr.sbin/pccard/Makefile projects/quota64/usr.sbin/pccard/Makefile.inc projects/quota64/usr.sbin/pccard/dumpcis/Makefile projects/quota64/usr.sbin/pccard/dumpcis/dumpcis.8 projects/quota64/usr.sbin/pccard/dumpcis/main.c projects/quota64/usr.sbin/pccard/pccardc/Makefile projects/quota64/usr.sbin/pccard/pccardc/beep.c projects/quota64/usr.sbin/pccard/pccardc/dumpcis.c projects/quota64/usr.sbin/pccard/pccardc/dumpcisfile.c projects/quota64/usr.sbin/pccard/pccardc/enabler.c projects/quota64/usr.sbin/pccard/pccardc/pccardc.8 projects/quota64/usr.sbin/pccard/pccardc/pccardc.c projects/quota64/usr.sbin/pccard/pccardc/pccardmem.c projects/quota64/usr.sbin/pccard/pccardc/power.c projects/quota64/usr.sbin/pccard/pccardc/printcis.c projects/quota64/usr.sbin/pccard/pccardc/rdattr.c projects/quota64/usr.sbin/pccard/pccardc/rdmap.c projects/quota64/usr.sbin/pccard/pccardc/rdreg.c projects/quota64/usr.sbin/pccard/pccardc/wrattr.c projects/quota64/usr.sbin/pccard/pccardc/wrreg.c projects/quota64/usr.sbin/pccard/pccardd/readcis.c projects/quota64/usr.sbin/pccard/pccardd/readcis.h Modified: projects/quota64/ (props changed) projects/quota64/COPYRIGHT projects/quota64/Makefile projects/quota64/Makefile.inc1 projects/quota64/ObsoleteFiles.inc projects/quota64/UPDATING projects/quota64/bin/cat/cat.c projects/quota64/bin/chio/chio.c projects/quota64/bin/cp/utils.c projects/quota64/bin/df/df.1 projects/quota64/bin/df/df.c projects/quota64/bin/ps/print.c projects/quota64/bin/rcp/rcp.c projects/quota64/bin/sh/eval.c projects/quota64/bin/sh/exec.c projects/quota64/cddl/Makefile.inc projects/quota64/cddl/compat/opensolaris/include/mnttab.h projects/quota64/cddl/compat/opensolaris/misc/deviceid.c projects/quota64/cddl/compat/opensolaris/misc/mnttab.c projects/quota64/cddl/compat/opensolaris/misc/zmount.c projects/quota64/cddl/compat/opensolaris/misc/zone.c projects/quota64/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c projects/quota64/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst projects/quota64/cddl/contrib/opensolaris/cmd/zdb/zdb.8 projects/quota64/cddl/contrib/opensolaris/cmd/zdb/zdb.c projects/quota64/cddl/contrib/opensolaris/cmd/zdb/zdb_il.c projects/quota64/cddl/contrib/opensolaris/cmd/zfs/zfs.8 projects/quota64/cddl/contrib/opensolaris/cmd/zfs/zfs_iter.c projects/quota64/cddl/contrib/opensolaris/cmd/zfs/zfs_iter.h projects/quota64/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c projects/quota64/cddl/contrib/opensolaris/cmd/zpool/zpool.8 projects/quota64/cddl/contrib/opensolaris/cmd/zpool/zpool_iter.c projects/quota64/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c projects/quota64/cddl/contrib/opensolaris/cmd/zpool/zpool_util.c projects/quota64/cddl/contrib/opensolaris/cmd/zpool/zpool_util.h projects/quota64/cddl/contrib/opensolaris/cmd/zpool/zpool_vdev.c projects/quota64/cddl/contrib/opensolaris/cmd/ztest/ztest.c projects/quota64/cddl/contrib/opensolaris/head/assert.h projects/quota64/cddl/contrib/opensolaris/head/libintl.h projects/quota64/cddl/contrib/opensolaris/head/synch.h projects/quota64/cddl/contrib/opensolaris/head/thread.h projects/quota64/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c projects/quota64/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c projects/quota64/cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c projects/quota64/cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.h projects/quota64/cddl/contrib/opensolaris/lib/libdtrace/common/dt_program.c projects/quota64/cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h projects/quota64/cddl/contrib/opensolaris/lib/libnvpair/libnvpair.c projects/quota64/cddl/contrib/opensolaris/lib/libnvpair/libnvpair.h projects/quota64/cddl/contrib/opensolaris/lib/libuutil/common/libuutil.h projects/quota64/cddl/contrib/opensolaris/lib/libuutil/common/libuutil_common.h projects/quota64/cddl/contrib/opensolaris/lib/libuutil/common/uu_alloc.c projects/quota64/cddl/contrib/opensolaris/lib/libuutil/common/uu_avl.c projects/quota64/cddl/contrib/opensolaris/lib/libuutil/common/uu_dprintf.c projects/quota64/cddl/contrib/opensolaris/lib/libuutil/common/uu_list.c projects/quota64/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h projects/quota64/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_changelist.c projects/quota64/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c projects/quota64/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_graph.c projects/quota64/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h projects/quota64/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c projects/quota64/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c projects/quota64/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c projects/quota64/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_status.c projects/quota64/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c projects/quota64/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c projects/quota64/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h projects/quota64/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c projects/quota64/cddl/contrib/opensolaris/lib/libzpool/common/util.c projects/quota64/cddl/lib/libzfs/Makefile projects/quota64/cddl/lib/libzpool/Makefile projects/quota64/cddl/sbin/zpool/Makefile projects/quota64/cddl/usr.bin/Makefile projects/quota64/cddl/usr.bin/ztest/Makefile projects/quota64/cddl/usr.sbin/zdb/Makefile projects/quota64/contrib/bind9/ (props changed) projects/quota64/contrib/cpio/ (props changed) projects/quota64/contrib/gdb/gdb/arm-tdep.c projects/quota64/contrib/gdtoa/ (props changed) projects/quota64/contrib/ncurses/ (props changed) projects/quota64/contrib/ncurses/ANNOUNCE projects/quota64/contrib/ncurses/FREEBSD-upgrade projects/quota64/contrib/ncurses/INSTALL projects/quota64/contrib/ncurses/MANIFEST projects/quota64/contrib/ncurses/NEWS projects/quota64/contrib/ncurses/TO-DO projects/quota64/contrib/ncurses/aclocal.m4 projects/quota64/contrib/ncurses/announce.html.in projects/quota64/contrib/ncurses/config.guess projects/quota64/contrib/ncurses/config.sub projects/quota64/contrib/ncurses/configure projects/quota64/contrib/ncurses/configure.in projects/quota64/contrib/ncurses/dist.mk projects/quota64/contrib/ncurses/doc/html/announce.html projects/quota64/contrib/ncurses/form/form.priv.h projects/quota64/contrib/ncurses/form/frm_def.c projects/quota64/contrib/ncurses/form/frm_driver.c projects/quota64/contrib/ncurses/form/frm_req_name.c projects/quota64/contrib/ncurses/include/MKterm.h.awk.in projects/quota64/contrib/ncurses/include/capdefaults.c projects/quota64/contrib/ncurses/include/curses.h.in projects/quota64/contrib/ncurses/include/curses.tail projects/quota64/contrib/ncurses/include/nc_alloc.h projects/quota64/contrib/ncurses/include/nc_panel.h projects/quota64/contrib/ncurses/include/ncurses_defs projects/quota64/contrib/ncurses/include/term_entry.h projects/quota64/contrib/ncurses/man/curs_getcchar.3x projects/quota64/contrib/ncurses/man/curs_terminfo.3x projects/quota64/contrib/ncurses/man/curs_util.3x projects/quota64/contrib/ncurses/man/form.3x projects/quota64/contrib/ncurses/man/form_driver.3x projects/quota64/contrib/ncurses/man/form_field_buffer.3x projects/quota64/contrib/ncurses/man/man_db.renames projects/quota64/contrib/ncurses/man/menu_attributes.3x projects/quota64/contrib/ncurses/man/menu_driver.3x projects/quota64/contrib/ncurses/man/menu_pattern.3x projects/quota64/contrib/ncurses/man/ncurses.3x projects/quota64/contrib/ncurses/menu/m_driver.c projects/quota64/contrib/ncurses/menu/m_req_name.c projects/quota64/contrib/ncurses/misc/ncu-indent projects/quota64/contrib/ncurses/misc/terminfo.src projects/quota64/contrib/ncurses/ncurses/Makefile.in projects/quota64/contrib/ncurses/ncurses/base/MKkeyname.awk projects/quota64/contrib/ncurses/ncurses/base/MKlib_gen.sh projects/quota64/contrib/ncurses/ncurses/base/MKunctrl.awk projects/quota64/contrib/ncurses/ncurses/base/lib_addch.c projects/quota64/contrib/ncurses/ncurses/base/lib_delwin.c projects/quota64/contrib/ncurses/ncurses/base/lib_freeall.c projects/quota64/contrib/ncurses/ncurses/base/lib_getch.c projects/quota64/contrib/ncurses/ncurses/base/lib_getstr.c projects/quota64/contrib/ncurses/ncurses/base/lib_initscr.c projects/quota64/contrib/ncurses/ncurses/base/lib_mouse.c projects/quota64/contrib/ncurses/ncurses/base/lib_newterm.c projects/quota64/contrib/ncurses/ncurses/base/lib_newwin.c projects/quota64/contrib/ncurses/ncurses/base/lib_overlay.c projects/quota64/contrib/ncurses/ncurses/base/lib_restart.c projects/quota64/contrib/ncurses/ncurses/base/lib_screen.c projects/quota64/contrib/ncurses/ncurses/base/lib_set_term.c projects/quota64/contrib/ncurses/ncurses/base/lib_slk.c projects/quota64/contrib/ncurses/ncurses/base/lib_slkrefr.c projects/quota64/contrib/ncurses/ncurses/base/lib_ungetch.c projects/quota64/contrib/ncurses/ncurses/base/lib_window.c projects/quota64/contrib/ncurses/ncurses/base/resizeterm.c projects/quota64/contrib/ncurses/ncurses/base/tries.c projects/quota64/contrib/ncurses/ncurses/base/use_window.c projects/quota64/contrib/ncurses/ncurses/base/wresize.c projects/quota64/contrib/ncurses/ncurses/curses.priv.h projects/quota64/contrib/ncurses/ncurses/fifo_defs.h projects/quota64/contrib/ncurses/ncurses/llib-lncurses projects/quota64/contrib/ncurses/ncurses/llib-lncursest projects/quota64/contrib/ncurses/ncurses/llib-lncursesw projects/quota64/contrib/ncurses/ncurses/tinfo/MKcodes.awk projects/quota64/contrib/ncurses/ncurses/tinfo/MKnames.awk projects/quota64/contrib/ncurses/ncurses/tinfo/alloc_entry.c projects/quota64/contrib/ncurses/ncurses/tinfo/alloc_ttype.c projects/quota64/contrib/ncurses/ncurses/tinfo/captoinfo.c projects/quota64/contrib/ncurses/ncurses/tinfo/comp_expand.c projects/quota64/contrib/ncurses/ncurses/tinfo/comp_hash.c projects/quota64/contrib/ncurses/ncurses/tinfo/comp_parse.c projects/quota64/contrib/ncurses/ncurses/tinfo/comp_scan.c projects/quota64/contrib/ncurses/ncurses/tinfo/entries.c projects/quota64/contrib/ncurses/ncurses/tinfo/home_terminfo.c projects/quota64/contrib/ncurses/ncurses/tinfo/init_keytry.c projects/quota64/contrib/ncurses/ncurses/tinfo/lib_acs.c projects/quota64/contrib/ncurses/ncurses/tinfo/lib_baudrate.c projects/quota64/contrib/ncurses/ncurses/tinfo/lib_cur_term.c projects/quota64/contrib/ncurses/ncurses/tinfo/lib_data.c projects/quota64/contrib/ncurses/ncurses/tinfo/lib_options.c projects/quota64/contrib/ncurses/ncurses/tinfo/lib_raw.c projects/quota64/contrib/ncurses/ncurses/tinfo/lib_setup.c projects/quota64/contrib/ncurses/ncurses/tinfo/lib_termcap.c projects/quota64/contrib/ncurses/ncurses/tinfo/lib_tgoto.c projects/quota64/contrib/ncurses/ncurses/tinfo/lib_tparm.c projects/quota64/contrib/ncurses/ncurses/tinfo/lib_tputs.c projects/quota64/contrib/ncurses/ncurses/tinfo/lib_ttyflags.c projects/quota64/contrib/ncurses/ncurses/tinfo/make_keys.c projects/quota64/contrib/ncurses/ncurses/tinfo/name_match.c projects/quota64/contrib/ncurses/ncurses/tinfo/parse_entry.c projects/quota64/contrib/ncurses/ncurses/tinfo/read_entry.c projects/quota64/contrib/ncurses/ncurses/tinfo/use_screen.c projects/quota64/contrib/ncurses/ncurses/tinfo/write_entry.c projects/quota64/contrib/ncurses/ncurses/trace/lib_trace.c projects/quota64/contrib/ncurses/ncurses/trace/lib_traceatr.c projects/quota64/contrib/ncurses/ncurses/trace/lib_tracebits.c projects/quota64/contrib/ncurses/ncurses/trace/lib_tracechr.c projects/quota64/contrib/ncurses/ncurses/trace/lib_tracedmp.c projects/quota64/contrib/ncurses/ncurses/trace/lib_tracemse.c projects/quota64/contrib/ncurses/ncurses/trace/trace_buf.c projects/quota64/contrib/ncurses/ncurses/trace/trace_tries.c projects/quota64/contrib/ncurses/ncurses/trace/varargs.c projects/quota64/contrib/ncurses/ncurses/trace/visbuf.c projects/quota64/contrib/ncurses/ncurses/tty/hardscroll.c projects/quota64/contrib/ncurses/ncurses/tty/lib_mvcur.c projects/quota64/contrib/ncurses/ncurses/tty/lib_twait.c projects/quota64/contrib/ncurses/ncurses/tty/tty_update.c projects/quota64/contrib/ncurses/ncurses/widechar/charable.c projects/quota64/contrib/ncurses/ncurses/widechar/lib_get_wch.c projects/quota64/contrib/ncurses/ncurses/widechar/lib_get_wstr.c projects/quota64/contrib/ncurses/ncurses/widechar/lib_key_name.c projects/quota64/contrib/ncurses/ncurses/widechar/lib_unget_wch.c projects/quota64/contrib/ncurses/panel/p_new.c projects/quota64/contrib/ncurses/panel/panel.priv.h projects/quota64/contrib/ncurses/progs/MKtermsort.sh projects/quota64/contrib/ncurses/progs/Makefile.in projects/quota64/contrib/ncurses/progs/dump_entry.c projects/quota64/contrib/ncurses/progs/dump_entry.h projects/quota64/contrib/ncurses/progs/infocmp.c projects/quota64/contrib/ncurses/progs/progs.priv.h projects/quota64/contrib/ncurses/progs/tic.c projects/quota64/contrib/ncurses/progs/toe.c projects/quota64/contrib/ncurses/progs/tput.c projects/quota64/contrib/ncurses/progs/tset.c projects/quota64/contrib/netcat/ (props changed) projects/quota64/contrib/ntp/ (props changed) projects/quota64/contrib/openbsm/ (props changed) projects/quota64/contrib/openbsm/LICENSE projects/quota64/contrib/openbsm/Makefile.am projects/quota64/contrib/openbsm/Makefile.in projects/quota64/contrib/openbsm/README projects/quota64/contrib/openbsm/TODO projects/quota64/contrib/openbsm/VERSION projects/quota64/contrib/openbsm/bin/Makefile.in projects/quota64/contrib/openbsm/bin/audit/Makefile.am projects/quota64/contrib/openbsm/bin/audit/Makefile.in projects/quota64/contrib/openbsm/bin/audit/audit.8 projects/quota64/contrib/openbsm/bin/audit/audit.c projects/quota64/contrib/openbsm/bin/auditd/Makefile.am projects/quota64/contrib/openbsm/bin/auditd/Makefile.in projects/quota64/contrib/openbsm/bin/auditd/audit_warn.c projects/quota64/contrib/openbsm/bin/auditd/auditd.8 projects/quota64/contrib/openbsm/bin/auditd/auditd.c projects/quota64/contrib/openbsm/bin/auditd/auditd.h projects/quota64/contrib/openbsm/bin/auditfilterd/Makefile.am projects/quota64/contrib/openbsm/bin/auditfilterd/Makefile.in projects/quota64/contrib/openbsm/bin/auditfilterd/auditfilterd.c projects/quota64/contrib/openbsm/bin/auditreduce/Makefile.am projects/quota64/contrib/openbsm/bin/auditreduce/Makefile.in projects/quota64/contrib/openbsm/bin/auditreduce/auditreduce.1 projects/quota64/contrib/openbsm/bin/auditreduce/auditreduce.c projects/quota64/contrib/openbsm/bin/auditreduce/auditreduce.h projects/quota64/contrib/openbsm/bin/praudit/Makefile.am projects/quota64/contrib/openbsm/bin/praudit/Makefile.in projects/quota64/contrib/openbsm/bin/praudit/praudit.1 projects/quota64/contrib/openbsm/bin/praudit/praudit.c projects/quota64/contrib/openbsm/bsm/Makefile.am projects/quota64/contrib/openbsm/bsm/Makefile.in projects/quota64/contrib/openbsm/bsm/audit_uevents.h projects/quota64/contrib/openbsm/bsm/libbsm.h projects/quota64/contrib/openbsm/compat/clock_gettime.h projects/quota64/contrib/openbsm/compat/strlcat.h projects/quota64/contrib/openbsm/config/config.h projects/quota64/contrib/openbsm/config/config.h.in projects/quota64/contrib/openbsm/configure projects/quota64/contrib/openbsm/configure.ac projects/quota64/contrib/openbsm/etc/audit_event projects/quota64/contrib/openbsm/libbsm/Makefile.am projects/quota64/contrib/openbsm/libbsm/Makefile.in projects/quota64/contrib/openbsm/libbsm/au_class.3 projects/quota64/contrib/openbsm/libbsm/au_free_token.3 projects/quota64/contrib/openbsm/libbsm/au_token.3 projects/quota64/contrib/openbsm/libbsm/audit_submit.3 projects/quota64/contrib/openbsm/libbsm/bsm_audit.c projects/quota64/contrib/openbsm/libbsm/bsm_class.c projects/quota64/contrib/openbsm/libbsm/bsm_control.c projects/quota64/contrib/openbsm/libbsm/bsm_event.c projects/quota64/contrib/openbsm/libbsm/bsm_flags.c projects/quota64/contrib/openbsm/libbsm/bsm_io.c projects/quota64/contrib/openbsm/libbsm/bsm_mask.c projects/quota64/contrib/openbsm/libbsm/bsm_notify.c projects/quota64/contrib/openbsm/libbsm/bsm_token.c projects/quota64/contrib/openbsm/libbsm/bsm_user.c projects/quota64/contrib/openbsm/libbsm/bsm_wrappers.c projects/quota64/contrib/openbsm/man/Makefile.in projects/quota64/contrib/openbsm/man/audit.2 projects/quota64/contrib/openbsm/man/audit.log.5 projects/quota64/contrib/openbsm/man/audit_class.5 projects/quota64/contrib/openbsm/man/audit_control.5 projects/quota64/contrib/openbsm/man/audit_event.5 projects/quota64/contrib/openbsm/man/audit_user.5 projects/quota64/contrib/openbsm/man/audit_warn.5 projects/quota64/contrib/openbsm/man/auditctl.2 projects/quota64/contrib/openbsm/man/auditon.2 projects/quota64/contrib/openbsm/man/getaudit.2 projects/quota64/contrib/openbsm/man/getauid.2 projects/quota64/contrib/openbsm/man/setaudit.2 projects/quota64/contrib/openbsm/man/setauid.2 projects/quota64/contrib/openbsm/modules/Makefile.in projects/quota64/contrib/openbsm/modules/auditfilter_noop/Makefile.am projects/quota64/contrib/openbsm/modules/auditfilter_noop/Makefile.in projects/quota64/contrib/openbsm/modules/auditfilter_noop/auditfilter_noop.c projects/quota64/contrib/openbsm/test/Makefile.am projects/quota64/contrib/openbsm/test/Makefile.in projects/quota64/contrib/openbsm/test/bsm/Makefile.am projects/quota64/contrib/openbsm/test/bsm/Makefile.in projects/quota64/contrib/openbsm/tools/Makefile.am projects/quota64/contrib/openbsm/tools/Makefile.in projects/quota64/contrib/sendmail/ (props changed) projects/quota64/contrib/sendmail/src/sendmail.h projects/quota64/contrib/smbfs/lib/smb/nb_name.c projects/quota64/contrib/telnet/telnetd/ext.h projects/quota64/contrib/telnet/telnetd/sys_term.c projects/quota64/contrib/top/ (props changed) projects/quota64/crypto/openssh/ (props changed) projects/quota64/crypto/openssl/ (props changed) projects/quota64/etc/Makefile projects/quota64/etc/defaults/rc.conf projects/quota64/etc/devd.conf projects/quota64/etc/gss/mech projects/quota64/etc/mtree/BSD.include.dist projects/quota64/etc/newsyslog.conf projects/quota64/etc/periodic/security/200.chkmounts projects/quota64/etc/rc.d/Makefile projects/quota64/etc/rc.d/netif projects/quota64/etc/rc.d/nfsd projects/quota64/etc/rc.subr projects/quota64/etc/remote projects/quota64/etc/syslog.conf projects/quota64/gnu/usr.bin/gdb/Makefile projects/quota64/gnu/usr.bin/gdb/gdbserver/Makefile projects/quota64/include/Makefile projects/quota64/include/rpc/xdr.h projects/quota64/include/strings.h projects/quota64/include/utmp.h projects/quota64/lib/Makefile projects/quota64/lib/libarchive/archive_write.3 projects/quota64/lib/libarchive/test/test_acl_freebsd.c projects/quota64/lib/libc/ (props changed) projects/quota64/lib/libc/amd64/SYS.h projects/quota64/lib/libc/amd64/gen/_setjmp.S projects/quota64/lib/libc/amd64/gen/fabs.S projects/quota64/lib/libc/amd64/gen/modf.S projects/quota64/lib/libc/amd64/gen/rfork_thread.S projects/quota64/lib/libc/amd64/gen/setjmp.S projects/quota64/lib/libc/amd64/gen/sigsetjmp.S projects/quota64/lib/libc/amd64/stdlib/div.S projects/quota64/lib/libc/amd64/stdlib/ldiv.S projects/quota64/lib/libc/amd64/stdlib/lldiv.S projects/quota64/lib/libc/amd64/string/bcmp.S projects/quota64/lib/libc/amd64/string/bcopy.S projects/quota64/lib/libc/amd64/string/bzero.S projects/quota64/lib/libc/amd64/string/memcmp.S projects/quota64/lib/libc/amd64/string/memset.S projects/quota64/lib/libc/amd64/string/strcat.S projects/quota64/lib/libc/amd64/string/strcmp.S projects/quota64/lib/libc/amd64/string/strcpy.S projects/quota64/lib/libc/amd64/sys/Makefile.inc projects/quota64/lib/libc/amd64/sys/brk.S projects/quota64/lib/libc/amd64/sys/exect.S projects/quota64/lib/libc/amd64/sys/getcontext.S projects/quota64/lib/libc/amd64/sys/pipe.S projects/quota64/lib/libc/amd64/sys/ptrace.S projects/quota64/lib/libc/amd64/sys/reboot.S projects/quota64/lib/libc/amd64/sys/sbrk.S projects/quota64/lib/libc/amd64/sys/setlogin.S projects/quota64/lib/libc/amd64/sys/vfork.S projects/quota64/lib/libc/arm/sys/Makefile.inc projects/quota64/lib/libc/gen/Symbol.map projects/quota64/lib/libc/gen/__xuname.c projects/quota64/lib/libc/gen/dirname.3 projects/quota64/lib/libc/gen/dirname.c projects/quota64/lib/libc/gen/dlfcn.c projects/quota64/lib/libc/gen/err.3 projects/quota64/lib/libc/gen/getvfsbyname.3 projects/quota64/lib/libc/gen/posix_spawn.c projects/quota64/lib/libc/gen/times.3 projects/quota64/lib/libc/i386/SYS.h projects/quota64/lib/libc/i386/gen/_ctx_start.S projects/quota64/lib/libc/i386/gen/_setjmp.S projects/quota64/lib/libc/i386/gen/fabs.S projects/quota64/lib/libc/i386/gen/modf.S projects/quota64/lib/libc/i386/gen/rfork_thread.S projects/quota64/lib/libc/i386/gen/setjmp.S projects/quota64/lib/libc/i386/gen/sigsetjmp.S projects/quota64/lib/libc/i386/stdlib/abs.S projects/quota64/lib/libc/i386/stdlib/div.S projects/quota64/lib/libc/i386/stdlib/labs.S projects/quota64/lib/libc/i386/stdlib/ldiv.S projects/quota64/lib/libc/i386/string/bcmp.S projects/quota64/lib/libc/i386/string/bcopy.S projects/quota64/lib/libc/i386/string/bzero.S projects/quota64/lib/libc/i386/string/ffs.S projects/quota64/lib/libc/i386/string/index.S projects/quota64/lib/libc/i386/string/memchr.S projects/quota64/lib/libc/i386/string/memcmp.S projects/quota64/lib/libc/i386/string/memset.S projects/quota64/lib/libc/i386/string/rindex.S projects/quota64/lib/libc/i386/string/strcat.S projects/quota64/lib/libc/i386/string/strchr.S projects/quota64/lib/libc/i386/string/strcmp.S projects/quota64/lib/libc/i386/string/strcpy.S projects/quota64/lib/libc/i386/string/strlen.S projects/quota64/lib/libc/i386/string/strncmp.S projects/quota64/lib/libc/i386/string/strrchr.S projects/quota64/lib/libc/i386/string/swab.S projects/quota64/lib/libc/i386/string/wcschr.S projects/quota64/lib/libc/i386/string/wcscmp.S projects/quota64/lib/libc/i386/string/wcslen.S projects/quota64/lib/libc/i386/string/wmemchr.S projects/quota64/lib/libc/i386/sys/Makefile.inc projects/quota64/lib/libc/i386/sys/Ovfork.S projects/quota64/lib/libc/i386/sys/brk.S projects/quota64/lib/libc/i386/sys/exect.S projects/quota64/lib/libc/i386/sys/getcontext.S projects/quota64/lib/libc/i386/sys/pipe.S projects/quota64/lib/libc/i386/sys/ptrace.S projects/quota64/lib/libc/i386/sys/reboot.S projects/quota64/lib/libc/i386/sys/sbrk.S projects/quota64/lib/libc/i386/sys/setlogin.S projects/quota64/lib/libc/i386/sys/syscall.S projects/quota64/lib/libc/ia64/sys/Makefile.inc projects/quota64/lib/libc/mips/sys/Makefile.inc projects/quota64/lib/libc/posix1e/acl_add_perm.3 projects/quota64/lib/libc/posix1e/acl_calc_mask.3 projects/quota64/lib/libc/posix1e/acl_calc_mask.c projects/quota64/lib/libc/posix1e/acl_clear_perms.3 projects/quota64/lib/libc/posix1e/acl_copy.c projects/quota64/lib/libc/posix1e/acl_copy_entry.3 projects/quota64/lib/libc/posix1e/acl_create_entry.3 projects/quota64/lib/libc/posix1e/acl_delete_entry.3 projects/quota64/lib/libc/posix1e/acl_delete_perm.3 projects/quota64/lib/libc/posix1e/acl_get_entry.3 projects/quota64/lib/libc/posix1e/acl_get_perm_np.3 projects/quota64/lib/libc/posix1e/acl_get_permset.3 projects/quota64/lib/libc/posix1e/acl_get_qualifier.3 projects/quota64/lib/libc/posix1e/acl_get_tag_type.3 projects/quota64/lib/libc/posix1e/acl_perm.c projects/quota64/lib/libc/posix1e/acl_set_permset.3 projects/quota64/lib/libc/posix1e/acl_set_qualifier.3 projects/quota64/lib/libc/posix1e/acl_set_tag_type.3 projects/quota64/lib/libc/posix1e/acl_size.c projects/quota64/lib/libc/powerpc/sys/Makefile.inc projects/quota64/lib/libc/sparc64/sys/Makefile.inc projects/quota64/lib/libc/stdio/fread.c projects/quota64/lib/libc/stdlib/malloc.3 projects/quota64/lib/libc/stdlib/malloc.c projects/quota64/lib/libc/stdtime/ (props changed) projects/quota64/lib/libc/stdtime/strftime.c projects/quota64/lib/libc/string/Makefile.inc projects/quota64/lib/libc/string/Symbol.map projects/quota64/lib/libc/string/ffs.3 projects/quota64/lib/libc/string/ffsl.c projects/quota64/lib/libc/sys/Symbol.map projects/quota64/lib/libc/sys/cpuset_getaffinity.2 projects/quota64/lib/libc/sys/jail.2 projects/quota64/lib/libc/sys/mmap.2 projects/quota64/lib/libc/sys/pipe.2 projects/quota64/lib/libc/sys/recv.2 projects/quota64/lib/libc/sys/rename.2 projects/quota64/lib/libc/xdr/Symbol.map projects/quota64/lib/libc/xdr/xdr.c projects/quota64/lib/libcam/camlib.c projects/quota64/lib/libfetch/http.c projects/quota64/lib/libkvm/Makefile projects/quota64/lib/libkvm/kvm_arm.c projects/quota64/lib/libkvm/kvm_private.h projects/quota64/lib/libkvm/kvm_proc.c projects/quota64/lib/libmd/Makefile projects/quota64/lib/libpmc/libpmc.c projects/quota64/lib/libpmc/pmc.3 projects/quota64/lib/libpmc/pmc.atom.3 projects/quota64/lib/libpmc/pmc.core.3 projects/quota64/lib/libpmc/pmc.core2.3 projects/quota64/lib/libpmc/pmc.iaf.3 projects/quota64/lib/libpmc/pmclog.c projects/quota64/lib/libproc/libproc.h projects/quota64/lib/libproc/proc_create.c projects/quota64/lib/librpcsec_gss/svc_rpcsec_gss.c projects/quota64/lib/libstand/nfs.c projects/quota64/lib/libstand/printf.c projects/quota64/lib/libstand/stand.h projects/quota64/lib/libthr/thread/thr_fork.c projects/quota64/lib/libthr/thread/thr_rtld.c projects/quota64/lib/libusb20/libusb20.3 projects/quota64/lib/libusb20/libusb20.c projects/quota64/lib/libusb20/libusb20.h projects/quota64/lib/libusb20/libusb20_compat01.c projects/quota64/lib/libusb20/libusb20_compat01.h projects/quota64/lib/libusb20/libusb20_desc.c projects/quota64/lib/libusb20/libusb20_desc.h projects/quota64/lib/libusb20/libusb20_ugen20.c projects/quota64/lib/libutil/ (props changed) projects/quota64/lib/libutil/Makefile projects/quota64/lib/libutil/gr_util.c projects/quota64/lib/libutil/libutil.h projects/quota64/lib/libutil/pty.c projects/quota64/lib/libutil/realhostname.c projects/quota64/lib/ncurses/ncurses/Makefile projects/quota64/lib/ncurses/ncurses/ncurses_cfg.h projects/quota64/libexec/rtld-elf/Symbol.map projects/quota64/libexec/rtld-elf/rtld.c projects/quota64/libexec/rtld-elf/rtld_lock.c projects/quota64/libexec/rtld-elf/rtld_lock.h projects/quota64/libexec/telnetd/Makefile projects/quota64/release/Makefile projects/quota64/release/doc/en_US.ISO8859-1/hardware/article.sgml projects/quota64/release/doc/en_US.ISO8859-1/relnotes/article.sgml projects/quota64/sbin/bsdlabel/bsdlabel.8 projects/quota64/sbin/geom/class/part/Makefile projects/quota64/sbin/geom/class/part/geom_part.c projects/quota64/sbin/geom/class/part/gpart.8 projects/quota64/sbin/iscontrol/auth_subr.c projects/quota64/sbin/iscontrol/config.c projects/quota64/sbin/iscontrol/fsm.c projects/quota64/sbin/iscontrol/iscontrol.8 projects/quota64/sbin/iscontrol/iscontrol.c projects/quota64/sbin/iscontrol/iscontrol.h projects/quota64/sbin/iscontrol/iscsi.conf.5 projects/quota64/sbin/iscontrol/login.c projects/quota64/sbin/iscontrol/misc.c projects/quota64/sbin/iscontrol/pdu.c projects/quota64/sbin/mount_msdosfs/mount_msdosfs.c projects/quota64/sbin/mount_nfs/mount_nfs.c projects/quota64/sbin/newfs/Makefile projects/quota64/sbin/newfs/mkfs.c projects/quota64/sbin/newfs/newfs.8 projects/quota64/sbin/newfs/newfs.c projects/quota64/sbin/newfs/newfs.h projects/quota64/sbin/newfs_msdos/newfs_msdos.8 projects/quota64/sbin/newfs_msdos/newfs_msdos.c projects/quota64/secure/usr.sbin/sshd/Makefile projects/quota64/share/man/man4/Makefile projects/quota64/share/man/man4/altq.4 projects/quota64/share/man/man4/atapicam.4 projects/quota64/share/man/man4/ath_hal.4 projects/quota64/share/man/man4/bce.4 projects/quota64/share/man/man4/ddb.4 projects/quota64/share/man/man4/man4.arm/Makefile projects/quota64/share/man/man4/miibus.4 projects/quota64/share/man/man4/mmc.4 projects/quota64/share/man/man4/mmcsd.4 projects/quota64/share/man/man4/rl.4 projects/quota64/share/man/man4/snd_hda.4 projects/quota64/share/man/man4/snp.4 projects/quota64/share/man/man4/u3g.4 projects/quota64/share/man/man4/umodem.4 projects/quota64/share/man/man4/upgt.4 projects/quota64/share/man/man4/vlan.4 projects/quota64/share/man/man4/zyd.4 projects/quota64/share/man/man5/fstab.5 projects/quota64/share/man/man7/hier.7 projects/quota64/share/man/man9/Makefile projects/quota64/share/man/man9/VFS_SET.9 projects/quota64/share/man/man9/VOP_ACCESS.9 projects/quota64/share/man/man9/bus_dma.9 projects/quota64/share/man/man9/devfs_set_cdevpriv.9 projects/quota64/share/man/man9/ktr.9 projects/quota64/share/man/man9/malloc.9 projects/quota64/share/man/man9/pseudofs.9 projects/quota64/share/man/man9/vaccess.9 projects/quota64/share/man/man9/vaccess_acl_posix1e.9 projects/quota64/share/man/man9/vfs_busy.9 projects/quota64/share/man/man9/vn_fullpath.9 projects/quota64/share/misc/bsd-family-tree projects/quota64/share/misc/committers-doc.dot projects/quota64/share/misc/committers-src.dot projects/quota64/share/mk/bsd.libnames.mk projects/quota64/share/zoneinfo/ (props changed) projects/quota64/share/zoneinfo/southamerica projects/quota64/share/zoneinfo/zone.tab projects/quota64/sys/ (props changed) projects/quota64/sys/amd64/Makefile projects/quota64/sys/amd64/amd64/amd64_mem.c projects/quota64/sys/amd64/amd64/dump_machdep.c projects/quota64/sys/amd64/amd64/elf_machdep.c projects/quota64/sys/amd64/amd64/identcpu.c projects/quota64/sys/amd64/amd64/initcpu.c projects/quota64/sys/amd64/amd64/intr_machdep.c projects/quota64/sys/amd64/amd64/local_apic.c projects/quota64/sys/amd64/amd64/minidump_machdep.c projects/quota64/sys/amd64/amd64/mp_machdep.c projects/quota64/sys/amd64/amd64/msi.c projects/quota64/sys/amd64/conf/GENERIC projects/quota64/sys/amd64/conf/NOTES projects/quota64/sys/amd64/include/atomic.h projects/quota64/sys/amd64/include/cputypes.h projects/quota64/sys/amd64/include/md_var.h projects/quota64/sys/amd64/include/pmc_mdep.h projects/quota64/sys/amd64/include/specialreg.h projects/quota64/sys/amd64/linux32/linux.h projects/quota64/sys/amd64/linux32/linux32_machdep.c projects/quota64/sys/amd64/linux32/linux32_proto.h projects/quota64/sys/amd64/linux32/linux32_syscall.h projects/quota64/sys/amd64/linux32/linux32_sysent.c projects/quota64/sys/amd64/linux32/linux32_sysvec.c projects/quota64/sys/amd64/linux32/syscalls.master projects/quota64/sys/arm/arm/busdma_machdep.c projects/quota64/sys/arm/arm/dump_machdep.c projects/quota64/sys/arm/arm/elf_machdep.c projects/quota64/sys/arm/arm/pmap.c projects/quota64/sys/arm/arm/undefined.c projects/quota64/sys/arm/at91/at91.c projects/quota64/sys/arm/at91/at91_mci.c projects/quota64/sys/arm/at91/at91_mcireg.h projects/quota64/sys/arm/at91/at91_pdcreg.h projects/quota64/sys/arm/at91/at91_pio.c projects/quota64/sys/arm/at91/at91_pioreg.h projects/quota64/sys/arm/at91/at91_piovar.h projects/quota64/sys/arm/at91/at91_pmc.c projects/quota64/sys/arm/at91/at91_pmcreg.h projects/quota64/sys/arm/at91/at91_pmcvar.h projects/quota64/sys/arm/at91/at91_rtc.c projects/quota64/sys/arm/at91/at91_rtcreg.h projects/quota64/sys/arm/at91/at91_spi.c projects/quota64/sys/arm/at91/at91_spireg.h projects/quota64/sys/arm/at91/at91_ssc.c projects/quota64/sys/arm/at91/at91_sscreg.h projects/quota64/sys/arm/at91/at91_st.c projects/quota64/sys/arm/at91/at91_streg.h projects/quota64/sys/arm/at91/at91_twi.c projects/quota64/sys/arm/at91/at91_twiio.h projects/quota64/sys/arm/at91/at91_twireg.h projects/quota64/sys/arm/at91/at91_usartreg.h projects/quota64/sys/arm/at91/at91rm92reg.h projects/quota64/sys/arm/at91/at91var.h projects/quota64/sys/arm/at91/files.at91 projects/quota64/sys/arm/at91/if_ate.c projects/quota64/sys/arm/at91/if_atereg.h projects/quota64/sys/arm/at91/ohci_atmelarm.c projects/quota64/sys/arm/at91/std.at91 projects/quota64/sys/arm/at91/std.kb920x projects/quota64/sys/arm/at91/uart_bus_at91usart.c projects/quota64/sys/arm/at91/uart_cpu_at91rm9200usart.c projects/quota64/sys/arm/at91/uart_dev_at91usart.c projects/quota64/sys/arm/conf/AVILA projects/quota64/sys/arm/conf/BWCT projects/quota64/sys/arm/conf/CRB projects/quota64/sys/arm/conf/DB-78XXX projects/quota64/sys/arm/conf/DB-88F5XXX projects/quota64/sys/arm/conf/DB-88F6XXX projects/quota64/sys/arm/conf/EP80219 projects/quota64/sys/arm/conf/GUMSTIX projects/quota64/sys/arm/conf/HL200 projects/quota64/sys/arm/conf/IQ31244 projects/quota64/sys/arm/conf/KB920X projects/quota64/sys/arm/conf/NSLU projects/quota64/sys/arm/conf/SIMICS projects/quota64/sys/arm/conf/SKYEYE projects/quota64/sys/arm/include/atomic.h projects/quota64/sys/arm/include/md_var.h projects/quota64/sys/arm/include/pmap.h projects/quota64/sys/arm/mv/common.c projects/quota64/sys/arm/mv/discovery/db78xxx.c projects/quota64/sys/arm/mv/discovery/discovery.c projects/quota64/sys/arm/mv/files.mv projects/quota64/sys/arm/mv/kirkwood/db88f6xxx.c projects/quota64/sys/arm/mv/kirkwood/kirkwood.c projects/quota64/sys/arm/mv/mv_machdep.c projects/quota64/sys/arm/mv/mvreg.h projects/quota64/sys/arm/mv/mvvar.h projects/quota64/sys/arm/mv/obio.c projects/quota64/sys/arm/mv/orion/db88f5xxx.c projects/quota64/sys/arm/mv/orion/orion.c projects/quota64/sys/arm/sa11x0/assabet_machdep.c projects/quota64/sys/arm/xscale/i80321/ep80219_machdep.c projects/quota64/sys/arm/xscale/i80321/iq31244_machdep.c projects/quota64/sys/arm/xscale/i8134x/crb_machdep.c projects/quota64/sys/arm/xscale/ixp425/avila_machdep.c projects/quota64/sys/arm/xscale/pxa/pxa_machdep.c projects/quota64/sys/boot/Makefile projects/quota64/sys/boot/arm/uboot/Makefile projects/quota64/sys/boot/arm/uboot/conf.c projects/quota64/sys/boot/arm/uboot/version projects/quota64/sys/boot/common/bootstrap.h projects/quota64/sys/boot/common/interp.c projects/quota64/sys/boot/forth/loader.conf projects/quota64/sys/boot/i386/Makefile projects/quota64/sys/boot/i386/boot0/Makefile projects/quota64/sys/boot/i386/boot0/boot0.S projects/quota64/sys/boot/i386/libi386/biosdisk.c projects/quota64/sys/boot/i386/libi386/bootinfo32.c projects/quota64/sys/boot/i386/libi386/devicename.c projects/quota64/sys/boot/i386/loader/Makefile projects/quota64/sys/boot/i386/loader/conf.c projects/quota64/sys/boot/i386/loader/main.c projects/quota64/sys/boot/powerpc/boot1.chrp/boot1.c projects/quota64/sys/boot/powerpc/boot1.chrp/bootinfo.txt projects/quota64/sys/boot/uboot/lib/devicename.c projects/quota64/sys/boot/uboot/lib/disk.c projects/quota64/sys/boot/uboot/lib/glue.c projects/quota64/sys/boot/uboot/lib/glue.h projects/quota64/sys/boot/uboot/lib/libuboot.h projects/quota64/sys/boot/uboot/lib/net.c projects/quota64/sys/bsm/audit.h projects/quota64/sys/bsm/audit_internal.h projects/quota64/sys/bsm/audit_kevents.h projects/quota64/sys/bsm/audit_record.h projects/quota64/sys/cam/scsi/scsi_target.c projects/quota64/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c projects/quota64/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c projects/quota64/sys/cddl/compat/opensolaris/kern/opensolaris_kobj.c projects/quota64/sys/cddl/compat/opensolaris/kern/opensolaris_misc.c projects/quota64/sys/cddl/compat/opensolaris/kern/opensolaris_policy.c projects/quota64/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c projects/quota64/sys/cddl/compat/opensolaris/kern/opensolaris_zone.c projects/quota64/sys/cddl/compat/opensolaris/sys/atomic.h projects/quota64/sys/cddl/compat/opensolaris/sys/cred.h projects/quota64/sys/cddl/compat/opensolaris/sys/dnlc.h projects/quota64/sys/cddl/compat/opensolaris/sys/kmem.h projects/quota64/sys/cddl/compat/opensolaris/sys/misc.h projects/quota64/sys/cddl/compat/opensolaris/sys/mntent.h projects/quota64/sys/cddl/compat/opensolaris/sys/param.h projects/quota64/sys/cddl/compat/opensolaris/sys/policy.h projects/quota64/sys/cddl/compat/opensolaris/sys/proc.h projects/quota64/sys/cddl/compat/opensolaris/sys/sunddi.h projects/quota64/sys/cddl/compat/opensolaris/sys/sysmacros.h projects/quota64/sys/cddl/compat/opensolaris/sys/time.h projects/quota64/sys/cddl/compat/opensolaris/sys/types.h projects/quota64/sys/cddl/compat/opensolaris/sys/uio.h projects/quota64/sys/cddl/compat/opensolaris/sys/vfs.h projects/quota64/sys/cddl/compat/opensolaris/sys/vnode.h projects/quota64/sys/cddl/compat/opensolaris/sys/zone.h projects/quota64/sys/cddl/contrib/opensolaris/common/acl/acl_common.c projects/quota64/sys/cddl/contrib/opensolaris/common/acl/acl_common.h projects/quota64/sys/cddl/contrib/opensolaris/common/atomic/amd64/atomic.S projects/quota64/sys/cddl/contrib/opensolaris/common/atomic/i386/atomic.S projects/quota64/sys/cddl/contrib/opensolaris/common/avl/avl.c projects/quota64/sys/cddl/contrib/opensolaris/common/nvpair/nvpair.c projects/quota64/sys/cddl/contrib/opensolaris/common/zfs/zfs_namecheck.c projects/quota64/sys/cddl/contrib/opensolaris/common/zfs/zfs_namecheck.h projects/quota64/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c projects/quota64/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/Makefile.files projects/quota64/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bplist.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sha256.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_errlog.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/bplist.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_traverse.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_tx.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_prop.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_synctask.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/refcount.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg_impl.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/uberblock_impl.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/unique.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_disk.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap_impl.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap_leaf.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ctldir.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_dir.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_vfsops.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil_impl.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_checksum.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_impl.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zvol.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/unique.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_root.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_byteswap.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_rlock.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_checksum.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/os/callb.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/os/list.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/os/taskq.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr_array.c projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/avl.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/byteorder.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/callb.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/cpuvar.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/cred.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/dkio.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/dklabel.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/fm/fs/zfs.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/fm/protocol.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/fm/util.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/gfs.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/list.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/nvpair.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/processor.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/synch.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/sys/sysmacros.h projects/quota64/sys/cddl/contrib/opensolaris/uts/common/zmod/zmod.c projects/quota64/sys/cddl/dev/cyclic/cyclic.c projects/quota64/sys/cddl/dev/dtrace/dtrace_ioctl.c projects/quota64/sys/cddl/dev/dtrace/dtrace_load.c projects/quota64/sys/cddl/dev/dtrace/dtrace_unload.c projects/quota64/sys/cddl/dev/dtrace/i386/dtrace_subr.c projects/quota64/sys/cddl/dev/systrace/systrace.c projects/quota64/sys/compat/freebsd32/freebsd32.h projects/quota64/sys/compat/freebsd32/freebsd32_misc.c projects/quota64/sys/compat/freebsd32/freebsd32_proto.h projects/quota64/sys/compat/freebsd32/freebsd32_syscall.h projects/quota64/sys/compat/freebsd32/freebsd32_syscalls.c projects/quota64/sys/compat/freebsd32/freebsd32_sysent.c projects/quota64/sys/compat/freebsd32/syscalls.master projects/quota64/sys/compat/ia32/ia32_sysvec.c projects/quota64/sys/compat/linprocfs/linprocfs.c projects/quota64/sys/compat/linux/linux_emul.c projects/quota64/sys/compat/linux/linux_futex.c projects/quota64/sys/compat/linux/linux_getcwd.c projects/quota64/sys/compat/linux/linux_ioctl.c projects/quota64/sys/compat/linux/linux_ipc.c projects/quota64/sys/compat/linux/linux_misc.c projects/quota64/sys/compat/linux/linux_socket.c projects/quota64/sys/compat/linux/linux_socket.h projects/quota64/sys/compat/linux/linux_util.c projects/quota64/sys/compat/svr4/svr4_sockio.c projects/quota64/sys/compat/svr4/svr4_sysvec.c projects/quota64/sys/conf/Makefile.arm projects/quota64/sys/conf/NOTES projects/quota64/sys/conf/files projects/quota64/sys/conf/files.amd64 projects/quota64/sys/conf/files.arm projects/quota64/sys/conf/files.i386 projects/quota64/sys/conf/files.mips projects/quota64/sys/conf/files.pc98 projects/quota64/sys/conf/files.powerpc projects/quota64/sys/conf/files.sparc64 projects/quota64/sys/conf/kern.pre.mk projects/quota64/sys/conf/kmod.mk projects/quota64/sys/conf/options projects/quota64/sys/conf/options.arm projects/quota64/sys/contrib/altq/altq/altq_cbq.c projects/quota64/sys/contrib/altq/altq/altq_cdnr.c projects/quota64/sys/contrib/altq/altq/altq_hfsc.c projects/quota64/sys/contrib/altq/altq/altq_priq.c projects/quota64/sys/contrib/altq/altq/altq_red.c projects/quota64/sys/contrib/altq/altq/altq_rio.c projects/quota64/sys/contrib/altq/altq/altq_rmclass.c projects/quota64/sys/contrib/altq/altq/altq_subr.c projects/quota64/sys/contrib/ipfilter/netinet/ip_compat.h projects/quota64/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c projects/quota64/sys/contrib/pf/ (props changed) projects/quota64/sys/contrib/pf/net/pf.c projects/quota64/sys/contrib/pf/net/pf_if.c projects/quota64/sys/contrib/pf/net/pf_ioctl.c projects/quota64/sys/contrib/pf/net/pf_subr.c projects/quota64/sys/contrib/rdma/rdma_cma.c projects/quota64/sys/crypto/via/padlock.c projects/quota64/sys/dev/aac/aac_pci.c projects/quota64/sys/dev/acpi_support/acpi_asus.c projects/quota64/sys/dev/acpica/Osd/OsdSchedule.c projects/quota64/sys/dev/acpica/acpi.c projects/quota64/sys/dev/acpica/acpi_hpet.c projects/quota64/sys/dev/acpica/acpi_pcib.c projects/quota64/sys/dev/adb/adb_bus.c projects/quota64/sys/dev/age/if_age.c projects/quota64/sys/dev/amr/amr.c projects/quota64/sys/dev/amr/amr_cam.c projects/quota64/sys/dev/amr/amrvar.h projects/quota64/sys/dev/an/if_an.c projects/quota64/sys/dev/ar/if_ar.c projects/quota64/sys/dev/asmc/asmc.c projects/quota64/sys/dev/ata/ata-dma.c projects/quota64/sys/dev/ata/ata-pci.h projects/quota64/sys/dev/ata/ata-queue.c projects/quota64/sys/dev/ata/chipsets/ata-marvell.c projects/quota64/sys/dev/ath/ah_osdep.c projects/quota64/sys/dev/ath/ah_osdep.h projects/quota64/sys/dev/ath/ath_rate/amrr/amrr.c projects/quota64/sys/dev/ath/ath_rate/onoe/onoe.c projects/quota64/sys/dev/ath/ath_rate/sample/sample.c projects/quota64/sys/dev/ath/ath_rate/sample/sample.h projects/quota64/sys/dev/ath/if_ath.c projects/quota64/sys/dev/ath/if_ath_pci.c projects/quota64/sys/dev/ath/if_athrate.h projects/quota64/sys/dev/ath/if_athvar.h projects/quota64/sys/dev/bce/if_bce.c projects/quota64/sys/dev/bce/if_bcereg.h projects/quota64/sys/dev/bge/if_bge.c projects/quota64/sys/dev/cardbus/cardbus.c projects/quota64/sys/dev/cardbus/cardbus_cis.c projects/quota64/sys/dev/cardbus/cardbus_device.c projects/quota64/sys/dev/cardbus/cardbusreg.h projects/quota64/sys/dev/cardbus/cardbusvar.h projects/quota64/sys/dev/ce/if_ce.c projects/quota64/sys/dev/cfe/cfe_console.c projects/quota64/sys/dev/coretemp/coretemp.c projects/quota64/sys/dev/cxgb/common/cxgb_ael1002.c projects/quota64/sys/dev/cxgb/common/cxgb_common.h projects/quota64/sys/dev/cxgb/common/cxgb_ctl_defs.h projects/quota64/sys/dev/cxgb/common/cxgb_t3_hw.c projects/quota64/sys/dev/cxgb/common/cxgb_xgmac.c projects/quota64/sys/dev/cxgb/cxgb_adapter.h projects/quota64/sys/dev/cxgb/cxgb_config.h projects/quota64/sys/dev/cxgb/cxgb_main.c projects/quota64/sys/dev/cxgb/cxgb_multiq.c projects/quota64/sys/dev/cxgb/cxgb_osdep.h projects/quota64/sys/dev/cxgb/cxgb_sge.c projects/quota64/sys/dev/cxgb/sys/cxgb_support.c projects/quota64/sys/dev/cxgb/sys/uipc_mvec.c projects/quota64/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c projects/quota64/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_resource.c projects/quota64/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c projects/quota64/sys/dev/cxgb/ulp/tom/cxgb_tom.c projects/quota64/sys/dev/cxgb/ulp/tom/cxgb_tom_sysctl.c projects/quota64/sys/dev/dcons/dcons_crom.c projects/quota64/sys/dev/dcons/dcons_os.c projects/quota64/sys/dev/drm/drm_drv.c projects/quota64/sys/dev/drm/drm_fops.c projects/quota64/sys/dev/drm/drm_lock.c projects/quota64/sys/dev/drm/i915_dma.c projects/quota64/sys/dev/drm/radeon_cp.c projects/quota64/sys/dev/drm/radeon_drv.h projects/quota64/sys/dev/e1000/e1000_80003es2lan.c projects/quota64/sys/dev/e1000/e1000_82540.c projects/quota64/sys/dev/e1000/e1000_82541.c projects/quota64/sys/dev/e1000/e1000_82542.c projects/quota64/sys/dev/e1000/e1000_82543.c projects/quota64/sys/dev/e1000/e1000_82571.c projects/quota64/sys/dev/e1000/e1000_82575.c projects/quota64/sys/dev/e1000/e1000_82575.h projects/quota64/sys/dev/e1000/e1000_api.c projects/quota64/sys/dev/e1000/e1000_api.h projects/quota64/sys/dev/e1000/e1000_defines.h projects/quota64/sys/dev/e1000/e1000_hw.h projects/quota64/sys/dev/e1000/e1000_ich8lan.c projects/quota64/sys/dev/e1000/e1000_ich8lan.h projects/quota64/sys/dev/e1000/e1000_mac.c projects/quota64/sys/dev/e1000/e1000_mac.h projects/quota64/sys/dev/e1000/e1000_manage.c projects/quota64/sys/dev/e1000/e1000_nvm.c projects/quota64/sys/dev/e1000/e1000_osdep.c projects/quota64/sys/dev/e1000/e1000_osdep.h projects/quota64/sys/dev/e1000/e1000_phy.c projects/quota64/sys/dev/e1000/e1000_phy.h projects/quota64/sys/dev/e1000/e1000_regs.h projects/quota64/sys/dev/e1000/if_em.c projects/quota64/sys/dev/e1000/if_em.h projects/quota64/sys/dev/e1000/if_igb.c projects/quota64/sys/dev/en/midway.c projects/quota64/sys/dev/fb/s3_pci.c projects/quota64/sys/dev/fdc/fdc.c projects/quota64/sys/dev/fdc/fdc_pccard.c projects/quota64/sys/dev/fxp/if_fxp.c projects/quota64/sys/dev/fxp/if_fxpreg.h projects/quota64/sys/dev/fxp/if_fxpvar.h projects/quota64/sys/dev/glxsb/glxsb.c projects/quota64/sys/dev/hwpmc/hwpmc_amd.c projects/quota64/sys/dev/hwpmc/hwpmc_amd.h projects/quota64/sys/dev/hwpmc/hwpmc_arm.c projects/quota64/sys/dev/hwpmc/hwpmc_ia64.c projects/quota64/sys/dev/hwpmc/hwpmc_logging.c projects/quota64/sys/dev/hwpmc/hwpmc_mod.c projects/quota64/sys/dev/hwpmc/hwpmc_pentium.c projects/quota64/sys/dev/hwpmc/hwpmc_pentium.h projects/quota64/sys/dev/hwpmc/hwpmc_piv.c projects/quota64/sys/dev/hwpmc/hwpmc_piv.h projects/quota64/sys/dev/hwpmc/hwpmc_powerpc.c projects/quota64/sys/dev/hwpmc/hwpmc_ppro.c projects/quota64/sys/dev/hwpmc/hwpmc_ppro.h projects/quota64/sys/dev/hwpmc/hwpmc_sparc64.c projects/quota64/sys/dev/hwpmc/hwpmc_x86.c projects/quota64/sys/dev/hwpmc/pmc_events.h projects/quota64/sys/dev/if_ndis/if_ndis.c projects/quota64/sys/dev/ipmi/ipmi.c projects/quota64/sys/dev/iscsi/initiator/isc_cam.c projects/quota64/sys/dev/iscsi/initiator/isc_sm.c projects/quota64/sys/dev/iscsi/initiator/isc_soc.c projects/quota64/sys/dev/iscsi/initiator/isc_subr.c projects/quota64/sys/dev/iscsi/initiator/iscsi.c projects/quota64/sys/dev/iscsi/initiator/iscsi.h projects/quota64/sys/dev/iscsi/initiator/iscsi_subr.c projects/quota64/sys/dev/iscsi/initiator/iscsivar.h projects/quota64/sys/dev/ispfw/ispfw.c projects/quota64/sys/dev/iwn/if_iwn.c projects/quota64/sys/dev/ixgbe/ixgbe.c projects/quota64/sys/dev/ixgbe/ixgbe.h projects/quota64/sys/dev/ixgbe/ixgbe_82598.c projects/quota64/sys/dev/ixgbe/ixgbe_api.c projects/quota64/sys/dev/ixgbe/ixgbe_api.h projects/quota64/sys/dev/ixgbe/ixgbe_common.c projects/quota64/sys/dev/ixgbe/ixgbe_common.h projects/quota64/sys/dev/ixgbe/ixgbe_osdep.h projects/quota64/sys/dev/ixgbe/ixgbe_phy.c projects/quota64/sys/dev/ixgbe/ixgbe_phy.h projects/quota64/sys/dev/ixgbe/ixgbe_type.h projects/quota64/sys/dev/jme/if_jme.c projects/quota64/sys/dev/jme/if_jmereg.h projects/quota64/sys/dev/jme/if_jmevar.h projects/quota64/sys/dev/k8temp/k8temp.c projects/quota64/sys/dev/lmc/if_lmc.c projects/quota64/sys/dev/mfi/mfi.c projects/quota64/sys/dev/mfi/mfi_disk.c projects/quota64/sys/dev/mfi/mfi_ioctl.h projects/quota64/sys/dev/mfi/mfi_pci.c projects/quota64/sys/dev/mfi/mfireg.h projects/quota64/sys/dev/mfi/mfivar.h projects/quota64/sys/dev/mii/atphy.c projects/quota64/sys/dev/mii/ciphy.c projects/quota64/sys/dev/mii/miidevs projects/quota64/sys/dev/mii/truephy.c projects/quota64/sys/dev/mmc/mmc.c projects/quota64/sys/dev/mmc/mmcbrvar.h projects/quota64/sys/dev/mmc/mmcsd.c projects/quota64/sys/dev/mmc/mmcvar.h projects/quota64/sys/dev/mn/if_mn.c (props changed) projects/quota64/sys/dev/msk/if_msk.c projects/quota64/sys/dev/mxge/eth_z8e.h projects/quota64/sys/dev/mxge/ethp_z8e.h projects/quota64/sys/dev/mxge/if_mxge.c projects/quota64/sys/dev/mxge/if_mxge_var.h projects/quota64/sys/dev/mxge/rss_eth_z8e.h projects/quota64/sys/dev/mxge/rss_ethp_z8e.h projects/quota64/sys/dev/nmdm/nmdm.c projects/quota64/sys/dev/nxge/xge-osdep.h projects/quota64/sys/dev/ofw/ofw_console.c projects/quota64/sys/dev/patm/if_patm_intr.c projects/quota64/sys/dev/pci/pci.c projects/quota64/sys/dev/pci/pcireg.h projects/quota64/sys/dev/ppbus/if_plip.c projects/quota64/sys/dev/ppbus/immio.c projects/quota64/sys/dev/ppbus/lpbb.c projects/quota64/sys/dev/ppbus/lpt.c projects/quota64/sys/dev/ppbus/lpt.h projects/quota64/sys/dev/ppbus/pcfclock.c projects/quota64/sys/dev/ppbus/ppb_1284.c projects/quota64/sys/dev/ppbus/ppb_base.c projects/quota64/sys/dev/ppbus/ppb_msq.c projects/quota64/sys/dev/ppbus/ppbconf.c projects/quota64/sys/dev/ppbus/ppbconf.h projects/quota64/sys/dev/ppbus/ppi.c projects/quota64/sys/dev/ppbus/ppi.h projects/quota64/sys/dev/ppbus/pps.c projects/quota64/sys/dev/ppbus/vpo.c projects/quota64/sys/dev/ppbus/vpoio.c projects/quota64/sys/dev/ppbus/vpoio.h projects/quota64/sys/dev/ppc/ppc.c projects/quota64/sys/dev/ppc/ppc_acpi.c projects/quota64/sys/dev/ppc/ppcreg.h projects/quota64/sys/dev/puc/pucdata.c projects/quota64/sys/dev/ral/rt2560.c projects/quota64/sys/dev/ral/rt2661.c projects/quota64/sys/dev/random/randomdev.c projects/quota64/sys/dev/random/randomdev_soft.c projects/quota64/sys/dev/ray/if_ray.c projects/quota64/sys/dev/ray/if_rayvar.h projects/quota64/sys/dev/re/if_re.c projects/quota64/sys/dev/sdhci/sdhci.c projects/quota64/sys/dev/sio/sio_pci.c projects/quota64/sys/dev/sio/sio_puc.c projects/quota64/sys/dev/snp/snp.c projects/quota64/sys/dev/sound/pci/hda/hdac.c projects/quota64/sys/dev/sound/pci/hda/hdac_private.h projects/quota64/sys/dev/sound/pcm/channel.c projects/quota64/sys/dev/sound/pcm/channel.h projects/quota64/sys/dev/sound/pcm/mixer.c projects/quota64/sys/dev/sound/pcm/mixer.h projects/quota64/sys/dev/sr/if_sr.c projects/quota64/sys/dev/syscons/sysmouse.c projects/quota64/sys/dev/uart/uart_dev_quicc.c projects/quota64/sys/dev/uart/uart_tty.c projects/quota64/sys/dev/usb/if_aue.c projects/quota64/sys/dev/usb/if_upgt.c projects/quota64/sys/dev/usb/if_zyd.c projects/quota64/sys/dev/usb/if_zydreg.h projects/quota64/sys/dev/usb/rio500_usb.h projects/quota64/sys/dev/usb/u3g.c projects/quota64/sys/dev/usb/ubsa.c projects/quota64/sys/dev/usb/ucom.c projects/quota64/sys/dev/usb/udbp.c projects/quota64/sys/dev/usb/ufoma.c projects/quota64/sys/dev/usb/ugen.c projects/quota64/sys/dev/usb/usb.h projects/quota64/sys/dev/usb/usb_quirks.c projects/quota64/sys/dev/usb/usb_subr.c projects/quota64/sys/dev/usb/usbdevs projects/quota64/sys/dev/usb/usbdi.c projects/quota64/sys/dev/usb/usbdi.h projects/quota64/sys/dev/usb2/bluetooth/ng_ubt2.c projects/quota64/sys/dev/usb2/controller/at91dci.c projects/quota64/sys/dev/usb2/controller/at91dci_atmelarm.c projects/quota64/sys/dev/usb2/controller/ehci2.c projects/quota64/sys/dev/usb2/controller/ehci2.h projects/quota64/sys/dev/usb2/controller/ehci2_pci.c projects/quota64/sys/dev/usb2/controller/musb2_otg.c projects/quota64/sys/dev/usb2/controller/musb2_otg_atmelarm.c projects/quota64/sys/dev/usb2/controller/ohci2.c projects/quota64/sys/dev/usb2/controller/ohci2_atmelarm.c projects/quota64/sys/dev/usb2/controller/ohci2_pci.c projects/quota64/sys/dev/usb2/controller/uhci2.c projects/quota64/sys/dev/usb2/controller/uhci2_pci.c projects/quota64/sys/dev/usb2/controller/usb2_bus.h projects/quota64/sys/dev/usb2/controller/usb2_controller.c projects/quota64/sys/dev/usb2/controller/uss820dci.c projects/quota64/sys/dev/usb2/controller/uss820dci_atmelarm.c projects/quota64/sys/dev/usb2/controller/uss820dci_pccard.c (props changed) projects/quota64/sys/dev/usb2/core/usb2_busdma.c projects/quota64/sys/dev/usb2/core/usb2_core.h projects/quota64/sys/dev/usb2/core/usb2_dev.c projects/quota64/sys/dev/usb2/core/usb2_dev.h projects/quota64/sys/dev/usb2/core/usb2_device.c projects/quota64/sys/dev/usb2/core/usb2_generic.c projects/quota64/sys/dev/usb2/core/usb2_handle_request.c projects/quota64/sys/dev/usb2/core/usb2_hub.c projects/quota64/sys/dev/usb2/core/usb2_msctest.c projects/quota64/sys/dev/usb2/core/usb2_msctest.h projects/quota64/sys/dev/usb2/core/usb2_request.c projects/quota64/sys/dev/usb2/core/usb2_sw_transfer.c projects/quota64/sys/dev/usb2/core/usb2_transfer.c projects/quota64/sys/dev/usb2/core/usb2_transfer.h projects/quota64/sys/dev/usb2/core/usb2_util.c projects/quota64/sys/dev/usb2/core/usbdevs (props changed) projects/quota64/sys/dev/usb2/ethernet/if_aue2.c projects/quota64/sys/dev/usb2/image/uscanner2.c projects/quota64/sys/dev/usb2/include/Makefile projects/quota64/sys/dev/usb2/include/urio2_ioctl.h (props changed) projects/quota64/sys/dev/usb2/include/usb2_devid.h (contents, props changed) projects/quota64/sys/dev/usb2/include/usb2_devtable.h (contents, props changed) projects/quota64/sys/dev/usb2/include/usb2_ioctl.h projects/quota64/sys/dev/usb2/include/usb2_standard.h projects/quota64/sys/dev/usb2/quirk/usb2_quirk.c projects/quota64/sys/dev/usb2/serial/uark2.c projects/quota64/sys/dev/usb2/serial/ubsa2.c projects/quota64/sys/dev/usb2/serial/ubser2.c projects/quota64/sys/dev/usb2/serial/uchcom2.c projects/quota64/sys/dev/usb2/serial/ucycom2.c projects/quota64/sys/dev/usb2/serial/ufoma2.c projects/quota64/sys/dev/usb2/serial/uftdi2.c projects/quota64/sys/dev/usb2/serial/ugensa2.c projects/quota64/sys/dev/usb2/serial/uipaq2.c projects/quota64/sys/dev/usb2/serial/umct2.c projects/quota64/sys/dev/usb2/serial/umodem2.c projects/quota64/sys/dev/usb2/serial/umoscom2.c projects/quota64/sys/dev/usb2/serial/uplcom2.c projects/quota64/sys/dev/usb2/serial/usb2_serial.c projects/quota64/sys/dev/usb2/serial/uvisor2.c projects/quota64/sys/dev/usb2/serial/uvscom2.c projects/quota64/sys/dev/usb2/sound/uaudio2.c projects/quota64/sys/dev/usb2/storage/ata-usb2.c projects/quota64/sys/dev/usb2/storage/umass2.c projects/quota64/sys/dev/usb2/storage/urio2.c projects/quota64/sys/dev/usb2/wlan/if_zyd2.c projects/quota64/sys/dev/vge/if_vge.c projects/quota64/sys/dev/vr/if_vr.c projects/quota64/sys/dev/wpi/if_wpi.c projects/quota64/sys/dev/xen/blkfront/blkfront.c projects/quota64/sys/dev/xen/blkfront/block.h projects/quota64/sys/dev/xen/console/console.c projects/quota64/sys/dev/xen/netfront/netfront.c projects/quota64/sys/fs/cd9660/cd9660_bmap.c projects/quota64/sys/fs/cd9660/cd9660_node.c projects/quota64/sys/fs/cd9660/cd9660_node.h projects/quota64/sys/fs/cd9660/cd9660_rrip.c projects/quota64/sys/fs/cd9660/cd9660_vfsops.c projects/quota64/sys/fs/cd9660/cd9660_vnops.c projects/quota64/sys/fs/coda/cnode.h projects/quota64/sys/fs/coda/coda_subr.c projects/quota64/sys/fs/coda/coda_venus.c projects/quota64/sys/fs/coda/coda_vnops.c projects/quota64/sys/fs/devfs/devfs_vnops.c projects/quota64/sys/fs/fdescfs/fdesc_vfsops.c projects/quota64/sys/fs/fdescfs/fdesc_vnops.c projects/quota64/sys/fs/fifofs/fifo_vnops.c projects/quota64/sys/fs/hpfs/hpfs_subr.c projects/quota64/sys/fs/hpfs/hpfs_vfsops.c projects/quota64/sys/fs/hpfs/hpfs_vnops.c projects/quota64/sys/fs/msdosfs/msdosfs_denode.c projects/quota64/sys/fs/msdosfs/msdosfs_vfsops.c projects/quota64/sys/fs/msdosfs/msdosfs_vnops.c projects/quota64/sys/fs/ntfs/ntfs_subr.c projects/quota64/sys/fs/ntfs/ntfs_vfsops.c projects/quota64/sys/fs/ntfs/ntfs_vnops.c projects/quota64/sys/fs/nullfs/null_subr.c projects/quota64/sys/fs/nullfs/null_vnops.c projects/quota64/sys/fs/nwfs/nwfs_node.c projects/quota64/sys/fs/nwfs/nwfs_vfsops.c projects/quota64/sys/fs/nwfs/nwfs_vnops.c projects/quota64/sys/fs/portalfs/portal_vfsops.c projects/quota64/sys/fs/portalfs/portal_vnops.c projects/quota64/sys/fs/procfs/procfs.c projects/quota64/sys/fs/procfs/procfs_map.c projects/quota64/sys/fs/pseudofs/pseudofs.c projects/quota64/sys/fs/pseudofs/pseudofs_vncache.c projects/quota64/sys/fs/pseudofs/pseudofs_vnops.c projects/quota64/sys/fs/smbfs/smbfs_node.c projects/quota64/sys/fs/smbfs/smbfs_vfsops.c projects/quota64/sys/fs/smbfs/smbfs_vnops.c projects/quota64/sys/fs/tmpfs/tmpfs_vnops.c projects/quota64/sys/fs/udf/udf_vfsops.c projects/quota64/sys/fs/udf/udf_vnops.c projects/quota64/sys/fs/unionfs/union.h projects/quota64/sys/fs/unionfs/union_subr.c projects/quota64/sys/fs/unionfs/union_vfsops.c projects/quota64/sys/fs/unionfs/union_vnops.c projects/quota64/sys/geom/geom_bsd.c projects/quota64/sys/geom/geom_ccd.c projects/quota64/sys/geom/journal/g_journal.c projects/quota64/sys/geom/part/g_part.c projects/quota64/sys/geom/part/g_part_apm.c projects/quota64/sys/geom/part/g_part_bsd.c projects/quota64/sys/geom/part/g_part_gpt.c projects/quota64/sys/geom/part/g_part_mbr.c projects/quota64/sys/geom/part/g_part_pc98.c projects/quota64/sys/geom/part/g_part_vtoc8.c projects/quota64/sys/geom/vinum/geom_vinum.c projects/quota64/sys/geom/vinum/geom_vinum.h projects/quota64/sys/geom/vinum/geom_vinum_drive.c projects/quota64/sys/geom/vinum/geom_vinum_init.c projects/quota64/sys/geom/vinum/geom_vinum_list.c projects/quota64/sys/geom/vinum/geom_vinum_move.c projects/quota64/sys/geom/vinum/geom_vinum_plex.c projects/quota64/sys/geom/vinum/geom_vinum_raid5.c projects/quota64/sys/geom/vinum/geom_vinum_rename.c projects/quota64/sys/geom/vinum/geom_vinum_rm.c projects/quota64/sys/geom/vinum/geom_vinum_state.c projects/quota64/sys/geom/vinum/geom_vinum_subr.c projects/quota64/sys/geom/vinum/geom_vinum_volume.c projects/quota64/sys/gnu/fs/ext2fs/ext2_inode.c projects/quota64/sys/gnu/fs/ext2fs/ext2_lookup.c projects/quota64/sys/gnu/fs/ext2fs/ext2_vfsops.c projects/quota64/sys/gnu/fs/ext2fs/ext2_vnops.c projects/quota64/sys/gnu/fs/reiserfs/reiserfs_inode.c projects/quota64/sys/gnu/fs/reiserfs/reiserfs_vfsops.c projects/quota64/sys/gnu/fs/reiserfs/reiserfs_vnops.c projects/quota64/sys/gnu/fs/xfs/FreeBSD/xfs_super.c projects/quota64/sys/gnu/fs/xfs/FreeBSD/xfs_vnode.h projects/quota64/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c projects/quota64/sys/gnu/fs/xfs/xfs_dfrag.c projects/quota64/sys/gnu/fs/xfs/xfs_inode.c projects/quota64/sys/gnu/fs/xfs/xfs_inode.h projects/quota64/sys/gnu/fs/xfs/xfs_vnodeops.c projects/quota64/sys/i386/conf/GENERIC projects/quota64/sys/i386/conf/NOTES projects/quota64/sys/i386/conf/PAE projects/quota64/sys/i386/conf/XEN projects/quota64/sys/i386/cpufreq/est.c projects/quota64/sys/i386/cpufreq/p4tcc.c projects/quota64/sys/i386/cpufreq/powernow.c projects/quota64/sys/i386/i386/bios.c projects/quota64/sys/i386/i386/dump_machdep.c projects/quota64/sys/i386/i386/elf_machdep.c projects/quota64/sys/i386/i386/i686_mem.c projects/quota64/sys/i386/i386/identcpu.c projects/quota64/sys/i386/i386/initcpu.c projects/quota64/sys/i386/i386/intr_machdep.c projects/quota64/sys/i386/i386/k6_mem.c projects/quota64/sys/i386/i386/local_apic.c projects/quota64/sys/i386/i386/longrun.c projects/quota64/sys/i386/i386/minidump_machdep.c projects/quota64/sys/i386/i386/mp_machdep.c projects/quota64/sys/i386/i386/msi.c projects/quota64/sys/i386/i386/sys_machdep.c projects/quota64/sys/i386/ibcs2/ibcs2_sysvec.c projects/quota64/sys/i386/include/apicvar.h projects/quota64/sys/i386/include/atomic.h projects/quota64/sys/i386/include/cputypes.h projects/quota64/sys/i386/include/md_var.h projects/quota64/sys/i386/include/pcpu.h projects/quota64/sys/i386/include/pmc_mdep.h projects/quota64/sys/i386/include/specialreg.h projects/quota64/sys/i386/include/xen/xen-os.h projects/quota64/sys/i386/include/xen/xen_intr.h projects/quota64/sys/i386/isa/pmtimer.c projects/quota64/sys/i386/linux/linux.h projects/quota64/sys/i386/linux/linux_machdep.c projects/quota64/sys/i386/linux/linux_proto.h projects/quota64/sys/i386/linux/linux_syscall.h projects/quota64/sys/i386/linux/linux_sysent.c projects/quota64/sys/i386/linux/linux_sysvec.c projects/quota64/sys/i386/linux/syscalls.master projects/quota64/sys/i386/xen/clock.c projects/quota64/sys/i386/xen/exception.s projects/quota64/sys/i386/xen/mp_machdep.c projects/quota64/sys/i386/xen/xen_machdep.c projects/quota64/sys/ia64/conf/GENERIC projects/quota64/sys/ia64/ia64/elf_machdep.c projects/quota64/sys/ia64/ia64/sscdisk.c projects/quota64/sys/ia64/include/atomic.h projects/quota64/sys/isa/isa_common.c projects/quota64/sys/isa/isa_common.h projects/quota64/sys/isa/isahint.c projects/quota64/sys/isa/isavar.h projects/quota64/sys/isa/pnp.c projects/quota64/sys/kern/Make.tags.inc projects/quota64/sys/kern/bus_if.m projects/quota64/sys/kern/imgact_aout.c projects/quota64/sys/kern/init_main.c projects/quota64/sys/kern/init_sysent.c projects/quota64/sys/kern/kern_conf.c projects/quota64/sys/kern/kern_cpuset.c projects/quota64/sys/kern/kern_descrip.c projects/quota64/sys/kern/kern_event.c projects/quota64/sys/kern/kern_exec.c projects/quota64/sys/kern/kern_exit.c projects/quota64/sys/kern/kern_fork.c projects/quota64/sys/kern/kern_jail.c projects/quota64/sys/kern/kern_ktrace.c projects/quota64/sys/kern/kern_linker.c projects/quota64/sys/kern/kern_lockf.c projects/quota64/sys/kern/kern_mbuf.c projects/quota64/sys/kern/kern_mtxpool.c projects/quota64/sys/kern/kern_poll.c projects/quota64/sys/kern/kern_proc.c projects/quota64/sys/kern/kern_prot.c projects/quota64/sys/kern/kern_resource.c projects/quota64/sys/kern/kern_shutdown.c projects/quota64/sys/kern/kern_sysctl.c projects/quota64/sys/kern/kern_thr.c projects/quota64/sys/kern/kern_thread.c projects/quota64/sys/kern/kern_timeout.c projects/quota64/sys/kern/kern_uuid.c projects/quota64/sys/kern/kern_xxx.c projects/quota64/sys/kern/sched_ule.c projects/quota64/sys/kern/subr_acl_posix1e.c projects/quota64/sys/kern/subr_blist.c projects/quota64/sys/kern/subr_bus.c projects/quota64/sys/kern/subr_firmware.c projects/quota64/sys/kern/subr_param.c projects/quota64/sys/kern/subr_prf.c projects/quota64/sys/kern/subr_rman.c projects/quota64/sys/kern/subr_sleepqueue.c projects/quota64/sys/kern/subr_smp.c projects/quota64/sys/kern/subr_stack.c projects/quota64/sys/kern/subr_witness.c projects/quota64/sys/kern/sys_pipe.c projects/quota64/sys/kern/syscalls.c projects/quota64/sys/kern/syscalls.master projects/quota64/sys/kern/systrace_args.c projects/quota64/sys/kern/tty.c projects/quota64/sys/kern/tty_pts.c projects/quota64/sys/kern/tty_ttydisc.c projects/quota64/sys/kern/uipc_accf.c projects/quota64/sys/kern/uipc_mqueue.c projects/quota64/sys/kern/uipc_shm.c projects/quota64/sys/kern/uipc_socket.c projects/quota64/sys/kern/uipc_syscalls.c projects/quota64/sys/kern/uipc_usrreq.c projects/quota64/sys/kern/vfs_cache.c projects/quota64/sys/kern/vfs_export.c projects/quota64/sys/kern/vfs_lookup.c projects/quota64/sys/kern/vfs_mount.c projects/quota64/sys/kern/vfs_subr.c projects/quota64/sys/kern/vfs_syscalls.c projects/quota64/sys/kern/vfs_vnops.c projects/quota64/sys/kern/vnode_if.src projects/quota64/sys/kgssapi/gsstest.c projects/quota64/sys/mips/conf/ADM5120 projects/quota64/sys/mips/conf/IDT projects/quota64/sys/mips/conf/MALTA projects/quota64/sys/mips/conf/QEMU projects/quota64/sys/mips/conf/SENTRY5 projects/quota64/sys/mips/idt/if_kr.c projects/quota64/sys/mips/include/atomic.h projects/quota64/sys/mips/mips/elf_machdep.c projects/quota64/sys/mips/mips/machdep.c projects/quota64/sys/modules/Makefile projects/quota64/sys/modules/amr/Makefile projects/quota64/sys/modules/ath/Makefile projects/quota64/sys/modules/ath_rate_amrr/Makefile projects/quota64/sys/modules/ath_rate_onoe/Makefile projects/quota64/sys/modules/ath_rate_sample/Makefile projects/quota64/sys/modules/bridgestp/Makefile projects/quota64/sys/modules/cxgb/cxgb/Makefile projects/quota64/sys/modules/cxgb/iw_cxgb/Makefile projects/quota64/sys/modules/cxgb/toecore/Makefile projects/quota64/sys/modules/em/Makefile projects/quota64/sys/modules/hwpmc/Makefile projects/quota64/sys/modules/if_ef/Makefile projects/quota64/sys/modules/if_vlan/Makefile projects/quota64/sys/modules/igb/Makefile projects/quota64/sys/modules/ip_mroute_mod/Makefile projects/quota64/sys/modules/ipfw/Makefile projects/quota64/sys/modules/krpc/Makefile projects/quota64/sys/modules/linprocfs/Makefile projects/quota64/sys/modules/linux/Makefile projects/quota64/sys/modules/mac_bsdextended/Makefile projects/quota64/sys/modules/netgraph/atm/atm/Makefile projects/quota64/sys/modules/netgraph/ether/Makefile projects/quota64/sys/modules/netgraph/gif/Makefile projects/quota64/sys/modules/nfsclient/Makefile projects/quota64/sys/modules/nfsserver/Makefile projects/quota64/sys/modules/pf/Makefile projects/quota64/sys/modules/powermac_nvram/Makefile projects/quota64/sys/modules/snp/Makefile projects/quota64/sys/modules/u3g/Makefile projects/quota64/sys/modules/uart/Makefile projects/quota64/sys/modules/usb2/Makefile projects/quota64/sys/modules/wlan/Makefile projects/quota64/sys/modules/zfs/Makefile projects/quota64/sys/net/bpf.c projects/quota64/sys/net/bridgestp.c projects/quota64/sys/net/bsd_comp.c projects/quota64/sys/net/if.c projects/quota64/sys/net/if_arcsubr.c projects/quota64/sys/net/if_bridge.c projects/quota64/sys/net/if_ef.c projects/quota64/sys/net/if_ethersubr.c projects/quota64/sys/net/if_faith.c projects/quota64/sys/net/if_fddisubr.c projects/quota64/sys/net/if_fwsubr.c projects/quota64/sys/net/if_gif.c projects/quota64/sys/net/if_gre.c projects/quota64/sys/net/if_iso88025subr.c projects/quota64/sys/net/if_lagg.c projects/quota64/sys/net/if_loop.c projects/quota64/sys/net/if_mib.c projects/quota64/sys/net/if_ppp.c projects/quota64/sys/net/if_sl.c projects/quota64/sys/net/if_spppsubr.c projects/quota64/sys/net/if_stf.c projects/quota64/sys/net/if_tap.c projects/quota64/sys/net/if_tun.c projects/quota64/sys/net/if_var.h projects/quota64/sys/net/if_vlan.c projects/quota64/sys/net/ppp_deflate.c projects/quota64/sys/net/radix_mpath.c projects/quota64/sys/net/raw_cb.c projects/quota64/sys/net/raw_usrreq.c projects/quota64/sys/net/route.c projects/quota64/sys/net/rtsock.c projects/quota64/sys/net/vnet.h projects/quota64/sys/net80211/_ieee80211.h projects/quota64/sys/net80211/ieee80211.c projects/quota64/sys/net80211/ieee80211_adhoc.c projects/quota64/sys/net80211/ieee80211_crypto.c projects/quota64/sys/net80211/ieee80211_ddb.c projects/quota64/sys/net80211/ieee80211_freebsd.h projects/quota64/sys/net80211/ieee80211_hostap.c projects/quota64/sys/net80211/ieee80211_ht.c projects/quota64/sys/net80211/ieee80211_ht.h projects/quota64/sys/net80211/ieee80211_input.c projects/quota64/sys/net80211/ieee80211_ioctl.c projects/quota64/sys/net80211/ieee80211_node.c projects/quota64/sys/net80211/ieee80211_node.h projects/quota64/sys/net80211/ieee80211_output.c projects/quota64/sys/net80211/ieee80211_power.c projects/quota64/sys/net80211/ieee80211_power.h projects/quota64/sys/net80211/ieee80211_proto.h projects/quota64/sys/net80211/ieee80211_regdomain.c projects/quota64/sys/net80211/ieee80211_scan_sta.c projects/quota64/sys/net80211/ieee80211_sta.c projects/quota64/sys/net80211/ieee80211_var.h projects/quota64/sys/net80211/ieee80211_wds.c projects/quota64/sys/netatalk/ddp_pcb.c projects/quota64/sys/netgraph/atm/ng_atm.c projects/quota64/sys/netgraph/atm/sscfu/ng_sscfu_cust.h projects/quota64/sys/netgraph/bluetooth/drivers/h4/ng_h4.c projects/quota64/sys/netgraph/bluetooth/hci/ng_hci_main.c projects/quota64/sys/netgraph/bluetooth/hci/ng_hci_misc.c projects/quota64/sys/netgraph/bluetooth/l2cap/ng_l2cap_main.c projects/quota64/sys/netgraph/bluetooth/l2cap/ng_l2cap_misc.c projects/quota64/sys/netgraph/bluetooth/l2cap/ng_l2cap_misc.h projects/quota64/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c projects/quota64/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c projects/quota64/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c projects/quota64/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c projects/quota64/sys/netgraph/bluetooth/socket/ng_btsocket_sco.c projects/quota64/sys/netgraph/netflow/netflow.c projects/quota64/sys/netgraph/netflow/ng_netflow.c projects/quota64/sys/netgraph/netgraph.h projects/quota64/sys/netgraph/ng_UI.c projects/quota64/sys/netgraph/ng_async.c projects/quota64/sys/netgraph/ng_atmllc.c projects/quota64/sys/netgraph/ng_base.c projects/quota64/sys/netgraph/ng_bpf.c projects/quota64/sys/netgraph/ng_bridge.c projects/quota64/sys/netgraph/ng_cisco.c projects/quota64/sys/netgraph/ng_device.c projects/quota64/sys/netgraph/ng_eiface.c projects/quota64/sys/netgraph/ng_etf.c projects/quota64/sys/netgraph/ng_ether.c projects/quota64/sys/netgraph/ng_fec.c projects/quota64/sys/netgraph/ng_frame_relay.c projects/quota64/sys/netgraph/ng_gif.c projects/quota64/sys/netgraph/ng_gif_demux.c projects/quota64/sys/netgraph/ng_hole.c projects/quota64/sys/netgraph/ng_iface.c projects/quota64/sys/netgraph/ng_ipfw.c projects/quota64/sys/netgraph/ng_ksocket.c projects/quota64/sys/netgraph/ng_l2tp.c projects/quota64/sys/netgraph/ng_lmi.c projects/quota64/sys/netgraph/ng_message.h projects/quota64/sys/netgraph/ng_mppc.c projects/quota64/sys/netgraph/ng_nat.c projects/quota64/sys/netgraph/ng_one2many.c projects/quota64/sys/netgraph/ng_parse.c projects/quota64/sys/netgraph/ng_pipe.c projects/quota64/sys/netgraph/ng_ppp.c projects/quota64/sys/netgraph/ng_pptpgre.c projects/quota64/sys/netgraph/ng_rfc1490.c projects/quota64/sys/netgraph/ng_sample.c projects/quota64/sys/netgraph/ng_socket.c projects/quota64/sys/netgraph/ng_split.c projects/quota64/sys/netgraph/ng_sppp.c projects/quota64/sys/netgraph/ng_tag.c projects/quota64/sys/netgraph/ng_tcpmss.c projects/quota64/sys/netgraph/ng_tee.c projects/quota64/sys/netgraph/ng_tty.c projects/quota64/sys/netgraph/ng_tty.h projects/quota64/sys/netgraph/ng_vjc.c projects/quota64/sys/netgraph/ng_vlan.c projects/quota64/sys/netinet/if_ether.c projects/quota64/sys/netinet/igmp.c projects/quota64/sys/netinet/in.c projects/quota64/sys/netinet/in.h projects/quota64/sys/netinet/in_gif.c projects/quota64/sys/netinet/in_mcast.c projects/quota64/sys/netinet/in_pcb.c projects/quota64/sys/netinet/in_pcb.h projects/quota64/sys/netinet/in_proto.c projects/quota64/sys/netinet/in_rmx.c projects/quota64/sys/netinet/in_var.h projects/quota64/sys/netinet/ip6.h projects/quota64/sys/netinet/ip_carp.c projects/quota64/sys/netinet/ip_divert.c projects/quota64/sys/netinet/ip_dummynet.h projects/quota64/sys/netinet/ip_fastfwd.c projects/quota64/sys/netinet/ip_fw2.c projects/quota64/sys/netinet/ip_fw_pfil.c projects/quota64/sys/netinet/ip_icmp.c projects/quota64/sys/netinet/ip_icmp.h projects/quota64/sys/netinet/ip_input.c projects/quota64/sys/netinet/ip_ipsec.c projects/quota64/sys/netinet/ip_mroute.c projects/quota64/sys/netinet/ip_options.c projects/quota64/sys/netinet/ip_output.c projects/quota64/sys/netinet/ip_var.h projects/quota64/sys/netinet/raw_ip.c projects/quota64/sys/netinet/sctp_constants.h projects/quota64/sys/netinet/sctp_indata.c projects/quota64/sys/netinet/sctp_input.c projects/quota64/sys/netinet/sctp_os_bsd.h projects/quota64/sys/netinet/sctp_output.c projects/quota64/sys/netinet/sctp_pcb.c projects/quota64/sys/netinet/sctp_pcb.h projects/quota64/sys/netinet/sctp_timer.c projects/quota64/sys/netinet/sctp_timer.h projects/quota64/sys/netinet/sctp_usrreq.c projects/quota64/sys/netinet/sctputil.c projects/quota64/sys/netinet/tcp_hostcache.c projects/quota64/sys/netinet/tcp_input.c projects/quota64/sys/netinet/tcp_offload.c projects/quota64/sys/netinet/tcp_output.c projects/quota64/sys/netinet/tcp_reass.c projects/quota64/sys/netinet/tcp_sack.c projects/quota64/sys/netinet/tcp_subr.c projects/quota64/sys/netinet/tcp_syncache.c projects/quota64/sys/netinet/tcp_timer.c projects/quota64/sys/netinet/tcp_timewait.c projects/quota64/sys/netinet/tcp_usrreq.c projects/quota64/sys/netinet/tcp_var.h projects/quota64/sys/netinet/udp_usrreq.c projects/quota64/sys/netinet/vinet.h projects/quota64/sys/netinet6/dest6.c projects/quota64/sys/netinet6/frag6.c projects/quota64/sys/netinet6/icmp6.c projects/quota64/sys/netinet6/in6.c projects/quota64/sys/netinet6/in6_gif.c projects/quota64/sys/netinet6/in6_ifattach.c projects/quota64/sys/netinet6/in6_pcb.c projects/quota64/sys/netinet6/in6_pcb.h projects/quota64/sys/netinet6/in6_proto.c projects/quota64/sys/netinet6/in6_rmx.c projects/quota64/sys/netinet6/in6_src.c projects/quota64/sys/netinet6/ip6_forward.c projects/quota64/sys/netinet6/ip6_input.c projects/quota64/sys/netinet6/ip6_ipsec.c projects/quota64/sys/netinet6/ip6_mroute.c projects/quota64/sys/netinet6/ip6_output.c projects/quota64/sys/netinet6/ip6_var.h projects/quota64/sys/netinet6/mld6.c projects/quota64/sys/netinet6/nd6.c projects/quota64/sys/netinet6/nd6_nbr.c projects/quota64/sys/netinet6/nd6_rtr.c projects/quota64/sys/netinet6/raw_ip6.c projects/quota64/sys/netinet6/route6.c projects/quota64/sys/netinet6/scope6.c projects/quota64/sys/netinet6/udp6_usrreq.c projects/quota64/sys/netinet6/vinet6.h projects/quota64/sys/netipsec/ipsec.c projects/quota64/sys/netipsec/ipsec.h projects/quota64/sys/netipsec/ipsec6.h projects/quota64/sys/netipsec/ipsec_input.c projects/quota64/sys/netipsec/ipsec_output.c projects/quota64/sys/netipsec/key.c projects/quota64/sys/netipsec/keysock.c projects/quota64/sys/netipsec/keysock.h projects/quota64/sys/netipsec/vipsec.h projects/quota64/sys/netipsec/xform_ah.c projects/quota64/sys/netipsec/xform_esp.c projects/quota64/sys/netipsec/xform_ipcomp.c projects/quota64/sys/netipsec/xform_ipip.c projects/quota64/sys/netipx/ipx_pcb.c projects/quota64/sys/netipx/spx_usrreq.c projects/quota64/sys/netnatm/natm.c projects/quota64/sys/netnatm/natm_pcb.c projects/quota64/sys/netncp/ncp_conn.c projects/quota64/sys/netncp/ncp_rq.c projects/quota64/sys/netncp/ncp_sock.c projects/quota64/sys/netncp/ncp_subr.c projects/quota64/sys/netsmb/smb_conn.c projects/quota64/sys/netsmb/smb_conn.h projects/quota64/sys/netsmb/smb_dev.c projects/quota64/sys/netsmb/smb_rq.c projects/quota64/sys/netsmb/smb_trantcp.c projects/quota64/sys/nfs4client/nfs4_dev.c projects/quota64/sys/nfs4client/nfs4_idmap.c projects/quota64/sys/nfs4client/nfs4_socket.c projects/quota64/sys/nfs4client/nfs4_vfsops.c projects/quota64/sys/nfs4client/nfs4_vn_subs.c projects/quota64/sys/nfs4client/nfs4_vnops.c projects/quota64/sys/nfsclient/bootp_subr.c projects/quota64/sys/nfsclient/krpc_subr.c projects/quota64/sys/nfsclient/nfs.h projects/quota64/sys/nfsclient/nfs_diskless.c projects/quota64/sys/nfsclient/nfs_lock.c projects/quota64/sys/nfsclient/nfs_nfsiod.c projects/quota64/sys/nfsclient/nfs_node.c projects/quota64/sys/nfsclient/nfs_socket.c projects/quota64/sys/nfsclient/nfs_subs.c projects/quota64/sys/nfsclient/nfs_vfsops.c projects/quota64/sys/nfsclient/nfs_vnops.c projects/quota64/sys/nfsclient/nfsmount.h projects/quota64/sys/nfsserver/nfs.h projects/quota64/sys/nfsserver/nfs_serv.c projects/quota64/sys/nfsserver/nfs_srvcache.c projects/quota64/sys/nfsserver/nfs_srvsock.c projects/quota64/sys/nfsserver/nfs_srvsubs.c projects/quota64/sys/nfsserver/nfs_syscalls.c projects/quota64/sys/nfsserver/nfsm_subs.h projects/quota64/sys/nfsserver/nfsrvcache.h projects/quota64/sys/nlm/nlm.h projects/quota64/sys/nlm/nlm_advlock.c projects/quota64/sys/nlm/nlm_prot_impl.c projects/quota64/sys/nlm/nlm_prot_svc.c projects/quota64/sys/opencrypto/cryptodev.c projects/quota64/sys/opencrypto/cryptosoft.c projects/quota64/sys/opencrypto/deflate.c projects/quota64/sys/opencrypto/xform.c projects/quota64/sys/pc98/conf/GENERIC projects/quota64/sys/pc98/conf/NOTES projects/quota64/sys/pc98/pc98/pc98_machdep.c projects/quota64/sys/pc98/pc98/pc98_machdep.h projects/quota64/sys/pci/if_rl.c projects/quota64/sys/pci/if_rlreg.h projects/quota64/sys/powerpc/aim/locore.S projects/quota64/sys/powerpc/booke/locore.S projects/quota64/sys/powerpc/booke/pmap.c projects/quota64/sys/powerpc/booke/trap.c projects/quota64/sys/powerpc/conf/GENERIC projects/quota64/sys/powerpc/conf/MPC85XX projects/quota64/sys/powerpc/include/atomic.h projects/quota64/sys/powerpc/include/cpu.h projects/quota64/sys/powerpc/include/cpufunc.h projects/quota64/sys/powerpc/include/endian.h projects/quota64/sys/powerpc/include/float.h projects/quota64/sys/powerpc/include/profile.h projects/quota64/sys/powerpc/mpc85xx/ocpbus.c projects/quota64/sys/powerpc/powermac/ata_dbdma.c projects/quota64/sys/powerpc/powermac/ata_kauai.c projects/quota64/sys/powerpc/powermac/dbdma.c projects/quota64/sys/powerpc/powermac/dbdmavar.h projects/quota64/sys/powerpc/powermac/macio.c projects/quota64/sys/powerpc/powerpc/elf_machdep.c projects/quota64/sys/rpc/auth.h projects/quota64/sys/rpc/auth_none.c projects/quota64/sys/rpc/auth_unix.c projects/quota64/sys/rpc/clnt.h projects/quota64/sys/rpc/clnt_dg.c projects/quota64/sys/rpc/clnt_rc.c projects/quota64/sys/rpc/clnt_vc.c projects/quota64/sys/rpc/rpc_com.h projects/quota64/sys/rpc/rpc_generic.c projects/quota64/sys/rpc/rpc_msg.h projects/quota64/sys/rpc/rpc_prot.c projects/quota64/sys/rpc/rpcclnt.c projects/quota64/sys/rpc/svc.c projects/quota64/sys/rpc/svc.h projects/quota64/sys/rpc/svc_auth.c projects/quota64/sys/rpc/svc_auth.h projects/quota64/sys/rpc/svc_auth_unix.c projects/quota64/sys/rpc/svc_dg.c projects/quota64/sys/rpc/svc_generic.c projects/quota64/sys/rpc/svc_vc.c projects/quota64/sys/rpc/xdr.h projects/quota64/sys/security/audit/audit.c projects/quota64/sys/security/audit/audit_arg.c projects/quota64/sys/security/audit/audit_bsm.c projects/quota64/sys/security/audit/audit_bsm_klib.c projects/quota64/sys/security/audit/audit_bsm_token.c projects/quota64/sys/security/audit/audit_pipe.c projects/quota64/sys/security/audit/audit_private.h projects/quota64/sys/security/audit/audit_syscalls.c projects/quota64/sys/security/audit/audit_worker.c projects/quota64/sys/security/mac/mac_framework.h projects/quota64/sys/security/mac/mac_inet6.c projects/quota64/sys/security/mac/mac_policy.h projects/quota64/sys/security/mac/mac_process.c projects/quota64/sys/security/mac/mac_syscalls.c projects/quota64/sys/security/mac/mac_vfs.c projects/quota64/sys/security/mac_biba/mac_biba.c projects/quota64/sys/security/mac_bsdextended/mac_bsdextended.c projects/quota64/sys/security/mac_lomac/mac_lomac.c projects/quota64/sys/security/mac_mls/mac_mls.c projects/quota64/sys/security/mac_partition/mac_partition.c projects/quota64/sys/security/mac_stub/mac_stub.c projects/quota64/sys/security/mac_test/mac_test.c projects/quota64/sys/sparc64/conf/GENERIC projects/quota64/sys/sparc64/include/atomic.h projects/quota64/sys/sparc64/include/intr_machdep.h projects/quota64/sys/sparc64/include/iommureg.h projects/quota64/sys/sparc64/include/iommuvar.h projects/quota64/sys/sparc64/pci/schizo.c projects/quota64/sys/sparc64/pci/schizoreg.h projects/quota64/sys/sparc64/pci/schizovar.h projects/quota64/sys/sparc64/sparc64/db_trace.c projects/quota64/sys/sparc64/sparc64/elf_machdep.c projects/quota64/sys/sparc64/sparc64/intr_machdep.c projects/quota64/sys/sparc64/sparc64/iommu.c projects/quota64/sys/sparc64/sparc64/machdep.c projects/quota64/sys/sparc64/sparc64/nexus.c projects/quota64/sys/sparc64/sparc64/stack_machdep.c projects/quota64/sys/sparc64/sparc64/support.S projects/quota64/sys/sun4v/conf/GENERIC projects/quota64/sys/sun4v/include/atomic.h projects/quota64/sys/sun4v/sun4v/db_trace.c projects/quota64/sys/sun4v/sun4v/stack_machdep.c projects/quota64/sys/sys/_types.h projects/quota64/sys/sys/cdefs.h projects/quota64/sys/sys/conf.h projects/quota64/sys/sys/cons.h projects/quota64/sys/sys/cpuset.h projects/quota64/sys/sys/disklabel.h projects/quota64/sys/sys/extattr.h projects/quota64/sys/sys/jail.h projects/quota64/sys/sys/mbuf.h projects/quota64/sys/sys/mount.h projects/quota64/sys/sys/namei.h projects/quota64/sys/sys/param.h projects/quota64/sys/sys/pmc.h projects/quota64/sys/sys/pmclog.h projects/quota64/sys/sys/priv.h projects/quota64/sys/sys/proc.h projects/quota64/sys/sys/syscall.h projects/quota64/sys/sys/syscall.mk projects/quota64/sys/sys/syscallsubr.h projects/quota64/sys/sys/sysctl.h projects/quota64/sys/sys/sysent.h projects/quota64/sys/sys/sysproto.h projects/quota64/sys/sys/termios.h projects/quota64/sys/sys/tty.h projects/quota64/sys/sys/ttydefaults.h projects/quota64/sys/sys/types.h projects/quota64/sys/sys/user.h projects/quota64/sys/sys/vimage.h projects/quota64/sys/sys/vnode.h projects/quota64/sys/tools/vnode_if.awk projects/quota64/sys/ufs/ffs/ffs_inode.c projects/quota64/sys/ufs/ffs/ffs_snapshot.c projects/quota64/sys/ufs/ffs/ffs_softdep.c projects/quota64/sys/ufs/ffs/ffs_vfsops.c projects/quota64/sys/ufs/ufs/ufs_acl.c projects/quota64/sys/ufs/ufs/ufs_dirhash.c projects/quota64/sys/ufs/ufs/ufs_extattr.c projects/quota64/sys/ufs/ufs/ufs_lookup.c projects/quota64/sys/ufs/ufs/ufs_vfsops.c projects/quota64/sys/ufs/ufs/ufs_vnops.c projects/quota64/sys/vm/uma.h projects/quota64/sys/vm/vm_mmap.c projects/quota64/sys/vm/vm_page.c projects/quota64/sys/vm/vm_pageout.c projects/quota64/sys/xdr/xdr_mbuf.c projects/quota64/sys/xen/evtchn/evtchn.c projects/quota64/sys/xen/gnttab.c projects/quota64/sys/xen/gnttab.h projects/quota64/sys/xen/xenbus/xenbus_client.c projects/quota64/sys/xen/xenbus/xenbus_comms.c projects/quota64/sys/xen/xenbus/xenbus_comms.h projects/quota64/sys/xen/xenbus/xenbus_dev.c projects/quota64/sys/xen/xenbus/xenbus_probe.c projects/quota64/sys/xen/xenbus/xenbus_probe_backend.c projects/quota64/sys/xen/xenbus/xenbus_xs.c projects/quota64/tools/regression/fstest/Makefile projects/quota64/tools/regression/fstest/fstest.c projects/quota64/tools/regression/fstest/tests/chflags/00.t projects/quota64/tools/regression/fstest/tests/chflags/01.t projects/quota64/tools/regression/fstest/tests/chflags/02.t projects/quota64/tools/regression/fstest/tests/chflags/03.t projects/quota64/tools/regression/fstest/tests/chflags/04.t projects/quota64/tools/regression/fstest/tests/chflags/05.t projects/quota64/tools/regression/fstest/tests/chflags/06.t projects/quota64/tools/regression/fstest/tests/chflags/07.t projects/quota64/tools/regression/fstest/tests/chflags/08.t projects/quota64/tools/regression/fstest/tests/chflags/09.t projects/quota64/tools/regression/fstest/tests/chflags/11.t projects/quota64/tools/regression/fstest/tests/chflags/12.t projects/quota64/tools/regression/fstest/tests/chflags/13.t projects/quota64/tools/regression/fstest/tests/chown/00.t projects/quota64/tools/regression/fstest/tests/chown/05.t projects/quota64/tools/regression/fstest/tests/chown/07.t projects/quota64/tools/regression/fstest/tests/conf projects/quota64/tools/regression/fstest/tests/link/00.t projects/quota64/tools/regression/fstest/tests/misc.sh projects/quota64/tools/regression/fstest/tests/open/16.t projects/quota64/tools/regression/fstest/tests/open/23.t projects/quota64/tools/regression/fstest/tests/rename/19.t projects/quota64/tools/regression/fstest/tests/rmdir/12.t projects/quota64/tools/regression/fstest/tests/truncate/13.t projects/quota64/tools/regression/fstest/tests/unlink/08.t projects/quota64/tools/regression/usr.bin/sed/regress.sh projects/quota64/tools/tools/ath/athdebug/athdebug.c projects/quota64/tools/tools/ath/athstats/Makefile projects/quota64/tools/tools/ath/athstats/athstats.c projects/quota64/tools/tools/ath/athstats/main.c projects/quota64/usr.bin/calendar/calendars/calendar.freebsd projects/quota64/usr.bin/cpio/cpio.c projects/quota64/usr.bin/cpio/cpio.h projects/quota64/usr.bin/cpio/test/test_option_tv.stdout.uu projects/quota64/usr.bin/cpuset/cpuset.1 projects/quota64/usr.bin/cpuset/cpuset.c projects/quota64/usr.bin/du/du.1 projects/quota64/usr.bin/du/du.c projects/quota64/usr.bin/fstat/zfs/Makefile projects/quota64/usr.bin/killall/killall.c projects/quota64/usr.bin/lsvfs/lsvfs.c projects/quota64/usr.bin/netstat/inet.c projects/quota64/usr.bin/procstat/ (props changed) projects/quota64/usr.bin/procstat/Makefile projects/quota64/usr.bin/procstat/procstat_files.c projects/quota64/usr.bin/procstat/procstat_vm.c projects/quota64/usr.bin/sed/compile.c projects/quota64/usr.bin/tar/Makefile projects/quota64/usr.bin/tar/bsdtar.1 projects/quota64/usr.bin/tar/bsdtar.c projects/quota64/usr.bin/tar/bsdtar.h projects/quota64/usr.bin/tar/config_freebsd.h projects/quota64/usr.bin/tar/test/Makefile projects/quota64/usr.bin/tar/test/main.c projects/quota64/usr.bin/tar/tree.c projects/quota64/usr.bin/tar/tree.h projects/quota64/usr.bin/tar/util.c projects/quota64/usr.bin/tar/write.c projects/quota64/usr.bin/vmstat/vmstat.c projects/quota64/usr.bin/window/wwend.c projects/quota64/usr.sbin/Makefile projects/quota64/usr.sbin/audit/Makefile projects/quota64/usr.sbin/auditd/Makefile projects/quota64/usr.sbin/bluetooth/sdpd/sd.c projects/quota64/usr.sbin/boot0cfg/boot0cfg.8 projects/quota64/usr.sbin/boot0cfg/boot0cfg.c projects/quota64/usr.sbin/ckdist/ckdist.c projects/quota64/usr.sbin/config/config.5 projects/quota64/usr.sbin/config/config.h projects/quota64/usr.sbin/config/config.y projects/quota64/usr.sbin/config/configvers.h projects/quota64/usr.sbin/config/lang.l projects/quota64/usr.sbin/config/mkmakefile.c projects/quota64/usr.sbin/cron/cron/cron.h projects/quota64/usr.sbin/cron/crontab/Makefile projects/quota64/usr.sbin/cron/crontab/crontab.5 projects/quota64/usr.sbin/cron/crontab/crontab.c projects/quota64/usr.sbin/cron/lib/Makefile projects/quota64/usr.sbin/cron/lib/entry.c projects/quota64/usr.sbin/cron/lib/misc.c projects/quota64/usr.sbin/gssd/gssd.8 projects/quota64/usr.sbin/jail/Makefile projects/quota64/usr.sbin/jail/jail.8 projects/quota64/usr.sbin/jail/jail.c projects/quota64/usr.sbin/jexec/Makefile projects/quota64/usr.sbin/jexec/jexec.8 projects/quota64/usr.sbin/jexec/jexec.c projects/quota64/usr.sbin/jls/Makefile projects/quota64/usr.sbin/jls/jls.8 projects/quota64/usr.sbin/jls/jls.c projects/quota64/usr.sbin/kldxref/kldxref.c projects/quota64/usr.sbin/mergemaster/mergemaster.sh projects/quota64/usr.sbin/mountd/exports.5 projects/quota64/usr.sbin/mountd/mountd.c projects/quota64/usr.sbin/nfsd/nfsd.c projects/quota64/usr.sbin/nscd/agents/group.c projects/quota64/usr.sbin/nscd/agents/passwd.c projects/quota64/usr.sbin/nscd/agents/services.c projects/quota64/usr.sbin/nscd/cachelib.c projects/quota64/usr.sbin/nscd/nscd.c projects/quota64/usr.sbin/nscd/nscdcli.c projects/quota64/usr.sbin/ntp/doc/ntp-keygen.8 projects/quota64/usr.sbin/pciconf/pciconf.c projects/quota64/usr.sbin/pmccontrol/pmccontrol.8 projects/quota64/usr.sbin/pmccontrol/pmccontrol.c projects/quota64/usr.sbin/pmcstat/pmcstat.8 projects/quota64/usr.sbin/pmcstat/pmcstat.c projects/quota64/usr.sbin/pmcstat/pmcstat.h projects/quota64/usr.sbin/pmcstat/pmcstat_log.c projects/quota64/usr.sbin/powerd/powerd.8 projects/quota64/usr.sbin/powerd/powerd.c projects/quota64/usr.sbin/pstat/pstat.c projects/quota64/usr.sbin/rpc.yppasswdd/yppasswdd_main.c projects/quota64/usr.sbin/sysinstall/devices.c projects/quota64/usr.sbin/sysinstall/dist.c projects/quota64/usr.sbin/sysinstall/package.c projects/quota64/usr.sbin/usbconfig/dump.c projects/quota64/usr.sbin/usbconfig/usbconfig.c projects/quota64/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.conf.5 projects/quota64/usr.sbin/zic/ (props changed) projects/quota64/usr.sbin/zic/zic.8 Modified: projects/quota64/COPYRIGHT ============================================================================== --- projects/quota64/COPYRIGHT Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/COPYRIGHT Thu Dec 4 18:48:08 2008 (r185617) @@ -15,10 +15,10 @@ are met: notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) Modified: projects/quota64/Makefile ============================================================================== --- projects/quota64/Makefile Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/Makefile Thu Dec 4 18:48:08 2008 (r185617) @@ -267,6 +267,10 @@ make: .PHONY ${MMAKE} all && \ ${MMAKE} install DESTDIR=${MAKEPATH} BINDIR= +tinderbox: + cd ${.CURDIR} && \ + DOING_TINDERBOX=YES ${MAKE} ${JFLAG} universe + # # universe # @@ -274,14 +278,24 @@ make: .PHONY # with a reasonable chance of success, regardless of how old your # existing system is. # -.if make(universe) +.if make(universe) || make(tinderbox) TARGETS?=amd64 arm i386 ia64 pc98 powerpc sparc64 sun4v +.if defined(DOING_TINDERBOX) +FAILFILE=tinderbox.failed +MAKEFAIL=tee -a ${FAILFILE} +.else +MAKEFAIL=cat +.endif + universe: universe_prologue universe_prologue: @echo "--------------------------------------------------------------" @echo ">>> make universe started on ${STARTTIME}" @echo "--------------------------------------------------------------" +.if defined(DOING_TINDERBOX) + rm -f ${FAILFILE} +.endif .for target in ${TARGETS} KERNCONFS!= cd ${.CURDIR}/sys/${target}/conf && \ find [A-Z]*[A-Z] -type f -maxdepth 0 \ @@ -292,22 +306,28 @@ universe: universe_${target} universe_${target}: .if !defined(MAKE_JUST_KERNELS) @echo ">> ${target} started on `LC_ALL=C date`" - -cd ${.CURDIR} && ${MAKE} ${JFLAG} buildworld \ + @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ + ${MAKE} ${JFLAG} buildworld \ TARGET=${target} \ - __MAKE_CONF=/dev/null \ - > _.${target}.buildworld 2>&1 + > _.${target}.buildworld 2>&1 || \ + (echo "${target} world failed," \ + "check _.${target}.buildworld for details" | ${MAKEFAIL})) @echo ">> ${target} buildworld completed on `LC_ALL=C date`" .endif .if exists(${.CURDIR}/sys/${target}/conf/NOTES) - -cd ${.CURDIR}/sys/${target}/conf && ${MAKE} LINT \ - > ${.CURDIR}/_.${target}.makeLINT 2>&1 + @(cd ${.CURDIR}/sys/${target}/conf && env __MAKE_CONF=/dev/null \ + ${MAKE} LINT > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \ + (echo "${target} 'make LINT' failed," \ + "check _.${target}.makeLINT for details"| ${MAKEFAIL})) .endif .for kernel in ${KERNCONFS} - -cd ${.CURDIR} && ${MAKE} ${JFLAG} buildkernel \ + @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ + ${MAKE} ${JFLAG} buildkernel \ TARGET=${target} \ KERNCONF=${kernel} \ - __MAKE_CONF=/dev/null \ - > _.${target}.${kernel} 2>&1 + > _.${target}.${kernel} 2>&1 || \ + (echo "${target} ${kernel} kernel failed," \ + "check _.${target}.${kernel} for details"| ${MAKEFAIL})) .endfor @echo ">> ${target} completed on `LC_ALL=C date`" .endfor @@ -317,4 +337,11 @@ universe_epilogue: @echo ">>> make universe completed on `LC_ALL=C date`" @echo " (started ${STARTTIME})" @echo "--------------------------------------------------------------" +.if defined(DOING_TINDERBOX) + @if [ -e ${FAILFILE} ] ; then \ + echo "Tinderbox failed:" ;\ + cat ${FAILFILE} ;\ + exit 1 ;\ + fi +.endif .endif Modified: projects/quota64/Makefile.inc1 ============================================================================== --- projects/quota64/Makefile.inc1 Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/Makefile.inc1 Thu Dec 4 18:48:08 2008 (r185617) @@ -506,6 +506,9 @@ distribute32 install32: .if ${MK_CRYPT} != "no" cd ${.CURDIR}/secure/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} .endif +.if ${MK_KERBEROS} != "no" + cd ${.CURDIR}/kerberos5/lib; ${LIB32IMAKE} ${.TARGET:S/32$//} +.endif cd ${.CURDIR}/libexec/rtld-elf; \ PROG=ld-elf32.so.1 ${LIB32IMAKE} ${.TARGET:S/32$//} cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32IMAKE} ${.TARGET:S/32$//} Modified: projects/quota64/ObsoleteFiles.inc ============================================================================== --- projects/quota64/ObsoleteFiles.inc Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/ObsoleteFiles.inc Thu Dec 4 18:48:08 2008 (r185617) @@ -14,6 +14,11 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20081123: vfs_mountedon.9 removed +OLD_FILES+=usr/share/man/man9/vfs_mountedon.9.gz +# 20081023: FREE.9 and MALLOC.9 removed +OLD_FILES+=usr/share/man/man9/FREE.9.gz +OLD_FILES+=usr/share/man/man9/MALLOC.9.gz # 20080928: removal of inaccurate device_ids(9) manual page OLD_FILES+=usr/share/man/man9/device_ids.9.gz OLD_FILES+=usr/share/man/man9/major.9.gz Modified: projects/quota64/UPDATING ============================================================================== --- projects/quota64/UPDATING Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/UPDATING Thu Dec 4 18:48:08 2008 (r185617) @@ -22,6 +22,38 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20081130: + __FreeBSD_version 800057 marks the switchover from the + binary ath hal to source code. Users must add the line: + + options AH_SUPPORT_AR5416 + + to their kernel config files when specifying: + + device ath_hal + + The ath_hal module no longer exists; the code is now compiled + together with the driver in the ath module. It is now + possible to tailor chip support (i.e. reduce the set of chips + and thereby the code size); consult ath_hal(4) for details. + +20081121: + __FreeBSD_version 800054 adds memory barriers to + , new interfaces to ifnet to facilitate + multiple hardware transmit queues for cards that support + them, and a lock-less ring-buffer implementation to + enable drivers to more efficiently manage queueing of + packets. + +20081117: + A new version of ZFS (version 13) has been merged to -HEAD. + This version has zpool attribute "listsnapshots" off by + default, which means "zfs list" does not show snapshots, + and is the same as Solaris behavior. + +20081028: + dummynet(4) ABI has changed. ipfw(8) needs to be recompiled. + 20081009: The uhci, ohci, ehci and slhci USB Host controller drivers have been put into separate modules. If you load the usb module Modified: projects/quota64/bin/cat/cat.c ============================================================================== --- projects/quota64/bin/cat/cat.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/bin/cat/cat.c Thu Dec 4 18:48:08 2008 (r185617) @@ -77,6 +77,17 @@ static void raw_cat(int); static int udom_open(const char *path, int flags); #endif +/* Memory strategy threshold, in pages: if physmem is larger then this, use a + * large buffer */ +#define PHYSPAGES_THRESHOLD (32*1024) + +/* Maximum buffer size in bytes - do not allow it to grow larger than this */ +#define BUFSIZE_MAX (2*1024*1024) + +/* Small (default) buffer size in bytes. It's inefficient for this to be + * smaller than MAXPHYS */ +#define BUFSIZE_SMALL (MAXPHYS) + int main(int argc, char *argv[]) { @@ -247,9 +258,17 @@ raw_cat(int rfd) if (buf == NULL) { if (fstat(wfd, &sbuf)) err(1, "%s", filename); - bsize = MAX(sbuf.st_blksize, 1024); + if (S_ISREG(sbuf.st_mode)) { + /* If there's plenty of RAM, use a large copy buffer */ + if (sysconf(_SC_PHYS_PAGES) > PHYSPAGES_THRESHOLD) + bsize = MIN(BUFSIZE_MAX, MAXPHYS*8); + else + bsize = BUFSIZE_SMALL; + } else + bsize = MAX(sbuf.st_blksize, + (blksize_t)sysconf(_SC_PAGESIZE)); if ((buf = malloc(bsize)) == NULL) - err(1, "buffer"); + err(1, "malloc() failure of IO buffer"); } while ((nr = read(rfd, buf, bsize)) > 0) for (off = 0; nr; nr -= nw, off += nw) Modified: projects/quota64/bin/chio/chio.c ============================================================================== --- projects/quota64/bin/chio/chio.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/bin/chio/chio.c Thu Dec 4 18:48:08 2008 (r185617) @@ -69,7 +69,7 @@ static const char *bits_to_string(ces_st static void find_element(char *, uint16_t *, uint16_t *); static struct changer_element_status *get_element_status - (unsigned int, unsigned int); + (unsigned int, unsigned int, int); static int do_move(const char *, int, char **); static int do_exchange(const char *, int, char **); @@ -969,7 +969,8 @@ do_return(const char *cname, int argc, c ++argv; --argc; /* Get the status */ - ces = get_element_status((unsigned int)type, (unsigned int)element); + ces = get_element_status((unsigned int)type, (unsigned int)element, + CHET_VT == type); if (NULL == ces) errx(1, "%s: null element status pointer", cname); @@ -1004,7 +1005,7 @@ usage: * should free() it when done. */ static struct changer_element_status * -get_element_status(unsigned int type, unsigned int element) +get_element_status(unsigned int type, unsigned int element, int use_voltags) { struct changer_element_status_request cesr; struct changer_element_status *ces; @@ -1020,7 +1021,8 @@ get_element_status(unsigned int type, un cesr.cesr_element_type = (uint16_t)type; cesr.cesr_element_base = (uint16_t)element; cesr.cesr_element_count = 1; /* Only this one element */ - cesr.cesr_flags |= CESR_VOLTAGS; /* Grab voltags as well */ + if (use_voltags) + cesr.cesr_flags |= CESR_VOLTAGS; /* Grab voltags as well */ cesr.cesr_element_status = ces; if (ioctl(changer_fd, CHIOGSTATUS, (char *)&cesr) == -1) { Modified: projects/quota64/bin/cp/utils.c ============================================================================== --- projects/quota64/bin/cp/utils.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/bin/cp/utils.c Thu Dec 4 18:48:08 2008 (r185617) @@ -57,10 +57,22 @@ __FBSDID("$FreeBSD$"); #define cp_pct(x, y) ((y == 0) ? 0 : (int)(100.0 * (x) / (y))) +/* Memory strategy threshold, in pages: if physmem is larger then this, use a + * large buffer */ +#define PHYSPAGES_THRESHOLD (32*1024) + +/* Maximum buffer size in bytes - do not allow it to grow larger than this */ +#define BUFSIZE_MAX (2*1024*1024) + +/* Small (default) buffer size in bytes. It's inefficient for this to be + * smaller than MAXPHYS */ +#define BUFSIZE_SMALL (MAXPHYS) + int copy_file(const FTSENT *entp, int dne) { - static char buf[MAXBSIZE]; + static char *buf = NULL; + static size_t bufsize; struct stat *fs; ssize_t wcount; size_t wresid; @@ -137,47 +149,60 @@ copy_file(const FTSENT *entp, int dne) * Mmap and write if less than 8M (the limit is so we don't totally * trash memory on big files. This is really a minor hack, but it * wins some CPU back. + * Some filesystems, such as smbnetfs, don't support mmap, + * so this is a best-effort attempt. */ #ifdef VM_AND_BUFFER_CACHE_SYNCHRONIZED if (S_ISREG(fs->st_mode) && fs->st_size > 0 && - fs->st_size <= 8 * 1048576) { - if ((p = mmap(NULL, (size_t)fs->st_size, PROT_READ, - MAP_SHARED, from_fd, (off_t)0)) == MAP_FAILED) { + fs->st_size <= 8 * 1024 * 1024 && + (p = mmap(NULL, (size_t)fs->st_size, PROT_READ, + MAP_SHARED, from_fd, (off_t)0)) != MAP_FAILED) { + wtotal = 0; + for (bufp = p, wresid = fs->st_size; ; + bufp += wcount, wresid -= (size_t)wcount) { + wcount = write(to_fd, bufp, wresid); + if (wcount <= 0) + break; + wtotal += wcount; + if (info) { + info = 0; + (void)fprintf(stderr, + "%s -> %s %3d%%\n", + entp->fts_path, to.p_path, + cp_pct(wtotal, fs->st_size)); + } + if (wcount >= (ssize_t)wresid) + break; + } + if (wcount != (ssize_t)wresid) { + warn("%s", to.p_path); + rval = 1; + } + /* Some systems don't unmap on close(2). */ + if (munmap(p, fs->st_size) < 0) { warn("%s", entp->fts_path); rval = 1; - } else { - wtotal = 0; - for (bufp = p, wresid = fs->st_size; ; - bufp += wcount, wresid -= (size_t)wcount) { - wcount = write(to_fd, bufp, wresid); - if (wcount <= 0) - break; - wtotal += wcount; - if (info) { - info = 0; - (void)fprintf(stderr, - "%s -> %s %3d%%\n", - entp->fts_path, to.p_path, - cp_pct(wtotal, fs->st_size)); - } - if (wcount >= (ssize_t)wresid) - break; - } - if (wcount != (ssize_t)wresid) { - warn("%s", to.p_path); - rval = 1; - } - /* Some systems don't unmap on close(2). */ - if (munmap(p, fs->st_size) < 0) { - warn("%s", entp->fts_path); - rval = 1; - } } } else #endif { + if (buf == NULL) { + /* + * Note that buf and bufsize are static. If + * malloc() fails, it will fail at the start + * and not copy only some files. + */ + if (sysconf(_SC_PHYS_PAGES) > + PHYSPAGES_THRESHOLD) + bufsize = MIN(BUFSIZE_MAX, MAXPHYS * 8); + else + bufsize = BUFSIZE_SMALL; + buf = malloc(bufsize); + if (buf == NULL) + err(1, "Not enough memory"); + } wtotal = 0; - while ((rcount = read(from_fd, buf, MAXBSIZE)) > 0) { + while ((rcount = read(from_fd, buf, bufsize)) > 0) { for (bufp = buf, wresid = rcount; ; bufp += wcount, wresid -= wcount) { wcount = write(to_fd, bufp, wresid); Modified: projects/quota64/bin/df/df.1 ============================================================================== --- projects/quota64/bin/df/df.1 Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/bin/df/df.1 Thu Dec 4 18:48:08 2008 (r185617) @@ -29,7 +29,7 @@ .\" @(#)df.1 8.3 (Berkeley) 5/8/95 .\" $FreeBSD$ .\" -.Dd April 22, 2004 +.Dd November 23, 2008 .Dt DF 1 .Os .Sh NAME @@ -38,7 +38,7 @@ .Sh SYNOPSIS .Nm .Op Fl b | g | H | h | k | m | P -.Op Fl aciln +.Op Fl acilnT .Op Fl t Ar type .Op Ar file | filesystem ... .Sh DESCRIPTION @@ -140,6 +140,8 @@ The .Xr lsvfs 1 command can be used to find out the types of file systems that are available on the system. +.It Fl T +Include file system type. .El .Sh ENVIRONMENT .Bl -tag -width BLOCKSIZE Modified: projects/quota64/bin/df/df.c ============================================================================== --- projects/quota64/bin/df/df.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/bin/df/df.c Thu Dec 4 18:48:08 2008 (r185617) @@ -68,6 +68,7 @@ __FBSDID("$FreeBSD$"); /* Maximum widths of various fields. */ struct maxwidths { int mntfrom; + int fstype; int total; int used; int avail; @@ -93,7 +94,7 @@ imax(int a, int b) return (a > b ? a : b); } -static int aflag = 0, cflag, hflag, iflag, kflag, lflag = 0, nflag; +static int aflag = 0, cflag, hflag, iflag, kflag, lflag = 0, nflag, Tflag; static struct ufs_args mdev; int @@ -115,7 +116,7 @@ main(int argc, char *argv[]) totalbuf.f_bsize = DEV_BSIZE; strlcpy(totalbuf.f_mntfromname, "total", MNAMELEN); vfslist = NULL; - while ((ch = getopt(argc, argv, "abcgHhiklmnPt:")) != -1) + while ((ch = getopt(argc, argv, "abcgHhiklmnPt:T")) != -1) switch (ch) { case 'a': aflag = 1; @@ -176,6 +177,9 @@ main(int argc, char *argv[]) fstype = optarg; vfslist = makevfslist(optarg); break; + case 'T': + Tflag = 1; + break; case '?': default: usage(); @@ -391,6 +395,7 @@ prtstat(struct statfs *sfsp, struct maxw if (++timesthrough == 1) { mwp->mntfrom = imax(mwp->mntfrom, (int)strlen("Filesystem")); + mwp->fstype = imax(mwp->fstype, (int)strlen("Type")); if (hflag) { header = " Size"; mwp->total = mwp->used = mwp->avail = @@ -402,8 +407,10 @@ prtstat(struct statfs *sfsp, struct maxw mwp->used = imax(mwp->used, (int)strlen("Used")); mwp->avail = imax(mwp->avail, (int)strlen("Avail")); - (void)printf("%-*s %-*s %*s %*s Capacity", - mwp->mntfrom, "Filesystem", mwp->total, header, + (void)printf("%-*s", mwp->mntfrom, "Filesystem"); + if (Tflag) + (void)printf(" %-*s", mwp->fstype, "Type"); + (void)printf(" %-*s %*s %*s Capacity", mwp->total, header, mwp->used, "Used", mwp->avail, "Avail"); if (iflag) { mwp->iused = imax(mwp->iused, (int)strlen(" iused")); @@ -414,6 +421,8 @@ prtstat(struct statfs *sfsp, struct maxw (void)printf(" Mounted on\n"); } (void)printf("%-*s", mwp->mntfrom, sfsp->f_mntfromname); + if (Tflag) + (void)printf(" %-*s", mwp->fstype, sfsp->f_fstypename); used = sfsp->f_blocks - sfsp->f_bfree; availblks = sfsp->f_bavail + used; if (hflag) { @@ -468,6 +477,7 @@ update_maxwidths(struct maxwidths *mwp, getbsize(&dummy, &blocksize); mwp->mntfrom = imax(mwp->mntfrom, (int)strlen(sfsp->f_mntfromname)); + mwp->fstype = imax(mwp->fstype, (int)strlen(sfsp->f_fstypename)); mwp->total = imax(mwp->total, int64width( fsbtoblk((int64_t)sfsp->f_blocks, sfsp->f_bsize, blocksize))); mwp->used = imax(mwp->used, @@ -505,7 +515,7 @@ usage(void) { (void)fprintf(stderr, -"usage: df [-b | -g | -H | -h | -k | -m | -P] [-aciln] [-t type] [file | filesystem ...]\n"); +"usage: df [-b | -g | -H | -h | -k | -m | -P] [-acilnT] [-t type] [file | filesystem ...]\n"); exit(EX_USAGE); } Modified: projects/quota64/bin/ps/print.c ============================================================================== --- projects/quota64/bin/ps/print.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/bin/ps/print.c Thu Dec 4 18:48:08 2008 (r185617) @@ -196,9 +196,8 @@ tdnam(KINFO *k, VARENT *ve) v = ve->var; if (showthreads && k->ki_p->ki_numthreads > 1) (void)printf("%-*s", v->width, k->ki_p->ki_ocomm); - else - (void)printf("%-*s", v->width, " " ); - + else + (void)printf("%-*s", v->width, " "); } void Modified: projects/quota64/bin/rcp/rcp.c ============================================================================== --- projects/quota64/bin/rcp/rcp.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/bin/rcp/rcp.c Thu Dec 4 18:48:08 2008 (r185617) @@ -789,6 +789,4 @@ run_err(const char *fmt, ...) vwarnx(fmt, ap); va_end(ap); } - - va_end(ap); } Modified: projects/quota64/bin/sh/eval.c ============================================================================== --- projects/quota64/bin/sh/eval.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/bin/sh/eval.c Thu Dec 4 18:48:08 2008 (r185617) @@ -791,6 +791,7 @@ evalcommand(union node *cmd, int flags, for (sp = varlist.list ; sp ; sp = sp->next) mklocal(sp->text); funcnest++; + exitstatus = oexitstatus; if (flags & EV_TESTED) evaltree(cmdentry.u.func, EV_TESTED); else Modified: projects/quota64/bin/sh/exec.c ============================================================================== --- projects/quota64/bin/sh/exec.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/bin/sh/exec.c Thu Dec 4 18:48:08 2008 (r185617) @@ -728,9 +728,6 @@ typecmd_impl(int argc, char **argv, int extern char *const parsekwd[]; for (i = 1; i < argc; i++) { - if (cmd != TYPECMD_SMALLV) - out1str(argv[i]); - /* First look at the keywords */ for (pp = (char **)parsekwd; *pp; pp++) if (**pp == *argv[i] && equal(*pp, argv[i])) @@ -740,7 +737,7 @@ typecmd_impl(int argc, char **argv, int if (cmd == TYPECMD_SMALLV) out1fmt("%s\n", argv[i]); else - out1str(" is a shell keyword\n"); + out1fmt("%s is a shell keyword\n", argv[i]); continue; } @@ -749,7 +746,8 @@ typecmd_impl(int argc, char **argv, int if (cmd == TYPECMD_SMALLV) out1fmt("alias %s='%s'\n", argv[i], ap->val); else - out1fmt(" is an alias for %s\n", ap->val); + out1fmt("%s is an alias for %s\n", argv[i], + ap->val); continue; } @@ -775,7 +773,7 @@ typecmd_impl(int argc, char **argv, int if (cmd == TYPECMD_SMALLV) out1fmt("%s\n", name); else - out1fmt(" is%s %s\n", + out1fmt("%s is%s %s\n", argv[i], (cmdp && cmd == TYPECMD_TYPE) ? " a tracked alias for" : "", name); @@ -784,11 +782,12 @@ typecmd_impl(int argc, char **argv, int if (cmd == TYPECMD_SMALLV) out1fmt("%s\n", argv[i]); else - out1fmt(" is %s\n", argv[i]); + out1fmt("%s is %s\n", argv[i], + argv[i]); } else { if (cmd != TYPECMD_SMALLV) - out1fmt(": %s\n", - strerror(errno)); + outfmt(out2, "%s: %s\n", + argv[i], strerror(errno)); error |= 127; } } @@ -798,19 +797,19 @@ typecmd_impl(int argc, char **argv, int if (cmd == TYPECMD_SMALLV) out1fmt("%s\n", argv[i]); else - out1str(" is a shell function\n"); + out1fmt("%s is a shell function\n", argv[i]); break; case CMDBUILTIN: if (cmd == TYPECMD_SMALLV) out1fmt("%s\n", argv[i]); else - out1str(" is a shell builtin\n"); + out1fmt("%s is a shell builtin\n", argv[i]); break; default: if (cmd != TYPECMD_SMALLV) - out1str(": not found\n"); + outfmt(out2, "%s: not found\n", argv[i]); error |= 127; break; } Modified: projects/quota64/cddl/Makefile.inc ============================================================================== --- projects/quota64/cddl/Makefile.inc Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/cddl/Makefile.inc Thu Dec 4 18:48:08 2008 (r185617) @@ -4,3 +4,5 @@ OPENSOLARIS_USR_DISTDIR= ${.CURDIR}/../. OPENSOLARIS_SYS_DISTDIR= ${.CURDIR}/../../../sys/cddl/contrib/opensolaris IGNORE_PRAGMA= YES + +CFLAGS+= -DNEED_SOLARIS_BOOLEAN Copied: projects/quota64/cddl/compat/opensolaris/include/libshare.h (from r185613, head/cddl/compat/opensolaris/include/libshare.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/quota64/cddl/compat/opensolaris/include/libshare.h Thu Dec 4 18:48:08 2008 (r185617, copy of r185613, head/cddl/compat/opensolaris/include/libshare.h) @@ -0,0 +1,36 @@ +/*- + * Copyright (c) 2007 Pawel Jakub Dawidek + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _OPENSOLARIS_LIBSHARE_H_ +#define _OPENSOLARIS_LIBSHARE_H_ + +#define SA_OK 0 + +#define SA_INIT_CONTROL_API 0 + +#endif /* !_OPENSOLARIS_LIBSHARE_H_ */ Modified: projects/quota64/cddl/compat/opensolaris/include/mnttab.h ============================================================================== --- projects/quota64/cddl/compat/opensolaris/include/mnttab.h Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/cddl/compat/opensolaris/include/mnttab.h Thu Dec 4 18:48:08 2008 (r185617) @@ -9,6 +9,8 @@ #define MNTTAB _PATH_DEVNULL #define MNT_LINE_MAX 1024 +#define umount2(p, f) unmount(p, f) + struct mnttab { char *mnt_special; char *mnt_mountp; Modified: projects/quota64/cddl/compat/opensolaris/misc/deviceid.c ============================================================================== --- projects/quota64/cddl/compat/opensolaris/misc/deviceid.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/cddl/compat/opensolaris/misc/deviceid.c Thu Dec 4 18:48:08 2008 (r185617) @@ -94,11 +94,7 @@ int devid_get(int fd, ddi_devid_t *retdevid) { - if (ioctl(fd, DIOCGIDENT, retdevid->devid) == -1) - return (errno); - if (retdevid->devid[0] == '\0') - return (ENOENT); - return (0); + return (ENOENT); } int Modified: projects/quota64/cddl/compat/opensolaris/misc/mnttab.c ============================================================================== --- projects/quota64/cddl/compat/opensolaris/misc/mnttab.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/cddl/compat/opensolaris/misc/mnttab.c Thu Dec 4 18:48:08 2008 (r185617) @@ -37,6 +37,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include static char * mntopt(char **p) Modified: projects/quota64/cddl/compat/opensolaris/misc/zmount.c ============================================================================== --- projects/quota64/cddl/compat/opensolaris/misc/zmount.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/cddl/compat/opensolaris/misc/zmount.c Thu Dec 4 18:48:08 2008 (r185617) @@ -35,9 +35,10 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include -#include +#include static void build_iovec(struct iovec **iov, int *iovlen, const char *name, void *val, @@ -86,7 +87,7 @@ zmount(const char *spec, const char *dir assert(optlen > 0); optstr = strdup(optptr); - assert(optptr != NULL); + assert(optstr != NULL); iov = NULL; iovlen = 0; Modified: projects/quota64/cddl/compat/opensolaris/misc/zone.c ============================================================================== --- projects/quota64/cddl/compat/opensolaris/misc/zone.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/cddl/compat/opensolaris/misc/zone.c Thu Dec 4 18:48:08 2008 (r185617) @@ -32,7 +32,7 @@ #include #include -int +zoneid_t getzoneid(void) { size_t size; @@ -42,5 +42,5 @@ getzoneid(void) size = sizeof(jailid); if (sysctlbyname("security.jail.jailed", &jailid, &size, NULL, 0) == -1) assert(!"No security.jail.jailed sysctl!"); - return (jailid); + return ((zoneid_t)jailid); } Modified: projects/quota64/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c ============================================================================== --- projects/quota64/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c Thu Dec 4 18:48:08 2008 (r185617) @@ -1576,7 +1576,7 @@ main(int argc, char *argv[]) if ((v = make_argv(optarg)) == NULL) fatal("failed to allocate memory"); - P = dtrace_proc_create(g_dtp, v[0], v); + P = dtrace_proc_create(g_dtp, v[0], v, NULL, NULL); if (P == NULL) dfatal(NULL); /* dtrace_errmsg() only */ Modified: projects/quota64/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst ============================================================================== --- projects/quota64/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst Thu Dec 4 18:48:08 2008 (r185617) @@ -23,7 +23,7 @@ # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # -#ident "%Z%%M% %I% %E% SMI" +# ident "%Z%%M% %I% %E% SMI" # Exception list: names tests that are bypassed when running in Java # mode (relative to /opt/SUNWdtrt/tst) @@ -49,6 +49,7 @@ common/usdt/tst.dlclose2.ksh common/usdt/tst.dlclose3.ksh common/usdt/tst.eliminate.ksh common/usdt/tst.enabled.ksh +common/usdt/tst.enabled2.ksh common/usdt/tst.entryreturn.ksh common/usdt/tst.fork.ksh common/usdt/tst.header.ksh Modified: projects/quota64/cddl/contrib/opensolaris/cmd/zdb/zdb.8 ============================================================================== --- projects/quota64/cddl/contrib/opensolaris/cmd/zdb/zdb.8 Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/cddl/contrib/opensolaris/cmd/zdb/zdb.8 Thu Dec 4 18:48:08 2008 (r185617) @@ -28,13 +28,17 @@ zdb \- ZFS debugger .fi .SH DESCRIPTION +.sp .LP The \fBzdb\fR command is used by support engineers to diagnose failures and gather statistics. Since the \fBZFS\fR file system is always consistent on disk and is self-repairing, \fBzdb\fR should only be run under the direction by a support engineer. +.sp .LP If no arguments are specified, \fBzdb\fR, performs basic consistency checks on the pool and associated datasets, and report any problems detected. +.sp .LP Any options supported by this command are internal to Sun and subject to change at any time. .SH EXIT STATUS +.sp .LP The following exit values are returned: .sp @@ -71,6 +75,7 @@ Invalid command line options were specif .RE .SH ATTRIBUTES +.sp .LP See \fBattributes\fR(5) for descriptions of the following attributes: .sp @@ -89,5 +94,6 @@ Interface StabilityUnstable .TE .SH SEE ALSO +.sp .LP \fBzfs\fR(1M), \fBzpool\fR(1M), \fBattributes\fR(5) Modified: projects/quota64/cddl/contrib/opensolaris/cmd/zdb/zdb.c ============================================================================== --- projects/quota64/cddl/contrib/opensolaris/cmd/zdb/zdb.c Thu Dec 4 18:44:54 2008 (r185616) +++ projects/quota64/cddl/contrib/opensolaris/cmd/zdb/zdb.c Thu Dec 4 18:48:08 2008 (r185617) @@ -19,12 +19,10 @@ * CDDL HEADER END */ /* - * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include #include #include @@ -51,6 +49,10 @@ #include #include #include +#include +#undef ZFS_MAXNAMELEN +#undef verify +#include const char cmdname[] = "zdb"; uint8_t dump_opt[256]; @@ -62,6 +64,9 @@ uint64_t *zopt_object = NULL; int zopt_objects = 0; int zdb_advance = ADVANCE_PRE; zbookmark_t zdb_noread = { 0, 0, ZB_NO_LEVEL, 0 }; +libzfs_handle_t *g_zfs; +boolean_t zdb_sig_user_data = B_TRUE; +int zdb_sig_cksumalg = ZIO_CHECKSUM_SHA256; /* * These libumem hooks provide a reasonable set of defaults for the allocator's @@ -83,12 +88,15 @@ static void usage(void) { (void) fprintf(stderr, - "Usage: %s [-udibcsvLU] [-O order] [-B os:obj:level:blkid] " + "Usage: %s [-udibcsvL] [-U cachefile_path] [-O order] " + "[-B os:obj:level:blkid] [-S user:cksumalg] " "dataset [object...]\n" " %s -C [pool]\n" " %s -l dev\n" - " %s -R vdev:offset:size:flags\n", - cmdname, cmdname, cmdname, cmdname); + " %s -R pool:vdev:offset:size:flags\n" + " %s [-p path_to_vdev_dir]\n" + " %s -e pool | GUID | devid ...\n", + cmdname, cmdname, cmdname, cmdname, cmdname, cmdname); (void) fprintf(stderr, " -u uberblock\n"); (void) fprintf(stderr, " -d datasets\n"); @@ -97,16 +105,22 @@ usage(void) (void) fprintf(stderr, " -b block statistics\n"); (void) fprintf(stderr, " -c checksum all data blocks\n"); (void) fprintf(stderr, " -s report stats on zdb's I/O\n"); + (void) fprintf(stderr, " -S : -- " + "dump blkptr signatures\n"); (void) fprintf(stderr, " -v verbose (applies to all others)\n"); (void) fprintf(stderr, " -l dump label contents\n"); (void) fprintf(stderr, " -L live pool (allows some errors)\n"); (void) fprintf(stderr, " -O [!] " "visitation order\n"); - (void) fprintf(stderr, " -U use zpool.cache in /tmp\n"); + (void) fprintf(stderr, " -U cachefile_path -- use alternate " + "cachefile\n"); (void) fprintf(stderr, " -B objset:object:level:blkid -- " "simulate bad block\n"); - (void) fprintf(stderr, " -R read and display block from a" + (void) fprintf(stderr, " -R read and display block from a " "device\n"); + (void) fprintf(stderr, " -e Pool is exported/destroyed/" + "has altroot\n"); + (void) fprintf(stderr, " -p (use with -e)\n"); (void) fprintf(stderr, "Specify an option more than once (e.g. -bb) " "to make only that option verbose\n"); (void) fprintf(stderr, "Default is to dump everything non-verbosely\n"); @@ -367,6 +381,44 @@ dump_zap(objset_t *os, uint64_t object, zap_cursor_fini(&zc); } +/*ARGSUSED*/ +static void +dump_zpldir(objset_t *os, uint64_t object, void *data, size_t size) +{ + zap_cursor_t zc; + zap_attribute_t attr; + const char *typenames[] = { + /* 0 */ "not specified", + /* 1 */ "FIFO", + /* 2 */ "Character Device", + /* 3 */ "3 (invalid)", + /* 4 */ "Directory", + /* 5 */ "5 (invalid)", + /* 6 */ "Block Device", + /* 7 */ "7 (invalid)", + /* 8 */ "Regular File", + /* 9 */ "9 (invalid)", + /* 10 */ "Symbolic Link", + /* 11 */ "11 (invalid)", + /* 12 */ "Socket", + /* 13 */ "Door", + /* 14 */ "Event Port", + /* 15 */ "15 (invalid)", + }; + + dump_zap_stats(os, object); + (void) printf("\n"); + + for (zap_cursor_init(&zc, os, object); + zap_cursor_retrieve(&zc, &attr) == 0; + zap_cursor_advance(&zc)) { + (void) printf("\t\t%s = %lld (type: %s)\n", + attr.za_name, ZFS_DIRENT_OBJ(attr.za_first_integer), + typenames[ZFS_DIRENT_TYPE(attr.za_first_integer)]); + } + zap_cursor_fini(&zc); +} + static void dump_spacemap(objset_t *os, space_map_obj_t *smo, space_map_t *sm) { @@ -456,10 +508,7 @@ dump_metaslabs(spa_t *spa) for (c = 0; c < rvd->vdev_children; c++) { vd = rvd->vdev_child[c]; - spa_config_enter(spa, RW_READER, FTAG); - (void) printf("\n vdev %llu = %s\n\n", - (u_longlong_t)vd->vdev_id, vdev_description(vd)); - spa_config_exit(spa, FTAG); + (void) printf("\n vdev %llu\n\n", (u_longlong_t)vd->vdev_id); if (dump_opt['d'] <= 5) { (void) printf("\t%10s %10s %5s\n", @@ -477,7 +526,6 @@ static void dump_dtl(vdev_t *vd, int indent) { avl_tree_t *t = &vd->vdev_dtl_map.sm_root; - spa_t *spa = vd->vdev_spa; space_seg_t *ss; vdev_t *pvd; int c; @@ -485,9 +533,10 @@ dump_dtl(vdev_t *vd, int indent) if (indent == 0) (void) printf("\nDirty time logs:\n\n"); - spa_config_enter(spa, RW_READER, FTAG); - (void) printf("\t%*s%s\n", indent, "", vdev_description(vd)); - spa_config_exit(spa, FTAG); + (void) printf("\t%*s%s\n", indent, "", + vd->vdev_path ? vd->vdev_path : + vd->vdev_parent ? vd->vdev_ops->vdev_op_type : + spa_name(vd->vdev_spa)); for (ss = avl_first(t); ss; ss = AVL_NEXT(t, ss)) { /* @@ -670,36 +719,49 @@ dump_dsl_dir(objset_t *os, uint64_t obje { dsl_dir_phys_t *dd = data; time_t crtime; - char used[6], compressed[6], uncompressed[6], quota[6], resv[6]; + char nice[6]; if (dd == NULL) return; - ASSERT(size == sizeof (*dd)); + ASSERT3U(size, >=, sizeof (dsl_dir_phys_t)); crtime = dd->dd_creation_time; - nicenum(dd->dd_used_bytes, used); - nicenum(dd->dd_compressed_bytes, compressed); - nicenum(dd->dd_uncompressed_bytes, uncompressed); - nicenum(dd->dd_quota, quota); - nicenum(dd->dd_reserved, resv); - (void) printf("\t\tcreation_time = %s", ctime(&crtime)); (void) printf("\t\thead_dataset_obj = %llu\n", (u_longlong_t)dd->dd_head_dataset_obj); (void) printf("\t\tparent_dir_obj = %llu\n", (u_longlong_t)dd->dd_parent_obj); - (void) printf("\t\tclone_parent_obj = %llu\n", - (u_longlong_t)dd->dd_clone_parent_obj); + (void) printf("\t\torigin_obj = %llu\n", + (u_longlong_t)dd->dd_origin_obj); (void) printf("\t\tchild_dir_zapobj = %llu\n", (u_longlong_t)dd->dd_child_dir_zapobj); - (void) printf("\t\tused_bytes = %s\n", used); - (void) printf("\t\tcompressed_bytes = %s\n", compressed); - (void) printf("\t\tuncompressed_bytes = %s\n", uncompressed); - (void) printf("\t\tquota = %s\n", quota); - (void) printf("\t\treserved = %s\n", resv); + nicenum(dd->dd_used_bytes, nice); + (void) printf("\t\tused_bytes = %s\n", nice); + nicenum(dd->dd_compressed_bytes, nice); + (void) printf("\t\tcompressed_bytes = %s\n", nice); + nicenum(dd->dd_uncompressed_bytes, nice); + (void) printf("\t\tuncompressed_bytes = %s\n", nice); + nicenum(dd->dd_quota, nice); + (void) printf("\t\tquota = %s\n", nice); + nicenum(dd->dd_reserved, nice); + (void) printf("\t\treserved = %s\n", nice); (void) printf("\t\tprops_zapobj = %llu\n", (u_longlong_t)dd->dd_props_zapobj); + (void) printf("\t\tdeleg_zapobj = %llu\n", + (u_longlong_t)dd->dd_deleg_zapobj); + (void) printf("\t\tflags = %llx\n", + (u_longlong_t)dd->dd_flags); + +#define DO(which) \ + nicenum(dd->dd_used_breakdown[DD_USED_ ## which], nice); \ + (void) printf("\t\tused_breakdown[" #which "] = %s\n", nice) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 20:03:16 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 978391065673; Thu, 4 Dec 2008 20:03:16 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 653BD8FC12; Thu, 4 Dec 2008 20:03:16 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB4K3G3s032849; Thu, 4 Dec 2008 20:03:16 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB4K3FD7032837; Thu, 4 Dec 2008 20:03:15 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200812042003.mB4K3FD7032837@svn.freebsd.org> From: Kip Macy Date: Thu, 4 Dec 2008 20:03:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185618 - in projects/release_6_3_xen/sys: kern sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 20:03:16 -0000 Author: kmacy Date: Thu Dec 4 20:03:15 2008 New Revision: 185618 URL: http://svn.freebsd.org/changeset/base/185618 Log: integrate generic sleepq_add and _sleep in order to implement sx_sleep Modified: projects/release_6_3_xen/sys/kern/init_main.c projects/release_6_3_xen/sys/kern/kern_condvar.c projects/release_6_3_xen/sys/kern/kern_lock.c projects/release_6_3_xen/sys/kern/kern_mutex.c projects/release_6_3_xen/sys/kern/kern_rwlock.c projects/release_6_3_xen/sys/kern/kern_sx.c projects/release_6_3_xen/sys/kern/kern_synch.c projects/release_6_3_xen/sys/kern/subr_sleepqueue.c projects/release_6_3_xen/sys/sys/lock.h projects/release_6_3_xen/sys/sys/sleepqueue.h projects/release_6_3_xen/sys/sys/systm.h Modified: projects/release_6_3_xen/sys/kern/init_main.c ============================================================================== Modified: projects/release_6_3_xen/sys/kern/kern_condvar.c ============================================================================== --- projects/release_6_3_xen/sys/kern/kern_condvar.c Thu Dec 4 18:48:08 2008 (r185617) +++ projects/release_6_3_xen/sys/kern/kern_condvar.c Thu Dec 4 20:03:15 2008 (r185618) @@ -124,7 +124,7 @@ cv_wait(struct cv *cvp, struct mtx *mp) DROP_GIANT(); mtx_unlock(mp); - sleepq_add(cvp, mp, cvp->cv_description, SLEEPQ_CONDVAR, 0); + sleepq_add(cvp, &mp->mtx_object, cvp->cv_description, SLEEPQ_CONDVAR, 0); sleepq_wait(cvp); #ifdef KTRACE @@ -177,7 +177,7 @@ cv_wait_sig(struct cv *cvp, struct mtx * DROP_GIANT(); mtx_unlock(mp); - sleepq_add(cvp, mp, cvp->cv_description, SLEEPQ_CONDVAR | + sleepq_add(cvp, &mp->mtx_object, cvp->cv_description, SLEEPQ_CONDVAR | SLEEPQ_INTERRUPTIBLE, 0); rval = sleepq_wait_sig(cvp); @@ -231,7 +231,7 @@ cv_timedwait(struct cv *cvp, struct mtx DROP_GIANT(); mtx_unlock(mp); - sleepq_add(cvp, mp, cvp->cv_description, SLEEPQ_CONDVAR, 0); + sleepq_add(cvp, &mp->mtx_object, cvp->cv_description, SLEEPQ_CONDVAR, 0); sleepq_set_timeout(cvp, timo); rval = sleepq_timedwait(cvp); @@ -288,7 +288,7 @@ cv_timedwait_sig(struct cv *cvp, struct DROP_GIANT(); mtx_unlock(mp); - sleepq_add(cvp, mp, cvp->cv_description, SLEEPQ_CONDVAR | + sleepq_add(cvp, &mp->mtx_object, cvp->cv_description, SLEEPQ_CONDVAR | SLEEPQ_INTERRUPTIBLE, 0); sleepq_set_timeout(cvp, timo); rval = sleepq_timedwait_sig(cvp); Modified: projects/release_6_3_xen/sys/kern/kern_lock.c ============================================================================== --- projects/release_6_3_xen/sys/kern/kern_lock.c Thu Dec 4 18:48:08 2008 (r185617) +++ projects/release_6_3_xen/sys/kern/kern_lock.c Thu Dec 4 20:03:15 2008 (r185618) @@ -62,6 +62,43 @@ __FBSDID("$FreeBSD$"); #include #endif + +#ifdef DDB +#include +static void db_show_lockmgr(struct lock_object *lock); +#endif +static void lock_lockmgr(struct lock_object *lock, int how); +static int unlock_lockmgr(struct lock_object *lock); + +struct lock_class lock_class_lockmgr = { + .lc_name = "lockmgr", + .lc_flags = LC_SLEEPLOCK | LC_SLEEPABLE | LC_RECURSABLE | LC_UPGRADABLE, +#ifdef DDB + .lc_ddb_show = db_show_lockmgr, +#endif + .lc_lock = lock_lockmgr, + .lc_unlock = unlock_lockmgr, +}; + +/* + * Locking primitives implementation. + * Locks provide shared/exclusive sychronization. + */ + +void +lock_lockmgr(struct lock_object *lock, int how) +{ + + panic("lockmgr locks do not support sleep interlocking"); +} + +int +unlock_lockmgr(struct lock_object *lock) +{ + + panic("lockmgr locks do not support sleep interlocking"); +} + /* * Locking primitives implementation. * Locks provide shared/exclusive sychronization. @@ -639,14 +676,13 @@ ok: return (1); } -DB_SHOW_COMMAND(lockmgr, db_show_lockmgr) +void +db_show_lockmgr(struct lock_object *lock) { struct thread *td; struct lock *lkp; - if (!have_addr) - return; - lkp = (struct lock *)addr; + lkp = (struct lock *)lock; db_printf("lock type: %s\n", lkp->lk_wmesg); db_printf("state: "); Modified: projects/release_6_3_xen/sys/kern/kern_mutex.c ============================================================================== --- projects/release_6_3_xen/sys/kern/kern_mutex.c Thu Dec 4 18:48:08 2008 (r185617) +++ projects/release_6_3_xen/sys/kern/kern_mutex.c Thu Dec 4 20:03:15 2008 (r185618) @@ -92,25 +92,66 @@ __FBSDID("$FreeBSD$"); #ifdef DDB static void db_show_mtx(struct lock_object *lock); #endif +static void lock_mtx(struct lock_object *lock, int how); +static void lock_spin(struct lock_object *lock, int how); +static int unlock_mtx(struct lock_object *lock); +static int unlock_spin(struct lock_object *lock); + /* * Lock classes for sleep and spin mutexes. */ struct lock_class lock_class_mtx_sleep = { - "sleep mutex", - LC_SLEEPLOCK | LC_RECURSABLE, + .lc_name = "sleep mutex", + .lc_flags = LC_SLEEPLOCK | LC_RECURSABLE, #ifdef DDB - db_show_mtx + .lc_ddb_show = db_show_mtx, #endif + .lc_lock = lock_mtx, + .lc_unlock = unlock_mtx, }; struct lock_class lock_class_mtx_spin = { - "spin mutex", - LC_SPINLOCK | LC_RECURSABLE, + .lc_name = "spin mutex", + .lc_flags = LC_SPINLOCK | LC_RECURSABLE, #ifdef DDB - db_show_mtx + .lc_ddb_show = db_show_mtx, #endif + .lc_lock = lock_spin, + .lc_unlock = unlock_spin, }; +void +lock_mtx(struct lock_object *lock, int how) +{ + + mtx_lock((struct mtx *)lock); +} + +void +lock_spin(struct lock_object *lock, int how) +{ + + panic("spin locks can only use msleep_spin"); +} + +int +unlock_mtx(struct lock_object *lock) +{ + struct mtx *m; + + m = (struct mtx *)lock; + mtx_assert(m, MA_OWNED | MA_NOTRECURSED); + mtx_unlock(m); + return (0); +} + +int +unlock_spin(struct lock_object *lock) +{ + + panic("spin locks can only use msleep_spin"); +} + /* * System-wide mutexes */ Modified: projects/release_6_3_xen/sys/kern/kern_rwlock.c ============================================================================== --- projects/release_6_3_xen/sys/kern/kern_rwlock.c Thu Dec 4 18:48:08 2008 (r185617) +++ projects/release_6_3_xen/sys/kern/kern_rwlock.c Thu Dec 4 20:03:15 2008 (r185618) @@ -60,13 +60,19 @@ CTASSERT((RW_RECURSE & LO_CLASSFLAGS) == static void db_show_rwlock(struct lock_object *lock); #endif +static void lock_rw(struct lock_object *lock, int how); +static int unlock_rw(struct lock_object *lock); + struct lock_class lock_class_rw = { .lc_name = "rw", .lc_flags = LC_SLEEPLOCK | LC_RECURSABLE | LC_UPGRADABLE, #ifdef DDB .lc_ddb_show = db_show_rwlock, #endif + .lc_lock = lock_rw, + .lc_unlock = unlock_rw }; + /* * Return a pointer to the owning thread if the lock is write-locked or @@ -99,6 +105,34 @@ struct lock_class lock_class_rw = { #endif void +lock_rw(struct lock_object *lock, int how) +{ + struct rwlock *rw; + + rw = (struct rwlock *)lock; + if (how) + rw_wlock(rw); + else + rw_rlock(rw); +} + +int +unlock_rw(struct lock_object *lock) +{ + struct rwlock *rw; + + rw = (struct rwlock *)lock; + rw_assert(rw, RA_LOCKED | LA_NOTRECURSED); + if (rw->rw_lock & RW_LOCK_READ) { + rw_runlock(rw); + return (0); + } else { + rw_wunlock(rw); + return (1); + } +} + +void rw_init_flags(struct rwlock *rw, const char *name, int opts) { int flags; Modified: projects/release_6_3_xen/sys/kern/kern_sx.c ============================================================================== --- projects/release_6_3_xen/sys/kern/kern_sx.c Thu Dec 4 18:48:08 2008 (r185617) +++ projects/release_6_3_xen/sys/kern/kern_sx.c Thu Dec 4 20:03:15 2008 (r185618) @@ -107,12 +107,17 @@ CTASSERT(((SX_ADAPTIVESPIN | SX_RECURSE) static void db_show_sx(struct lock_object *lock); #endif +static void lock_sx(struct lock_object *lock, int how); +static int unlock_sx(struct lock_object *lock); + struct lock_class lock_class_sx = { .lc_name = "sx", .lc_flags = LC_SLEEPLOCK | LC_SLEEPABLE | LC_RECURSABLE | LC_UPGRADABLE, #ifdef DDB .lc_ddb_show = db_show_sx, #endif + .lc_lock = lock_sx, + .lc_unlock = unlock_sx, }; #ifndef INVARIANTS @@ -120,6 +125,34 @@ struct lock_class lock_class_sx = { #endif void +lock_sx(struct lock_object *lock, int how) +{ + struct sx *sx; + + sx = (struct sx *)lock; + if (how) + sx_xlock(sx); + else + sx_slock(sx); +} + +int +unlock_sx(struct lock_object *lock) +{ + struct sx *sx; + + sx = (struct sx *)lock; + sx_assert(sx, SA_LOCKED | SA_NOTRECURSED); + if (sx_xlocked(sx)) { + sx_xunlock(sx); + return (1); + } else { + sx_sunlock(sx); + return (0); + } +} + +void sx_sysinit(void *arg) { struct sx_args *sargs = arg; Modified: projects/release_6_3_xen/sys/kern/kern_synch.c ============================================================================== --- projects/release_6_3_xen/sys/kern/kern_synch.c Thu Dec 4 18:48:08 2008 (r185617) +++ projects/release_6_3_xen/sys/kern/kern_synch.c Thu Dec 4 20:03:15 2008 (r185618) @@ -75,6 +75,7 @@ SYSINIT(synch_setup, SI_SUB_KICK_SCHEDUL int hogticks; int lbolt; +static int pause_wchan; static struct callout loadav_callout; static struct callout lbolt_callout; @@ -106,6 +107,143 @@ sleepinit(void) init_sleepqueues(); } + +/* + * General sleep call. Suspends the current thread until a wakeup is + * performed on the specified identifier. The thread will then be made + * runnable with the specified priority. Sleeps at most timo/hz seconds + * (0 means no timeout). If pri includes PCATCH flag, signals are checked + * before and after sleeping, else signals are not checked. Returns 0 if + * awakened, EWOULDBLOCK if the timeout expires. If PCATCH is set and a + * signal needs to be delivered, ERESTART is returned if the current system + * call should be restarted if possible, and EINTR is returned if the system + * call should be interrupted by the signal (return EINTR). + * + * The lock argument is unlocked before the caller is suspended, and + * re-locked before _sleep() returns. If priority includes the PDROP + * flag the lock is not re-locked before returning. + */ +int +_sleep(void *ident, struct lock_object *lock, int priority, + const char *wmesg, int timo) +{ + struct thread *td; + struct proc *p; + struct lock_class *class; + int catch, flags, lock_state, pri, rval; + WITNESS_SAVE_DECL(lock_witness); + + td = curthread; + p = td->td_proc; +#ifdef KTRACE + if (KTRPOINT(td, KTR_CSW)) + ktrcsw(1, 0); +#endif + WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, lock, + "Sleeping on \"%s\"", wmesg); + KASSERT(timo != 0 || mtx_owned(&Giant) || lock != NULL || + ident == &lbolt, ("sleeping without a lock")); + KASSERT(p != NULL, ("msleep1")); + KASSERT(ident != NULL && TD_IS_RUNNING(td), ("msleep")); + if (lock != NULL) + class = LOCK_CLASS(lock); + else + class = NULL; + + if (cold) { + /* + * During autoconfiguration, just return; + * don't run any other threads or panic below, + * in case this is the idle thread and already asleep. + * XXX: this used to do "s = splhigh(); splx(safepri); + * splx(s);" to give interrupts a chance, but there is + * no way to give interrupts a chance now. + */ + if (lock != NULL && priority & PDROP) + class->lc_unlock(lock); + return (0); + } + catch = priority & PCATCH; + rval = 0; + + /* + * If we are already on a sleep queue, then remove us from that + * sleep queue first. We have to do this to handle recursive + * sleeps. + */ + if (TD_ON_SLEEPQ(td)) + sleepq_remove(td, td->td_wchan); + + if (ident == &pause_wchan) + flags = SLEEPQ_PAUSE; + else + flags = SLEEPQ_SLEEP; + if (catch) + flags |= SLEEPQ_INTERRUPTIBLE; + + sleepq_lock(ident); + CTR5(KTR_PROC, "sleep: thread %ld (pid %ld, %s) on %s (%p)", + td->td_tid, p->p_pid, p->p_comm, wmesg, ident); + + DROP_GIANT(); + if (lock != NULL && !(class->lc_flags & LC_SLEEPABLE)) { + WITNESS_SAVE(lock, lock_witness); + lock_state = class->lc_unlock(lock); + } else + /* GCC needs to follow the Yellow Brick Road */ + lock_state = -1; + + /* + * We put ourselves on the sleep queue and start our timeout + * before calling thread_suspend_check, as we could stop there, + * and a wakeup or a SIGCONT (or both) could occur while we were + * stopped without resuming us. Thus, we must be ready for sleep + * when cursig() is called. If the wakeup happens while we're + * stopped, then td will no longer be on a sleep queue upon + * return from cursig(). + */ + sleepq_add(ident, ident == &lbolt ? NULL : lock, wmesg, flags, 0); + if (timo) + sleepq_set_timeout(ident, timo); + if (lock != NULL && class->lc_flags & LC_SLEEPABLE) { + sleepq_release(ident); + WITNESS_SAVE(lock, lock_witness); + lock_state = class->lc_unlock(lock); + sleepq_lock(ident); + } + + /* + * Adjust this thread's priority, if necessary. + */ + pri = priority & PRIMASK; + if (pri != 0 && pri != td->td_priority) { + mtx_lock_spin(&sched_lock); + sched_prio(td, pri); + mtx_unlock_spin(&sched_lock); + } + + if (timo && catch) + rval = sleepq_timedwait_sig(ident); + else if (timo) + rval = sleepq_timedwait(ident); + else if (catch) + rval = sleepq_wait_sig(ident); + else { + sleepq_wait(ident); + rval = 0; + } +#ifdef KTRACE + if (KTRPOINT(td, KTR_CSW)) + ktrcsw(0, 0); +#endif + PICKUP_GIANT(); + if (lock != NULL && !(priority & PDROP)) { + class->lc_lock(lock, lock_state); + WITNESS_RESTORE(lock, lock_witness); + } + return (rval); +} + /* * General sleep call. Suspends the current process until a wakeup is * performed on the specified identifier. The process will then be made @@ -170,7 +308,7 @@ msleep(ident, mtx, priority, wmesg, timo if (TD_ON_SLEEPQ(td)) sleepq_remove(td, td->td_wchan); - flags = SLEEPQ_MSLEEP; + flags = SLEEPQ_SLEEP; if (catch) flags |= SLEEPQ_INTERRUPTIBLE; @@ -194,7 +332,7 @@ msleep(ident, mtx, priority, wmesg, timo * stopped, then td will no longer be on a sleep queue upon * return from cursig(). */ - sleepq_add(ident, mtx, wmesg, flags, 0); + sleepq_add(ident, &mtx->mtx_object, wmesg, flags, 0); if (timo) sleepq_set_timeout(ident, timo); @@ -271,7 +409,7 @@ msleep_spin(ident, mtx, wmesg, timo) /* * We put ourselves on the sleep queue and start our timeout. */ - sleepq_add(ident, mtx, wmesg, SLEEPQ_MSLEEP, 0); + sleepq_add(ident, &mtx->mtx_object, wmesg, SLEEPQ_SLEEP, 0); if (timo) sleepq_set_timeout(ident, timo); @@ -320,7 +458,7 @@ wakeup(ident) { sleepq_lock(ident); - sleepq_broadcast(ident, SLEEPQ_MSLEEP, -1, 0); + sleepq_broadcast(ident, SLEEPQ_SLEEP, -1, 0); } /* @@ -334,7 +472,7 @@ wakeup_one(ident) { sleepq_lock(ident); - sleepq_signal(ident, SLEEPQ_MSLEEP, -1, 0); + sleepq_signal(ident, SLEEPQ_SLEEP, -1, 0); } /* Modified: projects/release_6_3_xen/sys/kern/subr_sleepqueue.c ============================================================================== --- projects/release_6_3_xen/sys/kern/subr_sleepqueue.c Thu Dec 4 18:48:08 2008 (r185617) +++ projects/release_6_3_xen/sys/kern/subr_sleepqueue.c Thu Dec 4 20:03:15 2008 (r185618) @@ -121,7 +121,7 @@ struct sleepqueue { void *sq_wchan; /* (c) Wait channel. */ #ifdef INVARIANTS int sq_type; /* (c) Queue type. */ - struct mtx *sq_lock; /* (c) Associated lock. */ + struct lock_object *sq_lock; /* (c) Associated lock. */ #endif }; @@ -270,7 +270,7 @@ sleepq_release(void *wchan) * woken up. */ void -sleepq_add(void *wchan, struct mtx *lock, const char *wmesg, int flags, +sleepq_add(void *wchan, struct lock_object *lock, const char *wmesg, int flags, int queue) { struct sleepqueue_chain *sc; @@ -947,7 +947,7 @@ found: #ifdef INVARIANTS db_printf("Queue type: %d\n", sq->sq_type); if (sq->sq_lock) { - lock = &sq->sq_lock->mtx_object; + lock = sq->sq_lock; db_printf("Associated Interlock: %p - (%s) %s\n", lock, LOCK_CLASS(lock)->lc_name, lock->lo_name); } Modified: projects/release_6_3_xen/sys/sys/lock.h ============================================================================== --- projects/release_6_3_xen/sys/sys/lock.h Thu Dec 4 18:48:08 2008 (r185617) +++ projects/release_6_3_xen/sys/sys/lock.h Thu Dec 4 20:03:15 2008 (r185618) @@ -51,6 +51,8 @@ struct lock_class { const char *lc_name; u_int lc_flags; void (*lc_ddb_show)(struct lock_object *lock); + void (*lc_lock)(struct lock_object *lock, int how); + int (*lc_unlock)(struct lock_object *lock); }; #define LC_SLEEPLOCK 0x00000001 /* Sleep lock. */ Modified: projects/release_6_3_xen/sys/sys/sleepqueue.h ============================================================================== --- projects/release_6_3_xen/sys/sys/sleepqueue.h Thu Dec 4 18:48:08 2008 (r185617) +++ projects/release_6_3_xen/sys/sys/sleepqueue.h Thu Dec 4 20:03:15 2008 (r185618) @@ -83,14 +83,16 @@ struct thread; #ifdef _KERNEL #define SLEEPQ_TYPE 0x0ff /* Mask of sleep queue types. */ -#define SLEEPQ_MSLEEP 0x00 /* Used by msleep/wakeup. */ +#define SLEEPQ_SLEEP 0x00 /* Used by msleep/wakeup. */ #define SLEEPQ_CONDVAR 0x01 /* Used for a cv. */ +#define SLEEPQ_PAUSE 0x02 /* Used by pause. */ #define SLEEPQ_SX 0x03 /* Used by an sx lock. */ #define SLEEPQ_INTERRUPTIBLE 0x100 /* Sleep is interruptible. */ + void init_sleepqueues(void); void sleepq_abort(struct thread *td, int intrval); -void sleepq_add(void *, struct mtx *, const char *, int, int); +void sleepq_add(void *, struct lock_object *, const char *, int, int); struct sleepqueue *sleepq_alloc(void); void sleepq_broadcast(void *, int, int, int); void sleepq_free(struct sleepqueue *); Modified: projects/release_6_3_xen/sys/sys/systm.h ============================================================================== --- projects/release_6_3_xen/sys/sys/systm.h Thu Dec 4 18:48:08 2008 (r185617) +++ projects/release_6_3_xen/sys/sys/systm.h Thu Dec 4 20:03:15 2008 (r185618) @@ -113,6 +113,7 @@ extern char **kenvp; * General function declarations. */ +struct lock_object; struct clockframe; struct malloc_type; struct mtx; @@ -295,6 +296,8 @@ static __inline void splx(intrmask_t ip * Common `proc' functions are declared here so that proc.h can be included * less often. */ +int _sleep(void *chan, struct lock_object *lock, int pri, const char *wmesg, + int timo) __nonnull(1); int msleep(void *chan, struct mtx *mtx, int pri, const char *wmesg, int timo); int msleep_spin(void *chan, struct mtx *mtx, const char *wmesg, int timo); From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 20:04:25 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BD9501065673; Thu, 4 Dec 2008 20:04:25 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AA7798FC13; Thu, 4 Dec 2008 20:04:25 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB4K4Pg3033163; Thu, 4 Dec 2008 20:04:25 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB4K4PZG033158; Thu, 4 Dec 2008 20:04:25 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200812042004.mB4K4PZG033158@svn.freebsd.org> From: Kip Macy Date: Thu, 4 Dec 2008 20:04:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185619 - in projects/release_6_3_xen/sys: conf dev/xen/blkfront dev/xen/netfront i386/conf i386/include/xen i386/xen vm xen xen/xenbus X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 20:04:25 -0000 Author: kmacy Date: Thu Dec 4 20:04:25 2008 New Revision: 185619 URL: http://svn.freebsd.org/changeset/base/185619 Log: Convert virtual devices over to using newbus Added: projects/release_6_3_xen/sys/xen/xenbus/xenbus_if.m projects/release_6_3_xen/sys/xen/xenbus/xenbusvar.h Deleted: projects/release_6_3_xen/sys/i386/include/xen/xenbus.h Modified: projects/release_6_3_xen/sys/conf/files projects/release_6_3_xen/sys/dev/xen/blkfront/blkfront.c projects/release_6_3_xen/sys/dev/xen/blkfront/block.h projects/release_6_3_xen/sys/dev/xen/netfront/netfront.c projects/release_6_3_xen/sys/i386/conf/XEN projects/release_6_3_xen/sys/i386/xen/mp_machdep.c projects/release_6_3_xen/sys/i386/xen/xen_machdep.c projects/release_6_3_xen/sys/vm/vm_page.c projects/release_6_3_xen/sys/xen/gnttab.c projects/release_6_3_xen/sys/xen/gnttab.h projects/release_6_3_xen/sys/xen/xenbus/xenbus_client.c projects/release_6_3_xen/sys/xen/xenbus/xenbus_comms.c projects/release_6_3_xen/sys/xen/xenbus/xenbus_comms.h projects/release_6_3_xen/sys/xen/xenbus/xenbus_dev.c projects/release_6_3_xen/sys/xen/xenbus/xenbus_probe.c projects/release_6_3_xen/sys/xen/xenbus/xenbus_probe_backend.c projects/release_6_3_xen/sys/xen/xenbus/xenbus_xs.c Modified: projects/release_6_3_xen/sys/conf/files ============================================================================== --- projects/release_6_3_xen/sys/conf/files Thu Dec 4 20:03:15 2008 (r185618) +++ projects/release_6_3_xen/sys/conf/files Thu Dec 4 20:04:25 2008 (r185619) @@ -2007,10 +2007,14 @@ xen/evtchn/evtchn_dev.c o xen/xenbus/xenbus_client.c optional xen xen/xenbus/xenbus_comms.c optional xen xen/xenbus/xenbus_dev.c optional xen +xen/xenbus/xenbus_if.m optional xen xen/xenbus/xenbus_probe.c optional xen -xen/xenbus/xenbus_probe_backend.c optional xen +#xen/xenbus/xenbus_probe_backend.c optional xen xen/xenbus/xenbus_xs.c optional xen dev/xen/console/console.c optional xen dev/xen/console/xencons_ring.c optional xen dev/xen/blkfront/blkfront.c optional xen dev/xen/netfront/netfront.c optional xen +#dev/xen/xenpci/xenpci.c optional xen +#xen/xenbus/xenbus_newbus.c optional xenhvm + Modified: projects/release_6_3_xen/sys/dev/xen/blkfront/blkfront.c ============================================================================== --- projects/release_6_3_xen/sys/dev/xen/blkfront/blkfront.c Thu Dec 4 20:03:15 2008 (r185618) +++ projects/release_6_3_xen/sys/dev/xen/blkfront/blkfront.c Thu Dec 4 20:04:25 2008 (r185619) @@ -43,9 +43,10 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include +#include +#include #include #include @@ -53,15 +54,17 @@ __FBSDID("$FreeBSD$"); #include +#include "xenbus_if.h" + #define ASSERT(S) KASSERT(S, (#S)) /* prototypes */ struct xb_softc; static void xb_startio(struct xb_softc *sc); -static void connect(struct blkfront_info *); -static void blkfront_closing(struct xenbus_device *); -static int blkfront_remove(struct xenbus_device *); -static int talk_to_backend(struct xenbus_device *, struct blkfront_info *); -static int setup_blkring(struct xenbus_device *, struct blkfront_info *); +static void connect(device_t, struct blkfront_info *); +static void blkfront_closing(device_t); +static int blkfront_detach(device_t); +static int talk_to_backend(device_t, struct blkfront_info *); +static int setup_blkring(device_t, struct blkfront_info *); static void blkif_int(void *); #if 0 static void blkif_restart_queue(void *arg); @@ -136,22 +139,95 @@ pfn_to_mfn(vm_paddr_t pfn) } +/* + * Translate Linux major/minor to an appropriate name and unit + * number. For HVM guests, this allows us to use the same drive names + * with blkfront as the emulated drives, easing transition slightly. + */ +static void +blkfront_vdevice_to_unit(int vdevice, int *unit, const char **name) +{ + static struct vdev_info { + int major; + int shift; + int base; + const char *name; + } info[] = { + {3, 6, 0, "ad"}, /* ide0 */ + {22, 6, 2, "ad"}, /* ide1 */ + {33, 6, 4, "ad"}, /* ide2 */ + {34, 6, 6, "ad"}, /* ide3 */ + {56, 6, 8, "ad"}, /* ide4 */ + {57, 6, 10, "ad"}, /* ide5 */ + {88, 6, 12, "ad"}, /* ide6 */ + {89, 6, 14, "ad"}, /* ide7 */ + {90, 6, 16, "ad"}, /* ide8 */ + {91, 6, 18, "ad"}, /* ide9 */ + + {8, 4, 0, "da"}, /* scsi disk0 */ + {65, 4, 16, "da"}, /* scsi disk1 */ + {66, 4, 32, "da"}, /* scsi disk2 */ + {67, 4, 48, "da"}, /* scsi disk3 */ + {68, 4, 64, "da"}, /* scsi disk4 */ + {69, 4, 80, "da"}, /* scsi disk5 */ + {70, 4, 96, "da"}, /* scsi disk6 */ + {71, 4, 112, "da"}, /* scsi disk7 */ + {128, 4, 128, "da"}, /* scsi disk8 */ + {129, 4, 144, "da"}, /* scsi disk9 */ + {130, 4, 160, "da"}, /* scsi disk10 */ + {131, 4, 176, "da"}, /* scsi disk11 */ + {132, 4, 192, "da"}, /* scsi disk12 */ + {133, 4, 208, "da"}, /* scsi disk13 */ + {134, 4, 224, "da"}, /* scsi disk14 */ + {135, 4, 240, "da"}, /* scsi disk15 */ + + {202, 4, 0, "xbd"}, /* xbd */ + + {0, 0, 0, NULL}, + }; + int major = vdevice >> 8; + int minor = vdevice & 0xff; + int i; + + if (vdevice & (1 << 28)) { + *unit = (vdevice & ((1 << 28) - 1)) >> 8; + *name = "xbd"; + } + + for (i = 0; info[i].major; i++) { + if (info[i].major == major) { + *unit = info[i].base + (minor >> info[i].shift); + *name = info[i].name; + return; + } + } + + *unit = minor >> 4; + *name = "xbd"; +} + int -xlvbd_add(blkif_sector_t capacity, int unit, uint16_t vdisk_info, uint16_t sector_size, - struct blkfront_info *info) +xlvbd_add(device_t dev, blkif_sector_t capacity, + int vdevice, uint16_t vdisk_info, uint16_t sector_size, + struct blkfront_info *info) { struct xb_softc *sc; - int error = 0; - int unitno = unit - 767; + int unit, error = 0; + const char *name; + + blkfront_vdevice_to_unit(vdevice, &unit, &name); sc = (struct xb_softc *)malloc(sizeof(*sc), M_DEVBUF, M_WAITOK|M_ZERO); - sc->xb_unit = unitno; + sc->xb_unit = unit; sc->xb_info = info; info->sc = sc; + if (strcmp(name, "xbd")) + device_printf(dev, "attaching as %s%d\n", name, unit); + memset(&sc->xb_disk, 0, sizeof(sc->xb_disk)); sc->xb_disk = disk_alloc(); - sc->xb_disk->d_unit = unitno; + sc->xb_disk->d_unit = unit; sc->xb_disk->d_open = blkif_open; sc->xb_disk->d_close = blkif_close; sc->xb_disk->d_ioctl = blkif_ioctl; @@ -226,19 +302,33 @@ xb_strategy(struct bio *bp) return; } +static int +blkfront_probe(device_t dev) +{ + + if (!strcmp(xenbus_get_type(dev), "vbd")) { + device_set_desc(dev, "Virtual Block Device"); + device_quiet(dev); + return (0); + } -/* Setup supplies the backend dir, virtual device. + return (ENXIO); +} -We place an event channel and shared frame entries. -We watch backend to wait if it's ok. */ -static int blkfront_probe(struct xenbus_device *dev, - const struct xenbus_device_id *id) +/* + * Setup supplies the backend dir, virtual device. We place an event + * channel and shared frame entries. We watch backend to wait if it's + * ok. + */ +static int +blkfront_attach(device_t dev) { - int err, vdevice, i; + int err, vdevice, i, unit; struct blkfront_info *info; + const char *name; /* FIXME: Use dynamic device id if this is not set. */ - err = xenbus_scanf(XBT_NIL, dev->nodename, + err = xenbus_scanf(XBT_NIL, xenbus_get_node(dev), "virtual-device", "%i", &vdevice); if (err != 1) { xenbus_dev_fatal(dev, err, "reading virtual-device"); @@ -246,11 +336,11 @@ static int blkfront_probe(struct xenbus_ return (err); } - info = malloc(sizeof(*info), M_DEVBUF, M_NOWAIT|M_ZERO); - if (info == NULL) { - xenbus_dev_fatal(dev, ENOMEM, "allocating info structure"); - return ENOMEM; - } + blkfront_vdevice_to_unit(vdevice, &unit, &name); + if (!strcmp(name, "xbd")) + device_set_unit(dev, unit); + + info = device_get_softc(dev); /* * XXX debug only @@ -270,23 +360,20 @@ static int blkfront_probe(struct xenbus_ info->shadow[BLK_RING_SIZE-1].req.id = 0x0fffffff; /* Front end dir is a number, which is used as the id. */ - info->handle = strtoul(strrchr(dev->nodename,'/')+1, NULL, 0); - dev->dev_driver_data = info; + info->handle = strtoul(strrchr(xenbus_get_node(dev),'/')+1, NULL, 0); err = talk_to_backend(dev, info); if (err) { - free(info, M_DEVBUF); - dev->dev_driver_data = NULL; return err; } - return 0; + return (0); } - -static int blkfront_resume(struct xenbus_device *dev) +static int +blkfront_resume(device_t dev) { - struct blkfront_info *info = dev->dev_driver_data; + struct blkfront_info *info = device_get_softc(dev); int err; DPRINTK("blkfront_resume: %s\n", dev->nodename); @@ -301,8 +388,8 @@ static int blkfront_resume(struct xenbus } /* Common code used when first setting up, and when resuming. */ -static int talk_to_backend(struct xenbus_device *dev, - struct blkfront_info *info) +static int +talk_to_backend(device_t dev, struct blkfront_info *info) { const char *message = NULL; struct xenbus_transaction xbt; @@ -320,19 +407,24 @@ static int talk_to_backend(struct xenbus goto destroy_blkring; } - err = xenbus_printf(xbt, dev->nodename, + err = xenbus_printf(xbt, xenbus_get_node(dev), "ring-ref","%u", info->ring_ref); if (err) { message = "writing ring-ref"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, + err = xenbus_printf(xbt, xenbus_get_node(dev), "event-channel", "%u", irq_to_evtchn_port(info->irq)); if (err) { message = "writing event-channel"; goto abort_transaction; } - + err = xenbus_printf(xbt, xenbus_get_node(dev), + "protocol", "%s", XEN_IO_PROTO_ABI_NATIVE); + if (err) { + message = "writing protocol"; + goto abort_transaction; + } err = xenbus_transaction_end(xbt, 0); if (err) { if (err == -EAGAIN) @@ -340,7 +432,7 @@ static int talk_to_backend(struct xenbus xenbus_dev_fatal(dev, err, "completing transaction"); goto destroy_blkring; } - xenbus_switch_state(dev, XenbusStateInitialised); + xenbus_set_state(dev, XenbusStateInitialised); return 0; @@ -355,7 +447,7 @@ static int talk_to_backend(struct xenbus } static int -setup_blkring(struct xenbus_device *dev, struct blkfront_info *info) +setup_blkring(device_t dev, struct blkfront_info *info) { blkif_sring_t *sring; int err; @@ -378,7 +470,7 @@ setup_blkring(struct xenbus_device *dev, } info->ring_ref = err; - err = bind_listening_port_to_irqhandler(dev->otherend_id, + err = bind_listening_port_to_irqhandler(xenbus_get_otherend_id(dev), "xbd", (driver_intr_t *)blkif_int, info, INTR_TYPE_BIO | INTR_MPSAFE, NULL); if (err <= 0) { @@ -398,10 +490,10 @@ setup_blkring(struct xenbus_device *dev, /** * Callback received when the backend's state changes. */ -static void backend_changed(struct xenbus_device *dev, - XenbusState backend_state) +static void +blkfront_backend_changed(device_t dev, XenbusState backend_state) { - struct blkfront_info *info = dev->dev_driver_data; + struct blkfront_info *info = device_get_softc(dev); DPRINTK("blkfront:backend_changed.\n"); @@ -416,7 +508,7 @@ static void backend_changed(struct xenbu break; case XenbusStateConnected: - connect(info); + connect(dev, info); break; case XenbusStateClosing: @@ -447,7 +539,7 @@ static void backend_changed(struct xenbu ** the details about the physical device - #sectors, size, etc). */ static void -connect(struct blkfront_info *info) +connect(device_t dev, struct blkfront_info *info) { unsigned long sectors, sector_size; unsigned int binfo; @@ -457,28 +549,34 @@ connect(struct blkfront_info *info) (info->connected == BLKIF_STATE_SUSPENDED) ) return; - DPRINTK("blkfront.c:connect:%s.\n", info->xbdev->otherend); + DPRINTK("blkfront.c:connect:%s.\n", xenbus_get_otherend_path(dev)); - err = xenbus_gather(XBT_NIL, info->xbdev->otherend, + err = xenbus_gather(XBT_NIL, xenbus_get_otherend_path(dev), "sectors", "%lu", §ors, "info", "%u", &binfo, "sector-size", "%lu", §or_size, NULL); if (err) { - xenbus_dev_fatal(info->xbdev, err, - "reading backend fields at %s", - info->xbdev->otherend); + xenbus_dev_fatal(dev, err, + "reading backend fields at %s", + xenbus_get_otherend_path(dev)); return; } - err = xenbus_gather(XBT_NIL, info->xbdev->otherend, + err = xenbus_gather(XBT_NIL, xenbus_get_otherend_path(dev), "feature-barrier", "%lu", &info->feature_barrier, NULL); if (err) info->feature_barrier = 0; - xlvbd_add(sectors, info->vdevice, binfo, sector_size, info); + device_printf(dev, "%juMB <%s> at %s", + (uintmax_t) sectors / (1048576 / sector_size), + device_get_desc(dev), + xenbus_get_node(dev)); + bus_print_child_footer(device_get_parent(dev), dev); - (void)xenbus_switch_state(info->xbdev, XenbusStateConnected); + xlvbd_add(dev, sectors, info->vdevice, binfo, sector_size, info); + + (void)xenbus_set_state(dev, XenbusStateConnected); /* Kick pending requests. */ mtx_lock(&blkif_io_lock); @@ -498,11 +596,12 @@ connect(struct blkfront_info *info) * the backend. Once is this done, we can switch to Closed in * acknowledgement. */ -static void blkfront_closing(struct xenbus_device *dev) +static void +blkfront_closing(device_t dev) { - struct blkfront_info *info = dev->dev_driver_data; + struct blkfront_info *info = device_get_softc(dev); - DPRINTK("blkfront_closing: %s removed\n", dev->nodename); + DPRINTK("blkfront_closing: %s removed\n", xenbus_get_node(dev)); if (info->mi) { DPRINTK("Calling xlvbd_del\n"); @@ -510,20 +609,19 @@ static void blkfront_closing(struct xenb info->mi = NULL; } - xenbus_switch_state(dev, XenbusStateClosed); + xenbus_set_state(dev, XenbusStateClosed); } -static int blkfront_remove(struct xenbus_device *dev) +static int +blkfront_detach(device_t dev) { - struct blkfront_info *info = dev->dev_driver_data; + struct blkfront_info *info = device_get_softc(dev); - DPRINTK("blkfront_remove: %s removed\n", dev->nodename); + DPRINTK("blkfront_remove: %s removed\n", xenbus_get_node(dev)); blkif_free(info, 0); - free(info, M_DEVBUF); - return 0; } @@ -631,8 +729,9 @@ blkif_close(struct disk *dp) /* Check whether we have been instructed to close. We will have ignored this request initially, as the device was still mounted. */ - struct xenbus_device * dev = sc->xb_info->xbdev; - XenbusState state = xenbus_read_driver_state(dev->otherend); + device_t dev = sc->xb_info->xbdev; + XenbusState state = + xenbus_read_driver_state(xenbus_get_otherend_path(dev)); if (state == XenbusStateClosing) blkfront_closing(dev); @@ -731,7 +830,7 @@ static int blkif_queue_request(struct bi gnttab_grant_foreign_access_ref( ref, - info->xbdev->otherend_id, + xenbus_get_otherend_id(info->xbdev), buffer_ma >> PAGE_SHIFT, ring_req->operation & 1 ); /* ??? */ info->shadow[id].frame[ring_req->nr_segments] = @@ -952,7 +1051,7 @@ blkif_recover(struct blkfront_info *info for (j = 0; j < req->nr_segments; j++) gnttab_grant_foreign_access_ref( req->seg[j].gref, - info->xbdev->otherend_id, + xenbus_get_otherend_id(info->xbdev), pfn_to_mfn(info->shadow[req->id].frame[j]), 0 /* assume not readonly */); @@ -963,7 +1062,7 @@ blkif_recover(struct blkfront_info *info free(copy, M_DEVBUF); - xenbus_switch_state(info->xbdev, XenbusStateConnected); + xenbus_set_state(info->xbdev, XenbusStateConnected); /* Now safe for us to use the shared ring */ mtx_lock(&blkif_io_lock); @@ -979,48 +1078,30 @@ blkif_recover(struct blkfront_info *info mtx_unlock(&blkif_io_lock); } -static int -blkfront_is_ready(struct xenbus_device *dev) -{ - struct blkfront_info *info = dev->dev_driver_data; - - return info->is_ready; -} - -static struct xenbus_device_id blkfront_ids[] = { - { "vbd" }, - { "" } -}; - - -static struct xenbus_driver blkfront = { - .name = "vbd", - .ids = blkfront_ids, - .probe = blkfront_probe, - .remove = blkfront_remove, - .resume = blkfront_resume, - .otherend_changed = backend_changed, - .is_ready = blkfront_is_ready, -}; - - - -static void -xenbus_init(void) -{ - xenbus_register_frontend(&blkfront); -} +/* ** Driver registration ** */ +static device_method_t blkfront_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, blkfront_probe), + DEVMETHOD(device_attach, blkfront_attach), + DEVMETHOD(device_detach, blkfront_detach), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, blkfront_resume), + + /* Xenbus interface */ + DEVMETHOD(xenbus_backend_changed, blkfront_backend_changed), + + { 0, 0 } +}; + +static driver_t blkfront_driver = { + "xbd", + blkfront_methods, + sizeof(struct blkfront_info), +}; +devclass_t blkfront_devclass; + +DRIVER_MODULE(xbd, xenbus, blkfront_driver, blkfront_devclass, 0, 0); MTX_SYSINIT(ioreq, &blkif_io_lock, "BIO LOCK", MTX_NOWITNESS); /* XXX how does one enroll a lock? */ -SYSINIT(xbdev, SI_SUB_PSEUDO, SI_ORDER_SECOND, xenbus_init, NULL); - -/* - * Local variables: - * mode: C - * c-set-style: "BSD" - * c-basic-offset: 8 - * tab-width: 4 - * indent-tabs-mode: t - * End: - */ Modified: projects/release_6_3_xen/sys/dev/xen/blkfront/block.h ============================================================================== --- projects/release_6_3_xen/sys/dev/xen/blkfront/block.h Thu Dec 4 20:03:15 2008 (r185618) +++ projects/release_6_3_xen/sys/dev/xen/blkfront/block.h Thu Dec 4 20:04:25 2008 (r185619) @@ -60,7 +60,7 @@ struct xb_softc { */ struct blkfront_info { - struct xenbus_device *xbdev; + device_t xbdev; dev_t dev; struct gendisk *gd; int vdevice; @@ -89,7 +89,7 @@ struct blkfront_info /* Note that xlvbd_add doesn't call add_disk for you: you're expected to call add_disk on info->gd once the disk is properly connected up. */ -int xlvbd_add(blkif_sector_t capacity, int device, +int xlvbd_add(device_t, blkif_sector_t capacity, int device, uint16_t vdisk_info, uint16_t sector_size, struct blkfront_info *info); void xlvbd_del(struct blkfront_info *info); Modified: projects/release_6_3_xen/sys/dev/xen/netfront/netfront.c ============================================================================== --- projects/release_6_3_xen/sys/dev/xen/netfront/netfront.c Thu Dec 4 20:03:15 2008 (r185618) +++ projects/release_6_3_xen/sys/dev/xen/netfront/netfront.c Thu Dec 4 20:04:25 2008 (r185619) @@ -25,6 +25,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -65,13 +66,14 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include #include #include +#include +#include "xenbus_if.h" #define GRANT_INVALID_REF 0 @@ -117,19 +119,19 @@ static void xn_watchdog(struct ifnet *); static void show_device(struct netfront_info *sc); #ifdef notyet -static void netfront_closing(struct xenbus_device *dev); +static void netfront_closing(device_t dev); #endif static void netif_free(struct netfront_info *info); -static int netfront_remove(struct xenbus_device *dev); +static int netfront_detach(device_t dev); -static int talk_to_backend(struct xenbus_device *dev, struct netfront_info *info); -static int create_netdev(struct xenbus_device *dev, struct ifnet **ifp); +static int talk_to_backend(device_t dev, struct netfront_info *info); +static int create_netdev(device_t dev); static void netif_disconnect_backend(struct netfront_info *info); -static int setup_device(struct xenbus_device *dev, struct netfront_info *info); +static int setup_device(device_t dev, struct netfront_info *info); static void end_access(int ref, void *page); /* Xenolinux helper functions */ -static int network_connect(struct ifnet *ifp); +int network_connect(struct netfront_info *); static void xn_free_rx_ring(struct netfront_info *); @@ -222,7 +224,7 @@ struct netfront_info { grant_ref_t grant_rx_ref[NET_TX_RING_SIZE + 1]; #define TX_MAX_TARGET min(NET_RX_RING_SIZE, 256) - struct xenbus_device *xbdev; + device_t xbdev; int tx_ring_ref; int rx_ring_ref; uint8_t mac[ETHER_ADDR_LEN]; @@ -328,7 +330,7 @@ xennet_get_rx_ref(struct netfront_info * #define WPRINTK(fmt, args...) \ printf("[XEN] " fmt, ##args) #define DPRINTK(fmt, args...) \ - printf("[XEN] " fmt, ##args) + printf("[XEN] %s: " fmt, __func__, ##args) static __inline struct mbuf* @@ -341,15 +343,15 @@ makembuf (struct mbuf *buf) if (! m) return 0; - M_MOVE_PKTHDR(m, buf); + M_MOVE_PKTHDR(m, buf); - m_cljget(m, M_DONTWAIT, MJUMPAGESIZE); + m_cljget(m, M_DONTWAIT, MJUMPAGESIZE); m->m_pkthdr.len = buf->m_pkthdr.len; m->m_len = buf->m_len; - m_copydata(buf, 0, buf->m_pkthdr.len, mtod(m,caddr_t) ); + m_copydata(buf, 0, buf->m_pkthdr.len, mtod(m,caddr_t) ); m->m_ext.ext_args = (caddr_t *)(uintptr_t)(vtophys(mtod(m,caddr_t)) >> PAGE_SHIFT); - + return m; } @@ -360,12 +362,12 @@ makembuf (struct mbuf *buf) * Return 0 on success, or errno on error. */ static int -xen_net_read_mac(struct xenbus_device *dev, uint8_t mac[]) +xen_net_read_mac(device_t dev, uint8_t mac[]) { char *s; int i; char *e; - char *macstr = xenbus_read(XBT_NIL, dev->nodename, "mac", NULL); + char *macstr = xenbus_read(XBT_NIL, xenbus_get_node(dev), "mac", NULL); if (IS_ERR(macstr)) { return PTR_ERR(macstr); } @@ -389,23 +391,28 @@ xen_net_read_mac(struct xenbus_device *d * Connected state. */ static int -netfront_probe(struct xenbus_device *dev, const struct xenbus_device_id *id) +netfront_probe(device_t dev) { + + if (!strcmp(xenbus_get_type(dev), "vif")) { + device_set_desc(dev, "Virtual Network Interface"); + return (0); + } + + return (ENXIO); +} + +static int +netfront_attach(device_t dev) +{ int err; - struct ifnet *ifp; - struct netfront_info *info; - printf("netfront_probe() \n"); - - err = create_netdev(dev, &ifp); + err = create_netdev(dev); if (err) { xenbus_dev_fatal(dev, err, "creating netdev"); return err; } - info = ifp->if_softc; - dev->dev_driver_data = info; - return 0; } @@ -417,11 +424,11 @@ netfront_probe(struct xenbus_device *dev * rest of the kernel. */ static int -netfront_resume(struct xenbus_device *dev) +netfront_resume(device_t dev) { - struct netfront_info *info = dev->dev_driver_data; + struct netfront_info *info = device_get_softc(dev); - DPRINTK("%s\n", dev->nodename); + DPRINTK("%s\n", xenbus_get_node(dev)); netif_disconnect_backend(info); return (0); @@ -430,15 +437,16 @@ netfront_resume(struct xenbus_device *de /* Common code used when first setting up, and when resuming. */ static int -talk_to_backend(struct xenbus_device *dev, struct netfront_info *info) +talk_to_backend(device_t dev, struct netfront_info *info) { const char *message; struct xenbus_transaction xbt; + const char *node = xenbus_get_node(dev); int err; err = xen_net_read_mac(dev, info->mac); if (err) { - xenbus_dev_fatal(dev, err, "parsing %s/mac", dev->nodename); + xenbus_dev_fatal(dev, err, "parsing %s/mac", node); goto out; } @@ -453,47 +461,47 @@ talk_to_backend(struct xenbus_device *de xenbus_dev_fatal(dev, err, "starting transaction"); goto destroy_ring; } - err = xenbus_printf(xbt, dev->nodename, "tx-ring-ref","%u", + err = xenbus_printf(xbt, node, "tx-ring-ref","%u", info->tx_ring_ref); if (err) { message = "writing tx ring-ref"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "rx-ring-ref","%u", + err = xenbus_printf(xbt, node, "rx-ring-ref","%u", info->rx_ring_ref); if (err) { message = "writing rx ring-ref"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, + err = xenbus_printf(xbt, node, "event-channel", "%u", irq_to_evtchn_port(info->irq)); if (err) { message = "writing event-channel"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "request-rx-copy", "%u", + err = xenbus_printf(xbt, node, "request-rx-copy", "%u", info->copying_receiver); if (err) { message = "writing request-rx-copy"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "feature-rx-notify", "%d", 1); + err = xenbus_printf(xbt, node, "feature-rx-notify", "%d", 1); if (err) { message = "writing feature-rx-notify"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "feature-no-csum-offload", "%d", 1); + err = xenbus_printf(xbt, node, "feature-no-csum-offload", "%d", 1); if (err) { message = "writing feature-no-csum-offload"; goto abort_transaction; } - err = xenbus_printf(xbt, dev->nodename, "feature-sg", "%d", 1); + err = xenbus_printf(xbt, node, "feature-sg", "%d", 1); if (err) { message = "writing feature-sg"; goto abort_transaction; } #ifdef HAVE_TSO - err = xenbus_printf(xbt, dev->nodename, "feature-gso-tcpv4", "%d", 1); + err = xenbus_printf(xbt, node, "feature-gso-tcpv4", "%d", 1); if (err) { message = "writing feature-gso-tcpv4"; goto abort_transaction; @@ -521,7 +529,7 @@ talk_to_backend(struct xenbus_device *de static int -setup_device(struct xenbus_device *dev, struct netfront_info *info) +setup_device(device_t dev, struct netfront_info *info) { netif_tx_sring_t *txs; netif_rx_sring_t *rxs; @@ -564,9 +572,9 @@ setup_device(struct xenbus_device *dev, info->rx_ring_ref = err; #if 0 - network_connect(ifp); + network_connect(info); #endif - err = bind_listening_port_to_irqhandler(dev->otherend_id, + err = bind_listening_port_to_irqhandler(xenbus_get_otherend_id(dev), "xn", xn_intr, info, INTR_TYPE_NET | INTR_MPSAFE, NULL); if (err <= 0) { @@ -589,14 +597,13 @@ setup_device(struct xenbus_device *dev, * Callback received when the backend's state changes. */ static void -backend_changed(struct xenbus_device *dev, - XenbusState backend_state) +netfront_backend_changed(device_t dev, XenbusState newstate) { - struct netfront_info *sc = dev->dev_driver_data; + struct netfront_info *sc = device_get_softc(dev); - DPRINTK("\n"); - - switch (backend_state) { + DPRINTK("newstate=%d\n", newstate); + + switch (newstate) { case XenbusStateInitialising: case XenbusStateInitialised: case XenbusStateConnected: @@ -604,19 +611,19 @@ backend_changed(struct xenbus_device *de case XenbusStateClosed: case XenbusStateReconfigured: case XenbusStateReconfiguring: - break; + break; case XenbusStateInitWait: - if (dev->state != XenbusStateInitialising) + if (xenbus_get_state(dev) != XenbusStateInitialising) break; - if (network_connect(sc->xn_ifp) != 0) + if (network_connect(sc) != 0) break; - xenbus_switch_state(dev, XenbusStateConnected); + xenbus_set_state(dev, XenbusStateConnected); #ifdef notyet (void)send_fake_arp(netdev); #endif - break; break; + break; case XenbusStateClosing: - xenbus_frontend_closed(dev); + xenbus_set_state(dev, XenbusStateClosed); break; } } @@ -675,7 +682,8 @@ netif_release_tx_bufs(struct netfront_in if (((u_long)m) < KERNBASE) continue; gnttab_grant_foreign_access_ref(np->grant_tx_ref[i], - np->xbdev->otherend_id, virt_to_mfn(mtod(m, vm_offset_t)), + xenbus_get_otherend_id(np->xbdev), + virt_to_mfn(mtod(m, vm_offset_t)), GNTMAP_readonly); gnttab_release_grant_reference(&np->gref_tx_head, np->grant_tx_ref[i]); @@ -688,6 +696,7 @@ netif_release_tx_bufs(struct netfront_in static void network_alloc_rx_buffers(struct netfront_info *sc) { + int otherend_id = xenbus_get_otherend_id(sc->xbdev); unsigned short id; struct mbuf *m_new; int i, batch_target, notify; @@ -769,7 +778,7 @@ refill: if (sc->copying_receiver == 0) { gnttab_grant_foreign_transfer_ref(ref, - sc->xbdev->otherend_id, pfn); + otherend_id, pfn); sc->rx_pfn_array[nr_flips] = PFNTOMFN(pfn); if (!xen_feature(XENFEAT_auto_translated_physmap)) { /* Remove this page before passing @@ -782,7 +791,7 @@ refill: nr_flips++; } else { gnttab_grant_foreign_access_ref(ref, - sc->xbdev->otherend_id, + otherend_id, PFNTOMFN(pfn), 0); } req->id = id; @@ -1297,6 +1306,7 @@ xn_tick(void *xsc) static void xn_start_locked(struct ifnet *ifp) { + int otherend_id; unsigned short id; struct mbuf *m_head, *new_m; struct netfront_info *sc; @@ -1307,6 +1317,7 @@ xn_start_locked(struct ifnet *ifp) int notify; sc = ifp->if_softc; + otherend_id = xenbus_get_otherend_id(sc->xbdev); tx_bytes = 0; if (!netfront_carrier_ok(sc)) @@ -1336,7 +1347,7 @@ xn_start_locked(struct ifnet *ifp) ref = gnttab_claim_grant_reference(&sc->gref_tx_head); KASSERT((short)ref >= 0, ("Negative ref")); mfn = virt_to_mfn(mtod(new_m, vm_offset_t)); - gnttab_grant_foreign_access_ref(ref, sc->xbdev->otherend_id, + gnttab_grant_foreign_access_ref(ref, otherend_id, mfn, GNTMAP_readonly); tx->gref = sc->grant_tx_ref[id] = ref; tx->size = new_m->m_pkthdr.len; @@ -1540,23 +1551,19 @@ xn_stop(struct netfront_info *sc) } /* START of Xenolinux helper functions adapted to FreeBSD */ -static int -network_connect(struct ifnet *ifp) +int +network_connect(struct netfront_info *np) { - struct netfront_info *np; int i, requeue_idx, err; grant_ref_t ref; netif_rx_request_t *req; u_int feature_rx_copy, feature_rx_flip; - printf("network_connect\n"); - - np = ifp->if_softc; - err = xenbus_scanf(XBT_NIL, np->xbdev->otherend, + err = xenbus_scanf(XBT_NIL, xenbus_get_otherend_path(np->xbdev), "feature-rx-copy", "%u", &feature_rx_copy); if (err != 1) feature_rx_copy = 0; - err = xenbus_scanf(XBT_NIL, np->xbdev->otherend, + err = xenbus_scanf(XBT_NIL, xenbus_get_otherend_path(np->xbdev), "feature-rx-flip", "%u", &feature_rx_flip); if (err != 1) feature_rx_flip = 1; @@ -1573,7 +1580,7 @@ network_connect(struct ifnet *ifp) /* Recovery procedure: */ err = talk_to_backend(np->xbdev, np); if (err) - return (err); + return (err); /* Step 1: Reinitialise variables. */ netif_release_tx_bufs(np); @@ -1591,11 +1598,11 @@ network_connect(struct ifnet *ifp) if (!np->copying_receiver) { gnttab_grant_foreign_transfer_ref(ref, - np->xbdev->otherend_id, + xenbus_get_otherend_id(np->xbdev), vtophys(mtod(m, vm_offset_t))); } else { gnttab_grant_foreign_access_ref(ref, - np->xbdev->otherend_id, + xenbus_get_otherend_id(np->xbdev), vtophys(mtod(m, vm_offset_t)), 0); } req->gref = ref; @@ -1622,7 +1629,6 @@ network_connect(struct ifnet *ifp) return (0); } - static void show_device(struct netfront_info *sc) { @@ -1642,25 +1648,18 @@ show_device(struct netfront_info *sc) #endif } -static int ifno = 0; - /** Create a network device. * @param handle device handle */ -static int -create_netdev(struct xenbus_device *dev, struct ifnet **ifpp) +int +create_netdev(device_t dev) { int i; struct netfront_info *np; int err; struct ifnet *ifp; - np = (struct netfront_info *)malloc(sizeof(struct netfront_info), - M_DEVBUF, M_NOWAIT); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 21:25:28 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A852D106568F; Thu, 4 Dec 2008 21:25:28 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (bigknife-pt.tunnel.tserv9.chi1.ipv6.he.net [IPv6:2001:470:1f10:75::2]) by mx1.freebsd.org (Postfix) with ESMTP id 4BDFE8FC14; Thu, 4 Dec 2008 21:25:28 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from localhost.corp.yahoo.com (john@localhost [IPv6:::1]) (authenticated bits=0) by server.baldwin.cx (8.14.3/8.14.3) with ESMTP id mB4LOIOq033364; Thu, 4 Dec 2008 16:25:22 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: Kip Macy Date: Thu, 4 Dec 2008 15:47:50 -0500 User-Agent: KMail/1.9.7 References: <200812042003.mB4K3FD7032837@svn.freebsd.org> In-Reply-To: <200812042003.mB4K3FD7032837@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200812041547.50441.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [IPv6:::1]); Thu, 04 Dec 2008 16:25:22 -0500 (EST) X-Virus-Scanned: ClamAV 0.93.1/8721/Thu Dec 4 08:26:10 2008 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.6 required=4.2 tests=AWL,BAYES_00,NO_RELAYS autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r185618 - in projects/release_6_3_xen/sys: kern sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 21:25:28 -0000 On Thursday 04 December 2008 03:03:15 pm Kip Macy wrote: > Author: kmacy > Date: Thu Dec 4 20:03:15 2008 > New Revision: 185618 > URL: http://svn.freebsd.org/changeset/base/185618 > > Log: > integrate generic sleepq_add and _sleep in order to implement sx_sleep There's a lighter-weight sx_sleep() in stock 6.x already (it's in kern_sx.c and is a separate routine rather than using _sleep()) if you are interested. -- John Baldwin From owner-svn-src-projects@FreeBSD.ORG Thu Dec 4 21:53:48 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D51C81065670 for ; Thu, 4 Dec 2008 21:53:48 +0000 (UTC) (envelope-from mat.macy@gmail.com) Received: from rv-out-0506.google.com (rv-out-0506.google.com [209.85.198.236]) by mx1.freebsd.org (Postfix) with ESMTP id A65948FC1A for ; Thu, 4 Dec 2008 21:53:48 +0000 (UTC) (envelope-from mat.macy@gmail.com) Received: by rv-out-0506.google.com with SMTP id f9so4093583rvb.4 for ; Thu, 04 Dec 2008 13:53:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references :x-google-sender-auth; bh=C7wZPfUjh4FYwT0EpoUzJ9cZWvPyljVn6rnwbtaAxGU=; b=pVONyNyzdXXe4etDmsxNCIMgQSQnCHk5TC5PMNq0UogTPpcy9+873hw5EFg+KoQro+ oClip6kZgaeahQJgH1MwmkRmKmA5bsU3CxmG0GBd7+vhuUnZDwjQGMxpe6INg3KPh6vm CpC7wslRBLXGjz8hLVqYd5D6yHdApsFEpi3iA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references:x-google-sender-auth; b=ZfJoTINnVFHrwHVf51hKCiIPGBxMAimdrQrxqjaxy0UmzWWgWhbo4lbUpvXFpCWBKj lzzDLg8X0VZQJrNEnG5l+Yd+IVdk3snl50iULdYGkumRVzOAMGid78NsCyGajDlStCEg WhneZ/VQD6X0uMsP6C0XjK/WObUsmdL7Zn5SI= Received: by 10.141.153.17 with SMTP id f17mr7167814rvo.99.1228426148539; Thu, 04 Dec 2008 13:29:08 -0800 (PST) Received: by 10.141.142.3 with HTTP; Thu, 4 Dec 2008 13:29:08 -0800 (PST) Message-ID: <3c1674c90812041329q525ac686lb23da78ae8273f2d@mail.gmail.com> Date: Thu, 4 Dec 2008 13:29:08 -0800 From: "Kip Macy" Sender: mat.macy@gmail.com To: "John Baldwin" In-Reply-To: <200812041547.50441.jhb@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <200812042003.mB4K3FD7032837@svn.freebsd.org> <200812041547.50441.jhb@freebsd.org> X-Google-Sender-Auth: 366067a111d9643e Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r185618 - in projects/release_6_3_xen/sys: kern sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2008 21:53:48 -0000 On Thu, Dec 4, 2008 at 12:47 PM, John Baldwin wrote: > On Thursday 04 December 2008 03:03:15 pm Kip Macy wrote: >> Author: kmacy >> Date: Thu Dec 4 20:03:15 2008 >> New Revision: 185618 >> URL: http://svn.freebsd.org/changeset/base/185618 >> >> Log: >> integrate generic sleepq_add and _sleep in order to implement sx_sleep > > There's a lighter-weight sx_sleep() in stock 6.x already (it's in kern_sx.c > and is a separate routine rather than using _sleep()) if you are interested. Yes, but it still required a newer version of sleepq_add. So I thought it wouldn't be much harder to pull in all the related bits. -Kip -- If we desire respect for the law, we must first make the law respectable. - Louis D. Brandeis