From owner-svn-src-projects@FreeBSD.ORG Sun May 6 17:31:30 2012 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 95917106566B; Sun, 6 May 2012 17:31:30 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 76D618FC0C; Sun, 6 May 2012 17:31:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q46HVUY6024221; Sun, 6 May 2012 17:31:30 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q46HVUGP024218; Sun, 6 May 2012 17:31:30 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201205061731.q46HVUGP024218@svn.freebsd.org> From: Marcel Moolenaar Date: Sun, 6 May 2012 17:31:30 +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: r235097 - in projects/altix2/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: Sun, 06 May 2012 17:31:30 -0000 Author: marcel Date: Sun May 6 17:31:29 2012 New Revision: 235097 URL: http://svn.freebsd.org/changeset/base/235097 Log: Add device_get_busdma_tag() and device_set_busdma_tag() for 2 reasons: 1. It allows us to keep track of the tags that are being created for a device, and 2. It allows us to implement inheritance of constraints within newbus and without using bus_get_dma_tag() for now. These functions are in part the result of building busdma/mi alongside the existing bus_dma implementation. They may not stay. Modified: projects/altix2/sys/kern/subr_bus.c projects/altix2/sys/sys/bus.h Modified: projects/altix2/sys/kern/subr_bus.c ============================================================================== --- projects/altix2/sys/kern/subr_bus.c Sun May 6 16:41:27 2012 (r235096) +++ projects/altix2/sys/kern/subr_bus.c Sun May 6 17:31:29 2012 (r235097) @@ -134,6 +134,8 @@ struct device { void *ivars; /**< instance variables */ void *softc; /**< current driver's variables */ + void *busdma_tag; /**< first created DMA tag */ + struct sysctl_ctx_list sysctl_ctx; /**< state for sysctl variables */ struct sysctl_oid *sysctl_tree; /**< state for sysctl variables */ }; @@ -2259,6 +2261,15 @@ device_get_unit(device_t dev) } /** + * @brief Return the first DMA root tag created for the device + */ +void * +device_get_busdma_tag(device_t dev) +{ + return (dev->busdma_tag); +} + +/** * @brief Return the device's description string */ const char * @@ -2350,6 +2361,19 @@ device_set_desc_internal(device_t dev, c } /** + * @brief Set or replace the first DMA root tag + */ +void * +device_set_busdma_tag(device_t dev, void *tag) +{ + void *prev; + + prev = dev->busdma_tag; + dev->busdma_tag = tag; + return (prev); +} + +/** * @brief Set the device's description * * The value of @c desc should be a string constant that will not Modified: projects/altix2/sys/sys/bus.h ============================================================================== --- projects/altix2/sys/sys/bus.h Sun May 6 16:41:27 2012 (r235096) +++ projects/altix2/sys/sys/bus.h Sun May 6 17:31:29 2012 (r235097) @@ -432,6 +432,11 @@ void device_disable(device_t dev); void device_enable(device_t dev); device_t device_find_child(device_t dev, const char *classname, int unit); +/* + * XXX busdma/mi + * device_get_busdma_tag() returns a busdma_tag_t + */ +void *device_get_busdma_tag(device_t dev); const char *device_get_desc(device_t dev); devclass_t device_get_devclass(device_t dev); driver_t *device_get_driver(device_t dev); @@ -458,6 +463,12 @@ int device_probe_and_attach(device_t dev int device_probe_child(device_t bus, device_t dev); int device_quiesce(device_t dev); void device_quiet(device_t dev); +/* + * XXX busdma/mi + * device_set_busdma_tag() returns a busdma_tag_t + * The tag argument is of type busdma_tag_t as well. + */ +void *device_set_busdma_tag(device_t dev, void *tag); void device_set_desc(device_t dev, const char* desc); void device_set_desc_copy(device_t dev, const char* desc); int device_set_devclass(device_t dev, const char *classname); From owner-svn-src-projects@FreeBSD.ORG Sun May 6 18:23:20 2012 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 234451065676; Sun, 6 May 2012 18:23:20 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0336B8FC17; Sun, 6 May 2012 18:23:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q46INJTI025899; Sun, 6 May 2012 18:23:19 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q46INJ8k025896; Sun, 6 May 2012 18:23:19 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201205061823.q46INJ8k025896@svn.freebsd.org> From: Marcel Moolenaar Date: Sun, 6 May 2012 18:23:19 +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: r235098 - in projects/altix2/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: Sun, 06 May 2012 18:23:20 -0000 Author: marcel Date: Sun May 6 18:23:19 2012 New Revision: 235098 URL: http://svn.freebsd.org/changeset/base/235098 Log: Implement busdma_tag_create(). This uses device_get_busdma_tag() and device_set_busdma_tag() to obtain newbus inherited constraints and to link the tag to the device. Bus inheritance should be a newbus KOBJ method so that devices/busses can control which of their tags is to be used as a base for inheritance. For now, this suffices. I don't want to have busdma/mi reach too deep or extend too wide. Modified: projects/altix2/sys/kern/subr_busdma.c projects/altix2/sys/sys/busdma.h Modified: projects/altix2/sys/kern/subr_busdma.c ============================================================================== --- projects/altix2/sys/kern/subr_busdma.c Sun May 6 17:31:29 2012 (r235097) +++ projects/altix2/sys/kern/subr_busdma.c Sun May 6 18:23:19 2012 (r235098) @@ -32,16 +32,113 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include struct busdma_tag { + struct busdma_tag *dt_chain; device_t dt_device; + bus_addr_t dt_minaddr; + bus_addr_t dt_maxaddr; + bus_addr_t dt_align; + bus_addr_t dt_bndry; + bus_size_t dt_maxsz; + u_int dt_nsegs; + bus_size_t dt_maxsegsz; }; +static struct busdma_tag busdma_root_tag = { + .dt_maxaddr = ~0UL, + .dt_align = 1, + .dt_maxsz = ~0UL, + .dt_nsegs = ~0U, + .dt_maxsegsz = ~0UL, +}; + +static MALLOC_DEFINE(M_BUSDMA_TAG, "busdma_tag", "busdma tag structures"); + +static void +_busdma_tag_dump(const char *func, device_t dev, busdma_tag_t tag) +{ + + printf("[%s: %s: tag=%p (minaddr=%jx, maxaddr=%jx, align=%jx, " + "bndry=%jx, maxsz=%jx, nsegs=%u, maxsegsz=%jx)]\n", + func, (dev != NULL) ? device_get_nameunit(dev) : "*", tag, + (uintmax_t)tag->dt_minaddr, (uintmax_t)tag->dt_maxaddr, + (uintmax_t)tag->dt_align, (uintmax_t)tag->dt_bndry, + (uintmax_t)tag->dt_maxsz, + tag->dt_nsegs, (uintmax_t)tag->dt_maxsegsz); +} + +static busdma_tag_t +_busdma_tag_get_base(device_t dev) +{ + device_t parent; + void *base; + + base = NULL; + parent = device_get_parent(dev); + while (base == NULL && parent != NULL) { + base = device_get_busdma_tag(parent); + if (base == NULL) + parent = device_get_parent(parent); + } + if (base == NULL) { + base = &busdma_root_tag; + parent = NULL; + } + _busdma_tag_dump(__func__, parent, base); + return (base); +} + +static int +_busdma_tag_make(device_t dev, busdma_tag_t base, bus_addr_t maxaddr, + bus_addr_t align, bus_addr_t bndry, bus_addr_t maxsz, u_int nsegs, + bus_size_t maxsegsz, u_int flags, busdma_tag_t *tag_p) +{ + busdma_tag_t tag; + + /* + * If nsegs is 1, ignore maxsegsz. What this means is that if we have + * just 1 segment, then maxsz should be equal to maxsegsz. Make it so. + */ + if (nsegs == 1) + maxsegsz = maxsz; + + tag = (busdma_tag_t)malloc(sizeof(*tag), M_BUSDMA_TAG, + M_WAITOK | M_ZERO); + tag->dt_device = dev; + tag->dt_minaddr = MAX(0, base->dt_minaddr); + tag->dt_maxaddr = MIN(maxaddr, base->dt_maxaddr); + tag->dt_align = MAX(align, base->dt_align); + tag->dt_bndry = MIN(bndry, base->dt_bndry); + tag->dt_maxsz = MIN(maxsz, base->dt_maxsz); + tag->dt_nsegs = MIN(nsegs, base->dt_nsegs); + tag->dt_maxsegsz = MIN(maxsegsz, base->dt_maxsegsz); + _busdma_tag_dump(__func__, dev, tag); + *tag_p = tag; + return (0); +} + int -busdma_tag_create(device_t device, struct resource *res, bus_addr_t maxaddr, - bus_addr_t align, bus_addr_t bndry, u_int nsegs, bus_size_t maxsegsz, +busdma_tag_create(device_t dev, bus_addr_t maxaddr, bus_addr_t align, + bus_addr_t bndry, bus_addr_t maxsz, u_int nsegs, bus_size_t maxsegsz, u_int flags, busdma_tag_t *tag_p) { + busdma_tag_t base, first, tag; + int error; + + base = _busdma_tag_get_base(dev); + error = _busdma_tag_make(dev, base, maxaddr, align, bndry, maxsz, + nsegs, maxsegsz, flags, &tag); + if (error != 0) + return (error); - return (ENOSYS); + /* + * This is a root tag. Link it with the device. + */ + first = device_set_busdma_tag(dev, tag); + tag->dt_chain = first; + *tag_p = tag; + return (0); } Modified: projects/altix2/sys/sys/busdma.h ============================================================================== --- projects/altix2/sys/sys/busdma.h Sun May 6 17:31:29 2012 (r235097) +++ projects/altix2/sys/sys/busdma.h Sun May 6 18:23:19 2012 (r235098) @@ -34,7 +34,22 @@ struct busdma_tag; typedef struct busdma_tag *busdma_tag_t; -int busdma_tag_create(device_t, struct resource *, bus_addr_t, bus_addr_t, - bus_addr_t, u_int, bus_size_t, u_int, busdma_tag_t *); +/* + * busdma_tag_create + * returns: errno value + * arguments: + * dev device for which the created tag is a root tag. + * maxaddr largest address that can be handled by the device. + * align alignment requirements of the DMA segments. + * bndry address boundary constraints for DMA. + * maxsz maximum total DMA size allowed. + * nsegs maximum number of DMA segments allowed. + * maxsegsz maximum size of a single DMA segment. + * flags flags that control the behaviour of the operation. + * tag_p address in which to return the newly created tag. + */ +int busdma_tag_create(device_t dev, bus_addr_t maxaddr, bus_addr_t align, + bus_addr_t bndry, bus_addr_t maxsz, u_int nsegs, bus_size_t maxsegsz, + u_int flags, busdma_tag_t *tag_p); #endif /* _SYS_BUSDMA_H_ */ From owner-svn-src-projects@FreeBSD.ORG Sun May 6 19:34:55 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DCF0F106566B; Sun, 6 May 2012 19:34:55 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AD9458FC0A; Sun, 6 May 2012 19:34:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q46JYtmH028196; Sun, 6 May 2012 19:34:55 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q46JYtSo028193; Sun, 6 May 2012 19:34:55 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201205061934.q46JYtSo028193@svn.freebsd.org> From: Marcel Moolenaar Date: Sun, 6 May 2012 19:34:55 +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: r235102 - in projects/altix2/sys: conf dev/mpt 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, 06 May 2012 19:34:56 -0000 Author: marcel Date: Sun May 6 19:34:55 2012 New Revision: 235102 URL: http://svn.freebsd.org/changeset/base/235102 Log: Add global option "MPT_USE_BUSDMA" to have mpt(4) use busdma/mi instead of bus_dma. mpt(4) is the SCSI controller driver under VMWare Fusion, which makes for a convenient prototyping environment. Hook up to busdma_tag_create(). Everything else fails. Modified: projects/altix2/sys/conf/options projects/altix2/sys/dev/mpt/mpt.h Modified: projects/altix2/sys/conf/options ============================================================================== --- projects/altix2/sys/conf/options Sun May 6 19:03:36 2012 (r235101) +++ projects/altix2/sys/conf/options Sun May 6 19:34:55 2012 (r235102) @@ -911,3 +911,6 @@ AR71XX_REALMEM opt_ar71xx.h AR71XX_ENV_UBOOT opt_ar71xx.h AR71XX_ENV_REDBOOT opt_ar71xx.h AR71XX_ATH_EEPROM opt_ar71xx.h + +# busdma/mi +MPT_USE_BUSDMA opt_global.h Modified: projects/altix2/sys/dev/mpt/mpt.h ============================================================================== --- projects/altix2/sys/dev/mpt/mpt.h Sun May 6 19:03:36 2012 (r235101) +++ projects/altix2/sys/dev/mpt/mpt.h Sun May 6 19:34:55 2012 (r235102) @@ -238,6 +238,23 @@ int mpt_modevent(module_t, int, void *); #define bus_dmamap_sync_range(dma_tag, dmamap, offset, len, op) \ bus_dmamap_sync(dma_tag, dmamap, op) +#ifdef MPT_USE_BUSDMA +#include + +#define mpt_dma_tag_create(mpt, parent_tag, alignment, boundary, \ + lowaddr, highaddr, filter, filterarg, \ + maxsize, nsegments, maxsegsz, flags, \ + dma_tagp) \ + busdma_tag_create((mpt)->dev, lowaddr, alignment, boundary, \ + maxsize, nsegments, maxsegsz, flags, (busdma_tag_t *)dma_tagp) + +#define mpt_dma_tag_derive(mpt, parent_tag, alignment, boundary, \ + lowaddr, highaddr, filter, filterarg, \ + maxsize, nsegments, maxsegsz, flags, \ + dma_tagp) \ + busdma_tag_derive(parent_tag, lowaddr, alignment, boundary, \ + maxsize, nsegments, maxsegsz, flags, (busdma_tag_t *)dma_tagp) +#else #if __FreeBSD_version < 600000 #define bus_get_dma_tag(x) NULL #endif @@ -261,6 +278,7 @@ int mpt_modevent(module_t, int, void *); maxsize, nsegments, maxsegsz, flags, \ dma_tagp) #endif +#endif /* MPT_USE_BUSDMA */ struct mpt_map_info { struct mpt_softc *mpt; From owner-svn-src-projects@FreeBSD.ORG Sun May 6 20:37:02 2012 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 D1B6D106564A; Sun, 6 May 2012 20:37:02 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BC1968FC15; Sun, 6 May 2012 20:37:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q46Kb2nX030795; Sun, 6 May 2012 20:37:02 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q46Kb2au030792; Sun, 6 May 2012 20:37:02 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201205062037.q46Kb2au030792@svn.freebsd.org> From: Marcel Moolenaar Date: Sun, 6 May 2012 20:37:02 +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: r235105 - in projects/altix2/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: Sun, 06 May 2012 20:37:03 -0000 Author: marcel Date: Sun May 6 20:37:02 2012 New Revision: 235105 URL: http://svn.freebsd.org/changeset/base/235105 Log: Implement busdma_tag_derive(). Modified: projects/altix2/sys/kern/subr_busdma.c projects/altix2/sys/sys/busdma.h Modified: projects/altix2/sys/kern/subr_busdma.c ============================================================================== --- projects/altix2/sys/kern/subr_busdma.c Sun May 6 20:26:28 2012 (r235104) +++ projects/altix2/sys/kern/subr_busdma.c Sun May 6 20:37:02 2012 (r235105) @@ -37,6 +37,8 @@ __FBSDID("$FreeBSD$"); struct busdma_tag { struct busdma_tag *dt_chain; + struct busdma_tag *dt_child; + struct busdma_tag *dt_parent; device_t dt_device; bus_addr_t dt_minaddr; bus_addr_t dt_maxaddr; @@ -93,7 +95,7 @@ _busdma_tag_get_base(device_t dev) static int _busdma_tag_make(device_t dev, busdma_tag_t base, bus_addr_t maxaddr, - bus_addr_t align, bus_addr_t bndry, bus_addr_t maxsz, u_int nsegs, + bus_addr_t align, bus_addr_t bndry, bus_size_t maxsz, u_int nsegs, bus_size_t maxsegsz, u_int flags, busdma_tag_t *tag_p) { busdma_tag_t tag; @@ -122,7 +124,7 @@ _busdma_tag_make(device_t dev, busdma_ta int busdma_tag_create(device_t dev, bus_addr_t maxaddr, bus_addr_t align, - bus_addr_t bndry, bus_addr_t maxsz, u_int nsegs, bus_size_t maxsegsz, + bus_addr_t bndry, bus_size_t maxsz, u_int nsegs, bus_size_t maxsegsz, u_int flags, busdma_tag_t *tag_p) { busdma_tag_t base, first, tag; @@ -142,3 +144,26 @@ busdma_tag_create(device_t dev, bus_addr *tag_p = tag; return (0); } + +int +busdma_tag_derive(busdma_tag_t base, bus_addr_t maxaddr, bus_addr_t align, + bus_addr_t bndry, bus_size_t maxsz, u_int nsegs, bus_size_t maxsegsz, + u_int flags, busdma_tag_t *tag_p) +{ + busdma_tag_t tag; + int error; + + error = _busdma_tag_make(base->dt_device, base, maxaddr, align, bndry, + maxsz, nsegs, maxsegsz, flags, &tag); + if (error != 0) + return (error); + + /* + * This is a derived tag. Link it with the base tag. + */ + tag->dt_parent = base; + tag->dt_chain = base->dt_child; + base->dt_child = tag; + *tag_p = tag; + return (0); +} Modified: projects/altix2/sys/sys/busdma.h ============================================================================== --- projects/altix2/sys/sys/busdma.h Sun May 6 20:26:28 2012 (r235104) +++ projects/altix2/sys/sys/busdma.h Sun May 6 20:37:02 2012 (r235105) @@ -49,7 +49,25 @@ typedef struct busdma_tag *busdma_tag_t; * tag_p address in which to return the newly created tag. */ int busdma_tag_create(device_t dev, bus_addr_t maxaddr, bus_addr_t align, - bus_addr_t bndry, bus_addr_t maxsz, u_int nsegs, bus_size_t maxsegsz, + bus_addr_t bndry, bus_size_t maxsz, u_int nsegs, bus_size_t maxsegsz, + u_int flags, busdma_tag_t *tag_p); + +/* + * busdma_tag_derive + * returns: errno value + * arguments: + * tag The root tag that is to be derived from. + * maxaddr largest address that can be handled by the device. + * align alignment requirements of the DMA segments. + * bndry address boundary constraints for DMA. + * maxsz maximum total DMA size allowed. + * nsegs maximum number of DMA segments allowed. + * maxsegsz maximum size of a single DMA segment. + * flags flags that control the behaviour of the operation. + * tag_p address in which to return the newly created tag. + */ +int busdma_tag_derive(busdma_tag_t tag, bus_addr_t maxaddr, bus_addr_t align, + bus_addr_t bndry, bus_size_t maxsz, u_int nsegs, bus_size_t maxsegsz, u_int flags, busdma_tag_t *tag_p); #endif /* _SYS_BUSDMA_H_ */ From owner-svn-src-projects@FreeBSD.ORG Sun May 6 20:40:19 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 79B0E106564A; Sun, 6 May 2012 20:40:19 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5A3968FC0A; Sun, 6 May 2012 20:40:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q46KeJwm030932; Sun, 6 May 2012 20:40:19 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q46KeJbQ030926; Sun, 6 May 2012 20:40:19 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201205062040.q46KeJbQ030926@svn.freebsd.org> From: Marcel Moolenaar Date: Sun, 6 May 2012 20:40:19 +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: r235106 - projects/altix2/sys/dev/mpt 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, 06 May 2012 20:40:19 -0000 Author: marcel Date: Sun May 6 20:40:18 2012 New Revision: 235106 URL: http://svn.freebsd.org/changeset/base/235106 Log: Add the mpt_dma_tag_derive macro and use it when deriving from the parent tag. This will use busdma_tag_derive for busdma/mi and is identical to mpt_dma_tag_create for bus_dma. Modified: projects/altix2/sys/dev/mpt/mpt.c projects/altix2/sys/dev/mpt/mpt.h projects/altix2/sys/dev/mpt/mpt_pci.c projects/altix2/sys/dev/mpt/mpt_user.c Modified: projects/altix2/sys/dev/mpt/mpt.c ============================================================================== --- projects/altix2/sys/dev/mpt/mpt.c Sun May 6 20:37:02 2012 (r235105) +++ projects/altix2/sys/dev/mpt/mpt.c Sun May 6 20:40:18 2012 (r235106) @@ -2534,7 +2534,7 @@ mpt_dma_buf_alloc(struct mpt_softc *mpt) int i, error; /* Create a child tag for data buffers */ - if (mpt_dma_tag_create(mpt, mpt->parent_dmat, 1, + if (mpt_dma_tag_derive(mpt, mpt->parent_dmat, 1, 0, BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL, (mpt->max_cam_seg_cnt - 1) * PAGE_SIZE, mpt->max_cam_seg_cnt, BUS_SPACE_MAXSIZE_32BIT, 0, @@ -2544,7 +2544,7 @@ mpt_dma_buf_alloc(struct mpt_softc *mpt) } /* Create a child tag for request buffers */ - if (mpt_dma_tag_create(mpt, mpt->parent_dmat, PAGE_SIZE, 0, + if (mpt_dma_tag_derive(mpt, mpt->parent_dmat, PAGE_SIZE, 0, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, MPT_REQ_MEM_SIZE(mpt), 1, BUS_SPACE_MAXSIZE_32BIT, 0, &mpt->request_dmat) != 0) { @@ -2758,7 +2758,7 @@ mpt_configure_ioc(struct mpt_softc *mpt, * the firmware after any hard-reset. */ mpt->fw_image_size = mpt->ioc_facts.FWImageSize; - error = mpt_dma_tag_create(mpt, mpt->parent_dmat, 1, 0, + error = mpt_dma_tag_derive(mpt, mpt->parent_dmat, 1, 0, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, mpt->fw_image_size, 1, mpt->fw_image_size, 0, &mpt->fw_dmat); Modified: projects/altix2/sys/dev/mpt/mpt.h ============================================================================== --- projects/altix2/sys/dev/mpt/mpt.h Sun May 6 20:37:02 2012 (r235105) +++ projects/altix2/sys/dev/mpt/mpt.h Sun May 6 20:40:18 2012 (r235106) @@ -241,19 +241,19 @@ int mpt_modevent(module_t, int, void *); #ifdef MPT_USE_BUSDMA #include -#define mpt_dma_tag_create(mpt, parent_tag, alignment, boundary, \ - lowaddr, highaddr, filter, filterarg, \ - maxsize, nsegments, maxsegsz, flags, \ - dma_tagp) \ +#define mpt_dma_tag_create(mpt, parent_tag, alignment, boundary, \ + lowaddr, highaddr, filter, filterarg, maxsize, \ + nsegments, maxsegsz, flags, dma_tagp) \ busdma_tag_create((mpt)->dev, lowaddr, alignment, boundary, \ - maxsize, nsegments, maxsegsz, flags, (busdma_tag_t *)dma_tagp) + maxsize, nsegments, maxsegsz, flags, \ + (busdma_tag_t *)dma_tagp) -#define mpt_dma_tag_derive(mpt, parent_tag, alignment, boundary, \ - lowaddr, highaddr, filter, filterarg, \ - maxsize, nsegments, maxsegsz, flags, \ - dma_tagp) \ - busdma_tag_derive(parent_tag, lowaddr, alignment, boundary, \ - maxsize, nsegments, maxsegsz, flags, (busdma_tag_t *)dma_tagp) +#define mpt_dma_tag_derive(mpt, parent_tag, alignment, boundary, \ + lowaddr, highaddr, filter, filterarg, maxsize, \ + nsegments, maxsegsz, flags, dma_tagp) \ + busdma_tag_derive((busdma_tag_t)parent_tag, lowaddr, alignment, \ + boundary, maxsize, nsegments, maxsegsz, flags, \ + (busdma_tag_t *)dma_tagp) #else #if __FreeBSD_version < 600000 #define bus_get_dma_tag(x) NULL @@ -278,6 +278,7 @@ int mpt_modevent(module_t, int, void *); maxsize, nsegments, maxsegsz, flags, \ dma_tagp) #endif +#define mpt_dma_tag_derive mpt_dma_tag_create #endif /* MPT_USE_BUSDMA */ struct mpt_map_info { Modified: projects/altix2/sys/dev/mpt/mpt_pci.c ============================================================================== --- projects/altix2/sys/dev/mpt/mpt_pci.c Sun May 6 20:37:02 2012 (r235105) +++ projects/altix2/sys/dev/mpt/mpt_pci.c Sun May 6 20:40:18 2012 (r235106) @@ -775,7 +775,7 @@ mpt_dma_mem_alloc(struct mpt_softc *mpt) } /* Create a child tag for reply buffers */ - if (mpt_dma_tag_create(mpt, mpt->parent_dmat, PAGE_SIZE, 0, + if (mpt_dma_tag_derive(mpt, mpt->parent_dmat, PAGE_SIZE, 0, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, 2 * PAGE_SIZE, 1, BUS_SPACE_MAXSIZE_32BIT, 0, &mpt->reply_dmat) != 0) { Modified: projects/altix2/sys/dev/mpt/mpt_user.c ============================================================================== --- projects/altix2/sys/dev/mpt/mpt_user.c Sun May 6 20:37:02 2012 (r235105) +++ projects/altix2/sys/dev/mpt/mpt_user.c Sun May 6 20:40:18 2012 (r235106) @@ -200,7 +200,7 @@ mpt_alloc_buffer(struct mpt_softc *mpt, /* Limit requests to 16M. */ if (len > 16 * 1024 * 1024) return (ENOSPC); - error = mpt_dma_tag_create(mpt, mpt->parent_dmat, 1, 0, + error = mpt_dma_tag_derive(mpt, mpt->parent_dmat, 1, 0, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, len, 1, len, 0, &page_mem->tag); if (error) From owner-svn-src-projects@FreeBSD.ORG Sun May 6 22:26:48 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 65295106564A; Sun, 6 May 2012 22:26:48 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5050C8FC14; Sun, 6 May 2012 22:26:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q46MQmX2034432; Sun, 6 May 2012 22:26:48 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q46MQml7034430; Sun, 6 May 2012 22:26:48 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201205062226.q46MQml7034430@svn.freebsd.org> From: Marcel Moolenaar Date: Sun, 6 May 2012 22:26:48 +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: r235109 - projects/altix2/sys/ia64/include 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, 06 May 2012 22:26:48 -0000 Author: marcel Date: Sun May 6 22:26:47 2012 New Revision: 235109 URL: http://svn.freebsd.org/changeset/base/235109 Log: Revert busdma_swi_pending to u_int. Modified: projects/altix2/sys/ia64/include/md_var.h Modified: projects/altix2/sys/ia64/include/md_var.h ============================================================================== --- projects/altix2/sys/ia64/include/md_var.h Sun May 6 21:05:58 2012 (r235108) +++ projects/altix2/sys/ia64/include/md_var.h Sun May 6 22:26:47 2012 (r235109) @@ -76,7 +76,7 @@ struct ia64_init_return { extern uint64_t ia64_lapic_addr; extern long Maxmem; -extern int busdma_swi_pending; +extern u_int busdma_swi_pending; void *acpi_find_table(const char *sig); void busdma_swi(void); From owner-svn-src-projects@FreeBSD.ORG Sun May 6 22:30:45 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E7FFB106566B; Sun, 6 May 2012 22:30:45 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D39858FC0C; Sun, 6 May 2012 22:30:45 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q46MUjTo034605; Sun, 6 May 2012 22:30:45 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q46MUjZ1034602; Sun, 6 May 2012 22:30:45 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201205062230.q46MUjZ1034602@svn.freebsd.org> From: Marcel Moolenaar Date: Sun, 6 May 2012 22:30: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: r235110 - in projects/altix2/sys: conf ia64/conf 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, 06 May 2012 22:30:46 -0000 Author: marcel Date: Sun May 6 22:30:45 2012 New Revision: 235110 URL: http://svn.freebsd.org/changeset/base/235110 Log: Add global option "ISP_USE_BUSDMA" to have isp(4) use busdma/mi instead of bus_dma. isp(4) is the SCSI controller driver for the SGI Altix 350. Enable the option for the ALTIX kernel configuration. Modified: projects/altix2/sys/conf/options projects/altix2/sys/ia64/conf/ALTIX Modified: projects/altix2/sys/conf/options ============================================================================== --- projects/altix2/sys/conf/options Sun May 6 22:26:47 2012 (r235109) +++ projects/altix2/sys/conf/options Sun May 6 22:30:45 2012 (r235110) @@ -913,4 +913,5 @@ AR71XX_ENV_REDBOOT opt_ar71xx.h AR71XX_ATH_EEPROM opt_ar71xx.h # busdma/mi +ISP_USE_BUSDMA opt_global.h MPT_USE_BUSDMA opt_global.h Modified: projects/altix2/sys/ia64/conf/ALTIX ============================================================================== --- projects/altix2/sys/ia64/conf/ALTIX Sun May 6 22:26:47 2012 (r235109) +++ projects/altix2/sys/ia64/conf/ALTIX Sun May 6 22:30:45 2012 (r235110) @@ -3,6 +3,8 @@ cpu ITANIUM2 ident ALTIX +options ISP_USE_BUSDMA + makeoptions DEBUG=-g makeoptions MODULES_OVERRIDE="" From owner-svn-src-projects@FreeBSD.ORG Sun May 6 22:36:11 2012 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 74792106566C; Sun, 6 May 2012 22:36:11 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5F2E78FC15; Sun, 6 May 2012 22:36:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q46MaBdn034812; Sun, 6 May 2012 22:36:11 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q46MaBMb034808; Sun, 6 May 2012 22:36:11 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201205062236.q46MaBMb034808@svn.freebsd.org> From: Marcel Moolenaar Date: Sun, 6 May 2012 22:36: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: r235111 - projects/altix2/sys/dev/isp 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, 06 May 2012 22:36:11 -0000 Author: marcel Date: Sun May 6 22:36:10 2012 New Revision: 235111 URL: http://svn.freebsd.org/changeset/base/235111 Log: Hook isp(4) up to busdma/mi is ISP_USE_BUSDMA is set. For now, only busdma_tag_create() and busdma_tag_derive() are used. Everything else fails. Modified: projects/altix2/sys/dev/isp/isp_freebsd.h projects/altix2/sys/dev/isp/isp_pci.c projects/altix2/sys/dev/isp/isp_sbus.c Modified: projects/altix2/sys/dev/isp/isp_freebsd.h ============================================================================== --- projects/altix2/sys/dev/isp/isp_freebsd.h Sun May 6 22:30:45 2012 (r235110) +++ projects/altix2/sys/dev/isp/isp_freebsd.h Sun May 6 22:36:10 2012 (r235111) @@ -658,10 +658,26 @@ void isp_common_dmateardown(ispsoftc_t * /* * Platform Version specific defines */ +#ifdef ISP_USE_BUSDMA +#include + +#define BUS_DMA_ROOTARG(x) x +#define isp_dma_tag_create(dev, align, bndry, lowaddr, hiaddr, filter, \ + f_arg, maxsize, nsegs, maxsegsz, flags, tag_p) \ + busdma_tag_create(dev, lowaddr, align, bndry, maxsize, nsegs, \ + maxsegsz, flags, (busdma_tag_t *)tag_p) + +#define isp_dma_tag_derive(parent, align, bndry, lowaddr, highaddr, \ + filter, f_arg, maxsize, nsegs, maxsegsz, flags, tag_p) \ + busdma_tag_derive((busdma_tag_t)parent, lowaddr, align, bndry, \ + maxsize, nsegs, maxsegsz, flags, (busdma_tag_t *)tag_p) +#else #define BUS_DMA_ROOTARG(x) bus_get_dma_tag(x) #define isp_dma_tag_create(a, b, c, d, e, f, g, h, i, j, k, z) \ bus_dma_tag_create(a, b, c, d, e, f, g, h, i, j, k, \ busdma_lock_mutex, &isp->isp_osinfo.lock, z) +#define isp_dma_tag_derive isp_dma_tag_create +#endif /* ISP_USE_BUSDMA */ #define isp_setup_intr bus_setup_intr Modified: projects/altix2/sys/dev/isp/isp_pci.c ============================================================================== --- projects/altix2/sys/dev/isp/isp_pci.c Sun May 6 22:30:45 2012 (r235110) +++ projects/altix2/sys/dev/isp/isp_pci.c Sun May 6 22:36:10 2012 (r235111) @@ -1604,7 +1604,7 @@ isp_pci_mbxdma(ispsoftc_t *isp) * Create a tag for the control spaces. We don't always need this * to be 32 bits, but we do this for simplicity and speed's sake. */ - if (isp_dma_tag_create(isp->isp_osinfo.dmat, QENTRY_LEN, slim, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, len, ns, slim, 0, &isp->isp_osinfo.cdmat)) { + if (isp_dma_tag_derive(isp->isp_osinfo.dmat, QENTRY_LEN, slim, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, len, ns, slim, 0, &isp->isp_osinfo.cdmat)) { isp_prt(isp, ISP_LOGERR, "cannot create a dma tag for control spaces"); free(isp->isp_osinfo.pcmd_pool, M_DEVBUF); free(isp->isp_xflist, M_DEVBUF); @@ -1641,7 +1641,7 @@ isp_pci_mbxdma(ispsoftc_t *isp) if (IS_FC(isp)) { for (cmap = 0; cmap < isp->isp_nchan; cmap++) { struct isp_fc *fc = ISP_FC_PC(isp, cmap); - if (isp_dma_tag_create(isp->isp_osinfo.dmat, 64, slim, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, ISP_FC_SCRLEN, 1, slim, 0, &fc->tdmat)) { + if (isp_dma_tag_derive(isp->isp_osinfo.dmat, 64, slim, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, ISP_FC_SCRLEN, 1, slim, 0, &fc->tdmat)) { goto bad; } if (bus_dmamem_alloc(fc->tdmat, (void **)&base, BUS_DMA_NOWAIT | BUS_DMA_COHERENT, &fc->tdmap) != 0) { Modified: projects/altix2/sys/dev/isp/isp_sbus.c ============================================================================== --- projects/altix2/sys/dev/isp/isp_sbus.c Sun May 6 22:30:45 2012 (r235110) +++ projects/altix2/sys/dev/isp/isp_sbus.c Sun May 6 22:36:10 2012 (r235111) @@ -484,7 +484,7 @@ isp_sbus_mbxdma(ispsoftc_t *isp) len += ISP_QUEUE_SIZE(RESULT_QUEUE_LEN(isp)); ns = (len / PAGE_SIZE) + 1; - if (isp_dma_tag_create(isp->isp_osinfo.dmat, QENTRY_LEN, + if (isp_dma_tag_derive(isp->isp_osinfo.dmat, QENTRY_LEN, BUS_SPACE_MAXADDR_24BIT+1, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR_32BIT, NULL, NULL, len, ns, BUS_SPACE_MAXADDR_24BIT, 0, &isp->isp_osinfo.cdmat)) { From owner-svn-src-projects@FreeBSD.ORG Sun May 6 23:03:19 2012 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 C2B2C106566B; Sun, 6 May 2012 23:03:19 +0000 (UTC) (envelope-from dmarion@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AD8CD8FC14; Sun, 6 May 2012 23:03:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q46N3JD4035772; Sun, 6 May 2012 23:03:19 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q46N3JTr035769; Sun, 6 May 2012 23:03:19 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201205062303.q46N3JTr035769@svn.freebsd.org> From: Damjan Marion Date: Sun, 6 May 2012 23:03:19 +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: r235113 - projects/armv6/sys/arm/ti/cpsw 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, 06 May 2012 23:03:19 -0000 Author: dmarion Date: Sun May 6 23:03:19 2012 New Revision: 235113 URL: http://svn.freebsd.org/changeset/base/235113 Log: Fix cpsw driver on beaglebone after r234858 Modified: projects/armv6/sys/arm/ti/cpsw/if_cpsw.c projects/armv6/sys/arm/ti/cpsw/if_cpswvar.h Modified: projects/armv6/sys/arm/ti/cpsw/if_cpsw.c ============================================================================== --- projects/armv6/sys/arm/ti/cpsw/if_cpsw.c Sun May 6 22:50:07 2012 (r235112) +++ projects/armv6/sys/arm/ti/cpsw/if_cpsw.c Sun May 6 23:03:19 2012 (r235113) @@ -76,8 +76,6 @@ __FBSDID("$FreeBSD$"); #include "miibus_if.h" -static struct cpsw_softc *cpsw_sc = NULL; - static int cpsw_probe(device_t dev); static int cpsw_attach(device_t dev); static int cpsw_detach(device_t dev); @@ -227,11 +225,8 @@ cpsw_attach(device_t dev) memcpy(sc->mac_addr, mac_addr, ETHER_ADDR_LEN); sc->node = ofw_bus_get_node(dev); - if (device_get_unit(dev) == 0) - cpsw_sc = sc; - /* Get phy address from fdt */ - if (fdt_get_phyaddr(sc->node, &phy) != 0) { + if (fdt_get_phyaddr(sc->node, sc->dev, &phy, (void **)&sc->phy_sc) != 0) { device_printf(dev, "failed to get PHY address from FDT\n"); return (ENXIO); } Modified: projects/armv6/sys/arm/ti/cpsw/if_cpswvar.h ============================================================================== --- projects/armv6/sys/arm/ti/cpsw/if_cpswvar.h Sun May 6 22:50:07 2012 (r235112) +++ projects/armv6/sys/arm/ti/cpsw/if_cpswvar.h Sun May 6 23:03:19 2012 (r235113) @@ -70,6 +70,8 @@ struct cpsw_softc { int eoq; int tc[CPSW_MAX_TX_BUFFERS]; int tc_unload[CPSW_MAX_TX_BUFFERS]; + + struct cpsw_softc *phy_sc; }; #define CPDMA_BD_SOP (1<<15) From owner-svn-src-projects@FreeBSD.ORG Sun May 6 23:17:07 2012 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 B41A01065672; Sun, 6 May 2012 23:17:07 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9FFE88FC18; Sun, 6 May 2012 23:17:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q46NH7r5036245; Sun, 6 May 2012 23:17:07 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q46NH7v5036243; Sun, 6 May 2012 23:17:07 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201205062317.q46NH7v5036243@svn.freebsd.org> From: Marcel Moolenaar Date: Sun, 6 May 2012 23:17:07 +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: r235114 - projects/altix2/sys/kern 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, 06 May 2012 23:17:07 -0000 Author: marcel Date: Sun May 6 23:17:07 2012 New Revision: 235114 URL: http://svn.freebsd.org/changeset/base/235114 Log: The isp(4) driver derives a tag when maxsz is smaller than maxsegsz. Compensate for this behaviour to keep things simple. A segment size is equally bounded to the total DMA size. Modified: projects/altix2/sys/kern/subr_busdma.c Modified: projects/altix2/sys/kern/subr_busdma.c ============================================================================== --- projects/altix2/sys/kern/subr_busdma.c Sun May 6 23:03:19 2012 (r235113) +++ projects/altix2/sys/kern/subr_busdma.c Sun May 6 23:17:07 2012 (r235114) @@ -102,9 +102,10 @@ _busdma_tag_make(device_t dev, busdma_ta /* * If nsegs is 1, ignore maxsegsz. What this means is that if we have - * just 1 segment, then maxsz should be equal to maxsegsz. Make it so. + * just 1 segment, then maxsz should be equal to maxsegsz. To keep it + * simple for us, limit maxsegsz to maxsz in any case. */ - if (nsegs == 1) + if (maxsegsz > maxsz || nsegs == 1) maxsegsz = maxsz; tag = (busdma_tag_t)malloc(sizeof(*tag), M_BUSDMA_TAG, From owner-svn-src-projects@FreeBSD.ORG Mon May 7 00:39:48 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 63314106564A; Mon, 7 May 2012 00:39:48 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4E4A68FC08; Mon, 7 May 2012 00:39:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q470dmsd038881; Mon, 7 May 2012 00:39:48 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q470dm5X038879; Mon, 7 May 2012 00:39:48 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201205070039.q470dm5X038879@svn.freebsd.org> From: Marcel Moolenaar Date: Mon, 7 May 2012 00:39:48 +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: r235115 - projects/altix2/sys/ia64/sgisn 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: Mon, 07 May 2012 00:39:48 -0000 Author: marcel Date: Mon May 7 00:39:47 2012 New Revision: 235115 URL: http://svn.freebsd.org/changeset/base/235115 Log: Create a tag to bound the address range. On the Altix, we only have 36-bits in a physical memory address per node. Modified: projects/altix2/sys/ia64/sgisn/sgisn_shub.c Modified: projects/altix2/sys/ia64/sgisn/sgisn_shub.c ============================================================================== --- projects/altix2/sys/ia64/sgisn/sgisn_shub.c Sun May 6 23:17:07 2012 (r235114) +++ projects/altix2/sys/ia64/sgisn/sgisn_shub.c Mon May 7 00:39:47 2012 (r235115) @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -59,6 +60,7 @@ struct sgisn_shub_softc { bus_addr_t sc_mmraddr; bus_space_tag_t sc_tag; bus_space_handle_t sc_hndl; + busdma_tag_t sc_dmatag; u_int sc_domain; u_int sc_hubtype; /* SHub type (0=SHub1, 1=SHub2) */ u_int sc_nasid_mask; @@ -351,6 +353,7 @@ sgisn_shub_attach(device_t dev) void *ptr; u_long addr; u_int bus, seg, wdgt; + int error; sc = device_get_softc(dev); sc->sc_dev = dev; @@ -395,6 +398,15 @@ sgisn_shub_attach(device_t dev) device_printf(dev, "NASID=%#x\n", sc->sc_nasid); /* + * Create a DMA tag to contribute constraints for our children. + */ + addr = 1UL << (sc->sc_nasid_shft - 2); + error = busdma_tag_create(dev, addr - 1UL, 1, 0, addr, ~0U, addr, 0, + &sc->sc_dmatag); + if (error) + return (error); + + /* * Allocate contiguous memory, local to the SHub, for collecting * SHub information from the PROM and for discovering the PCI * host controllers connected to the SHub. From owner-svn-src-projects@FreeBSD.ORG Mon May 7 05:28:50 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 274EE1065670; Mon, 7 May 2012 05:28:50 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 121A38FC12; Mon, 7 May 2012 05:28:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q475Snqf048225; Mon, 7 May 2012 05:28:49 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q475SnFE048222; Mon, 7 May 2012 05:28:49 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201205070528.q475SnFE048222@svn.freebsd.org> From: Marcel Moolenaar Date: Mon, 7 May 2012 05:28: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: r235120 - in projects/altix2/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: Mon, 07 May 2012 05:28:50 -0000 Author: marcel Date: Mon May 7 05:28:49 2012 New Revision: 235120 URL: http://svn.freebsd.org/changeset/base/235120 Log: o Implement busdma_mem_alloc(). o Use M_NOWAIT to allocate tags. Modified: projects/altix2/sys/kern/subr_busdma.c projects/altix2/sys/sys/busdma.h Modified: projects/altix2/sys/kern/subr_busdma.c ============================================================================== --- projects/altix2/sys/kern/subr_busdma.c Mon May 7 04:56:26 2012 (r235119) +++ projects/altix2/sys/kern/subr_busdma.c Mon May 7 05:28:49 2012 (r235120) @@ -34,6 +34,10 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include +#include +#include struct busdma_tag { struct busdma_tag *dt_chain; @@ -49,6 +53,20 @@ struct busdma_tag { bus_size_t dt_maxsegsz; }; +struct busdma_seg { + TAILQ_ENTRY(busdma_seg) ds_chain; + vm_offset_t ds_vaddr; + vm_size_t ds_size; + vm_paddr_t ds_paddr; + bus_addr_t ds_baddr; +}; + +struct busdma_mem { + struct busdma_tag *dm_tag; + TAILQ_HEAD(,busdma_seg) dm_seg; + u_int dm_nsegs; +}; + static struct busdma_tag busdma_root_tag = { .dt_maxaddr = ~0UL, .dt_align = 1, @@ -57,10 +75,12 @@ static struct busdma_tag busdma_root_tag .dt_maxsegsz = ~0UL, }; +static MALLOC_DEFINE(M_BUSDMA_MEM, "busdma_mem", "busdma mem structures"); +static MALLOC_DEFINE(M_BUSDMA_SEG, "busdma_seg", "busdma seg structures"); static MALLOC_DEFINE(M_BUSDMA_TAG, "busdma_tag", "busdma tag structures"); static void -_busdma_tag_dump(const char *func, device_t dev, busdma_tag_t tag) +_busdma_tag_dump(const char *func, device_t dev, struct busdma_tag *tag) { printf("[%s: %s: tag=%p (minaddr=%jx, maxaddr=%jx, align=%jx, " @@ -72,7 +92,21 @@ _busdma_tag_dump(const char *func, devic tag->dt_nsegs, (uintmax_t)tag->dt_maxsegsz); } -static busdma_tag_t +static void +_busdma_mem_dump(const char *func, struct busdma_mem *mem) +{ + struct busdma_seg *seg; + + printf("[%s: %s: mem=%p (tag=%p, nsegs=%u)", func, + device_get_nameunit(mem->dm_tag->dt_device), mem, + mem->dm_tag, mem->dm_nsegs); + TAILQ_FOREACH(seg, &mem->dm_seg, ds_chain) + printf(", {size=%jx, paddr=%jx, vaddr=%jx}", seg->ds_size, + seg->ds_paddr, seg->ds_vaddr); + printf("]\n"); +} + +static struct busdma_tag * _busdma_tag_get_base(device_t dev) { device_t parent; @@ -94,11 +128,11 @@ _busdma_tag_get_base(device_t dev) } static int -_busdma_tag_make(device_t dev, busdma_tag_t base, bus_addr_t maxaddr, +_busdma_tag_make(device_t dev, struct busdma_tag *base, bus_addr_t maxaddr, bus_addr_t align, bus_addr_t bndry, bus_size_t maxsz, u_int nsegs, - bus_size_t maxsegsz, u_int flags, busdma_tag_t *tag_p) + bus_size_t maxsegsz, u_int flags, struct busdma_tag **tag_p) { - busdma_tag_t tag; + struct busdma_tag *tag; /* * If nsegs is 1, ignore maxsegsz. What this means is that if we have @@ -108,8 +142,7 @@ _busdma_tag_make(device_t dev, busdma_ta if (maxsegsz > maxsz || nsegs == 1) maxsegsz = maxsz; - tag = (busdma_tag_t)malloc(sizeof(*tag), M_BUSDMA_TAG, - M_WAITOK | M_ZERO); + tag = malloc(sizeof(*tag), M_BUSDMA_TAG, M_NOWAIT | M_ZERO); tag->dt_device = dev; tag->dt_minaddr = MAX(0, base->dt_minaddr); tag->dt_maxaddr = MIN(maxaddr, base->dt_maxaddr); @@ -126,9 +159,9 @@ _busdma_tag_make(device_t dev, busdma_ta int busdma_tag_create(device_t dev, bus_addr_t maxaddr, bus_addr_t align, bus_addr_t bndry, bus_size_t maxsz, u_int nsegs, bus_size_t maxsegsz, - u_int flags, busdma_tag_t *tag_p) + u_int flags, struct busdma_tag **tag_p) { - busdma_tag_t base, first, tag; + struct busdma_tag *base, *first, *tag; int error; base = _busdma_tag_get_base(dev); @@ -147,11 +180,11 @@ busdma_tag_create(device_t dev, bus_addr } int -busdma_tag_derive(busdma_tag_t base, bus_addr_t maxaddr, bus_addr_t align, +busdma_tag_derive(struct busdma_tag *base, bus_addr_t maxaddr, bus_addr_t align, bus_addr_t bndry, bus_size_t maxsz, u_int nsegs, bus_size_t maxsegsz, - u_int flags, busdma_tag_t *tag_p) + u_int flags, struct busdma_tag **tag_p) { - busdma_tag_t tag; + struct busdma_tag *tag; int error; error = _busdma_tag_make(base->dt_device, base, maxaddr, align, bndry, @@ -168,3 +201,48 @@ busdma_tag_derive(busdma_tag_t base, bus *tag_p = tag; return (0); } + +int +busdma_mem_alloc(struct busdma_tag *tag, u_int flags, struct busdma_mem **mem_p) +{ + struct busdma_mem *mem; + struct busdma_seg *seg; + vm_size_t maxsz; + + mem = malloc(sizeof(*mem), M_BUSDMA_MEM, M_WAITOK | M_ZERO); + mem->dm_tag = tag; + TAILQ_INIT(&mem->dm_seg); + + maxsz = tag->dt_maxsz; + while (maxsz > 0 && mem->dm_nsegs < tag->dt_nsegs) { + seg = malloc(sizeof(*seg), M_BUSDMA_SEG, M_WAITOK | M_ZERO); + TAILQ_INSERT_TAIL(&mem->dm_seg, seg, ds_chain); + seg->ds_size = MIN(maxsz, tag->dt_maxsegsz); + seg->ds_vaddr = kmem_alloc_contig(kernel_map, seg->ds_size, 0, + tag->dt_minaddr, tag->dt_maxaddr, tag->dt_align, + tag->dt_bndry, VM_MEMATTR_DEFAULT); + if (seg->ds_vaddr == 0) { + /* TODO: try a smaller segment size */ + goto fail; + } + seg->ds_paddr = pmap_kextract(seg->ds_vaddr); + maxsz -= seg->ds_size; + mem->dm_nsegs++; + } + if (maxsz == 0) { + _busdma_mem_dump(__func__, mem); + *mem_p = mem; + return (0); + } + + fail: + while (!TAILQ_EMPTY(&mem->dm_seg)) { + seg = TAILQ_FIRST(&mem->dm_seg); + if (seg->ds_vaddr != 0) + kmem_free(kernel_map, seg->ds_vaddr, seg->ds_size); + TAILQ_REMOVE(&mem->dm_seg, seg, ds_chain); + free(seg, M_BUSDMA_SEG); + } + free(mem, M_BUSDMA_MEM); + return (ENOMEM); +} Modified: projects/altix2/sys/sys/busdma.h ============================================================================== --- projects/altix2/sys/sys/busdma.h Mon May 7 04:56:26 2012 (r235119) +++ projects/altix2/sys/sys/busdma.h Mon May 7 05:28:49 2012 (r235120) @@ -34,6 +34,9 @@ struct busdma_tag; typedef struct busdma_tag *busdma_tag_t; +struct busdma_mem; +typedef struct busdma_mem *busdma_mem_t; + /* * busdma_tag_create * returns: errno value @@ -56,7 +59,7 @@ int busdma_tag_create(device_t dev, bus_ * busdma_tag_derive * returns: errno value * arguments: - * tag The root tag that is to be derived from. + * tag the root tag that is to be derived from. * maxaddr largest address that can be handled by the device. * align alignment requirements of the DMA segments. * bndry address boundary constraints for DMA. @@ -70,4 +73,14 @@ int busdma_tag_derive(busdma_tag_t tag, bus_addr_t bndry, bus_size_t maxsz, u_int nsegs, bus_size_t maxsegsz, u_int flags, busdma_tag_t *tag_p); +/* + * busdma_mem_alloc + * returns: errno value + * arguments: + * tag the tag providing the constraints. + * flags flags that control the behaviour of the operation. + * mem_p address in which to return the memory descriptor. + */ +int busdma_mem_alloc(busdma_tag_t tag, u_int flags, busdma_mem_t *mem_p); + #endif /* _SYS_BUSDMA_H_ */ From owner-svn-src-projects@FreeBSD.ORG Tue May 8 09:14:27 2012 Return-Path: Delivered-To: svn-src-projects@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 01820106564A; Tue, 8 May 2012 09:14:27 +0000 (UTC) (envelope-from gber@freebsd.org) Received: from smtp.semihalf.com (smtp.semihalf.com [213.17.239.109]) by mx1.freebsd.org (Postfix) with ESMTP id A45B48FC14; Tue, 8 May 2012 09:14:26 +0000 (UTC) Received: from localhost (unknown [213.17.239.109]) by smtp.semihalf.com (Postfix) with ESMTP id D5145119C3B; Tue, 8 May 2012 11:14:10 +0200 (CEST) X-Virus-Scanned: by amavisd-new at semihalf.com Received: from smtp.semihalf.com ([213.17.239.109]) by localhost (smtp.semihalf.com [213.17.239.109]) (amavisd-new, port 10024) with ESMTP id zSBG3hIKa4q7; Tue, 8 May 2012 11:14:10 +0200 (CEST) Received: from [10.0.0.93] (cardhu.semihalf.com [213.17.239.108]) by smtp.semihalf.com (Postfix) with ESMTPSA id 2C5E2119C33; Tue, 8 May 2012 11:14:10 +0200 (CEST) Message-ID: <4FA8FFB9.7090002@freebsd.org> Date: Tue, 08 May 2012 13:12:57 +0200 From: Grzegorz Bernacki User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.24) Gecko/20120127 Thunderbird/3.1.16 MIME-Version: 1.0 To: Konstantin Belousov References: <201203170318.q2H3ITdI047893@svn.freebsd.org> <20120317085116.GC1340@garage.freebsd.pl> <20120317161050.GI75778@deviant.kiev.zoral.com.ua> In-Reply-To: <20120317161050.GI75778@deviant.kiev.zoral.com.ua> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-projects@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r233072 - projects/nand/sys/kern 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, 08 May 2012 09:14:27 -0000 On 03/17/12 17:10, Konstantin Belousov wrote: > On Sat, Mar 17, 2012 at 09:51:16AM +0100, Pawel Jakub Dawidek wrote: >> On Sat, Mar 17, 2012 at 03:18:29AM +0000, Grzegorz Bernacki wrote: >>> Author: gber >>> Date: Sat Mar 17 03:18:28 2012 >>> New Revision: 233072 >>> URL: http://svn.freebsd.org/changeset/base/233072 >>> >>> Log: >>> Add VFS changes necessary for NANDFS to work. >>> >>> Ignore B_MANAGED buffer by syncer and ignore signal when msleep as it >>> can cause file system inconsistency. >> >> I'd suggest running these changes through kib@. Especially vn_start_write() >> change below looks ugly, but maybe it is only temporary? > It is not only ugly (and object against it). > > If the change makes any difference for the filesystem, then I just argue > that the filesystem is broken. The vn_start_write() is done on the > VFS entry peripheral, long before filesystem code is hit. > > I did not looked at the managed changes, you would need to describe > what is wrong with current code and what is the purpose of the changes. > B_MANAGED came from xfs, it seems, or at least xfs is the only current > consumer of B_MANAGED buffers. Hi Kostik, Without our change in getblk() whenewer we allocate new block we get panic: panic: bremfree: buffer 0xffffff807bf86080 not on a queue. It is because blocks with B_MANAGED flag are not queued on any queue in brelse() function. Could you look at it and give us approval to merge this change into HEAD? thanks, grzesiek From owner-svn-src-projects@FreeBSD.ORG Tue May 8 09:56:41 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CC80D106566B; Tue, 8 May 2012 09:56:41 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id 4D63F8FC12; Tue, 8 May 2012 09:56:41 +0000 (UTC) Received: from skuns.kiev.zoral.com.ua (localhost [127.0.0.1]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id q489uWLG067286; Tue, 8 May 2012 12:56:32 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.5/8.14.5) with ESMTP id q489uWIf075340; Tue, 8 May 2012 12:56:32 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.5/8.14.5/Submit) id q489uVDx075339; Tue, 8 May 2012 12:56:31 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Tue, 8 May 2012 12:56:31 +0300 From: Konstantin Belousov To: Grzegorz Bernacki Message-ID: <20120508095631.GV2358@deviant.kiev.zoral.com.ua> References: <201203170318.q2H3ITdI047893@svn.freebsd.org> <20120317085116.GC1340@garage.freebsd.pl> <20120317161050.GI75778@deviant.kiev.zoral.com.ua> <4FA8FFB9.7090002@freebsd.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="G+2xtMkjVKN5mon6" Content-Disposition: inline In-Reply-To: <4FA8FFB9.7090002@freebsd.org> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-4.0 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r233072 - projects/nand/sys/kern 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, 08 May 2012 09:56:42 -0000 --G+2xtMkjVKN5mon6 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, May 08, 2012 at 01:12:57PM +0200, Grzegorz Bernacki wrote: > On 03/17/12 17:10, Konstantin Belousov wrote: > >On Sat, Mar 17, 2012 at 09:51:16AM +0100, Pawel Jakub Dawidek wrote: > >>On Sat, Mar 17, 2012 at 03:18:29AM +0000, Grzegorz Bernacki wrote: > >>>Author: gber > >>>Date: Sat Mar 17 03:18:28 2012 > >>>New Revision: 233072 > >>>URL: http://svn.freebsd.org/changeset/base/233072 > >>> > >>>Log: > >>> Add VFS changes necessary for NANDFS to work. > >>> > >>> Ignore B_MANAGED buffer by syncer and ignore signal when msleep as = it > >>> can cause file system inconsistency. > >> > >>I'd suggest running these changes through kib@. Especially=20 > >>vn_start_write() > >>change below looks ugly, but maybe it is only temporary? > >It is not only ugly (and object against it). > > > >If the change makes any difference for the filesystem, then I just argue > >that the filesystem is broken. The vn_start_write() is done on the > >VFS entry peripheral, long before filesystem code is hit. > > > >I did not looked at the managed changes, you would need to describe > >what is wrong with current code and what is the purpose of the changes. > >B_MANAGED came from xfs, it seems, or at least xfs is the only current > >consumer of B_MANAGED buffers. >=20 > Hi Kostik, >=20 > Without our change in getblk() whenewer we allocate new block we get pani= c: >=20 > panic: bremfree: buffer 0xffffff807bf86080 not on a queue. >=20 > It is because blocks with B_MANAGED flag are not queued on any queue in= =20 > brelse() function. Could you look at it and give us approval to merge=20 > this change into HEAD? Right, but this is in fact the only function of the B_MANAGED flag. So the question is, what are you trying to accomplish. --G+2xtMkjVKN5mon6 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (FreeBSD) iEYEARECAAYFAk+o7c8ACgkQC3+MBN1Mb4iE4gCfb0+uywOSiHpdcv3pYxQ6rlY/ iFcAnim67HzUPhyScxHoenoiaG15TyrY =nIwi -----END PGP SIGNATURE----- --G+2xtMkjVKN5mon6-- From owner-svn-src-projects@FreeBSD.ORG Tue May 8 14:14:21 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8C1DA1065673; Tue, 8 May 2012 14:14:21 +0000 (UTC) (envelope-from gber@freebsd.org) Received: from smtp.semihalf.com (smtp.semihalf.com [213.17.239.109]) by mx1.freebsd.org (Postfix) with ESMTP id 34BC78FC1A; Tue, 8 May 2012 14:14:21 +0000 (UTC) Received: from localhost (unknown [213.17.239.109]) by smtp.semihalf.com (Postfix) with ESMTP id E1014119C5C; Tue, 8 May 2012 16:14:10 +0200 (CEST) X-Virus-Scanned: by amavisd-new at semihalf.com Received: from smtp.semihalf.com ([213.17.239.109]) by localhost (smtp.semihalf.com [213.17.239.109]) (amavisd-new, port 10024) with ESMTP id s1Ns8QuuTkre; Tue, 8 May 2012 16:14:10 +0200 (CEST) Received: from [10.0.0.93] (cardhu.semihalf.com [213.17.239.108]) by smtp.semihalf.com (Postfix) with ESMTPSA id 1A977119C38; Tue, 8 May 2012 16:14:10 +0200 (CEST) Message-ID: <4FA94609.3060306@freebsd.org> Date: Tue, 08 May 2012 18:12:57 +0200 From: Grzegorz Bernacki User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.24) Gecko/20120127 Thunderbird/3.1.16 MIME-Version: 1.0 To: Konstantin Belousov References: <201203170318.q2H3ITdI047893@svn.freebsd.org> <20120317085116.GC1340@garage.freebsd.pl> <20120317161050.GI75778@deviant.kiev.zoral.com.ua> <4FA8FFB9.7090002@freebsd.org> <20120508095631.GV2358@deviant.kiev.zoral.com.ua> In-Reply-To: <20120508095631.GV2358@deviant.kiev.zoral.com.ua> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r233072 - projects/nand/sys/kern 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, 08 May 2012 14:14:21 -0000 On 05/08/12 11:56, Konstantin Belousov wrote: > On Tue, May 08, 2012 at 01:12:57PM +0200, Grzegorz Bernacki wrote: >> On 03/17/12 17:10, Konstantin Belousov wrote: >>> On Sat, Mar 17, 2012 at 09:51:16AM +0100, Pawel Jakub Dawidek wrote: >>>> On Sat, Mar 17, 2012 at 03:18:29AM +0000, Grzegorz Bernacki wrote: >>>>> Author: gber >>>>> Date: Sat Mar 17 03:18:28 2012 >>>>> New Revision: 233072 >>>>> URL: http://svn.freebsd.org/changeset/base/233072 >>>>> >>>>> Log: >>>>> Add VFS changes necessary for NANDFS to work. >>>>> >>>>> Ignore B_MANAGED buffer by syncer and ignore signal when msleep as it >>>>> can cause file system inconsistency. >>>> >>>> I'd suggest running these changes through kib@. Especially >>>> vn_start_write() >>>> change below looks ugly, but maybe it is only temporary? >>> It is not only ugly (and object against it). >>> >>> If the change makes any difference for the filesystem, then I just argue >>> that the filesystem is broken. The vn_start_write() is done on the >>> VFS entry peripheral, long before filesystem code is hit. >>> >>> I did not looked at the managed changes, you would need to describe >>> what is wrong with current code and what is the purpose of the changes. >>> B_MANAGED came from xfs, it seems, or at least xfs is the only current >>> consumer of B_MANAGED buffers. >> >> Hi Kostik, >> >> Without our change in getblk() whenewer we allocate new block we get panic: >> >> panic: bremfree: buffer 0xffffff807bf86080 not on a queue. >> >> It is because blocks with B_MANAGED flag are not queued on any queue in >> brelse() function. Could you look at it and give us approval to merge >> this change into HEAD? > > Right, but this is in fact the only function of the B_MANAGED flag. > So the question is, what are you trying to accomplish. Hi Kostik, There are two separate issues. First is that if we have B_MANAGED flag it should not cause the panic when used, so in my opinion fix should go into HEAD regardless of NANDFS. Second thing is the reason of having B_MANAGED flag. We use it because we want to decide when and where to save buffers. Our FS is log filesystem and we write buffers every given amount of time or if number of dirty buffer exceed given threshold. We write buffers in large groups along with metadata related to this group, so we cannot afford writing single buffer. As a result we cannot allow buf deamon to write buffers in an ad hoc manner. I hope I answered your question. Please let me know if you have more concerns. If you have some ideas how we can avoid using B_MANAGED flags please let us know. thanks, grzesiek From owner-svn-src-projects@FreeBSD.ORG Wed May 9 08:46:46 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 0A7731065673; Wed, 9 May 2012 08:46:46 +0000 (UTC) (envelope-from gber@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E40788FC18; Wed, 9 May 2012 08:46:45 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q498kjo8074277; Wed, 9 May 2012 08:46:45 GMT (envelope-from gber@svn.freebsd.org) Received: (from gber@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q498kjAS074262; Wed, 9 May 2012 08:46:45 GMT (envelope-from gber@svn.freebsd.org) Message-Id: <201205090846.q498kjAS074262@svn.freebsd.org> From: Grzegorz Bernacki Date: Wed, 9 May 2012 08:46: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: r235159 - in projects/nand: . cddl/compat/opensolaris/include cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/lib/libdtrace/common contrib/binutils/ld/emultempl contrib/file c... 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, 09 May 2012 08:46:46 -0000 Author: gber Date: Wed May 9 08:46:43 2012 New Revision: 235159 URL: http://svn.freebsd.org/changeset/base/235159 Log: IFC @235156 Added: projects/nand/contrib/file/Magdir/assembler - copied unchanged from r235156, head/contrib/file/Magdir/assembler projects/nand/contrib/file/Magdir/blcr - copied unchanged from r235156, head/contrib/file/Magdir/blcr projects/nand/contrib/file/Magdir/bsi - copied unchanged from r235156, head/contrib/file/Magdir/bsi projects/nand/contrib/file/Magdir/cups - copied unchanged from r235156, head/contrib/file/Magdir/cups projects/nand/contrib/file/Magdir/ebml - copied unchanged from r235156, head/contrib/file/Magdir/ebml projects/nand/contrib/file/Magdir/fusecompress - copied unchanged from r235156, head/contrib/file/Magdir/fusecompress projects/nand/contrib/file/Magdir/geo - copied unchanged from r235156, head/contrib/file/Magdir/geo projects/nand/contrib/file/Magdir/guile - copied unchanged from r235156, head/contrib/file/Magdir/guile projects/nand/contrib/file/Magdir/isz - copied unchanged from r235156, head/contrib/file/Magdir/isz projects/nand/contrib/file/Magdir/m4 - copied unchanged from r235156, head/contrib/file/Magdir/m4 projects/nand/contrib/file/Magdir/make - copied unchanged from r235156, head/contrib/file/Magdir/make projects/nand/contrib/file/Magdir/marc21 - copied unchanged from r235156, head/contrib/file/Magdir/marc21 projects/nand/contrib/file/Magdir/metastore - copied unchanged from r235156, head/contrib/file/Magdir/metastore projects/nand/contrib/file/Magdir/msooxml - copied unchanged from r235156, head/contrib/file/Magdir/msooxml projects/nand/contrib/file/Magdir/music - copied unchanged from r235156, head/contrib/file/Magdir/music projects/nand/contrib/file/Magdir/oasis - copied unchanged from r235156, head/contrib/file/Magdir/oasis projects/nand/contrib/file/Magdir/parrot - copied unchanged from r235156, head/contrib/file/Magdir/parrot projects/nand/contrib/file/Magdir/pascal - copied unchanged from r235156, head/contrib/file/Magdir/pascal projects/nand/contrib/file/Magdir/rinex - copied unchanged from r235156, head/contrib/file/Magdir/rinex projects/nand/contrib/file/Magdir/selinux - copied unchanged from r235156, head/contrib/file/Magdir/selinux projects/nand/contrib/file/Magdir/sisu - copied unchanged from r235156, head/contrib/file/Magdir/sisu projects/nand/contrib/file/Magdir/smile - copied unchanged from r235156, head/contrib/file/Magdir/smile projects/nand/contrib/file/Magdir/ssh - copied unchanged from r235156, head/contrib/file/Magdir/ssh projects/nand/contrib/file/Magdir/ssl - copied unchanged from r235156, head/contrib/file/Magdir/ssl projects/nand/contrib/file/Magdir/tcl - copied unchanged from r235156, head/contrib/file/Magdir/tcl projects/nand/contrib/file/Magdir/virtual - copied unchanged from r235156, head/contrib/file/Magdir/virtual projects/nand/contrib/file/Magdir/wsdl - copied unchanged from r235156, head/contrib/file/Magdir/wsdl projects/nand/contrib/file/Magdir/zfs - copied unchanged from r235156, head/contrib/file/Magdir/zfs projects/nand/contrib/file/getline.c - copied unchanged from r235156, head/contrib/file/getline.c projects/nand/contrib/llvm/include/llvm/Support/Locale.h - copied unchanged from r235156, head/contrib/llvm/include/llvm/Support/Locale.h projects/nand/contrib/llvm/include/llvm/Support/MDBuilder.h - copied unchanged from r235156, head/contrib/llvm/include/llvm/Support/MDBuilder.h projects/nand/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/GDBRegistrar.cpp - copied unchanged from r235156, head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/GDBRegistrar.cpp projects/nand/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/JITRegistrar.h - copied unchanged from r235156, head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/JITRegistrar.h projects/nand/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/ObjectImage.h - copied unchanged from r235156, head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/ObjectImage.h projects/nand/contrib/llvm/lib/Support/Locale.cpp - copied unchanged from r235156, head/contrib/llvm/lib/Support/Locale.cpp projects/nand/contrib/llvm/lib/Support/LocaleGeneric.inc - copied unchanged from r235156, head/contrib/llvm/lib/Support/LocaleGeneric.inc projects/nand/contrib/llvm/lib/Support/LocaleWindows.inc - copied unchanged from r235156, head/contrib/llvm/lib/Support/LocaleWindows.inc projects/nand/contrib/llvm/lib/Support/LocaleXlocale.inc - copied unchanged from r235156, head/contrib/llvm/lib/Support/LocaleXlocale.inc projects/nand/contrib/llvm/lib/Target/Mips/Disassembler/ - copied from r235156, head/contrib/llvm/lib/Target/Mips/Disassembler/ projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaStmtAttr.cpp - copied unchanged from r235156, head/contrib/llvm/tools/clang/lib/Sema/SemaStmtAttr.cpp projects/nand/lib/libedit/edit/readline/tilde.h - copied unchanged from r235156, head/lib/libedit/edit/readline/tilde.h projects/nand/lib/libstdbuf/ - copied from r235156, head/lib/libstdbuf/ projects/nand/sys/boot/i386/btx/lib/btxcsu.S - copied unchanged from r235156, head/sys/boot/i386/btx/lib/btxcsu.S projects/nand/sys/boot/i386/common/bootargs.h - copied unchanged from r235156, head/sys/boot/i386/common/bootargs.h projects/nand/sys/boot/sparc64/zfsboot/ - copied from r235156, head/sys/boot/sparc64/zfsboot/ projects/nand/sys/boot/sparc64/zfsloader/ - copied from r235156, head/sys/boot/sparc64/zfsloader/ projects/nand/sys/compat/linux/check_error.d - copied unchanged from r235156, head/sys/compat/linux/check_error.d projects/nand/sys/compat/linux/check_internal_locks.d - copied unchanged from r235156, head/sys/compat/linux/check_internal_locks.d projects/nand/sys/compat/linux/linux_dtrace.h - copied unchanged from r235156, head/sys/compat/linux/linux_dtrace.h projects/nand/sys/compat/linux/stats_timing.d - copied unchanged from r235156, head/sys/compat/linux/stats_timing.d projects/nand/sys/compat/linux/trace_futexes.d - copied unchanged from r235156, head/sys/compat/linux/trace_futexes.d projects/nand/sys/contrib/dev/acpica/compiler/aslsupport.l - copied unchanged from r235156, head/sys/contrib/dev/acpica/compiler/aslsupport.l projects/nand/sys/dev/etherswitch/ - copied from r235156, head/sys/dev/etherswitch/ projects/nand/sys/dev/gxemul/ - copied from r235156, head/sys/dev/gxemul/ projects/nand/sys/geom/raid/md_ddf.c - copied unchanged from r235156, head/sys/geom/raid/md_ddf.c projects/nand/sys/geom/raid/md_ddf.h - copied unchanged from r235156, head/sys/geom/raid/md_ddf.h projects/nand/sys/geom/raid/tr_raid5.c - copied unchanged from r235156, head/sys/geom/raid/tr_raid5.c projects/nand/sys/mips/atheros/ar71xx_fixup.c - copied unchanged from r235156, head/sys/mips/atheros/ar71xx_fixup.c projects/nand/sys/mips/atheros/ar71xx_fixup.h - copied unchanged from r235156, head/sys/mips/atheros/ar71xx_fixup.h projects/nand/sys/mips/conf/GXEMUL - copied unchanged from r235156, head/sys/mips/conf/GXEMUL projects/nand/sys/mips/conf/GXEMUL.hints - copied unchanged from r235156, head/sys/mips/conf/GXEMUL.hints projects/nand/sys/mips/gxemul/ - copied from r235156, head/sys/mips/gxemul/ projects/nand/tools/build/options/WITH_SHARED_TOOLCHAIN - copied unchanged from r235156, head/tools/build/options/WITH_SHARED_TOOLCHAIN projects/nand/tools/regression/usr.bin/m4/args.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/args.m4 projects/nand/tools/regression/usr.bin/m4/args2.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/args2.m4 projects/nand/tools/regression/usr.bin/m4/comments.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/comments.m4 projects/nand/tools/regression/usr.bin/m4/esyscmd.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/esyscmd.m4 projects/nand/tools/regression/usr.bin/m4/eval.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/eval.m4 projects/nand/tools/regression/usr.bin/m4/ff_after_dnl.m4.uu - copied unchanged from r235156, head/tools/regression/usr.bin/m4/ff_after_dnl.m4.uu projects/nand/tools/regression/usr.bin/m4/gnueval.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/gnueval.m4 projects/nand/tools/regression/usr.bin/m4/gnuformat.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/gnuformat.m4 projects/nand/tools/regression/usr.bin/m4/gnupatterns.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/gnupatterns.m4 projects/nand/tools/regression/usr.bin/m4/gnupatterns2.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/gnupatterns2.m4 projects/nand/tools/regression/usr.bin/m4/gnuprefix.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/gnuprefix.m4 projects/nand/tools/regression/usr.bin/m4/gnusofterror.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/gnusofterror.m4 projects/nand/tools/regression/usr.bin/m4/includes.aux - copied unchanged from r235156, head/tools/regression/usr.bin/m4/includes.aux projects/nand/tools/regression/usr.bin/m4/includes.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/includes.m4 projects/nand/tools/regression/usr.bin/m4/m4wrap3.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/m4wrap3.m4 projects/nand/tools/regression/usr.bin/m4/patterns.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/patterns.m4 projects/nand/tools/regression/usr.bin/m4/quotes.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/quotes.m4 projects/nand/tools/regression/usr.bin/m4/redef.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/redef.m4 projects/nand/tools/regression/usr.bin/m4/regress.args.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.args.out projects/nand/tools/regression/usr.bin/m4/regress.args2.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.args2.out projects/nand/tools/regression/usr.bin/m4/regress.comments.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.comments.out projects/nand/tools/regression/usr.bin/m4/regress.esyscmd.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.esyscmd.out projects/nand/tools/regression/usr.bin/m4/regress.eval.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.eval.out projects/nand/tools/regression/usr.bin/m4/regress.ff_after_dnl.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.ff_after_dnl.out projects/nand/tools/regression/usr.bin/m4/regress.gnueval.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.gnueval.out projects/nand/tools/regression/usr.bin/m4/regress.gnuformat.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.gnuformat.out projects/nand/tools/regression/usr.bin/m4/regress.gnupatterns.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.gnupatterns.out projects/nand/tools/regression/usr.bin/m4/regress.gnupatterns2.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.gnupatterns2.out projects/nand/tools/regression/usr.bin/m4/regress.gnuprefix.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.gnuprefix.out projects/nand/tools/regression/usr.bin/m4/regress.gnusofterror.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.gnusofterror.out projects/nand/tools/regression/usr.bin/m4/regress.gnutranslit2.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.gnutranslit2.out projects/nand/tools/regression/usr.bin/m4/regress.includes.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.includes.out projects/nand/tools/regression/usr.bin/m4/regress.m4wrap3.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.m4wrap3.out projects/nand/tools/regression/usr.bin/m4/regress.patterns.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.patterns.out projects/nand/tools/regression/usr.bin/m4/regress.quotes.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.quotes.out projects/nand/tools/regression/usr.bin/m4/regress.redef.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.redef.out projects/nand/tools/regression/usr.bin/m4/regress.strangequotes.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.strangequotes.out projects/nand/tools/regression/usr.bin/m4/regress.translit.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.translit.out projects/nand/tools/regression/usr.bin/m4/regress.translit2.out - copied unchanged from r235156, head/tools/regression/usr.bin/m4/regress.translit2.out projects/nand/tools/regression/usr.bin/m4/strangequotes.m4.uu - copied unchanged from r235156, head/tools/regression/usr.bin/m4/strangequotes.m4.uu projects/nand/tools/regression/usr.bin/m4/translit.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/translit.m4 projects/nand/tools/regression/usr.bin/m4/translit2.m4 - copied unchanged from r235156, head/tools/regression/usr.bin/m4/translit2.m4 projects/nand/tools/tools/ath/athsurvey/ - copied from r235156, head/tools/tools/ath/athsurvey/ projects/nand/usr.bin/stdbuf/ - copied from r235156, head/usr.bin/stdbuf/ projects/nand/usr.sbin/jail/command.c - copied unchanged from r235156, head/usr.sbin/jail/command.c projects/nand/usr.sbin/jail/config.c - copied unchanged from r235156, head/usr.sbin/jail/config.c projects/nand/usr.sbin/jail/jail.conf.5 - copied unchanged from r235156, head/usr.sbin/jail/jail.conf.5 projects/nand/usr.sbin/jail/jaillex.l - copied unchanged from r235156, head/usr.sbin/jail/jaillex.l projects/nand/usr.sbin/jail/jailp.h - copied unchanged from r235156, head/usr.sbin/jail/jailp.h projects/nand/usr.sbin/jail/jailparse.y - copied unchanged from r235156, head/usr.sbin/jail/jailparse.y projects/nand/usr.sbin/jail/state.c - copied unchanged from r235156, head/usr.sbin/jail/state.c projects/nand/usr.sbin/wpa/Makefile.crypto - copied unchanged from r235156, head/usr.sbin/wpa/Makefile.crypto Deleted: projects/nand/contrib/file/Magdir/alpha projects/nand/contrib/file/Magdir/psion projects/nand/contrib/file/patchlevel.h projects/nand/contrib/llvm/include/llvm/Support/JSONParser.h projects/nand/contrib/llvm/lib/Support/JSONParser.cpp projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonMCInst.h projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp projects/nand/contrib/llvm/tools/clang/include/clang/Basic/DelayedCleanupPool.h projects/nand/contrib/llvm/tools/clang/include/clang/Index/ projects/nand/contrib/llvm/tools/clang/lib/Index/ projects/nand/lib/clang/libclangindex/ projects/nand/lib/libmd/md2.copyright projects/nand/lib/libmd/md2.h projects/nand/lib/libmd/md2c.c projects/nand/sys/boot/i386/btx/lib/btxcsu.s projects/nand/sys/powerpc/powerpc/atomic.S projects/nand/tools/regression/usr.bin/m4/regress.changecom.in projects/nand/tools/regression/usr.bin/m4/regress.changecom.out projects/nand/tools/regression/usr.bin/m4/regress.gchangecom.out Modified: projects/nand/Makefile.inc1 projects/nand/ObsoleteFiles.inc projects/nand/cddl/compat/opensolaris/include/stdlib.h projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs.8 projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c projects/nand/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c projects/nand/contrib/binutils/ld/emultempl/ppc32elf.em projects/nand/contrib/file/ChangeLog projects/nand/contrib/file/Header projects/nand/contrib/file/INSTALL projects/nand/contrib/file/Magdir/acorn projects/nand/contrib/file/Magdir/adi projects/nand/contrib/file/Magdir/adventure projects/nand/contrib/file/Magdir/allegro projects/nand/contrib/file/Magdir/alliant projects/nand/contrib/file/Magdir/amanda projects/nand/contrib/file/Magdir/amigaos projects/nand/contrib/file/Magdir/animation projects/nand/contrib/file/Magdir/apl projects/nand/contrib/file/Magdir/apple projects/nand/contrib/file/Magdir/applix projects/nand/contrib/file/Magdir/archive projects/nand/contrib/file/Magdir/asterix projects/nand/contrib/file/Magdir/att3b projects/nand/contrib/file/Magdir/audio projects/nand/contrib/file/Magdir/basis projects/nand/contrib/file/Magdir/bflt projects/nand/contrib/file/Magdir/blender projects/nand/contrib/file/Magdir/blit projects/nand/contrib/file/Magdir/bout projects/nand/contrib/file/Magdir/bsdi projects/nand/contrib/file/Magdir/btsnoop projects/nand/contrib/file/Magdir/c-lang projects/nand/contrib/file/Magdir/c64 projects/nand/contrib/file/Magdir/cad projects/nand/contrib/file/Magdir/cafebabe projects/nand/contrib/file/Magdir/cddb projects/nand/contrib/file/Magdir/chord projects/nand/contrib/file/Magdir/cisco projects/nand/contrib/file/Magdir/citrus projects/nand/contrib/file/Magdir/clarion projects/nand/contrib/file/Magdir/claris projects/nand/contrib/file/Magdir/clipper projects/nand/contrib/file/Magdir/commands projects/nand/contrib/file/Magdir/communications projects/nand/contrib/file/Magdir/compress projects/nand/contrib/file/Magdir/console projects/nand/contrib/file/Magdir/convex projects/nand/contrib/file/Magdir/cracklib projects/nand/contrib/file/Magdir/ctags projects/nand/contrib/file/Magdir/dact projects/nand/contrib/file/Magdir/database projects/nand/contrib/file/Magdir/diamond projects/nand/contrib/file/Magdir/diff projects/nand/contrib/file/Magdir/digital projects/nand/contrib/file/Magdir/dolby projects/nand/contrib/file/Magdir/dump projects/nand/contrib/file/Magdir/dyadic projects/nand/contrib/file/Magdir/editors projects/nand/contrib/file/Magdir/efi projects/nand/contrib/file/Magdir/elf projects/nand/contrib/file/Magdir/encore projects/nand/contrib/file/Magdir/epoc projects/nand/contrib/file/Magdir/erlang projects/nand/contrib/file/Magdir/esri projects/nand/contrib/file/Magdir/fcs projects/nand/contrib/file/Magdir/filesystems projects/nand/contrib/file/Magdir/flash projects/nand/contrib/file/Magdir/fonts projects/nand/contrib/file/Magdir/fortran projects/nand/contrib/file/Magdir/frame projects/nand/contrib/file/Magdir/freebsd projects/nand/contrib/file/Magdir/fsav projects/nand/contrib/file/Magdir/games projects/nand/contrib/file/Magdir/gcc projects/nand/contrib/file/Magdir/geos projects/nand/contrib/file/Magdir/gimp projects/nand/contrib/file/Magdir/gnome-keyring projects/nand/contrib/file/Magdir/gnu projects/nand/contrib/file/Magdir/gnumeric projects/nand/contrib/file/Magdir/grace projects/nand/contrib/file/Magdir/graphviz projects/nand/contrib/file/Magdir/gringotts projects/nand/contrib/file/Magdir/hitachi-sh projects/nand/contrib/file/Magdir/hp projects/nand/contrib/file/Magdir/human68k projects/nand/contrib/file/Magdir/ibm370 projects/nand/contrib/file/Magdir/ibm6000 projects/nand/contrib/file/Magdir/iff projects/nand/contrib/file/Magdir/images projects/nand/contrib/file/Magdir/inform projects/nand/contrib/file/Magdir/intel projects/nand/contrib/file/Magdir/interleaf projects/nand/contrib/file/Magdir/island projects/nand/contrib/file/Magdir/ispell projects/nand/contrib/file/Magdir/java projects/nand/contrib/file/Magdir/jpeg projects/nand/contrib/file/Magdir/karma projects/nand/contrib/file/Magdir/kde projects/nand/contrib/file/Magdir/kml projects/nand/contrib/file/Magdir/lecter projects/nand/contrib/file/Magdir/lex projects/nand/contrib/file/Magdir/lif projects/nand/contrib/file/Magdir/linux projects/nand/contrib/file/Magdir/lisp projects/nand/contrib/file/Magdir/llvm projects/nand/contrib/file/Magdir/lua projects/nand/contrib/file/Magdir/luks projects/nand/contrib/file/Magdir/mach projects/nand/contrib/file/Magdir/macintosh projects/nand/contrib/file/Magdir/magic projects/nand/contrib/file/Magdir/mail.news projects/nand/contrib/file/Magdir/maple projects/nand/contrib/file/Magdir/mathcad projects/nand/contrib/file/Magdir/mathematica projects/nand/contrib/file/Magdir/matroska projects/nand/contrib/file/Magdir/mcrypt projects/nand/contrib/file/Magdir/mercurial projects/nand/contrib/file/Magdir/mime projects/nand/contrib/file/Magdir/mips projects/nand/contrib/file/Magdir/mirage projects/nand/contrib/file/Magdir/misctools projects/nand/contrib/file/Magdir/mkid projects/nand/contrib/file/Magdir/mlssa projects/nand/contrib/file/Magdir/mmdf projects/nand/contrib/file/Magdir/modem projects/nand/contrib/file/Magdir/motorola projects/nand/contrib/file/Magdir/mozilla projects/nand/contrib/file/Magdir/msdos projects/nand/contrib/file/Magdir/msvc projects/nand/contrib/file/Magdir/mup projects/nand/contrib/file/Magdir/natinst projects/nand/contrib/file/Magdir/ncr projects/nand/contrib/file/Magdir/netbsd projects/nand/contrib/file/Magdir/netscape projects/nand/contrib/file/Magdir/netware projects/nand/contrib/file/Magdir/news projects/nand/contrib/file/Magdir/nitpicker projects/nand/contrib/file/Magdir/ocaml projects/nand/contrib/file/Magdir/octave projects/nand/contrib/file/Magdir/ole2compounddocs projects/nand/contrib/file/Magdir/olf projects/nand/contrib/file/Magdir/os2 projects/nand/contrib/file/Magdir/os400 projects/nand/contrib/file/Magdir/os9 projects/nand/contrib/file/Magdir/osf1 projects/nand/contrib/file/Magdir/palm projects/nand/contrib/file/Magdir/parix projects/nand/contrib/file/Magdir/pbm projects/nand/contrib/file/Magdir/pdf projects/nand/contrib/file/Magdir/pdp projects/nand/contrib/file/Magdir/perl projects/nand/contrib/file/Magdir/pgp projects/nand/contrib/file/Magdir/pkgadd projects/nand/contrib/file/Magdir/plan9 projects/nand/contrib/file/Magdir/plus5 projects/nand/contrib/file/Magdir/printer projects/nand/contrib/file/Magdir/project projects/nand/contrib/file/Magdir/psdbms projects/nand/contrib/file/Magdir/pulsar projects/nand/contrib/file/Magdir/pyramid projects/nand/contrib/file/Magdir/python projects/nand/contrib/file/Magdir/revision projects/nand/contrib/file/Magdir/riff projects/nand/contrib/file/Magdir/rpm projects/nand/contrib/file/Magdir/rtf projects/nand/contrib/file/Magdir/ruby projects/nand/contrib/file/Magdir/sc projects/nand/contrib/file/Magdir/sccs projects/nand/contrib/file/Magdir/scientific projects/nand/contrib/file/Magdir/securitycerts projects/nand/contrib/file/Magdir/sendmail projects/nand/contrib/file/Magdir/sequent projects/nand/contrib/file/Magdir/sgi projects/nand/contrib/file/Magdir/sgml projects/nand/contrib/file/Magdir/sharc projects/nand/contrib/file/Magdir/sinclair projects/nand/contrib/file/Magdir/sketch projects/nand/contrib/file/Magdir/smalltalk projects/nand/contrib/file/Magdir/sniffer projects/nand/contrib/file/Magdir/softquad projects/nand/contrib/file/Magdir/spec projects/nand/contrib/file/Magdir/spectrum projects/nand/contrib/file/Magdir/sql projects/nand/contrib/file/Magdir/sun projects/nand/contrib/file/Magdir/sysex projects/nand/contrib/file/Magdir/teapot projects/nand/contrib/file/Magdir/terminfo projects/nand/contrib/file/Magdir/tex projects/nand/contrib/file/Magdir/tgif projects/nand/contrib/file/Magdir/ti-8x projects/nand/contrib/file/Magdir/timezone projects/nand/contrib/file/Magdir/troff projects/nand/contrib/file/Magdir/tuxedo projects/nand/contrib/file/Magdir/typeset projects/nand/contrib/file/Magdir/unicode projects/nand/contrib/file/Magdir/unknown projects/nand/contrib/file/Magdir/uuencode projects/nand/contrib/file/Magdir/varied.out projects/nand/contrib/file/Magdir/varied.script projects/nand/contrib/file/Magdir/vax projects/nand/contrib/file/Magdir/vicar projects/nand/contrib/file/Magdir/virtutech projects/nand/contrib/file/Magdir/visx projects/nand/contrib/file/Magdir/vms projects/nand/contrib/file/Magdir/vmware projects/nand/contrib/file/Magdir/vorbis projects/nand/contrib/file/Magdir/vxl projects/nand/contrib/file/Magdir/warc projects/nand/contrib/file/Magdir/weak projects/nand/contrib/file/Magdir/windows projects/nand/contrib/file/Magdir/wireless projects/nand/contrib/file/Magdir/wordprocessors projects/nand/contrib/file/Magdir/xdelta projects/nand/contrib/file/Magdir/xenix projects/nand/contrib/file/Magdir/xilinx projects/nand/contrib/file/Magdir/xo65 projects/nand/contrib/file/Magdir/xwindows projects/nand/contrib/file/Magdir/zilog projects/nand/contrib/file/Magdir/zyxel projects/nand/contrib/file/Makefile.am projects/nand/contrib/file/Makefile.am-src projects/nand/contrib/file/Makefile.in projects/nand/contrib/file/README projects/nand/contrib/file/TODO projects/nand/contrib/file/acinclude.m4 projects/nand/contrib/file/aclocal.m4 projects/nand/contrib/file/apprentice.c projects/nand/contrib/file/apptype.c projects/nand/contrib/file/ascmagic.c projects/nand/contrib/file/asprintf.c projects/nand/contrib/file/cdf.c projects/nand/contrib/file/cdf.h projects/nand/contrib/file/cdf_time.c projects/nand/contrib/file/compile projects/nand/contrib/file/compress.c projects/nand/contrib/file/config.h.in projects/nand/contrib/file/configure projects/nand/contrib/file/configure.ac projects/nand/contrib/file/elfclass.h projects/nand/contrib/file/encoding.c projects/nand/contrib/file/file.c projects/nand/contrib/file/file.h projects/nand/contrib/file/file.man projects/nand/contrib/file/file_opts.h projects/nand/contrib/file/fsmagic.c projects/nand/contrib/file/funcs.c projects/nand/contrib/file/install-sh projects/nand/contrib/file/is_tar.c projects/nand/contrib/file/libmagic.man projects/nand/contrib/file/magic.c projects/nand/contrib/file/magic.h projects/nand/contrib/file/magic.man projects/nand/contrib/file/print.c projects/nand/contrib/file/readcdf.c projects/nand/contrib/file/readelf.c projects/nand/contrib/file/readelf.h projects/nand/contrib/file/softmagic.c projects/nand/contrib/file/tar.h projects/nand/contrib/file/tests/Makefile.am projects/nand/contrib/file/tests/Makefile.in projects/nand/contrib/file/vasprintf.c projects/nand/contrib/gcc/config/mips/mips.c projects/nand/contrib/jemalloc/ChangeLog projects/nand/contrib/jemalloc/FREEBSD-diffs projects/nand/contrib/jemalloc/FREEBSD-upgrade projects/nand/contrib/jemalloc/VERSION projects/nand/contrib/jemalloc/doc/jemalloc.3 projects/nand/contrib/jemalloc/include/jemalloc/internal/arena.h projects/nand/contrib/jemalloc/include/jemalloc/internal/chunk.h projects/nand/contrib/jemalloc/include/jemalloc/internal/chunk_mmap.h projects/nand/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal.h projects/nand/contrib/jemalloc/include/jemalloc/internal/private_namespace.h projects/nand/contrib/jemalloc/include/jemalloc/internal/prof.h projects/nand/contrib/jemalloc/include/jemalloc/internal/tcache.h projects/nand/contrib/jemalloc/include/jemalloc/internal/tsd.h projects/nand/contrib/jemalloc/include/jemalloc/jemalloc.h projects/nand/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h projects/nand/contrib/jemalloc/include/jemalloc/jemalloc_defs.h projects/nand/contrib/jemalloc/src/arena.c projects/nand/contrib/jemalloc/src/chunk.c projects/nand/contrib/jemalloc/src/chunk_dss.c projects/nand/contrib/jemalloc/src/chunk_mmap.c projects/nand/contrib/jemalloc/src/ctl.c projects/nand/contrib/jemalloc/src/huge.c projects/nand/contrib/jemalloc/src/jemalloc.c projects/nand/contrib/jemalloc/src/prof.c projects/nand/contrib/jemalloc/src/quarantine.c projects/nand/contrib/jemalloc/src/stats.c projects/nand/contrib/jemalloc/src/tcache.c projects/nand/contrib/jemalloc/src/tsd.c projects/nand/contrib/jemalloc/src/util.c projects/nand/contrib/libc++/include/__config projects/nand/contrib/libc++/include/__tuple projects/nand/contrib/libc++/include/algorithm projects/nand/contrib/libc++/include/atomic projects/nand/contrib/libc++/include/cmath projects/nand/contrib/libc++/include/limits projects/nand/contrib/libc++/include/memory projects/nand/contrib/libc++/include/random projects/nand/contrib/libc++/include/system_error projects/nand/contrib/libc++/include/tuple projects/nand/contrib/libc++/include/type_traits projects/nand/contrib/libc++/include/utility projects/nand/contrib/libc++/src/iostream.cpp projects/nand/contrib/libc++/src/stdexcept.cpp projects/nand/contrib/libc++/src/utility.cpp projects/nand/contrib/llvm/include/llvm-c/lto.h projects/nand/contrib/llvm/include/llvm/ADT/SmallPtrSet.h projects/nand/contrib/llvm/include/llvm/ADT/StringMap.h projects/nand/contrib/llvm/include/llvm/CodeGen/DFAPacketizer.h projects/nand/contrib/llvm/include/llvm/CodeGen/Passes.h projects/nand/contrib/llvm/include/llvm/CodeGen/ScheduleDAGInstrs.h projects/nand/contrib/llvm/include/llvm/CodeGen/SlotIndexes.h projects/nand/contrib/llvm/include/llvm/IntrinsicsX86.td projects/nand/contrib/llvm/include/llvm/LLVMContext.h projects/nand/contrib/llvm/include/llvm/MC/MCParser/AsmLexer.h projects/nand/contrib/llvm/include/llvm/MC/MCParser/MCAsmLexer.h projects/nand/contrib/llvm/include/llvm/Object/ELF.h projects/nand/contrib/llvm/include/llvm/Operator.h projects/nand/contrib/llvm/include/llvm/Support/IRBuilder.h projects/nand/contrib/llvm/include/llvm/Support/Process.h projects/nand/contrib/llvm/include/llvm/Support/SourceMgr.h projects/nand/contrib/llvm/include/llvm/Support/YAMLParser.h projects/nand/contrib/llvm/include/llvm/Support/raw_ostream.h projects/nand/contrib/llvm/include/llvm/TableGen/Error.h projects/nand/contrib/llvm/include/llvm/TableGen/Record.h projects/nand/contrib/llvm/include/llvm/Target/TargetLibraryInfo.h projects/nand/contrib/llvm/include/llvm/Target/TargetRegisterInfo.h projects/nand/contrib/llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h projects/nand/contrib/llvm/include/llvm/Transforms/Vectorize.h projects/nand/contrib/llvm/lib/Analysis/ConstantFolding.cpp projects/nand/contrib/llvm/lib/Analysis/ScalarEvolution.cpp projects/nand/contrib/llvm/lib/Analysis/ValueTracking.cpp projects/nand/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfAccelTable.cpp projects/nand/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfAccelTable.h projects/nand/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp projects/nand/contrib/llvm/lib/CodeGen/DFAPacketizer.cpp projects/nand/contrib/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp projects/nand/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp projects/nand/contrib/llvm/lib/CodeGen/MachineBlockPlacement.cpp projects/nand/contrib/llvm/lib/CodeGen/Passes.cpp projects/nand/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp projects/nand/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp projects/nand/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp projects/nand/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp projects/nand/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp projects/nand/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp projects/nand/contrib/llvm/lib/CodeGen/SlotIndexes.cpp projects/nand/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp projects/nand/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp projects/nand/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h projects/nand/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h projects/nand/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp projects/nand/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.h projects/nand/contrib/llvm/lib/MC/MCParser/AsmParser.cpp projects/nand/contrib/llvm/lib/Object/ELFObjectFile.cpp projects/nand/contrib/llvm/lib/Support/SmallPtrSet.cpp projects/nand/contrib/llvm/lib/Support/SourceMgr.cpp projects/nand/contrib/llvm/lib/Support/Unix/Process.inc projects/nand/contrib/llvm/lib/Support/Windows/Process.inc projects/nand/contrib/llvm/lib/Support/YAMLParser.cpp projects/nand/contrib/llvm/lib/Support/raw_ostream.cpp projects/nand/contrib/llvm/lib/TableGen/Error.cpp projects/nand/contrib/llvm/lib/Target/ARM/ARMCallingConv.td projects/nand/contrib/llvm/lib/Target/ARM/ARMInstrFormats.td projects/nand/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td projects/nand/contrib/llvm/lib/Target/ARM/ARMInstrNEON.td projects/nand/contrib/llvm/lib/Target/ARM/ARMTargetMachine.cpp projects/nand/contrib/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp projects/nand/contrib/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp projects/nand/contrib/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp projects/nand/contrib/llvm/lib/Target/CellSPU/SPUCallingConv.td projects/nand/contrib/llvm/lib/Target/CellSPU/SPUTargetMachine.cpp projects/nand/contrib/llvm/lib/Target/Hexagon/Hexagon.h projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormats.td projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormatsV4.td projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.h projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.td projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfoV3.td projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonSchedule.td projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonScheduleV4.td projects/nand/contrib/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp projects/nand/contrib/llvm/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.cpp projects/nand/contrib/llvm/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.h projects/nand/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h projects/nand/contrib/llvm/lib/Target/MBlaze/MBlazeCallingConv.td projects/nand/contrib/llvm/lib/Target/MBlaze/MBlazeTargetMachine.cpp projects/nand/contrib/llvm/lib/Target/MSP430/MSP430TargetMachine.cpp projects/nand/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp projects/nand/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp projects/nand/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp projects/nand/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td projects/nand/contrib/llvm/lib/Target/Mips/MipsCondMov.td projects/nand/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp projects/nand/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td projects/nand/contrib/llvm/lib/Target/Mips/MipsInstrFormats.td projects/nand/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td projects/nand/contrib/llvm/lib/Target/Mips/MipsTargetMachine.cpp projects/nand/contrib/llvm/lib/Target/PTX/PTXTargetMachine.cpp projects/nand/contrib/llvm/lib/Target/PowerPC/PPCCallingConv.td projects/nand/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp projects/nand/contrib/llvm/lib/Target/Sparc/SparcTargetMachine.cpp projects/nand/contrib/llvm/lib/Target/TargetLibraryInfo.cpp projects/nand/contrib/llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp projects/nand/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/nand/contrib/llvm/lib/Target/X86/X86ISelLowering.h projects/nand/contrib/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td projects/nand/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp projects/nand/contrib/llvm/lib/Target/X86/X86InstrSSE.td projects/nand/contrib/llvm/lib/Target/X86/X86Subtarget.cpp projects/nand/contrib/llvm/lib/Target/X86/X86TargetMachine.cpp projects/nand/contrib/llvm/lib/Target/XCore/XCoreTargetMachine.cpp projects/nand/contrib/llvm/lib/Transforms/IPO/Internalize.cpp projects/nand/contrib/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp projects/nand/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp projects/nand/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp projects/nand/contrib/llvm/lib/Transforms/Scalar/ObjCARC.cpp projects/nand/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp projects/nand/contrib/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp projects/nand/contrib/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp projects/nand/contrib/llvm/lib/Transforms/Vectorize/BBVectorize.cpp projects/nand/contrib/llvm/lib/VMCore/AutoUpgrade.cpp projects/nand/contrib/llvm/lib/VMCore/Instructions.cpp projects/nand/contrib/llvm/lib/VMCore/LLVMContext.cpp projects/nand/contrib/llvm/lib/VMCore/Module.cpp projects/nand/contrib/llvm/lib/VMCore/Verifier.cpp projects/nand/contrib/llvm/tools/clang/include/clang/AST/Decl.h projects/nand/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h projects/nand/contrib/llvm/tools/clang/include/clang/AST/DeclLookups.h projects/nand/contrib/llvm/tools/clang/include/clang/AST/Expr.h projects/nand/contrib/llvm/tools/clang/include/clang/AST/ExternalASTSource.h projects/nand/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h projects/nand/contrib/llvm/tools/clang/include/clang/AST/Stmt.h projects/nand/contrib/llvm/tools/clang/include/clang/AST/Type.h projects/nand/contrib/llvm/tools/clang/include/clang/AST/VTableBuilder.h projects/nand/contrib/llvm/tools/clang/include/clang/Analysis/ProgramPoint.h projects/nand/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def projects/nand/contrib/llvm/tools/clang/include/clang/Basic/ConvertUTF.h projects/nand/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td projects/nand/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td projects/nand/contrib/llvm/tools/clang/include/clang/Basic/ExceptionSpecificationType.h projects/nand/contrib/llvm/tools/clang/include/clang/Basic/OnDiskHashTable.h projects/nand/contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td projects/nand/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h projects/nand/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def projects/nand/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td projects/nand/contrib/llvm/tools/clang/include/clang/Driver/Compilation.h projects/nand/contrib/llvm/tools/clang/include/clang/Frontend/ASTUnit.h projects/nand/contrib/llvm/tools/clang/include/clang/Frontend/FrontendActions.h projects/nand/contrib/llvm/tools/clang/include/clang/Frontend/FrontendOptions.h projects/nand/contrib/llvm/tools/clang/include/clang/Frontend/TextDiagnostic.h projects/nand/contrib/llvm/tools/clang/include/clang/Parse/Parser.h projects/nand/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h projects/nand/contrib/llvm/tools/clang/include/clang/Sema/ParsedTemplate.h projects/nand/contrib/llvm/tools/clang/include/clang/Sema/Scope.h projects/nand/contrib/llvm/tools/clang/include/clang/Sema/Sema.h projects/nand/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes.h projects/nand/contrib/llvm/tools/clang/include/clang/Serialization/ASTReader.h projects/nand/contrib/llvm/tools/clang/include/clang/Serialization/ASTWriter.h projects/nand/contrib/llvm/tools/clang/include/clang/Serialization/Module.h projects/nand/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h projects/nand/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h projects/nand/contrib/llvm/tools/clang/include/clang/Tooling/CompilationDatabase.h projects/nand/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp projects/nand/contrib/llvm/tools/clang/lib/AST/Decl.cpp projects/nand/contrib/llvm/tools/clang/lib/AST/Expr.cpp projects/nand/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp projects/nand/contrib/llvm/tools/clang/lib/AST/ExternalASTSource.cpp projects/nand/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp projects/nand/contrib/llvm/tools/clang/lib/AST/Stmt.cpp projects/nand/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp projects/nand/contrib/llvm/tools/clang/lib/AST/StmtProfile.cpp projects/nand/contrib/llvm/tools/clang/lib/AST/Type.cpp projects/nand/contrib/llvm/tools/clang/lib/AST/VTableBuilder.cpp projects/nand/contrib/llvm/tools/clang/lib/Analysis/CFG.cpp projects/nand/contrib/llvm/tools/clang/lib/Basic/TargetInfo.cpp projects/nand/contrib/llvm/tools/clang/lib/Basic/Targets.cpp projects/nand/contrib/llvm/tools/clang/lib/Basic/Version.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CGExprAgg.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CGExprCXX.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CGExprConstant.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTBAA.cpp projects/nand/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTBAA.h projects/nand/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp projects/nand/contrib/llvm/tools/clang/lib/Driver/Compilation.cpp projects/nand/contrib/llvm/tools/clang/lib/Driver/Driver.cpp projects/nand/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp projects/nand/contrib/llvm/tools/clang/lib/Driver/Tools.cpp projects/nand/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp projects/nand/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp projects/nand/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp projects/nand/contrib/llvm/tools/clang/lib/Frontend/FrontendActions.cpp projects/nand/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp projects/nand/contrib/llvm/tools/clang/lib/Frontend/TextDiagnostic.cpp projects/nand/contrib/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp projects/nand/contrib/llvm/tools/clang/lib/Headers/avx2intrin.h projects/nand/contrib/llvm/tools/clang/lib/Headers/avxintrin.h projects/nand/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp projects/nand/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp projects/nand/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp projects/nand/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp projects/nand/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp projects/nand/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp projects/nand/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp projects/nand/contrib/llvm/tools/clang/lib/Parse/Parser.cpp projects/nand/contrib/llvm/tools/clang/lib/Rewrite/RewriteModernObjC.cpp projects/nand/contrib/llvm/tools/clang/lib/Rewrite/RewriteRope.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/Sema.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaAccess.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaExceptionSpec.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaExprMember.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaPseudoObject.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp projects/nand/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h projects/nand/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp projects/nand/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp projects/nand/contrib/llvm/tools/clang/lib/Serialization/ASTReaderInternals.h projects/nand/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp projects/nand/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp projects/nand/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp projects/nand/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp projects/nand/contrib/llvm/tools/clang/lib/Serialization/Module.cpp projects/nand/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp projects/nand/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/AnalysisManager.cpp projects/nand/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp projects/nand/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp projects/nand/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp projects/nand/contrib/llvm/tools/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp projects/nand/contrib/llvm/tools/clang/lib/Tooling/CompilationDatabase.cpp projects/nand/contrib/llvm/tools/llc/llc.cpp projects/nand/contrib/llvm/tools/lli/lli.cpp projects/nand/contrib/llvm/tools/llvm-mc/Disassembler.cpp projects/nand/contrib/llvm/tools/llvm-mc/Disassembler.h projects/nand/contrib/llvm/tools/llvm-mc/llvm-mc.cpp projects/nand/contrib/llvm/tools/llvm-stress/llvm-stress.cpp projects/nand/contrib/llvm/tools/opt/opt.cpp projects/nand/contrib/llvm/utils/TableGen/AsmMatcherEmitter.cpp projects/nand/contrib/llvm/utils/TableGen/AsmWriterEmitter.cpp projects/nand/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.cpp projects/nand/contrib/llvm/utils/TableGen/CodeGenRegisters.cpp projects/nand/contrib/llvm/utils/TableGen/EDEmitter.cpp projects/nand/contrib/llvm/utils/TableGen/RegisterInfoEmitter.cpp projects/nand/contrib/netcat/FREEBSD-vendor projects/nand/contrib/netcat/nc.1 projects/nand/contrib/netcat/netcat.c projects/nand/contrib/openpam/lib/openpam_configure.c projects/nand/contrib/traceroute/traceroute.c projects/nand/crypto/openssl/crypto/asn1/a_d2i_fp.c projects/nand/crypto/openssl/crypto/buffer/buffer.c projects/nand/crypto/openssl/crypto/mem.c projects/nand/crypto/openssl/crypto/pkcs7/pk7_doit.c projects/nand/crypto/openssl/crypto/x509v3/pcy_map.c projects/nand/crypto/openssl/crypto/x509v3/pcy_tree.c projects/nand/crypto/openssl/ssl/s3_enc.c projects/nand/crypto/openssl/ssl/s3_srvr.c projects/nand/crypto/openssl/ssl/ssl.h projects/nand/crypto/openssl/ssl/ssl3.h projects/nand/crypto/openssl/ssl/ssl_err.c projects/nand/etc/defaults/rc.conf projects/nand/etc/periodic/daily/420.status-network projects/nand/etc/rc.d/accounting projects/nand/etc/rc.d/kfd projects/nand/gnu/lib/csu/Makefile projects/nand/gnu/lib/libgcc/Makefile projects/nand/gnu/usr.bin/binutils/ar/Makefile projects/nand/gnu/usr.bin/binutils/as/Makefile projects/nand/gnu/usr.bin/binutils/ld/Makefile projects/nand/gnu/usr.bin/binutils/ranlib/Makefile projects/nand/gnu/usr.bin/cc/cc/Makefile projects/nand/gnu/usr.bin/cc/cc1/Makefile projects/nand/gnu/usr.bin/cc/cc1plus/Makefile projects/nand/gnu/usr.bin/gdb/kgdb/trgt_powerpc.c projects/nand/include/setjmp.h projects/nand/include/stdatomic.h projects/nand/include/unistd.h projects/nand/include/xlocale/_ctype.h projects/nand/lib/Makefile projects/nand/lib/clang/Makefile projects/nand/lib/clang/clang.build.mk projects/nand/lib/clang/include/Makefile projects/nand/lib/clang/include/clang/Basic/Version.inc projects/nand/lib/clang/include/clang/Config/config.h projects/nand/lib/clang/include/llvm/Config/config.h projects/nand/lib/clang/libclangsema/Makefile projects/nand/lib/clang/libllvmruntimedyld/Makefile projects/nand/lib/clang/libllvmsupport/Makefile projects/nand/lib/csu/amd64/Makefile projects/nand/lib/csu/arm/Makefile projects/nand/lib/csu/i386-elf/Makefile projects/nand/lib/csu/ia64/Makefile projects/nand/lib/csu/mips/Makefile projects/nand/lib/csu/powerpc/Makefile projects/nand/lib/csu/powerpc64/Makefile projects/nand/lib/libc/compat-43/sigpause.2 projects/nand/lib/libc/gen/err.3 projects/nand/lib/libc/gen/tls.c projects/nand/lib/libc/gmon/gmon.c projects/nand/lib/libc/gmon/moncontrol.3 projects/nand/lib/libc/include/libc_private.h projects/nand/lib/libc/locale/Symbol.map projects/nand/lib/libc/net/Symbol.map projects/nand/lib/libc/net/sctp_sys_calls.c projects/nand/lib/libc/rpc/auth_unix.c projects/nand/lib/libc/rpc/svc.c projects/nand/lib/libc/rpc/svc_raw.c projects/nand/lib/libc/stdio/fclose.c projects/nand/lib/libc/stdio/fgetwc.c projects/nand/lib/libc/stdio/findfp.c projects/nand/lib/libc/stdio/fputws.c projects/nand/lib/libc/stdio/local.h projects/nand/lib/libc/stdio/printf.3 projects/nand/lib/libc/stdio/setbuf.3 projects/nand/lib/libc/stdio/snprintf.c projects/nand/lib/libc/stdio/vfprintf.c projects/nand/lib/libc/stdio/vfscanf.c projects/nand/lib/libc/stdio/vfwprintf.c projects/nand/lib/libc/stdio/vfwscanf.c projects/nand/lib/libc/stdio/vsnprintf.c projects/nand/lib/libc/stdio/vswprintf.c projects/nand/lib/libc/sys/ffclock.2 projects/nand/lib/libc/sys/jail.2 projects/nand/lib/libc/sys/ktrace.2 projects/nand/lib/libc/sys/msgsnd.2 projects/nand/lib/libc/sys/pathconf.2 projects/nand/lib/libc/sys/pdfork.2 projects/nand/lib/libc/sys/read.2 projects/nand/lib/libc/sys/rtprio.2 projects/nand/lib/libc/sys/setfib.2 projects/nand/lib/libc/sys/shm_open.2 projects/nand/lib/libc/sys/sigqueue.2 projects/nand/lib/libc/sys/timer_create.2 projects/nand/lib/libc/sys/timer_delete.2 projects/nand/lib/libc/sys/timer_settime.2 projects/nand/lib/libc/sys/unlink.2 projects/nand/lib/libedit/edit/readline/Makefile projects/nand/lib/libfetch/common.c projects/nand/lib/libfetch/http.c projects/nand/lib/libmagic/Makefile projects/nand/lib/libmagic/config.h projects/nand/lib/libmd/Makefile projects/nand/lib/libmd/mdX.3 projects/nand/lib/libthr/thread/thr_init.c projects/nand/lib/libthr/thread/thr_private.h projects/nand/lib/libthr/thread/thr_sleepq.c projects/nand/lib/libulog/ulog_login.c projects/nand/lib/libusb/Makefile projects/nand/lib/libusb/libusb.3 projects/nand/lib/libusb/libusb.h projects/nand/lib/libusb/libusb10.c projects/nand/lib/libusb/libusb10_desc.c projects/nand/lib/libusb/libusb10_io.c projects/nand/lib/libusb/libusb20.c projects/nand/lib/libusb/libusb20_desc.c projects/nand/lib/libusb/libusb20_ugen20.c projects/nand/lib/msun/src/s_fabsl.c projects/nand/libexec/rtld-elf/amd64/reloc.c projects/nand/libexec/rtld-elf/arm/reloc.c projects/nand/libexec/rtld-elf/i386/reloc.c projects/nand/libexec/rtld-elf/ia64/reloc.c projects/nand/libexec/rtld-elf/libmap.c projects/nand/libexec/rtld-elf/powerpc/reloc.c projects/nand/libexec/rtld-elf/powerpc64/reloc.c projects/nand/libexec/rtld-elf/rtld.c projects/nand/libexec/rtld-elf/rtld.h projects/nand/libexec/rtld-elf/sparc64/reloc.c projects/nand/libexec/ulog-helper/ulog-helper.c projects/nand/release/picobsd/build/picobsd projects/nand/sbin/geom/class/eli/geli.8 projects/nand/sbin/geom/class/part/geom_part.c projects/nand/sbin/geom/class/raid/geom_raid.c projects/nand/sbin/geom/class/raid/graid.8 projects/nand/sbin/growfs/Makefile projects/nand/sbin/growfs/growfs.8 projects/nand/sbin/growfs/growfs.c projects/nand/sbin/ifconfig/ifconfig.8 projects/nand/sbin/ifconfig/ifieee80211.c projects/nand/share/man/man4/acpi.4 projects/nand/share/man/man4/carp.4 projects/nand/share/man/man4/cxgbe.4 projects/nand/share/man/man4/iscsi_initiator.4 projects/nand/share/man/man5/libmap.conf.5 projects/nand/share/man/man5/make.conf.5 projects/nand/share/man/man5/rc.conf.5 projects/nand/share/man/man5/src.conf.5 projects/nand/share/man/man5/tmpfs.5 projects/nand/share/man/man7/development.7 projects/nand/share/man/man9/Makefile projects/nand/share/man/man9/swi.9 projects/nand/share/misc/bsd-family-tree projects/nand/share/misc/committers-doc.dot projects/nand/share/misc/committers-src.dot projects/nand/share/mk/bsd.README projects/nand/share/mk/bsd.lib.mk projects/nand/share/mk/bsd.own.mk projects/nand/share/mk/sys.mk projects/nand/share/skel/dot.cshrc projects/nand/sys/amd64/amd64/machdep.c projects/nand/sys/amd64/conf/GENERIC projects/nand/sys/amd64/include/intr_machdep.h projects/nand/sys/amd64/include/pcb.h projects/nand/sys/amd64/include/vmparam.h projects/nand/sys/amd64/linux32/linux.h projects/nand/sys/amd64/linux32/linux32_dummy.c projects/nand/sys/arm/arm/busdma_machdep.c projects/nand/sys/arm/arm/elf_trampoline.c projects/nand/sys/arm/arm/identcpu.c projects/nand/sys/arm/at91/at91_mci.c projects/nand/sys/arm/at91/at91_mcireg.h projects/nand/sys/arm/at91/at91sam9g20reg.h projects/nand/sys/arm/at91/board_sam9g20ek.c projects/nand/sys/arm/at91/uart_dev_at91usart.c projects/nand/sys/arm/include/param.h projects/nand/sys/arm/include/pcb.h projects/nand/sys/boot/arm/uboot/start.S projects/nand/sys/boot/common/bootstrap.h projects/nand/sys/boot/efi/Makefile.inc projects/nand/sys/boot/i386/btx/btx/Makefile projects/nand/sys/boot/i386/btx/btx/btx.S projects/nand/sys/boot/i386/btx/btxldr/Makefile projects/nand/sys/boot/i386/btx/btxldr/btxldr.S projects/nand/sys/boot/i386/btx/lib/Makefile projects/nand/sys/boot/i386/efi/Makefile projects/nand/sys/boot/i386/efi/reloc.c projects/nand/sys/boot/i386/libi386/biosdisk.c projects/nand/sys/boot/i386/libi386/libi386.h projects/nand/sys/boot/i386/loader/Makefile projects/nand/sys/boot/i386/loader/main.c projects/nand/sys/boot/i386/zfsboot/zfsboot.c projects/nand/sys/boot/ofw/libofw/devicename.c projects/nand/sys/boot/pc98/libpc98/biosdisk.c projects/nand/sys/boot/sparc64/Makefile projects/nand/sys/boot/sparc64/boot1/Makefile projects/nand/sys/boot/sparc64/boot1/boot1.c projects/nand/sys/boot/sparc64/loader/Makefile projects/nand/sys/boot/sparc64/loader/main.c projects/nand/sys/boot/uboot/common/metadata.c projects/nand/sys/boot/uboot/lib/devicename.c projects/nand/sys/boot/uboot/lib/disk.c projects/nand/sys/boot/uboot/lib/libuboot.h projects/nand/sys/boot/zfs/zfs.c projects/nand/sys/cam/scsi/scsi_da.c projects/nand/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/nand/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/nand/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/nand/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c projects/nand/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h projects/nand/sys/compat/linux/linux_emul.c projects/nand/sys/compat/linux/linux_emul.h projects/nand/sys/compat/linux/linux_fork.c projects/nand/sys/compat/linux/linux_futex.c projects/nand/sys/compat/linux/linux_mib.c projects/nand/sys/compat/linux/linux_misc.c projects/nand/sys/compat/linux/linux_sysctl.c projects/nand/sys/compat/linux/linux_time.c projects/nand/sys/compat/linux/linux_uid16.c projects/nand/sys/compat/linux/linux_util.c projects/nand/sys/compat/linux/linux_util.h projects/nand/sys/conf/files projects/nand/sys/conf/files.powerpc projects/nand/sys/conf/kmod.mk projects/nand/sys/conf/options.mips projects/nand/sys/contrib/dev/acpica/acpica_prep.sh projects/nand/sys/contrib/dev/acpica/changes.txt (contents, props changed) projects/nand/sys/contrib/dev/acpica/compiler/aslcompile.c projects/nand/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/nand/sys/contrib/dev/acpica/compiler/aslcompiler.l projects/nand/sys/contrib/dev/acpica/compiler/aslcompiler.y projects/nand/sys/contrib/dev/acpica/compiler/aslerror.c projects/nand/sys/contrib/dev/acpica/compiler/aslfiles.c projects/nand/sys/contrib/dev/acpica/compiler/aslglobal.h projects/nand/sys/contrib/dev/acpica/compiler/aslmain.c projects/nand/sys/contrib/dev/acpica/compiler/aslmap.c projects/nand/sys/contrib/dev/acpica/compiler/aslrestype1.c projects/nand/sys/contrib/dev/acpica/compiler/aslstartup.c projects/nand/sys/contrib/dev/acpica/compiler/dtio.c projects/nand/sys/contrib/dev/acpica/compiler/preprocess.h projects/nand/sys/contrib/dev/acpica/compiler/prscan.c projects/nand/sys/contrib/dev/acpica/compiler/prutils.c projects/nand/sys/contrib/dev/acpica/components/debugger/dbcmds.c projects/nand/sys/contrib/dev/acpica/components/debugger/dbdisply.c projects/nand/sys/contrib/dev/acpica/components/debugger/dbstats.c projects/nand/sys/contrib/dev/acpica/components/debugger/dbutils.c projects/nand/sys/contrib/dev/acpica/components/events/evmisc.c projects/nand/sys/contrib/dev/acpica/components/events/evxface.c projects/nand/sys/contrib/dev/acpica/components/executer/exdump.c projects/nand/sys/contrib/dev/acpica/components/hardware/hwesleep.c projects/nand/sys/contrib/dev/acpica/components/utilities/utdelete.c projects/nand/sys/contrib/dev/acpica/components/utilities/utglobal.c projects/nand/sys/contrib/dev/acpica/components/utilities/uttrack.c projects/nand/sys/contrib/dev/acpica/include/acglobal.h projects/nand/sys/contrib/dev/acpica/include/aclocal.h projects/nand/sys/contrib/dev/acpica/include/acobject.h projects/nand/sys/contrib/dev/acpica/include/acpixf.h projects/nand/sys/contrib/dev/acpica/include/actypes.h projects/nand/sys/contrib/rdma/rdma_cma.c projects/nand/sys/dev/acpica/acpi.c projects/nand/sys/dev/amr/amr.c projects/nand/sys/dev/asr/asr.c projects/nand/sys/dev/ath/ah_osdep.c projects/nand/sys/dev/ath/ah_osdep.h projects/nand/sys/dev/ath/ath_hal/ah.h projects/nand/sys/dev/ath/ath_hal/ah_eeprom_v4k.c projects/nand/sys/dev/ath/ath_hal/ar5210/ar5210.h projects/nand/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c projects/nand/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c projects/nand/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c projects/nand/sys/dev/ath/ath_hal/ar5211/ar5211.h projects/nand/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c projects/nand/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c projects/nand/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c projects/nand/sys/dev/ath/ath_hal/ar5212/ar5212.h projects/nand/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c projects/nand/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c projects/nand/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c projects/nand/sys/dev/ath/ath_hal/ar5312/ar5312_reset.c projects/nand/sys/dev/ath/ath_hal/ar5416/ar5416.h projects/nand/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c projects/nand/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c projects/nand/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c projects/nand/sys/dev/ath/ath_hal/ar5416/ar5416_recv.c projects/nand/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c projects/nand/sys/dev/ath/ath_hal/ar5416/ar5416phy.h projects/nand/sys/dev/ath/ath_hal/ar5416/ar5416reg.h projects/nand/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c projects/nand/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c projects/nand/sys/dev/ath/if_ath.c projects/nand/sys/dev/ath/if_ath_tx.c projects/nand/sys/dev/ath/if_athvar.h projects/nand/sys/dev/bce/if_bce.c projects/nand/sys/dev/bce/if_bcereg.h projects/nand/sys/dev/cxgbe/t4_main.c projects/nand/sys/dev/cxgbe/t4_sge.c projects/nand/sys/dev/dpt/dpt.h projects/nand/sys/dev/e1000/if_igb.h projects/nand/sys/dev/hwpmc/hwpmc_core.c projects/nand/sys/dev/hwpmc/hwpmc_mips.c projects/nand/sys/dev/hwpmc/hwpmc_powerpc.c projects/nand/sys/dev/isci/scil/sati_inquiry.c projects/nand/sys/dev/ixgbe/ixgbe.h projects/nand/sys/dev/mfi/mfi.c projects/nand/sys/dev/mfi/mfi_debug.c projects/nand/sys/dev/mfi/mfi_disk.c projects/nand/sys/dev/mfi/mfi_tbolt.c projects/nand/sys/dev/mfi/mfireg.h projects/nand/sys/dev/mfi/mfivar.h projects/nand/sys/dev/mmc/mmc.c projects/nand/sys/dev/mmc/mmcbrvar.h projects/nand/sys/dev/mmc/mmcreg.h projects/nand/sys/dev/mmc/mmcsd.c projects/nand/sys/dev/mmc/mmcvar.h projects/nand/sys/dev/msk/if_msk.c projects/nand/sys/dev/netmap/netmap.c projects/nand/sys/dev/nxge/if_nxge.c projects/nand/sys/dev/qlxgb/qla_os.c projects/nand/sys/dev/re/if_re.c projects/nand/sys/dev/sound/pcm/sndstat.c projects/nand/sys/dev/tsec/if_tsec.c projects/nand/sys/dev/usb/controller/ehci.c projects/nand/sys/dev/usb/controller/xhci.c projects/nand/sys/dev/usb/serial/u3g.c projects/nand/sys/dev/usb/usb_controller.h projects/nand/sys/dev/usb/usb_hub.c projects/nand/sys/dev/usb/usb_hub.h projects/nand/sys/dev/usb/usb_transfer.c projects/nand/sys/dev/usb/usbdevs projects/nand/sys/fs/cd9660/cd9660_node.c projects/nand/sys/fs/ext2fs/ext2_inode.c projects/nand/sys/fs/hpfs/hpfs_vnops.c projects/nand/sys/fs/msdosfs/denode.h projects/nand/sys/fs/msdosfs/msdosfs_denode.c projects/nand/sys/fs/msdosfs/msdosfs_lookup.c projects/nand/sys/fs/msdosfs/msdosfs_vfsops.c projects/nand/sys/fs/msdosfs/msdosfs_vnops.c projects/nand/sys/fs/nfsclient/nfs_clbio.c projects/nand/sys/fs/nfsclient/nfs_clvnops.c projects/nand/sys/fs/nfsserver/nfs_nfsdport.c projects/nand/sys/fs/nullfs/null_vnops.c projects/nand/sys/fs/smbfs/smbfs_node.c projects/nand/sys/fs/tmpfs/tmpfs_vnops.c projects/nand/sys/fs/unionfs/union_subr.c projects/nand/sys/fs/unionfs/union_vfsops.c projects/nand/sys/fs/unionfs/union_vnops.c projects/nand/sys/geom/multipath/g_multipath.c projects/nand/sys/geom/raid/g_raid.c projects/nand/sys/geom/raid/g_raid.h projects/nand/sys/geom/raid/g_raid_ctl.c projects/nand/sys/geom/raid/g_raid_md_if.m projects/nand/sys/geom/raid/md_intel.c projects/nand/sys/geom/raid/md_jmicron.c projects/nand/sys/geom/raid/md_nvidia.c projects/nand/sys/geom/raid/md_promise.c projects/nand/sys/geom/raid/md_sii.c projects/nand/sys/geom/raid/tr_raid1.c projects/nand/sys/geom/raid/tr_raid1e.c projects/nand/sys/gnu/fs/reiserfs/reiserfs_inode.c projects/nand/sys/i386/conf/GENERIC projects/nand/sys/i386/i386/machdep.c projects/nand/sys/i386/include/intr_machdep.h projects/nand/sys/i386/include/pcb.h projects/nand/sys/i386/linux/linux.h projects/nand/sys/i386/linux/linux_dummy.c projects/nand/sys/ia64/ia64/nexus.c projects/nand/sys/ia64/include/pcb.h projects/nand/sys/kern/kern_acct.c projects/nand/sys/kern/kern_condvar.c projects/nand/sys/kern/kern_ktrace.c projects/nand/sys/kern/kern_proc.c projects/nand/sys/kern/kern_synch.c projects/nand/sys/kern/kern_timeout.c projects/nand/sys/kern/subr_trap.c projects/nand/sys/kern/uipc_mqueue.c projects/nand/sys/kern/vfs_mount.c projects/nand/sys/kern/vfs_subr.c projects/nand/sys/kern/vfs_syscalls.c projects/nand/sys/mips/atheros/ar71xx_chip.c projects/nand/sys/mips/atheros/ar71xx_chip.h projects/nand/sys/mips/atheros/ar71xx_cpudef.h projects/nand/sys/mips/atheros/ar71xx_gpio.c projects/nand/sys/mips/atheros/ar71xx_pci.c projects/nand/sys/mips/atheros/ar71xxreg.h projects/nand/sys/mips/atheros/ar724x_chip.c projects/nand/sys/mips/atheros/ar724x_pci.c projects/nand/sys/mips/atheros/ar91xx_chip.c projects/nand/sys/mips/atheros/files.ar71xx projects/nand/sys/mips/atheros/if_arge.c projects/nand/sys/mips/atheros/if_argevar.h projects/nand/sys/mips/conf/AP96 projects/nand/sys/mips/conf/AP96.hints projects/nand/sys/mips/conf/TP-WN1043ND.hints projects/nand/sys/mips/include/pcb.h projects/nand/sys/mips/mips/bus_space_generic.c projects/nand/sys/mips/mips/nexus.c projects/nand/sys/modules/geom/geom_raid/Makefile projects/nand/sys/modules/iscsi/initiator/Makefile projects/nand/sys/modules/linux/Makefile projects/nand/sys/modules/mmcsd/Makefile projects/nand/sys/modules/mwl/Makefile projects/nand/sys/net/bridgestp.c projects/nand/sys/net/bridgestp.h projects/nand/sys/net/if.c projects/nand/sys/net/if_bridge.c projects/nand/sys/net/if_lagg.c projects/nand/sys/net/rtsock.c projects/nand/sys/net80211/ieee80211.h projects/nand/sys/net80211/ieee80211_action.c projects/nand/sys/net80211/ieee80211_ddb.c projects/nand/sys/net80211/ieee80211_hwmp.c projects/nand/sys/net80211/ieee80211_input.c projects/nand/sys/net80211/ieee80211_ioctl.h projects/nand/sys/net80211/ieee80211_mesh.c projects/nand/sys/net80211/ieee80211_mesh.h projects/nand/sys/net80211/ieee80211_output.c projects/nand/sys/netgraph/ng_patch.c projects/nand/sys/netinet/ip.h projects/nand/sys/netinet/sctp.h projects/nand/sys/netinet/sctp_auth.c projects/nand/sys/netinet/sctp_bsd_addr.c projects/nand/sys/netinet/sctp_cc_functions.c projects/nand/sys/netinet/sctp_constants.h projects/nand/sys/netinet/sctp_crc32.c projects/nand/sys/netinet/sctp_header.h projects/nand/sys/netinet/sctp_indata.c projects/nand/sys/netinet/sctp_input.c projects/nand/sys/netinet/sctp_os_bsd.h projects/nand/sys/netinet/sctp_output.c projects/nand/sys/netinet/sctp_pcb.c projects/nand/sys/netinet/sctp_uio.h projects/nand/sys/netinet/sctp_usrreq.c projects/nand/sys/netinet/sctp_var.h projects/nand/sys/netinet/sctputil.c projects/nand/sys/nfsclient/nfs_bio.c projects/nand/sys/nfsclient/nfs_vfsops.c projects/nand/sys/ofed/drivers/net/mlx4/en_netdev.c projects/nand/sys/pc98/pc98/machdep.c projects/nand/sys/powerpc/aim/mmu_oea64.c projects/nand/sys/powerpc/aim/moea64_native.c projects/nand/sys/powerpc/aim/slb.c projects/nand/sys/powerpc/aim/swtch32.S projects/nand/sys/powerpc/aim/swtch64.S projects/nand/sys/powerpc/include/atomic.h projects/nand/sys/powerpc/include/cpu.h projects/nand/sys/powerpc/include/cpufunc.h projects/nand/sys/powerpc/include/pio.h projects/nand/sys/powerpc/include/profile.h projects/nand/sys/powerpc/include/ucontext.h projects/nand/sys/powerpc/mpc85xx/mpc85xx.c projects/nand/sys/powerpc/powerpc/bus_machdep.c projects/nand/sys/security/mac_mls/mac_mls.c projects/nand/sys/sparc64/include/intr_machdep.h projects/nand/sys/sparc64/include/pcb.h projects/nand/sys/sparc64/sparc64/intr_machdep.c projects/nand/sys/sparc64/sparc64/machdep.c projects/nand/sys/sys/callout.h projects/nand/sys/sys/cdefs.h projects/nand/sys/sys/elf_common.h projects/nand/sys/sys/ktrace.h projects/nand/sys/sys/mount.h projects/nand/sys/sys/param.h projects/nand/sys/sys/proc.h projects/nand/sys/sys/systm.h projects/nand/sys/sys/ucontext.h projects/nand/sys/sys/vnode.h projects/nand/sys/ufs/ffs/ffs_extern.h projects/nand/sys/ufs/ffs/ffs_inode.c projects/nand/sys/ufs/ffs/ffs_snapshot.c projects/nand/sys/ufs/ffs/ffs_softdep.c projects/nand/sys/ufs/ffs/ffs_vfsops.c projects/nand/sys/ufs/ffs/ffs_vnops.c projects/nand/sys/ufs/ufs/quota.h projects/nand/sys/ufs/ufs/ufs_extattr.c projects/nand/sys/ufs/ufs/ufs_inode.c projects/nand/sys/ufs/ufs/ufs_lookup.c projects/nand/sys/ufs/ufs/ufs_quota.c projects/nand/sys/ufs/ufs/ufs_vnops.c projects/nand/sys/ufs/ufs/ufsmount.h projects/nand/sys/vm/vm_mmap.c projects/nand/sys/vm/vm_page.c projects/nand/sys/x86/x86/intr_machdep.c projects/nand/tools/regression/usr.bin/m4/Makefile projects/nand/tools/regression/usr.bin/m4/regress.sh projects/nand/tools/tools/ath/Makefile projects/nand/tools/tools/netmap/README projects/nand/tools/tools/netmap/pcap.c projects/nand/tools/tools/netmap/pkt-gen.c projects/nand/tools/tools/netrate/netsend/netsend.c projects/nand/tools/tools/zfsboottest/zfsboottest.sh projects/nand/usr.bin/Makefile projects/nand/usr.bin/ar/Makefile projects/nand/usr.bin/calendar/calendars/calendar.freebsd projects/nand/usr.bin/clang/clang/Makefile projects/nand/usr.bin/file/Makefile projects/nand/usr.bin/kdump/kdump.1 projects/nand/usr.bin/kdump/kdump.c projects/nand/usr.bin/m4/parser.y projects/nand/usr.bin/make/Makefile projects/nand/usr.bin/rctl/rctl.8 projects/nand/usr.bin/stat/stat.1 projects/nand/usr.sbin/acpi/iasl/Makefile projects/nand/usr.sbin/cron/crontab/crontab.5 projects/nand/usr.sbin/jail/Makefile projects/nand/usr.sbin/jail/jail.8 projects/nand/usr.sbin/jail/jail.c projects/nand/usr.sbin/lpr/lpc/cmds.c projects/nand/usr.sbin/pc-sysinstall/backend/functions-bsdlabel.sh projects/nand/usr.sbin/pc-sysinstall/backend/functions-disk.sh projects/nand/usr.sbin/pc-sysinstall/backend/functions-networking.sh projects/nand/usr.sbin/pc-sysinstall/backend/functions-newfs.sh projects/nand/usr.sbin/pc-sysinstall/backend/functions-parse.sh projects/nand/usr.sbin/pc-sysinstall/backend/functions.sh projects/nand/usr.sbin/pkg/pkg.c projects/nand/usr.sbin/traceroute6/traceroute6.c projects/nand/usr.sbin/usbdump/usbdump.8 projects/nand/usr.sbin/usbdump/usbdump.c projects/nand/usr.sbin/wpa/Makefile.inc projects/nand/usr.sbin/wpa/hostapd/Makefile projects/nand/usr.sbin/wpa/hostapd/hostapd.conf.5 projects/nand/usr.sbin/wpa/wpa_supplicant/Makefile Directory Properties: projects/nand/ (props changed) projects/nand/MAINTAINERS (props changed) projects/nand/cddl/contrib/opensolaris/ (props changed) projects/nand/contrib/bind9/ (props changed) projects/nand/contrib/binutils/ (props changed) projects/nand/contrib/bzip2/ (props changed) projects/nand/contrib/com_err/ (props changed) projects/nand/contrib/compiler-rt/ (props changed) projects/nand/contrib/dialog/ (props changed) projects/nand/contrib/ee/ (props changed) projects/nand/contrib/expat/ (props changed) projects/nand/contrib/file/ (props changed) projects/nand/contrib/gcc/ (props changed) projects/nand/contrib/gdb/ (props changed) projects/nand/contrib/gdtoa/ (props changed) projects/nand/contrib/gnu-sort/ (props changed) projects/nand/contrib/groff/ (props changed) projects/nand/contrib/less/ (props changed) projects/nand/contrib/libarchive/ (props changed) projects/nand/contrib/libarchive/cpio/ (props changed) projects/nand/contrib/libarchive/libarchive/ (props changed) projects/nand/contrib/libarchive/libarchive_fe/ (props changed) projects/nand/contrib/libarchive/tar/ (props changed) projects/nand/contrib/libc++/ (props changed) projects/nand/contrib/libcxxrt/ (props changed) projects/nand/contrib/libpcap/ (props changed) projects/nand/contrib/libstdc++/ (props changed) projects/nand/contrib/llvm/ (props changed) projects/nand/contrib/llvm/tools/clang/ (props changed) projects/nand/contrib/ncurses/ (props changed) projects/nand/contrib/netcat/ (props changed) projects/nand/contrib/ntp/ (props changed) projects/nand/contrib/one-true-awk/ (props changed) projects/nand/contrib/openbsm/ (props changed) projects/nand/contrib/openpam/ (props changed) projects/nand/contrib/openresolv/ (props changed) projects/nand/contrib/pf/ (props changed) projects/nand/contrib/sendmail/ (props changed) projects/nand/contrib/tcpdump/ (props changed) projects/nand/contrib/tcsh/ (props changed) projects/nand/contrib/tnftp/ (props changed) projects/nand/contrib/top/ (props changed) projects/nand/contrib/top/install-sh (props changed) projects/nand/contrib/tzcode/stdtime/ (props changed) projects/nand/contrib/tzcode/zic/ (props changed) projects/nand/contrib/tzdata/ (props changed) projects/nand/contrib/wpa/ (props changed) projects/nand/contrib/xz/ (props changed) projects/nand/crypto/heimdal/ (props changed) projects/nand/crypto/openssh/ (props changed) projects/nand/crypto/openssl/ (props changed) projects/nand/gnu/lib/ (props changed) projects/nand/gnu/usr.bin/binutils/ (props changed) projects/nand/gnu/usr.bin/cc/cc_tools/ (props changed) projects/nand/gnu/usr.bin/gdb/ (props changed) projects/nand/lib/libc/ (props changed) projects/nand/lib/libc/stdtime/ (props changed) projects/nand/lib/libutil/ (props changed) projects/nand/lib/libz/ (props changed) projects/nand/sbin/ (props changed) projects/nand/sbin/ipfw/ (props changed) projects/nand/share/man/man4/ (props changed) projects/nand/share/mk/bsd.arch.inc.mk (props changed) projects/nand/share/zoneinfo/ (props changed) projects/nand/sys/ (props changed) projects/nand/sys/amd64/include/xen/ (props changed) projects/nand/sys/boot/ (props changed) projects/nand/sys/boot/i386/efi/ (props changed) projects/nand/sys/boot/ia64/efi/ (props changed) projects/nand/sys/boot/ia64/ski/ (props changed) projects/nand/sys/boot/powerpc/boot1.chrp/ (props changed) projects/nand/sys/boot/powerpc/ofw/ (props changed) projects/nand/sys/cddl/contrib/opensolaris/ (props changed) projects/nand/sys/conf/ (props changed) projects/nand/sys/contrib/dev/acpica/ (props changed) projects/nand/sys/contrib/dev/acpica/common/ (props changed) projects/nand/sys/contrib/dev/acpica/compiler/ (props changed) projects/nand/sys/contrib/dev/acpica/components/debugger/ (props changed) projects/nand/sys/contrib/dev/acpica/components/disassembler/ (props changed) projects/nand/sys/contrib/dev/acpica/components/dispatcher/ (props changed) projects/nand/sys/contrib/dev/acpica/components/events/ (props changed) projects/nand/sys/contrib/dev/acpica/components/executer/ (props changed) projects/nand/sys/contrib/dev/acpica/components/hardware/ (props changed) projects/nand/sys/contrib/dev/acpica/components/namespace/ (props changed) projects/nand/sys/contrib/dev/acpica/components/parser/ (props changed) projects/nand/sys/contrib/dev/acpica/components/resources/ (props changed) projects/nand/sys/contrib/dev/acpica/components/tables/ (props changed) projects/nand/sys/contrib/dev/acpica/components/utilities/ (props changed) projects/nand/sys/contrib/dev/acpica/include/ (props changed) projects/nand/sys/contrib/dev/acpica/os_specific/ (props changed) projects/nand/sys/contrib/octeon-sdk/ (props changed) projects/nand/sys/contrib/pf/ (props changed) projects/nand/sys/contrib/x86emu/ (props changed) projects/nand/sys/i386/conf/XENHVM (props changed) projects/nand/usr.bin/calendar/ (props changed) projects/nand/usr.bin/csup/ (props changed) projects/nand/usr.bin/procstat/ (props changed) projects/nand/usr.sbin/jail/ (props changed) projects/nand/usr.sbin/ndiscvt/ (props changed) projects/nand/usr.sbin/rtadvctl/ (props changed) projects/nand/usr.sbin/rtadvd/ (props changed) projects/nand/usr.sbin/rtsold/ (props changed) projects/nand/usr.sbin/zic/ (props changed) Modified: projects/nand/Makefile.inc1 ============================================================================== --- projects/nand/Makefile.inc1 Wed May 9 08:23:24 2012 (r235158) +++ projects/nand/Makefile.inc1 Wed May 9 08:46:43 2012 (r235159) @@ -265,6 +265,7 @@ XMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE # world stage WMAKEENV= ${CROSSENV} \ _SHLIBDIRPREFIX=${WORLDTMP} \ + _LDSCRIPTROOT= \ VERSION="${VERSION}" \ INSTALL="sh ${.CURDIR}/tools/install.sh" \ PATH=${TMPPATH} @@ -307,6 +308,7 @@ LIB32FLAGS= -m32 ${LIB32CPUFLAGS} -DCOMP # Yes, the flags are redundant. LIB32WMAKEENV+= MAKEOBJDIRPREFIX=${OBJTREE}/lib32 \ _SHLIBDIRPREFIX=${LIB32TMP} \ + _LDSCRIPTROOT=${LIB32TMP} \ VERSION="${VERSION}" \ INSTALL="sh ${.CURDIR}/tools/install.sh" \ PATH=${TMPPATH} \ @@ -319,11 +321,11 @@ LIB32WMAKE= ${LIB32WMAKEENV} ${MAKE} -DN -DWITHOUT_BIND -DWITHOUT_MAN -DWITHOUT_INFO \ -DWITHOUT_HTML -DNO_CTF -DNO_LINT -ECC -ECXX -EAS -ELD \ DESTDIR=${LIB32TMP} -LIB32IMAKE= ${LIB32WMAKE:NINSTALL=*:NDESTDIR=*} -DNO_INCS +LIB32IMAKE= ${LIB32WMAKE:NINSTALL=*:NDESTDIR=*:N_LDSCRIPTROOT=*} -DNO_INCS .endif # install stage -IMAKEENV= ${CROSSENV} +IMAKEENV= ${CROSSENV:N_LDSCRIPTROOT=*} IMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1 .if empty(.MAKEFLAGS:M-n) IMAKEENV+= PATH=${STRICTTMPPATH}:${INSTALLTMP} \ @@ -1649,8 +1651,8 @@ _xi-mtree: mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ -p ${XDDESTDIR}/usr/include >/dev/null -.ORDER: _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links -xdev-install: _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links +.ORDER: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links +xdev-install: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links _xi-cross-tools: @echo "_xi-cross-tools" Modified: projects/nand/ObsoleteFiles.inc ============================================================================== --- projects/nand/ObsoleteFiles.inc Wed May 9 08:23:24 2012 (r235158) +++ projects/nand/ObsoleteFiles.inc Wed May 9 08:46:43 2012 (r235159) @@ -38,6 +38,11 @@ # xargs -n1 | sort | uniq -d; # done +# 20120505: new clang import installed a redundant internal header +OLD_FILES+=usr/include/clang/3.1/stdalign.h +# 20120425: libusb version bump (r234684) +OLD_LIBS+=usr/lib/libusb.so.2 +OLD_LIBS+=usr/lib32/libusb.so.2 # 20120415: new clang import which bumps version from 3.0 to 3.1 OLD_FILES+=usr/include/clang/3.0/altivec.h OLD_FILES+=usr/include/clang/3.0/avxintrin.h @@ -459,7 +464,7 @@ OLD_FILES+=usr/share/man/man5/lastlog.5. OLD_FILES+=usr/share/man/man5/utmp.5.gz OLD_FILES+=usr/share/man/man5/wtmp.5.gz OLD_LIBS+=lib/libutil.so.8 -OLB_LIBS+=usr/lib32/libutil.so.8 +OLD_LIBS+=usr/lib32/libutil.so.8 # 20100105: new userland semaphore implementation OLD_FILES+=usr/include/sys/semaphore.h # 20100103: ntptrace(8) removed @@ -579,6 +584,7 @@ OLD_LIBS+=lib/libipx.so.4 OLD_LIBS+=lib/libkiconv.so.3 OLD_LIBS+=lib/libkvm.so.4 OLD_LIBS+=lib/libmd.so.4 +OLD_LIBS+=lib/libmd.so.5 OLD_LIBS+=lib/libncurses.so.7 OLD_LIBS+=lib/libncursesw.so.7 OLD_LIBS+=lib/libnvpair.so.1 Modified: projects/nand/cddl/compat/opensolaris/include/stdlib.h ============================================================================== --- projects/nand/cddl/compat/opensolaris/include/stdlib.h Wed May 9 08:23:24 2012 (r235158) +++ projects/nand/cddl/compat/opensolaris/include/stdlib.h Wed May 9 08:46:43 2012 (r235159) @@ -27,11 +27,11 @@ * */ +#include_next + #ifndef _COMPAT_OPENSOLARIS_STDLIB_H_ #define _COMPAT_OPENSOLARIS_STDLIB_H_ -#include_next - #define getexecname getprogname #endif Modified: projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs.8 ============================================================================== --- projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Wed May 9 08:23:24 2012 (r235158) +++ projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Wed May 9 08:46:43 2012 (r235159) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 26, 2012 +.Dd April 22, 2012 .Dt ZFS 8 .Os .Sh NAME @@ -35,7 +35,7 @@ .Op Fl \&? .Nm .Cm create -.Op Fl p +.Op Fl pu .Op Fl o Ar property Ns = Ns Ar value .Ar ... filesystem .Nm @@ -833,7 +833,7 @@ disables integrity checking on user data a recommended practice. .It Sy compression Ns = Ns Cm on | off | lzjb | gzip | gzip- Ns Ar N | Cm zle Controls the compression algorithm used for this dataset. The -.CM lzjb +.Cm lzjb compression algorithm is optimized for performance while providing decent data compression. Setting compression to .Cm on @@ -1275,11 +1275,11 @@ for legacy mounts or the command for normal file systems, its mount options are set according to its properties. The correlation between properties and mount options is as follows: .Bl -column -offset 4n "PROPERTY" "MOUNT OPTION" -.It PROPERTY MOUNT OPTION -.It atime atime/noatime -.It exec exec/noexec -.It readonly ro/rw -.It setuid suid/nosuid +.It "PROPERTY MOUNT OPTION" +.It "atime atime/noatime" +.It "exec exec/noexec" +.It "readonly ro/rw" +.It "setuid suid/nosuid" .El .Pp In addition, these options can be set on a per-mount basis using the @@ -1354,7 +1354,7 @@ Displays a help message. .It Xo .Nm .Cm create -.Op Fl p +.Op Fl pu .Op Fl o Ar property Ns = Ns Ar value .Ar ... filesystem .Xc @@ -1374,6 +1374,8 @@ line using the .Fl o option is ignored. If the target filesystem already exists, the operation completes successfully. +.It Fl u +Newly created file system is not mounted. .It Fl o Ar property Ns = Ns Ar value Sets the specified property as if the command .Qq Nm Cm set Ar property Ns = Ns Ar value Modified: projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c ============================================================================== --- projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Wed May 9 08:23:24 2012 (r235158) +++ projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Wed May 9 08:46:43 2012 (r235159) @@ -217,7 +217,7 @@ get_usage(zfs_help_t idx) return (gettext("\tclone [-p] [-o property=value] ... " " \n")); case HELP_CREATE: - return (gettext("\tcreate [-p] [-o property=value] ... " + return (gettext("\tcreate [-pu] [-o property=value] ... " "\n" "\tcreate [-ps] [-b blocksize] [-o property=value] ... " "-V \n")); @@ -681,7 +681,7 @@ usage: } /* - * zfs create [-p] [-o prop=value] ... fs + * zfs create [-pu] [-o prop=value] ... fs * zfs create [-ps] [-b blocksize] [-o prop=value] ... -V vol size * * Create a new dataset. This command can be used to create filesystems @@ -694,6 +694,8 @@ usage: * SPA_VERSION_REFRESERVATION, we set a refreservation instead. * * The '-p' flag creates all the non-existing ancestors of the target first. + * + * The '-u' flag prevents mounting of newly created file system. */ static int zfs_do_create(int argc, char **argv) @@ -705,6 +707,7 @@ zfs_do_create(int argc, char **argv) boolean_t noreserve = B_FALSE; boolean_t bflag = B_FALSE; boolean_t parents = B_FALSE; + boolean_t nomount = B_FALSE; int ret = 1; nvlist_t *props; uint64_t intval; @@ -714,7 +717,7 @@ zfs_do_create(int argc, char **argv) nomem(); /* check options */ - while ((c = getopt(argc, argv, ":V:b:so:p")) != -1) { + while ((c = getopt(argc, argv, ":V:b:so:pu")) != -1) { switch (c) { case 'V': type = ZFS_TYPE_VOLUME; @@ -754,6 +757,9 @@ zfs_do_create(int argc, char **argv) case 's': noreserve = B_TRUE; break; + case 'u': + nomount = B_TRUE; + break; case ':': (void) fprintf(stderr, gettext("missing size " "argument\n")); @@ -771,6 +777,11 @@ zfs_do_create(int argc, char **argv) "used when creating a volume\n")); goto badusage; } + if (nomount && type != ZFS_TYPE_FILESYSTEM) { + (void) fprintf(stderr, gettext("'-u' can only be " + "used when creating a file system\n")); + goto badusage; + } argc -= optind; argv += optind; @@ -853,7 +864,7 @@ zfs_do_create(int argc, char **argv) * verbose error message to let the user know that their filesystem was * in fact created, even if we failed to mount or share it. */ - if (canmount == ZFS_CANMOUNT_ON) { + if (!nomount && canmount == ZFS_CANMOUNT_ON) { if (zfs_mount(zhp, NULL, 0) != 0) { (void) fprintf(stderr, gettext("filesystem " "successfully created, but not mounted\n")); Modified: projects/nand/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c ============================================================================== --- projects/nand/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Wed May 9 08:23:24 2012 (r235158) +++ projects/nand/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Wed May 9 08:46:43 2012 (r235159) @@ -497,6 +497,12 @@ static const dt_ident_t _dtrace_globals[ { "zonename", DT_IDENT_SCALAR, 0, DIF_VAR_ZONENAME, DT_ATTR_STABCMN, DT_VERS_1_0, &dt_idops_type, "string" }, #endif + +#if !defined(sun) +{ "cpu", DT_IDENT_SCALAR, 0, DIF_VAR_CPU, + DT_ATTR_STABCMN, DT_VERS_1_6_3, &dt_idops_type, "int" }, +#endif + { NULL, 0, 0, 0, { 0, 0, 0 }, 0, NULL, NULL } }; Modified: projects/nand/contrib/binutils/ld/emultempl/ppc32elf.em ============================================================================== --- projects/nand/contrib/binutils/ld/emultempl/ppc32elf.em Wed May 9 08:23:24 2012 (r235158) +++ projects/nand/contrib/binutils/ld/emultempl/ppc32elf.em Wed May 9 08:46:43 2012 (r235159) @@ -119,7 +119,40 @@ ppc_before_allocation (void) } } } + gld${EMULATION_NAME}_before_allocation (); + + /* Turn on relaxation if executable sections have addresses that + might make branches overflow. */ + if (!command_line.relax) + { + bfd_vma low = (bfd_vma) -1; + bfd_vma high = 0; + asection *o; + + /* Run lang_size_sections (if not already done). */ + if (expld.phase != lang_mark_phase_enum) + { + expld.phase = lang_mark_phase_enum; + expld.dataseg.phase = exp_dataseg_none; + one_lang_size_sections_pass (NULL, FALSE); + lang_reset_memory_regions (); + } + + for (o = output_bfd->sections; o != NULL; o = o->next) + { + if ((o->flags & (SEC_ALLOC | SEC_CODE)) != (SEC_ALLOC | SEC_CODE)) + continue; + if (o->rawsize == 0) + continue; + if (low > o->vma) + low = o->vma; + if (high < o->vma + o->rawsize - 1) + high = o->vma + o->rawsize - 1; + } + if (high > low && high - low > (1 << 25) - 1) + command_line.relax = TRUE; + } } EOF Modified: projects/nand/contrib/file/ChangeLog ============================================================================== --- projects/nand/contrib/file/ChangeLog Wed May 9 08:23:24 2012 (r235158) +++ projects/nand/contrib/file/ChangeLog Wed May 9 08:46:43 2012 (r235159) @@ -1,3 +1,309 @@ +2012-02-20 17:33 Christos Zoulas + + * Fix CDF parsing issues found by CERT's fuzzing tool (Will Dormann) + +2011-12-15 12:17 Chris Metcalf + + * Support Tilera architectures (tile64, tilepro, tilegx). + +2011-12-16 16:33 Reuben Thomas + + * Add magic for /usr/bin/env Perl scripts + * Weaken generic script magic to avoid clashing with + language-specific magic. + +2011-12-08 13:37 Reuben Thomas + + * Simplify if (p) free(p) to free(p). + +2011-12-08 13:07 Reuben Thomas + + * Remove hardwired token finding (names.h), turning it into soft + magic. Patterns are either anchored regexs or search/8192. English + language detection and PL/1 detection have been removed as they + were too fragile. -e tokens is still accepted for backwards + compatibility. + * Move 3ds patterns (which are commented out anyway) into autodesk + (they were, oddly, in c-lang). + +2011-12-06 00:16 Reuben Thomas + + * Tweak strength of generic hash-bang detectors to be less than + specific ones. + * Make an inconsistent description of Python scripts consistent. + +2011-12-05 23:58 Reuben Thomas + + * Fix minor error in file(1). + +2011-11-05 00:00 Reuben Thomas + + * Fix issue #150 (I hope). + +2011-09-22 12:57 Christos Zoulas + + * Python3 binding fixes from Kelly Anderson + +2011-09-20 11:32 Christos Zoulas + + * If a string type magic entry is marked as text or binary + only match text files against text entries and binary + files against binary entries. + +2011-09-01 12:12 Christos Zoulas + + * Don't wait for any subprocess, just the one we forked. + +2011-08-26 16:40 Christos Zoulas + + * If the application name is not set in a cdf file, try to see + if it has a directory with the application name on it. + +2011-08-17 14:32 Christos Zoulas + + * Fix ELF lseek(2) madness. Inspired by PR/134 by Jan Kaluza + +2011-08-14 09:03 Christos Zoulas + + * Don't use variable string formats. + +2011-07-12 12:32 Reuben Thomas + + * Fix detection of Zip files (Mantis #128). + * Make some minor improvements to file(1). + * Rename MIME types for filesystem objects for consistency with + xdg-utils. Typically this means that application/x-foo becomes + inode/foo, but some names also change slightly, e.g. + application/x-character-device becomes inode/chardevice. + +2011-05-10 20:57 Christos Zoulas + + * fix mingw compilation (Abradoks) + +2011-05-10 20:57 Christos Zoulas + + * remove patchlevel.h + * Fix read past allocated memory caused by double-incrementing + a pointer in a loop (reported by Roberto Maar) + +2011-03-30 15:45 Christos Zoulas + + * Fix cdf string buffer setting (Sven Anders) + +2011-03-20 16:35 Christos Zoulas + + * Eliminate MAXPATHLEN and use dynamic allocation for + path and file buffers. + +2011-03-15 18:15 Christos Zoulas + + * binary tests on magic entries with masks could spuriously + get converted to ascii. + +2011-03-12 18:06 Reuben Thomas + + * Improve file.man (remove BUGS, present email addresses consistently). + +2011-03-07 19:38 Christos Zoulas + + * add lrzip support (from Ville Skytta) + +2011-02-10 16:36 Christos Zoulas + + * fix CDF bounds checking (Guy Helmer) + +2011-02-10 12:03 Christos Zoulas + + * add cdf_ctime() that prints a meaningful error when time cannot + be converted. + +2011-02-02 20:40 Christos Zoulas + + * help and version output to stdout. + + * When matching softmagic for ascii files, don't just print + the softmagic classification, keep going and print the + text classification too. This fixes broken troff files when + we moved them from keyword recognition to softmagic + (they stopped printing "with CRLF" etc.) + Reported by Doug McIlroy. + +2011-01-16 19:31 Reuben Thomas + + * Fix two potential buffer overruns in apprentice_list. + +2011-01-14 22:33 Reuben Thomas + + * New Python binding in pure Python. + * Update libmagic(3). + +2011-01-06 21:40 Reuben Thomas + + * Fix Python bindings (including recent Python 3 compatibility + update). + +2011-01-04 18:43 Reuben Thomas + + * magic/Makefile.am: make it easier to recover from magic build failures. + * Fix pstring length specifier parsing to avoid generating invalid + magic files. + * Add pstring length "J" (for "JPEG") to specify that the length + include itself. + * Fix JPEG comment parsing at last using pstring/HJ! + * Ignore section 5 man pages in doc/.cvsignore. + +2010-12-22 13:12 Christos Zoulas + + * Add pstring/BHhLl to specify the type of the length of pascal + strings. + +2010-11-26 18:39 Reuben Thomas + + * Fix "-e soft": it was ignored when softmagic was called + during asciimagic. + * Improve comments and use "unsigned char" in tar.h/is_tar.c. + +2010-11-05 17:26 Reuben Thomas + + * Make bug reporting addresses more visible. + +2010-11-01 18:35 Reuben Thomas + + * Add tcl magic from Gustaf Neumann + +2010-10-24 10:42 Christos Zoulas + + * Fix the whitespace comparing code (Christopher Chittleborough) + +2010-10-06 21:05 Christos Zoulas + + * allow string/t to work (Jan Kaluza) + +2010-09-20 22:11 Reuben Thomas + + * Apply some patches from Ubuntu and Fedora. + +2010-09-20 21:16 Reuben Thomas + + * Apply all patches from Debian package 5.04-6 which have not + already been applied and are not Debian-specific. + +2010-09-20 15:24 Reuben Thomas + + * Minor security fix to softmagic.c (don't use untrusted + string as printf format). + +2010-07-21 12:20 Christos Zoulas + + * MINGW32 portability from LRN + + * Don't warn about escaping magic regex chars when we are in a regex. + +2010-07-19 10:55 Christos Zoulas + + * Only try to print prpsinfo for core files. (Jan Kaluza) + +2010-04-22 12:55 Christos Zoulas + + * Try more elf offsets for Debian core files. (Arnaud Giersch) + +2010-02-20 15:18 Reuben Thomas + + * Clarify which sort of CDF we mean. + +2010-02-14 22:58 Reuben Thomas + + * Re-jig Zip file type magic so that unsupported special + Zip types (those with "mimetype" at offset 30) can be + recognized. + +2010-02-02 21:50 Reuben Thomas + + * Add support for OCF (EPUB) files (application/epub+zip) + +2010-01-28 18:25 Christos Zoulas + + * Fix core-dump from unbound loop: + https://bugzilla.redhat.com/show_bug.cgi?id=533245 + +2010-01-22 15:45 Christos Zoulas + + * print proper mime for crystal reports file + + * print the last summary information of a cdf document, not the + first so that nested documents print the right info + +2010-01-16 18:42 Charles Longeau + + * bring back some fixes from OpenBSD: + - make gcc2 builds file + - fix typos in a magic file comment + +2009-11-17 18:35 Christos Zoulas + + * ctime/asctime can return NULL on some OS's although + they should not (Toshit Antani) + +2009-09-14 13:49 Christos Zoulas + + * Centralize magic path handling routines and remove the + special-casing from file.c so that the python module for + example comes up with the same magic path (Fixes ~/.magic + handling) (from Gab) + +2009-09-11 23:38 Reuben Thomas + + * When magic argument is a directory, read the files in + strcmp-sorted order (fixes Debian bug #488562 and our own FIXME). + +2009-09-11 13:11 Reuben Thomas + + * Combine overlapping epoc and psion magic files into one (epoc). + + * Add some more EPOC MIME types. + +2009-08-19 15:55 Christos Zoulas + + * Fix 3 bugs (From Ian Darwin): + - file_showstr could move one past the end of the array + - parse_apple did not nul terminate the string in the overflow case + - parse_mime truncated the wrong string in the overflow case + +2009-08-12 12:28 Robert Byrnes + + * Include Localstuff when compiling magic. + +2009-07-15 10:05 Christos Zoulas + + * Fix logic for including mygetopts.h + + * Make cdf.c compile again with debugging + + * Add the necessary field handling for crystal reports files to work + +2009-06-23 01:34 Reuben Thomas + + * Stop "(if" identifying Lisp files, that's plain dumb! + +2009-06-09 22:13 Reuben Thomas + + * Add a couple of missing MP3 MIME types. + +2009-05-27 23:00 Reuben Thomas + + * Add full range of hash-bang tests for Python and Ruby. + + * Add MIME types for Python and Ruby scripts. + +2009-05-13 10:44 Christos Zoulas + + * off by one in parsing hw capabilities in elf + (Cheng Renquan) + +2009-05-08 13:40 Christos Zoulas + + * lint fixes and more from NetBSD + 2009-05-06 10:25 Christos Zoulas * Avoid null dereference in cdf code (Drew Yao) Modified: projects/nand/contrib/file/Header ============================================================================== --- projects/nand/contrib/file/Header Wed May 9 08:23:24 2012 (r235158) +++ projects/nand/contrib/file/Header Wed May 9 08:46:43 2012 (r235159) @@ -1,5 +1,5 @@ -# Magic # Magic data for file(1) command. -# Machine-generated from src/cmd/file/magdir/*; edit there only! # Format is described in magic(files), where: -# files is 5 on V7 and BSD, 4 on SV, and ?? in the SVID. +# files is 5 on V7 and BSD, 4 on SV, and ?? on SVID. +# Don't edit this file, edit /etc/magic or send your magic improvements +# to the maintainers, at file@mx.gw.com Modified: projects/nand/contrib/file/INSTALL ============================================================================== --- projects/nand/contrib/file/INSTALL Wed May 9 08:23:24 2012 (r235158) +++ projects/nand/contrib/file/INSTALL Wed May 9 08:46:43 2012 (r235159) @@ -2,18 +2,24 @@ Installation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006 Free Software Foundation, Inc. +2006, 2007, 2008, 2009 Free Software Foundation, Inc. -This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. Basic Installation ================== -Briefly, the shell commands `./configure; make; make install' should + Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for -instructions specific to this package. +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses @@ -42,7 +48,7 @@ may remove or edit it. you want to change it or regenerate `configure' using a newer version of `autoconf'. -The simplest way to compile this package is: + The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. @@ -53,12 +59,22 @@ The simplest way to compile this package 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with - the package. + the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and - documentation. + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. - 5. You can remove the program binaries and object files from the + 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is @@ -67,12 +83,22 @@ The simplest way to compile this package all sorts of other programs in order to regenerate files that came with the distribution. + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. + Compilers and Options ===================== -Some systems require unusual options for compilation or linking that the -`configure' script does not know about. Run `./configure --help' for -details on some of the pertinent environment variables. + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here @@ -85,25 +111,41 @@ is an example: Compiling For Multiple Architectures ==================================== -You can compile the package for more than one kind of computer at the + You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + Installation Names ================== -By default, `make install' installs the package's commands under + By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX'. +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you @@ -114,16 +156,47 @@ Documentation and other data files still In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. -Optional Features -================= - -Some packages pay attention to `--enable-FEATURE' options to + Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The @@ -135,14 +208,53 @@ find the X include and library files aut you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + Specifying the System Type ========================== -There may be some features `configure' cannot figure out automatically, -but needs to determine by the type of machine the package will run on. -Usually, assuming the package is built to be run on the _same_ -architectures, `configure' can figure that out, but if it prints a -message saying it cannot guess the machine type, give it the + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: @@ -150,7 +262,8 @@ type, such as `sun4', or a canonical nam where SYSTEM can have one of these forms: - OS KERNEL-OS + OS + KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't @@ -168,9 +281,9 @@ eventually be run) with `--host=TYPE'. Sharing Defaults ================ -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. @@ -179,7 +292,7 @@ A warning: not all `configure' scripts l Defining Variables ================== -Variables not defined in a site shell script can be set in the + Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set @@ -198,11 +311,19 @@ an Autoconf bug. Until the bug is fixed `configure' Invocation ====================== -`configure' recognizes the following options to control how it operates. + `configure' recognizes the following options to control how it +operates. `--help' `-h' - Print a summary of the options to `configure', and exit. + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. `--version' `-V' @@ -229,6 +350,16 @@ an Autoconf bug. Until the bug is fixed Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. +`--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. Modified: projects/nand/contrib/file/Magdir/acorn ============================================================================== --- projects/nand/contrib/file/Magdir/acorn Wed May 9 08:23:24 2012 (r235158) +++ projects/nand/contrib/file/Magdir/acorn Wed May 9 08:46:43 2012 (r235159) @@ -1,4 +1,6 @@ + #------------------------------------------------------------------------------ +# $File: acorn,v 1.5 2009/09/19 16:28:07 christos Exp $ # acorn: file(1) magic for files found on Acorn systems # Modified: projects/nand/contrib/file/Magdir/adi ============================================================================== --- projects/nand/contrib/file/Magdir/adi Wed May 9 08:23:24 2012 (r235158) +++ projects/nand/contrib/file/Magdir/adi Wed May 9 08:46:43 2012 (r235159) @@ -1,5 +1,6 @@ #------------------------------------------------------------------------------ +# $File: adi,v 1.4 2009/09/19 16:28:07 christos Exp $ # adi: file(1) magic for ADi's objects # From Gregory McGarry # Modified: projects/nand/contrib/file/Magdir/adventure ============================================================================== --- projects/nand/contrib/file/Magdir/adventure Wed May 9 08:23:24 2012 (r235158) +++ projects/nand/contrib/file/Magdir/adventure Wed May 9 08:46:43 2012 (r235159) @@ -1,5 +1,6 @@ #------------------------------------------------------------------------------ +# $File: adventure,v 1.13 2010/12/31 16:32:54 christos Exp $ # adventure: file(1) magic for Adventure game files # # from Allen Garvin @@ -16,18 +17,26 @@ # Infocom (see z-machine) #------------------------------------------------------------------------------ # Z-machine: file(1) magic for Z-machine binaries. +# Updated by Adam Buchbinder # -# This will match ${TEX_BASE}/texmf/omega/ocp/char2uni/inbig5.ocp which -# appears to be a version-0 Z-machine binary. -# -# The (false match) message is to correct that behavior. Perhaps it is -# not needed. -# -16 belong&0xfe00f0f0 0x3030 Infocom game data ->0 ubyte 0 (false match) ->0 ubyte >0 (Z-machine %d, ->>2 ubeshort x Release %d / ->>18 string >\0 Serial %.6s) +#http://www.gnelson.demon.co.uk/zspec/sect11.html +#http://www.jczorkmid.net/~jpenney/ZSpec11-latest.txt +#http://en.wikipedia.org/wiki/Z-machine +# The first byte is the Z-machine revision; it is always between 1 and 8. We +# had false matches (for instance, inbig5.ocp from the Omega TeX extension as +# well as an occasional MP3 file), so we sanity-check the version number. +# +# It might be possible to sanity-check the release number as well, as it seems +# (at least in classic Infocom games) to always be a relatively small number, +# always under 150 or so, but as this isn't rigorous, we'll wait on that until +# it becomes clear that it's needed. +# +0 ubyte >0 +>0 ubyte <9 +>>16 belong&0xfe00f0f0 0x3030 Infocom game data +>>>0 ubyte x (Z-machine %d, +>>>>2 ubeshort x Release %d / +>>>>18 string >\0 Serial %.6s) #------------------------------------------------------------------------------ # Glulx: file(1) magic for Glulx binaries. @@ -45,10 +54,9 @@ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed May 9 10:48:40 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C3BCC1065676; Wed, 9 May 2012 10:48:40 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AEBA38FC20; Wed, 9 May 2012 10:48:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q49AmegW078103; Wed, 9 May 2012 10:48:40 GMT (envelope-from pho@svn.freebsd.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q49Amep6078102; Wed, 9 May 2012 10:48:40 GMT (envelope-from pho@svn.freebsd.org) Message-Id: <201205091048.q49Amep6078102@svn.freebsd.org> From: Peter Holm Date: Wed, 9 May 2012 10:48:40 +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: r235161 - projects/stress2/misc 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, 09 May 2012 10:48:40 -0000 Author: pho Date: Wed May 9 10:48:40 2012 New Revision: 235161 URL: http://svn.freebsd.org/changeset/base/235161 Log: Added regression test for sndstat. Added: projects/stress2/misc/sndstat.sh (contents, props changed) Added: projects/stress2/misc/sndstat.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/stress2/misc/sndstat.sh Wed May 9 10:48:40 2012 (r235161) @@ -0,0 +1,141 @@ +#!/bin/sh + +# +# Copyright (c) 2012 Peter Holm +# 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 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 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) +# 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$ +# + +# Test of access to /dev/sndstat + +# Permanent "/dev/sndstat: Device busy" seen. +# "panic: sbuf_put_byte called with finished or corrupt sbuf" seen. +# Fixed in r234932 + +. ../default.cfg + +[ -r /dev/sndstat ] || exit 1 + +here=`pwd` +cd /tmp +sed '1,/^EOF/d' < $here/$0 > sndstat.c +cc -o sndstat -Wall -Wextra sndstat.c -lpthread +rm -f sndstat.c + +/tmp/sndstat > /dev/null + +rm -f /tmp/sndstat +exit 0 +EOF +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int fd; +char path[] = "/dev/sndstat"; + + +void * +test1(void *arg __unused) +{ + + int sfd, i, n; + char buf[512]; + + n = 0; + for (i = 0; i < 5; i++) { + if ((sfd = open(path, O_RDONLY)) == -1) + continue; + + read(sfd, buf, sizeof(buf)); + fprintf(stdout, "%s\n", buf); + + n++; + close(sfd); + } + if (n == 0) { + if ((sfd = open(path, O_RDONLY)) == -1) + warn("FAIL open(%s)", path); + if (sfd > 0) + close(sfd); + } + + return (0); +} + +void * +test2(void *arg __unused) +{ + char buf[512]; + + bzero(buf, sizeof(buf)); + if (read(fd, buf, sizeof(buf)) != -1) + fprintf(stdout, "%s\n", buf); + else + warn("read()"); + + return (0); +} + +int +main(void) +{ + pthread_t rp[10]; + int i, j; + + /* Parallel open test */ + for (i = 0; i < 10; i++) { + if (pthread_create(&rp[i], NULL, test1, NULL) != 0) + perror("pthread_create"); + } + for (i = 0; i < 10; i++) + pthread_join(rp[i], NULL); + + /* Parallel read test */ + for (i = 0; i < 10; i++) { + if ((fd = open(path, O_RDONLY)) == -1) { + warn("open()"); + continue; + } + for (j = 0; j < 4; j++) + if (pthread_create(&rp[j], NULL, test2, NULL) != 0) + perror("pthread_create"); + for (j = 0; j < 4; j++) + pthread_join(rp[j], NULL); + + close(fd); + } + + return (0); +} From owner-svn-src-projects@FreeBSD.ORG Wed May 9 11:01:40 2012 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 1E91F106564A; Wed, 9 May 2012 11:01:40 +0000 (UTC) (envelope-from jceel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0832B8FC12; Wed, 9 May 2012 11:01:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q49B1djW080328; Wed, 9 May 2012 11:01:39 GMT (envelope-from jceel@svn.freebsd.org) Received: (from jceel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q49B1dXZ080324; Wed, 9 May 2012 11:01:39 GMT (envelope-from jceel@svn.freebsd.org) Message-Id: <201205091101.q49B1dXZ080324@svn.freebsd.org> From: Jakub Wojciech Klama Date: Wed, 9 May 2012 11:01:39 +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: r235162 - in projects/armv6/sys: arm/conf arm/lpc boot/fdt/dts dev/uart 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, 09 May 2012 11:01:40 -0000 Author: jceel Date: Wed May 9 11:01:39 2012 New Revision: 235162 URL: http://svn.freebsd.org/changeset/base/235162 Log: Initial LPC32x0 support. Includes DTS file for Embedded Artists EA3250 board. Peripherals currently supported: - Serial ports - Interrupt controller - Timers - Ethernet - USB host - Framebuffer (in conjunction with SSD1289 LCD controller) - RTC - SPI - GPIO Approved by: cognet (mentor) Added: projects/armv6/sys/arm/conf/EA3250 projects/armv6/sys/arm/lpc/ projects/armv6/sys/arm/lpc/files.lpc projects/armv6/sys/arm/lpc/if_lpe.c projects/armv6/sys/arm/lpc/if_lpereg.h projects/armv6/sys/arm/lpc/lpc_dmac.c projects/armv6/sys/arm/lpc/lpc_fb.c projects/armv6/sys/arm/lpc/lpc_gpio.c projects/armv6/sys/arm/lpc/lpc_intc.c projects/armv6/sys/arm/lpc/lpc_machdep.c projects/armv6/sys/arm/lpc/lpc_mmc.c projects/armv6/sys/arm/lpc/lpc_ohci.c projects/armv6/sys/arm/lpc/lpc_pll.c projects/armv6/sys/arm/lpc/lpc_pwr.c projects/armv6/sys/arm/lpc/lpc_rtc.c projects/armv6/sys/arm/lpc/lpc_space.c projects/armv6/sys/arm/lpc/lpc_spi.c projects/armv6/sys/arm/lpc/lpc_timer.c projects/armv6/sys/arm/lpc/lpcreg.h projects/armv6/sys/arm/lpc/lpcvar.h projects/armv6/sys/arm/lpc/ssd1289.c projects/armv6/sys/arm/lpc/std.lpc projects/armv6/sys/boot/fdt/dts/ea3250.dts projects/armv6/sys/dev/uart/uart_dev_lpc.c Modified: projects/armv6/sys/dev/uart/uart.h projects/armv6/sys/dev/uart/uart_bus_fdt.c projects/armv6/sys/dev/uart/uart_subr.c Added: projects/armv6/sys/arm/conf/EA3250 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/conf/EA3250 Wed May 9 11:01:39 2012 (r235162) @@ -0,0 +1,96 @@ +# +# Custom kernel for EA3250 boards. +# +# $FreeBSD$ +# + +ident EA3250 +include "../lpc/std.lpc" +hints "EA3250.hints" + +makeoptions MODULES_OVERRIDE="" + +#makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols +makeoptions WERROR="-Werror" + +options SCHED_4BSD #4BSD scheduler +options INET #InterNETworking +options INET6 #IPv6 communications protocols +options FFS #Berkeley Fast Filesystem +options NFSCL #Network Filesystem Client +options NFSLOCKD #Network Lock Manager +options NFS_ROOT #NFS usable as /, requires NFSCLIENT +options MSDOSFS +options BOOTP +options BOOTP_NFSROOT +options BOOTP_NFSV3 +options BOOTP_WIRED_TO=lpe0 + +#options ROOTDEVNAME=\"ufs:/dev/da0a\" + +options SYSVSHM #SYSV-style shared memory +options SYSVMSG #SYSV-style message queues +options SYSVSEM #SYSV-style semaphores +options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions +options MUTEX_NOINLINE +options RWLOCK_NOINLINE +options NO_FFS_SNAPSHOT +options NO_SWAPPING + +# Debugging +options ALT_BREAK_TO_DEBUGGER +options DDB +#options DEADLKRES #Enable the deadlock resolver +options DIAGNOSTIC +#options INVARIANTS #Enable calls of extra sanity checking +#options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS +options KDB +options WITNESS #Enable checks to detect deadlocks and cycles +options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed +#options WITNESS_KDB + +# Pseudo devices +device loop +device md +device pty +device random + +# Serial ports +device uart + +# Networking +device ether +device mii +device bpf +device lpe + +# USB +options USB_DEBUG +device usb +device ohci +device umass +device scbus +device pass +device da + +device mmc +device mmcsd +device lpcmmc + +device gpio +device gpioled +device lpcgpio + +device spibus +device lpcspi +device ssd1289 + +device lpcfb + +# DMAC +device dmac + +# Flattened Device Tree +options FDT +options FDT_DTB_STATIC +makeoptions FDT_DTS_FILE=ea3250.dts Added: projects/armv6/sys/arm/lpc/files.lpc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/lpc/files.lpc Wed May 9 11:01:39 2012 (r235162) @@ -0,0 +1,21 @@ +# $FreeBSD$ +arm/arm/bus_space_generic.c standard +arm/arm/irq_dispatch.S standard +arm/arm/cpufunc_asm_arm9.S standard +arm/arm/cpufunc_asm_armv5.S standard +arm/lpc/lpc_machdep.c standard +arm/lpc/lpc_space.c standard +arm/lpc/lpc_pwr.c standard +arm/lpc/lpc_intc.c standard +arm/lpc/lpc_timer.c standard +arm/lpc/lpc_rtc.c standard +arm/lpc/if_lpe.c optional lpe +arm/lpc/lpc_ohci.c optional ohci +arm/lpc/lpc_mmc.c optional lpcmmc +arm/lpc/lpc_fb.c optional lpcfb +arm/lpc/lpc_gpio.c optional lpcgpio +arm/lpc/lpc_spi.c optional lpcspi +arm/lpc/lpc_dmac.c optional dmac +arm/lpc/ssd1289.c optional ssd1289 +dev/uart/uart_dev_lpc.c optional uart +kern/kern_clocksource.c standard Added: projects/armv6/sys/arm/lpc/if_lpe.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/lpc/if_lpe.c Wed May 9 11:01:39 2012 (r235162) @@ -0,0 +1,1231 @@ +/*- + * Copyright (c) 2011 Jakub Wojciech Klama + * 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 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 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) + * 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. + * + */ +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include + +#include +#include +#include + +#include "miibus_if.h" + +#define DEBUG +#undef DEBUG + +#ifdef DEBUG +#define debugf(fmt, args...) do { printf("%s(): ", __func__); \ + printf(fmt,##args); } while (0) +#else +#define debugf(fmt, args...) +#endif + +struct lpe_dmamap_arg { + bus_addr_t lpe_dma_busaddr; +}; + +struct lpe_rxdesc { + struct mbuf * lpe_rxdesc_mbuf; + bus_dmamap_t lpe_rxdesc_dmamap; +}; + +struct lpe_txdesc { + int lpe_txdesc_first; + struct mbuf * lpe_txdesc_mbuf; + bus_dmamap_t lpe_txdesc_dmamap; +}; + +struct lpe_chain_data { + bus_dma_tag_t lpe_parent_tag; + bus_dma_tag_t lpe_tx_ring_tag; + bus_dmamap_t lpe_tx_ring_map; + bus_dma_tag_t lpe_tx_status_tag; + bus_dmamap_t lpe_tx_status_map; + bus_dma_tag_t lpe_tx_buf_tag; + bus_dma_tag_t lpe_rx_ring_tag; + bus_dmamap_t lpe_rx_ring_map; + bus_dma_tag_t lpe_rx_status_tag; + bus_dmamap_t lpe_rx_status_map; + bus_dma_tag_t lpe_rx_buf_tag; + struct lpe_rxdesc lpe_rx_desc[LPE_RXDESC_NUM]; + struct lpe_txdesc lpe_tx_desc[LPE_TXDESC_NUM]; + int lpe_tx_prod; + int lpe_tx_last; + int lpe_tx_used; +}; + +struct lpe_ring_data { + struct lpe_hwdesc * lpe_rx_ring; + struct lpe_hwstatus * lpe_rx_status; + bus_addr_t lpe_rx_ring_phys; + bus_addr_t lpe_rx_status_phys; + struct lpe_hwdesc * lpe_tx_ring; + struct lpe_hwstatus * lpe_tx_status; + bus_addr_t lpe_tx_ring_phys; + bus_addr_t lpe_tx_status_phys; +}; + +struct lpe_softc { + struct ifnet * lpe_ifp; + struct mtx lpe_mtx; + phandle_t lpe_ofw; + device_t lpe_dev; + device_t lpe_miibus; + uint8_t lpe_enaddr[6]; + struct resource * lpe_mem_res; + struct resource * lpe_irq_res; + void * lpe_intrhand; + bus_space_tag_t lpe_bst; + bus_space_handle_t lpe_bsh; +#define LPE_FLAG_LINK (1 << 0) + uint32_t lpe_flags; + int lpe_watchdog_timer; + struct callout lpe_tick; + struct lpe_chain_data lpe_cdata; + struct lpe_ring_data lpe_rdata; +}; + +static int lpe_probe(device_t); +static int lpe_attach(device_t); +static int lpe_detach(device_t); +static int lpe_miibus_readreg(device_t, int, int); +static int lpe_miibus_writereg(device_t, int, int, int); +static void lpe_miibus_statchg(device_t); + +static void lpe_reset(struct lpe_softc *); +static void lpe_init(void *); +static void lpe_init_locked(struct lpe_softc *); +static void lpe_start(struct ifnet *); +static void lpe_start_locked(struct ifnet *); +static void lpe_stop(struct lpe_softc *); +static void lpe_stop_locked(struct lpe_softc *); +static int lpe_ioctl(struct ifnet *, u_long, caddr_t); +static void lpe_set_rxmode(struct lpe_softc *); +static void lpe_set_rxfilter(struct lpe_softc *); +static void lpe_intr(void *); +static void lpe_rxintr(struct lpe_softc *); +static void lpe_txintr(struct lpe_softc *); +static void lpe_tick(void *); +static void lpe_watchdog(struct lpe_softc *); +static int lpe_encap(struct lpe_softc *, struct mbuf **); +static int lpe_dma_alloc(struct lpe_softc *); +static int lpe_dma_alloc_rx(struct lpe_softc *); +static int lpe_dma_alloc_tx(struct lpe_softc *); +static int lpe_init_rx(struct lpe_softc *); +static int lpe_init_rxbuf(struct lpe_softc *, int); +static void lpe_discard_rxbuf(struct lpe_softc *, int); +static void lpe_dmamap_cb(void *, bus_dma_segment_t *, int, int); +static int lpe_ifmedia_upd(struct ifnet *); +static void lpe_ifmedia_sts(struct ifnet *, struct ifmediareq *); + +#define lpe_lock(_sc) mtx_lock(&(_sc)->lpe_mtx) +#define lpe_unlock(_sc) mtx_unlock(&(_sc)->lpe_mtx) +#define lpe_lock_assert(sc) mtx_assert(&(_sc)->lpe_mtx, MA_OWNED) + +#define lpe_read_4(_sc, _reg) \ + bus_space_read_4((_sc)->lpe_bst, (_sc)->lpe_bsh, (_reg)) +#define lpe_write_4(_sc, _reg, _val) \ + bus_space_write_4((_sc)->lpe_bst, (_sc)->lpe_bsh, (_reg), (_val)) + +#define LPE_HWDESC_RXERRS (LPE_HWDESC_CRCERROR | LPE_HWDESC_SYMBOLERROR | \ + LPE_HWDESC_LENGTHERROR | LPE_HWDESC_ALIGNERROR | LPE_HWDESC_OVERRUN | \ + LPE_HWDESC_RXNODESCR) + +#define LPE_HWDESC_TXERRS (LPE_HWDESC_EXCDEFER | LPE_HWDESC_EXCCOLL | \ + LPE_HWDESC_LATECOLL | LPE_HWDESC_UNDERRUN | LPE_HWDESC_TXNODESCR) + +static int +lpe_probe(device_t dev) +{ + + if (!ofw_bus_is_compatible(dev, "lpc,ethernet")) + return (ENXIO); + + device_set_desc(dev, "LPC32x0 10/100 Ethernet"); + return (BUS_PROBE_DEFAULT); +} + +static int +lpe_attach(device_t dev) +{ + struct lpe_softc *sc = device_get_softc(dev); + struct ifnet *ifp; + int rid, i; + uint32_t val; + + sc->lpe_dev = dev; + sc->lpe_ofw = ofw_bus_get_node(dev); + + i = OF_getprop(sc->lpe_ofw, "local-mac-address", (void *)&sc->lpe_enaddr, 6); + if (i != 6) { + sc->lpe_enaddr[0] = 0x00; + sc->lpe_enaddr[1] = 0x11; + sc->lpe_enaddr[2] = 0x22; + sc->lpe_enaddr[3] = 0x33; + sc->lpe_enaddr[4] = 0x44; + sc->lpe_enaddr[5] = 0x55; + } + + mtx_init(&sc->lpe_mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK, + MTX_DEF); + + callout_init_mtx(&sc->lpe_tick, &sc->lpe_mtx, 0); + + rid = 0; + sc->lpe_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (!sc->lpe_mem_res) { + device_printf(dev, "cannot allocate memory window\n"); + goto fail; + } + + sc->lpe_bst = rman_get_bustag(sc->lpe_mem_res); + sc->lpe_bsh = rman_get_bushandle(sc->lpe_mem_res); + + rid = 0; + sc->lpe_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, + RF_ACTIVE); + if (!sc->lpe_irq_res) { + device_printf(dev, "cannot allocate interrupt\n"); + goto fail; + } + + sc->lpe_ifp = if_alloc(IFT_ETHER); + if (!sc->lpe_ifp) { + device_printf(dev, "cannot allocated ifnet\n"); + goto fail; + } + + ifp = sc->lpe_ifp; + + if_initname(ifp, device_get_name(dev), device_get_unit(dev)); + ifp->if_softc = sc; + ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_start = lpe_start; + ifp->if_ioctl = lpe_ioctl; + ifp->if_init = lpe_init; + IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN); + ifp->if_snd.ifq_drv_maxlen = IFQ_MAXLEN; + IFQ_SET_READY(&ifp->if_snd); + + ether_ifattach(ifp, sc->lpe_enaddr); + + if (bus_setup_intr(dev, sc->lpe_irq_res, INTR_TYPE_NET, NULL, + lpe_intr, sc, &sc->lpe_intrhand)) { + device_printf(dev, "cannot establish interrupt handler\n"); + ether_ifdetach(ifp); + goto fail; + } + + /* Enable Ethernet clock */ + lpc_pwr_write(dev, LPC_CLKPWR_MACCLK_CTRL, + LPC_CLKPWR_MACCLK_CTRL_REG | + LPC_CLKPWR_MACCLK_CTRL_SLAVE | + LPC_CLKPWR_MACCLK_CTRL_MASTER | + LPC_CLKPWR_MACCLK_CTRL_HDWINF(3)); + + /* Reset chip */ + lpe_reset(sc); + + /* Initialize MII */ + val = lpe_read_4(sc, LPE_COMMAND); + lpe_write_4(sc, LPE_COMMAND, val | LPE_COMMAND_RMII); + + if (mii_attach(dev, &sc->lpe_miibus, ifp, lpe_ifmedia_upd, + lpe_ifmedia_sts, BMSR_DEFCAPMASK, 0x01, + MII_OFFSET_ANY, 0)) { + device_printf(dev, "cannot find PHY\n"); + goto fail; + } + + lpe_dma_alloc(sc); + + return (0); + +fail: + if (sc->lpe_ifp) + if_free(sc->lpe_ifp); + if (sc->lpe_intrhand) + bus_teardown_intr(dev, sc->lpe_irq_res, sc->lpe_intrhand); + if (sc->lpe_irq_res) + bus_release_resource(dev, SYS_RES_IRQ, 0, sc->lpe_irq_res); + if (sc->lpe_mem_res) + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->lpe_mem_res); + return (ENXIO); +} + +static int +lpe_detach(device_t dev) +{ + struct lpe_softc *sc = device_get_softc(dev); + + lpe_stop(sc); + + if_free(sc->lpe_ifp); + bus_teardown_intr(dev, sc->lpe_irq_res, sc->lpe_intrhand); + bus_release_resource(dev, SYS_RES_IRQ, 0, sc->lpe_irq_res); + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->lpe_mem_res); + + return (0); +} + +static int +lpe_miibus_readreg(device_t dev, int phy, int reg) +{ + struct lpe_softc *sc = device_get_softc(dev); + uint32_t val; + int result; + + lpe_write_4(sc, LPE_MCMD, LPE_MCMD_READ); + lpe_write_4(sc, LPE_MADR, + (reg & LPE_MADR_REGMASK) << LPE_MADR_REGSHIFT | + (phy & LPE_MADR_PHYMASK) << LPE_MADR_PHYSHIFT); + + val = lpe_read_4(sc, LPE_MIND); + + /* Wait until request is completed */ + while (val & LPE_MIND_BUSY) { + val = lpe_read_4(sc, LPE_MIND); + DELAY(10); + } + + if (val & LPE_MIND_INVALID) + return (0); + + lpe_write_4(sc, LPE_MCMD, 0); + result = (lpe_read_4(sc, LPE_MRDD) & LPE_MRDD_DATAMASK); + debugf("phy=%d reg=%d result=0x%04x\n", phy, reg, result); + + return (result); +} + +static int +lpe_miibus_writereg(device_t dev, int phy, int reg, int data) +{ + struct lpe_softc *sc = device_get_softc(dev); + uint32_t val; + + debugf("phy=%d reg=%d data=0x%04x\n", phy, reg, data); + + lpe_write_4(sc, LPE_MCMD, LPE_MCMD_WRITE); + lpe_write_4(sc, LPE_MADR, + (reg & LPE_MADR_REGMASK) << LPE_MADR_REGSHIFT | + (phy & LPE_MADR_PHYMASK) << LPE_MADR_PHYSHIFT); + + lpe_write_4(sc, LPE_MWTD, (data & LPE_MWTD_DATAMASK)); + + val = lpe_read_4(sc, LPE_MIND); + + /* Wait until request is completed */ + while (val & LPE_MIND_BUSY) { + val = lpe_read_4(sc, LPE_MIND); + DELAY(10); + } + + return (0); +} + +static void +lpe_miibus_statchg(device_t dev) +{ + struct lpe_softc *sc = device_get_softc(dev); + struct mii_data *mii = device_get_softc(sc->lpe_miibus); + + lpe_lock(sc); + + if ((mii->mii_media_status & IFM_ACTIVE) && + (mii->mii_media_status & IFM_AVALID)) + sc->lpe_flags |= LPE_FLAG_LINK; + else + sc->lpe_flags &= ~LPE_FLAG_LINK; + + lpe_unlock(sc); +} + +static void +lpe_reset(struct lpe_softc *sc) +{ + uint32_t mac1; + + /* Enter soft reset mode */ + mac1 = lpe_read_4(sc, LPE_MAC1); + lpe_write_4(sc, LPE_MAC1, mac1 | LPE_MAC1_SOFTRESET | LPE_MAC1_RESETTX | + LPE_MAC1_RESETMCSTX | LPE_MAC1_RESETRX | LPE_MAC1_RESETMCSRX); + + /* Reset registers, Tx path and Rx path */ + lpe_write_4(sc, LPE_COMMAND, LPE_COMMAND_REGRESET | + LPE_COMMAND_TXRESET | LPE_COMMAND_RXRESET); + + /* Set station address */ + lpe_write_4(sc, LPE_SA2, sc->lpe_enaddr[1] << 8 | sc->lpe_enaddr[0]); + lpe_write_4(sc, LPE_SA1, sc->lpe_enaddr[3] << 8 | sc->lpe_enaddr[2]); + lpe_write_4(sc, LPE_SA0, sc->lpe_enaddr[5] << 8 | sc->lpe_enaddr[4]); + + /* Leave soft reset mode */ + mac1 = lpe_read_4(sc, LPE_MAC1); + lpe_write_4(sc, LPE_MAC1, mac1 & ~(LPE_MAC1_SOFTRESET | LPE_MAC1_RESETTX | + LPE_MAC1_RESETMCSTX | LPE_MAC1_RESETRX | LPE_MAC1_RESETMCSRX)); +} + +static void +lpe_init(void *arg) +{ + struct lpe_softc *sc = (struct lpe_softc *)arg; + + lpe_lock(sc); + lpe_init_locked(sc); + lpe_unlock(sc); +} + +static void +lpe_init_locked(struct lpe_softc *sc) +{ + struct ifnet *ifp = sc->lpe_ifp; + uint32_t cmd, mac1; + + lpe_lock_assert(sc); + + if (ifp->if_drv_flags & IFF_DRV_RUNNING) + return; + + /* Enable Tx and Rx */ + cmd = lpe_read_4(sc, LPE_COMMAND); + lpe_write_4(sc, LPE_COMMAND, cmd | LPE_COMMAND_RXENABLE | + LPE_COMMAND_TXENABLE | LPE_COMMAND_PASSRUNTFRAME); + + /* Enable receive */ + mac1 = lpe_read_4(sc, LPE_MAC1); + lpe_write_4(sc, LPE_MAC1, /*mac1 |*/ LPE_MAC1_RXENABLE | LPE_MAC1_PASSALL); + + lpe_write_4(sc, LPE_MAC2, LPE_MAC2_CRCENABLE | LPE_MAC2_PADCRCENABLE | + LPE_MAC2_FULLDUPLEX); + + lpe_write_4(sc, LPE_MCFG, LPE_MCFG_CLKSEL(7)); + + /* Set up Rx filter */ + lpe_set_rxmode(sc); + + /* Enable interrupts */ + lpe_write_4(sc, LPE_INTENABLE, LPE_INT_RXOVERRUN | LPE_INT_RXERROR | + LPE_INT_RXFINISH | LPE_INT_RXDONE | LPE_INT_TXUNDERRUN | + LPE_INT_TXERROR | LPE_INT_TXFINISH | LPE_INT_TXDONE); + + sc->lpe_cdata.lpe_tx_prod = 0; + sc->lpe_cdata.lpe_tx_last = 0; + sc->lpe_cdata.lpe_tx_used = 0; + + lpe_init_rx(sc); + + /* Initialize Rx packet and status descriptor heads */ + lpe_write_4(sc, LPE_RXDESC, sc->lpe_rdata.lpe_rx_ring_phys); + lpe_write_4(sc, LPE_RXSTATUS, sc->lpe_rdata.lpe_rx_status_phys); + lpe_write_4(sc, LPE_RXDESC_NUMBER, LPE_RXDESC_NUM - 1); + lpe_write_4(sc, LPE_RXDESC_CONS, 0); + + /* Initialize Tx packet and status descriptor heads */ + lpe_write_4(sc, LPE_TXDESC, sc->lpe_rdata.lpe_tx_ring_phys); + lpe_write_4(sc, LPE_TXSTATUS, sc->lpe_rdata.lpe_tx_status_phys); + lpe_write_4(sc, LPE_TXDESC_NUMBER, LPE_TXDESC_NUM - 1); + lpe_write_4(sc, LPE_TXDESC_PROD, 0); + + ifp->if_drv_flags |= IFF_DRV_RUNNING; + ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + + callout_reset(&sc->lpe_tick, hz, lpe_tick, sc); +} + +static void +lpe_start(struct ifnet *ifp) +{ + struct lpe_softc *sc = (struct lpe_softc *)ifp->if_softc; + + lpe_lock(sc); + lpe_start_locked(ifp); + lpe_unlock(sc); +} + +static void +lpe_start_locked(struct ifnet *ifp) +{ + struct lpe_softc *sc = (struct lpe_softc *)ifp->if_softc; + struct mbuf *m_head; + int encap = 0; + + lpe_lock_assert(sc); + + while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) { + if (lpe_read_4(sc, LPE_TXDESC_PROD) == + lpe_read_4(sc, LPE_TXDESC_CONS) - 5) + break; + + /* Dequeue first packet */ + IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); + if (!m_head) + break; + + lpe_encap(sc, &m_head); + + encap++; + } + + /* Submit new descriptor list */ + if (encap) { + lpe_write_4(sc, LPE_TXDESC_PROD, sc->lpe_cdata.lpe_tx_prod); + sc->lpe_watchdog_timer = 5; + } + +} + +static int +lpe_encap(struct lpe_softc *sc, struct mbuf **m_head) +{ + struct lpe_txdesc *txd; + struct lpe_hwdesc *hwd; + bus_dma_segment_t segs[LPE_MAXFRAGS]; + int i, err, nsegs, prod; + + lpe_lock_assert(sc); + M_ASSERTPKTHDR((*m_head)); + + prod = sc->lpe_cdata.lpe_tx_prod; + txd = &sc->lpe_cdata.lpe_tx_desc[prod]; + + debugf("starting with prod=%d\n", prod); + + err = bus_dmamap_load_mbuf_sg(sc->lpe_cdata.lpe_tx_buf_tag, + txd->lpe_txdesc_dmamap, *m_head, segs, &nsegs, BUS_DMA_NOWAIT); + + if (err) + return (err); + + if (nsegs == 0) { + m_freem(*m_head); + *m_head = NULL; + return (EIO); + } + + bus_dmamap_sync(sc->lpe_cdata.lpe_tx_buf_tag, txd->lpe_txdesc_dmamap, + BUS_DMASYNC_PREREAD); + bus_dmamap_sync(sc->lpe_cdata.lpe_tx_ring_tag, sc->lpe_cdata.lpe_tx_ring_map, + BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); + + txd->lpe_txdesc_first = 1; + txd->lpe_txdesc_mbuf = *m_head; + + for (i = 0; i < nsegs; i++) { + hwd = &sc->lpe_rdata.lpe_tx_ring[prod]; + hwd->lhr_data = segs[i].ds_addr; + hwd->lhr_control = segs[i].ds_len - 1; + + if (i == nsegs - 1) { + hwd->lhr_control |= LPE_HWDESC_LASTFLAG; + hwd->lhr_control |= LPE_HWDESC_INTERRUPT; + hwd->lhr_control |= LPE_HWDESC_CRC; + hwd->lhr_control |= LPE_HWDESC_PAD; + } + + LPE_INC(prod, LPE_TXDESC_NUM); + } + + bus_dmamap_sync(sc->lpe_cdata.lpe_tx_ring_tag, sc->lpe_cdata.lpe_tx_ring_map, + BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); + + sc->lpe_cdata.lpe_tx_used += nsegs; + sc->lpe_cdata.lpe_tx_prod = prod; + + return (0); +} + +static void +lpe_stop(struct lpe_softc *sc) +{ + lpe_lock(sc); + lpe_stop_locked(sc); + lpe_unlock(sc); +} + +static void +lpe_stop_locked(struct lpe_softc *sc) +{ + lpe_lock_assert(sc); + + callout_stop(&sc->lpe_tick); + + /* Disable interrupts */ + lpe_write_4(sc, LPE_INTCLEAR, 0xffffffff); + + /* Stop EMAC */ + lpe_write_4(sc, LPE_MAC1, 0); + lpe_write_4(sc, LPE_MAC2, 0); + lpe_write_4(sc, LPE_COMMAND, 0); + + sc->lpe_ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + sc->lpe_ifp->if_drv_flags &= ~IFF_DRV_RUNNING; +} + +static int +lpe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) +{ + struct lpe_softc *sc = ifp->if_softc; + struct mii_data *mii = device_get_softc(sc->lpe_miibus); + struct ifreq *ifr = (struct ifreq *)data; + int err = 0; + + switch (cmd) { + case SIOCSIFFLAGS: + lpe_lock(sc); + if (ifp->if_flags & IFF_UP) { + if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + lpe_set_rxmode(sc); + lpe_set_rxfilter(sc); + } else + lpe_init_locked(sc); + } else + lpe_stop(sc); + lpe_unlock(sc); + break; + case SIOCADDMULTI: + case SIOCDELMULTI: + if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + lpe_lock(sc); + lpe_set_rxfilter(sc); + lpe_unlock(sc); + } + break; + case SIOCGIFMEDIA: + case SIOCSIFMEDIA: + err = ifmedia_ioctl(ifp, ifr, &mii->mii_media, cmd); + break; + default: + err = ether_ioctl(ifp, cmd, data); + break; + } + + return (err); +} + +static void lpe_set_rxmode(struct lpe_softc *sc) +{ + struct ifnet *ifp = sc->lpe_ifp; + uint32_t rxfilt; + + rxfilt = LPE_RXFILTER_UNIHASH | LPE_RXFILTER_MULTIHASH | LPE_RXFILTER_PERFECT; + + if (ifp->if_flags & IFF_BROADCAST) + rxfilt |= LPE_RXFILTER_BROADCAST; + + if (ifp->if_flags & IFF_PROMISC) + rxfilt |= LPE_RXFILTER_UNICAST | LPE_RXFILTER_MULTICAST; + + if (ifp->if_flags & IFF_ALLMULTI) + rxfilt |= LPE_RXFILTER_MULTICAST; + + lpe_write_4(sc, LPE_RXFILTER_CTRL, rxfilt); +} + +static void lpe_set_rxfilter(struct lpe_softc *sc) +{ + struct ifnet *ifp = sc->lpe_ifp; + struct ifmultiaddr *ifma; + int index; + uint32_t hashl, hashh; + + hashl = 0; + hashh = 0; + + if_maddr_rlock(ifp); + TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { + if (ifma->ifma_addr->sa_family != AF_LINK) + continue; + + index = ether_crc32_be(LLADDR((struct sockaddr_dl *) + ifma->ifma_addr), ETHER_ADDR_LEN) >> 23 & 0x3f; + + if (index > 31) + hashh |= (1 << (index - 32)); + else + hashl |= (1 << index); + } + if_maddr_runlock(ifp); + + /* Program new hash filter */ + lpe_write_4(sc, LPE_HASHFILTER_L, hashl); + lpe_write_4(sc, LPE_HASHFILTER_H, hashh); +} + +static void +lpe_intr(void *arg) +{ + struct lpe_softc *sc = (struct lpe_softc *)arg; + uint32_t intstatus; + + debugf("status=0x%08x\n", lpe_read_4(sc, LPE_INTSTATUS)); + + lpe_lock(sc); + + while ((intstatus = lpe_read_4(sc, LPE_INTSTATUS))) { + if (intstatus & LPE_INT_RXDONE) + lpe_rxintr(sc); + + if (intstatus & LPE_INT_TXDONE) + lpe_txintr(sc); + + lpe_write_4(sc, LPE_INTCLEAR, 0xffff); + } + + lpe_unlock(sc); +} + +static void +lpe_rxintr(struct lpe_softc *sc) +{ + struct ifnet *ifp = sc->lpe_ifp; + struct lpe_hwdesc *hwd; + struct lpe_hwstatus *hws; + struct lpe_rxdesc *rxd; + struct mbuf *m; + int prod, cons; + + for (;;) { + prod = lpe_read_4(sc, LPE_RXDESC_PROD); + cons = lpe_read_4(sc, LPE_RXDESC_CONS); + + if (prod == cons) + break; + + rxd = &sc->lpe_cdata.lpe_rx_desc[cons]; + hwd = &sc->lpe_rdata.lpe_rx_ring[cons]; + hws = &sc->lpe_rdata.lpe_rx_status[cons]; + + /* Check received frame for errors */ + if (hws->lhs_info & LPE_HWDESC_RXERRS) { + ifp->if_ierrors++; + lpe_discard_rxbuf(sc, cons); + lpe_init_rxbuf(sc, cons); + goto skip; + } + + m = rxd->lpe_rxdesc_mbuf; + m->m_pkthdr.rcvif = ifp; + m->m_data += 2; + + ifp->if_ipackets++; + + lpe_unlock(sc); + (*ifp->if_input)(ifp, m); + lpe_lock(sc); + + lpe_init_rxbuf(sc, cons); +skip: + LPE_INC(cons, LPE_RXDESC_NUM); + lpe_write_4(sc, LPE_RXDESC_CONS, cons); + } +} + +static void +lpe_txintr(struct lpe_softc *sc) +{ + struct ifnet *ifp = sc->lpe_ifp; + struct lpe_hwdesc *hwd; + struct lpe_hwstatus *hws; + struct lpe_txdesc *txd; + int cons, last; + + for (;;) { + cons = lpe_read_4(sc, LPE_TXDESC_CONS); + last = sc->lpe_cdata.lpe_tx_last; + + if (cons == last) + break; + + txd = &sc->lpe_cdata.lpe_tx_desc[last]; + hwd = &sc->lpe_rdata.lpe_tx_ring[last]; + hws = &sc->lpe_rdata.lpe_tx_status[last]; + + bus_dmamap_sync(sc->lpe_cdata.lpe_tx_buf_tag, + txd->lpe_txdesc_dmamap, BUS_DMASYNC_POSTWRITE); + + ifp->if_collisions += LPE_HWDESC_COLLISIONS(hws->lhs_info); + + if (hws->lhs_info & LPE_HWDESC_TXERRS) + ifp->if_oerrors++; + else + ifp->if_opackets++; + + if (txd->lpe_txdesc_first) { + bus_dmamap_unload(sc->lpe_cdata.lpe_tx_buf_tag, + txd->lpe_txdesc_dmamap); + + m_freem(txd->lpe_txdesc_mbuf); + txd->lpe_txdesc_mbuf = NULL; + txd->lpe_txdesc_first = 0; + } + + sc->lpe_cdata.lpe_tx_used--; + LPE_INC(sc->lpe_cdata.lpe_tx_last, LPE_TXDESC_NUM); + } + + if (!sc->lpe_cdata.lpe_tx_used) + sc->lpe_watchdog_timer = 0; +} + +static void +lpe_tick(void *arg) +{ + struct lpe_softc *sc = (struct lpe_softc *)arg; + struct mii_data *mii = device_get_softc(sc->lpe_miibus); + + lpe_lock_assert(sc); + + mii_tick(mii); + lpe_watchdog(sc); + + callout_reset(&sc->lpe_tick, hz, lpe_tick, sc); +} + +static void +lpe_watchdog(struct lpe_softc *sc) +{ + struct ifnet *ifp = sc->lpe_ifp; + + lpe_lock_assert(sc); + + if (sc->lpe_watchdog_timer == 0 || sc->lpe_watchdog_timer--) + return; + + /* Chip has stopped responding */ + device_printf(sc->lpe_dev, "WARNING: chip hangup, restarting...\n"); + lpe_stop_locked(sc); + lpe_init_locked(sc); + + /* Try to resend packets */ + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + lpe_start_locked(ifp); +} + +static int +lpe_dma_alloc(struct lpe_softc *sc) +{ + int err; + + /* Create parent DMA tag */ + err = bus_dma_tag_create( + bus_get_dma_tag(sc->lpe_dev), + 1, 0, /* alignment, boundary */ + BUS_SPACE_MAXADDR_32BIT, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + BUS_SPACE_MAXSIZE_32BIT, 0, /* maxsize, nsegments */ + BUS_SPACE_MAXSIZE_32BIT, 0, /* maxsegsize, flags */ + NULL, NULL, /* lockfunc, lockarg */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed May 9 14:24:40 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 43A91106564A; Wed, 9 May 2012 14:24:40 +0000 (UTC) (envelope-from gber@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2D49E8FC12; Wed, 9 May 2012 14:24:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q49EOeaV087210; Wed, 9 May 2012 14:24:40 GMT (envelope-from gber@svn.freebsd.org) Received: (from gber@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q49EOdMp087207; Wed, 9 May 2012 14:24:39 GMT (envelope-from gber@svn.freebsd.org) Message-Id: <201205091424.q49EOdMp087207@svn.freebsd.org> From: Grzegorz Bernacki Date: Wed, 9 May 2012 14:24:39 +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: r235174 - in projects/nand/usr.sbin: nandsim nandtool 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, 09 May 2012 14:24:40 -0000 Author: gber Date: Wed May 9 14:24:39 2012 New Revision: 235174 URL: http://svn.freebsd.org/changeset/base/235174 Log: nandfs: man pages style fix Obtained from: Semihalf Supported by: FreeBSD Foundation, Juniper Networks Modified: projects/nand/usr.sbin/nandsim/nandsim.8 projects/nand/usr.sbin/nandtool/nandtool.8 Modified: projects/nand/usr.sbin/nandsim/nandsim.8 ============================================================================== --- projects/nand/usr.sbin/nandsim/nandsim.8 Wed May 9 14:19:06 2012 (r235173) +++ projects/nand/usr.sbin/nandsim/nandsim.8 Wed May 9 14:24:39 2012 (r235174) @@ -88,9 +88,9 @@ .Ic help .Op Fl v .Sh COMMAND DESCRIPTION -Controllers and chips are arranged into a simple hierarchy. There can be up to -4 controllers configured, each with 4 chip select (CS) lines. A given chip is -connected to one of the chip selects. +Controllers and chips are arranged into a simple hierarchy. +There can be up to 4 controllers configured, each with 4 chip select (CS) lines. +A given chip is connected to one of the chip selects. .Pp Controllers are specified as .Aq ctrl_no ; @@ -103,7 +103,8 @@ Gets controller(s) status. If or .Fl -all flag is specified - command will print status of every controller -currently available. Optional flag +currently available. +Optional flag .Fl v causes printing complete information about the controller, and all chips attached to it. @@ -123,12 +124,12 @@ full stop-start cycle in order to take e .It nandsim start ... .El .It Ic mod -Alters simulator parameters on-the-fly. If controller number and CS -pair is not specified, the general simulator parameters (not -specific to a controller or a chip) will be modified. Changing -chip's parameters requires specifying both controller number and CS -to which the given chip is connected. Parameters which can be -altered: +Alters simulator parameters on-the-fly. +If controller number and CS pair is not specified, the general +simulator parameters (not specific to a controller or a chip) will be modified. +Changing chip's parameters requires specifying both controller number and CS +to which the given chip is connected. +Parameters which can be altered: .Pp General simulator related: .Bl -tag -width flag @@ -160,12 +161,13 @@ will list parameters which can be altere .El .Bl -tag -width periphlist .It Ic bb -Marks/unmarks a specified block as bad. To mark/unmark the bad -condition an a block, the following parameters have to be supplied: -controller number, CS number, and at least one block number. It is -possible to specify multiple blocks, by separating blocks numbers -with a comma. The following options can be used for the 'bb' -command: +Marks/unmarks a specified block as bad. +To mark/unmark the bad condition an a block, the following parameters +have to be supplied: controller number, CS number, and at least one +block number. +It is possible to specify multiple blocks, by separating blocks numbers +with a comma. +The following options can be used for the 'bb' command: .Bl -tag -width flag .It Fl U unmark the bad previously marked block as bad. @@ -193,12 +195,13 @@ Stops an already started controller; if supplied, attempts to stop all currently working controllers. .It Ic destroy Removes existing active chip/controller and its configuration from -memory and releases the resources. Specifying flag +memory and releases the resources. +Specifying flag .Fl a or .Fl -all -causes removal of every chip and controller. Controller must be -stopped in order to be destroyed. +causes removal of every chip and controller. +Controller must be stopped in order to be destroyed. .It Ic error Directly overwrites a certain number of bytes in the specified page at a given offset with a supplied pattern (which mimics the @@ -208,8 +211,8 @@ Prints synopsis, .Fl v gives more verbose output. .It Ic freeze -Stops simulation of given controller (simulates power-loss). All -commands issues to any chip on this controller are ignored. +Stops simulation of given controller (simulates power-loss). +All commands issues to any chip on this controller are ignored. .El .Sh SEE ALSO .Xr nand 4 , Modified: projects/nand/usr.sbin/nandtool/nandtool.8 ============================================================================== --- projects/nand/usr.sbin/nandtool/nandtool.8 Wed May 9 14:19:06 2012 (r235173) +++ projects/nand/usr.sbin/nandtool/nandtool.8 Wed May 9 14:24:39 2012 (r235174) @@ -48,7 +48,8 @@ Read pages from NAND device. .It Cm write Ns Write pages to NAND device. .It Cm erase Ns -Erase blocks. Requires offset aligned to block granularity. +Erase blocks. +Requires offset aligned to block granularity. .It Cm info Ns Get information about NAND chip (page size, block size, OOB area size, chip size and media size) @@ -62,7 +63,8 @@ Get usage info. .Sh COMMAND read .Pp The following operands are available for -.Va nandtool read +.Nm +.Cm read command: .Bl -tag -width ".Cm of Ns = Ns Ar file" .It Cm dev Ns = Ns Ar @@ -87,7 +89,8 @@ Count of objects (pages, blocks, bytes). .Bl -tag -width ".Cm of Ns = Ns Ar file" .Pp The following operands are available for -.Va nandtool readoob +.Nm +.Cm readoob command: .Pp .It Cm dev Ns = Ns Ar @@ -100,7 +103,8 @@ Output file path, optional. .Sh COMMAND write .Bl -tag -width ".Cm of Ns = Ns Ar file" The following operands are available for -.Va nandtool write +.Nm +.Cm write command: .It Cm dev Ns = Ns Ar Path to NAND device node. @@ -117,7 +121,8 @@ Input file path. .Sh COMMAND writeoob .Bl -tag -width ".Cm of Ns = Ns Ar file" The following operands are available for -.Va nandtool writeoob +.Nm +.Cm writeoob command: .It Cm dev Ns = Ns Ar Path to NAND device node. @@ -129,7 +134,8 @@ Input file path. .Sh COMMAND erase .Bl -tag -width ".Cm of Ns = Ns Ar file" The following operands are available for -.Va nandtool erase +.Nm +.Cm erase command: .It Cm dev Ns = Ns Ar Path to NAND device node. @@ -150,7 +156,8 @@ When no other arguments are provided the .Sh COMMAND info .Bl -tag -width ".Cm of Ns = Ns Ar file" There is only one operand available for -.Va nandtool info +.Nm +.Cm info command: .It Cm dev Ns = Ns Ar Path to NAND device node. @@ -158,7 +165,8 @@ Path to NAND device node. .Sh COMMAND help .Bl -tag -width ".Cm of Ns = Ns Ar file" There is only one operand available for -.Va nandtool help +.Nm +.Cm help command: .Pp .It Cm topic Ns = Ns Ar @@ -169,9 +177,11 @@ Help topic. If the supplied argument .Ar dev points to a device node other than gnand or gnand.raw both -.Va nandtool readoob +.Nm +.Cm readoob and -.Va nandtool writeoob +.Nm +.Cm writeoob return error. .Sh SEE ALSO .Xr gnand 4 From owner-svn-src-projects@FreeBSD.ORG Wed May 9 14:35:19 2012 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 D6D991065672; Wed, 9 May 2012 14:35:19 +0000 (UTC) (envelope-from gber@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C14328FC0C; Wed, 9 May 2012 14:35:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q49EZJR0087752; Wed, 9 May 2012 14:35:19 GMT (envelope-from gber@svn.freebsd.org) Received: (from gber@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q49EZJ1B087750; Wed, 9 May 2012 14:35:19 GMT (envelope-from gber@svn.freebsd.org) Message-Id: <201205091435.q49EZJ1B087750@svn.freebsd.org> From: Grzegorz Bernacki Date: Wed, 9 May 2012 14:35:19 +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: r235178 - projects/nand/share/mk 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, 09 May 2012 14:35:19 -0000 Author: gber Date: Wed May 9 14:35:19 2012 New Revision: 235178 URL: http://svn.freebsd.org/changeset/base/235178 Log: nandfs: don't build nand tools by default Obtained from: Semihalf Supported by: FreeBSD Foundation, Juniper Networks Modified: projects/nand/share/mk/bsd.own.mk Modified: projects/nand/share/mk/bsd.own.mk ============================================================================== --- projects/nand/share/mk/bsd.own.mk Wed May 9 14:28:21 2012 (r235177) +++ projects/nand/share/mk/bsd.own.mk Wed May 9 14:35:19 2012 (r235178) @@ -370,7 +370,6 @@ __DEFAULT_YES_OPTIONS = \ MAILWRAPPER \ MAKE \ MAN \ - NAND \ NCP \ NDIS \ NETCAT \ @@ -426,6 +425,7 @@ __DEFAULT_NO_OPTIONS = \ ICONV \ IDEA \ LIBCPLUSPLUS \ + NAND \ OFED \ SHARED_TOOLCHAIN From owner-svn-src-projects@FreeBSD.ORG Wed May 9 14:52:03 2012 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 D827B106564A; Wed, 9 May 2012 14:52:03 +0000 (UTC) (envelope-from gber@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BF35E8FC0C; Wed, 9 May 2012 14:52:03 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q49Eq3NT088547; Wed, 9 May 2012 14:52:03 GMT (envelope-from gber@svn.freebsd.org) Received: (from gber@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q49Eq31e088531; Wed, 9 May 2012 14:52:03 GMT (envelope-from gber@svn.freebsd.org) Message-Id: <201205091452.q49Eq31e088531@svn.freebsd.org> From: Grzegorz Bernacki Date: Wed, 9 May 2012 14:52: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: r235182 - in projects/nand: lib/libnandfs lib/libstand sbin/nandfs sbin/newfs_nandfs sys/fs/nandfs 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, 09 May 2012 14:52:03 -0000 Author: gber Date: Wed May 9 14:52:03 2012 New Revision: 235182 URL: http://svn.freebsd.org/changeset/base/235182 Log: nandfs: Various fixes and cleanup. - get rid of crc32_le, use existing implementations instead - bump nandfs version number - properly calculate dat block number - properly iterate over dirty segments - fix rec_len calculation in make_dir() - prevent write access to bad blocks - don't create ".nandfs" in root folder of nandfs partition - make sure that syncer is run after cleaner exit and after vflush - fix assert condition about pblocknr - rewrite locking for syncer - provide dedicated vnode ops for system vnodes - enable cleaner by default Obtained from: Semihalf Supported by: FreeBSD Foundation, Juniper Networks Modified: projects/nand/lib/libnandfs/nandfs.c projects/nand/lib/libstand/nandfs.c projects/nand/sbin/nandfs/nandfs.c projects/nand/sbin/newfs_nandfs/newfs_nandfs.c projects/nand/sys/fs/nandfs/bmap.c projects/nand/sys/fs/nandfs/nandfs.h projects/nand/sys/fs/nandfs/nandfs_alloc.c projects/nand/sys/fs/nandfs/nandfs_bmap.c projects/nand/sys/fs/nandfs/nandfs_cleaner.c projects/nand/sys/fs/nandfs/nandfs_cpfile.c projects/nand/sys/fs/nandfs/nandfs_dat.c projects/nand/sys/fs/nandfs/nandfs_fs.h projects/nand/sys/fs/nandfs/nandfs_segment.c projects/nand/sys/fs/nandfs/nandfs_subr.c projects/nand/sys/fs/nandfs/nandfs_subr.h projects/nand/sys/fs/nandfs/nandfs_sufile.c projects/nand/sys/fs/nandfs/nandfs_vfsops.c projects/nand/sys/fs/nandfs/nandfs_vnops.c Modified: projects/nand/lib/libnandfs/nandfs.c ============================================================================== --- projects/nand/lib/libnandfs/nandfs.c Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/lib/libnandfs/nandfs.c Wed May 9 14:52:03 2012 (r235182) @@ -108,7 +108,7 @@ void nandfs_init(struct nandfs *fs, const char *dir) { - snprintf(fs->n_ioc, sizeof(fs->n_ioc), "%s/%s", dir, ".nandfs"); + snprintf(fs->n_ioc, sizeof(fs->n_ioc), "%s/%s", dir, "."); fs->n_iocfd = -1; fs->n_flags = NANDFS_IS_VALID; } Modified: projects/nand/lib/libstand/nandfs.c ============================================================================== --- projects/nand/lib/libstand/nandfs.c Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/lib/libstand/nandfs.c Wed May 9 14:52:03 2012 (r235182) @@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$"); #include #include "stand.h" #include "string.h" +#include "zlib.h" #define DEBUG #undef DEBUG @@ -124,27 +125,6 @@ struct fs_ops nandfs_fsops = { #define NINDIR(fs) ((fs)->nf_blocksize / sizeof(nandfs_daddr_t)) -/* from NetBSD's src/sys/net/if_ethersubr.c */ -static uint32_t -crc32_le(uint32_t crc, const uint8_t *buf, size_t len) -{ - static const uint32_t crctab[] = { - 0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, - 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, - 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, - 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c - }; - size_t i; - - for (i = 0; i < len; i++) { - crc ^= buf[i]; - crc = (crc >> 4) ^ crctab[crc & 0xf]; - crc = (crc >> 4) ^ crctab[crc & 0xf]; - } - - return (crc); -} - static int nandfs_check_fsdata_crc(struct nandfs_fsdata *fsdata) { @@ -158,8 +138,7 @@ nandfs_check_fsdata_crc(struct nandfs_fs /* Calculate */ fsdata->f_sum = (0); - comp_crc = crc32_le(fsdata->f_crc_seed, (uint8_t *) fsdata, - fsdata->f_bytes); + comp_crc = crc32(0, (uint8_t *)fsdata, fsdata->f_bytes); /* Restore */ fsdata->f_sum = fsdata_crc; @@ -183,8 +162,7 @@ nandfs_check_superblock_crc(struct nandf /* Calculate */ super->s_sum = (0); - comp_crc = crc32_le(fsdata->f_crc_seed, (uint8_t *) super, - fsdata->f_sbbytes); + comp_crc = crc32(0, (uint8_t *)super, fsdata->f_sbbytes); /* Restore */ super->s_sum = super_crc; @@ -983,7 +961,7 @@ nandfs_calc_mdt_consts(int blocksize, st static void nandfs_mdt_trans(struct nandfs_mdt *mdt, uint64_t index, - nandfs_daddr_t *blocknr, uint32_t *entry_in_block) + nandfs_daddr_t *blocknr, uint32_t *entry_in_block) { nandfs_daddr_t blknr; uint64_t group, group_offset, blocknr_in_group; Modified: projects/nand/sbin/nandfs/nandfs.c ============================================================================== --- projects/nand/sbin/nandfs/nandfs.c Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/sbin/nandfs/nandfs.c Wed May 9 14:52:03 2012 (r235182) @@ -43,7 +43,7 @@ static void usage(void) { - fprintf(stderr, "usage: nandfs [lssnap | mksnap | rmsnap] " + fprintf(stderr, "usage: nandfs [lssnap | mksnap | rmsnap ] " "node\n"); exit(1); } Modified: projects/nand/sbin/newfs_nandfs/newfs_nandfs.c ============================================================================== --- projects/nand/sbin/newfs_nandfs/newfs_nandfs.c Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/sbin/newfs_nandfs/newfs_nandfs.c Wed May 9 14:52:03 2012 (r235182) @@ -67,6 +67,8 @@ __FBSDID("$FreeBSD$"); #define NANDFS_FIRST_BLOCK nandfs_first_block() #define NANDFS_FIRST_CNO 1 +#define NANDFS_BLOCK_BAD 1 +#define NANDFS_BLOCK_GOOD 0 struct file_info { uint64_t ino; @@ -80,8 +82,7 @@ struct file_info { struct file_info user_files[] = { - {NANDFS_ROOT_INO, NULL, S_IFDIR | 0755, 0, 1, NULL, NULL}, - {NANDFS_USER_INO, ".nandfs", S_IFREG | 0644, 0, 0, NULL, NULL}, + {NANDFS_ROOT_INO, NULL, S_IFDIR | 0755, 0, 1, NULL, NULL}, }; struct file_info ifile = {NANDFS_IFILE_INO, NULL, 0, 0, -1, NULL, NULL}; @@ -117,9 +118,9 @@ static long rsv_segment_percent = 5; static time_t nandfs_time; static uint32_t bad_segments_count = 0; static uint32_t *bad_segments = NULL; +static uint8_t fsdata_blocks_state[NANDFS_NFSAREAS]; u_char *volumelabel = NULL; -uint32_t crc_seed; struct nandfs_super_root *sr; @@ -133,9 +134,18 @@ uint32_t seg_endblock; static uint32_t nandfs_first_block(void) { - uint32_t first_free; + uint32_t i, first_free, start_bad_segments = 0; + + for (i = 0; i < bad_segments_count; i++) { + if (i == bad_segments[i]) + start_bad_segments++; + else + break; + } + + first_free = SIZE_TO_BLOCK(NANDFS_DATA_OFFSET_BYTES(erasesize) + + (start_bad_segments * segsize)); - first_free = (uint32_t)(NANDFS_DATA_OFFSET_BYTES(erasesize)/blocksize); if (first_free < (uint32_t)blocks_per_segment) return (blocks_per_segment); else @@ -181,13 +191,15 @@ crc32_le(uint32_t crc, const uint8_t *bu }; size_t i; + crc = crc ^ ~0U; + for (i = 0; i < len; i++) { crc ^= buf[i]; crc = (crc >> 4) ^ crctab[crc & 0xf]; crc = (crc >> 4) ^ crctab[crc & 0xf]; } - return (crc); + return (crc ^ ~0U); } static void * @@ -466,7 +478,7 @@ save_segsum(struct nandfs_segment_summar ss->ss_sumbytes = sum_bytes; crc_skip = sizeof(ss->ss_datasum) + sizeof(ss->ss_sumsum); - ss->ss_sumsum = crc32_le(crc_seed, (uint8_t *)ss + crc_skip, + ss->ss_sumsum = crc32_le(0, (uint8_t *)ss + crc_skip, sum_bytes - crc_skip); crc_data = 0; @@ -483,7 +495,7 @@ save_segsum(struct nandfs_segment_summar /* save superroot crc */ crc_skip = sizeof(sr->sr_sum); - sr->sr_sum = crc32_le(crc_seed, (uint8_t *)sr + crc_skip, + sr->sr_sum = crc32_le(0, (uint8_t *)sr + crc_skip, NANDFS_SR_BYTES - crc_skip); /* segment checksup */ @@ -492,11 +504,12 @@ save_segsum(struct nandfs_segment_summar if (block->number < NANDFS_FIRST_BLOCK) continue; if (block->number == NANDFS_FIRST_BLOCK) - crc_data = crc32_le(crc_seed, + crc_data = crc32_le(0, (uint8_t *)block->data + crc_skip, blocksize - crc_skip); else - crc_data = crc32_le(crc_data, block->data, blocksize); + crc_data = crc32_le(crc_data, (uint8_t *)block->data, + blocksize); } ss->ss_datasum = crc_data; } @@ -513,7 +526,6 @@ create_fsdata(void) fsdata.f_first_data_block = NANDFS_FIRST_BLOCK; fsdata.f_blocks_per_segment = blocks_per_segment; fsdata.f_r_segments_percentage = rsv_segment_percent; - fsdata.f_crc_seed = crc_seed; fsdata.f_rev_level = NANDFS_CURRENT_REV; fsdata.f_sbbytes = NANDFS_SB_BYTES; fsdata.f_bytes = NANDFS_FSDATA_CRC_BYTES; @@ -530,7 +542,7 @@ create_fsdata(void) if (volumelabel) memcpy(fsdata.f_volume_name, volumelabel, 16); - fsdata.f_sum = crc32_le(crc_seed, (const uint8_t *)&fsdata, + fsdata.f_sum = crc32_le(0, (const uint8_t *)&fsdata, NANDFS_FSDATA_CRC_BYTES); } @@ -552,12 +564,12 @@ create_super_block(void) super_block.s_last_pseg = NANDFS_FIRST_BLOCK; super_block.s_last_seq = 1; super_block.s_free_blocks_count = - (nsegments - bad_segments_count) * blocks_per_segment; + (nsegments - bad_segments_count) * blocks_per_segment; super_block.s_mtime = 0; super_block.s_wtime = nandfs_time; super_block.s_state = NANDFS_VALID_FS; - super_block.s_sum = crc32_le(crc_seed, (const uint8_t *)&super_block, + super_block.s_sum = crc32_le(0, (const uint8_t *)&super_block, NANDFS_SB_BYTES); } @@ -617,16 +629,17 @@ make_dir(void *block, uint64_t ino, uint de->rec_len = NANDFS_DIR_REC_LEN(2); de->name_len = 2; de->file_type = DT_DIR; - memcpy(de->name, "..\0\0\0\0\0\0", 8); + memset(de->name, 0, NANDFS_DIR_NAME_LEN(2)); + memcpy(de->name, "..", 2); /* create '.' entry */ de = (void *)((uint8_t *)block + NANDFS_DIR_REC_LEN(2)); de->inode = ino; - de->rec_len = blocksize - NANDFS_DIR_REC_LEN(1) + NANDFS_DIR_REC_LEN(2); + de->rec_len = blocksize - NANDFS_DIR_REC_LEN(2); de->name_len = 1; de->file_type = DT_DIR; - memcpy(de->name, ".\0\0\0\0\0\0\0", 8); - + memset(de->name, 0, NANDFS_DIR_NAME_LEN(1)); + memcpy(de->name, ".", 1); return (de); } @@ -817,6 +830,9 @@ create_fs(void) create_super_block(); for (i = 0; i < NANDFS_NFSAREAS; i++) { + if (fsdata_blocks_state[i] != NANDFS_BLOCK_GOOD) + continue; + data = get_block((i * erasesize)/blocksize, 0); save_fsdata(data); @@ -899,7 +915,6 @@ check_parameters(void) } nandfs_time = time(NULL); - crc_seed = (uint32_t)mrand48(); } static void @@ -1003,8 +1018,10 @@ erase_device(int fd) debug("Deleting %jx\n", i * erasesize); if (g_delete(fd, i * erasesize, erasesize)) { printf("cannot delete %jx\n", i * erasesize); + fsdata_blocks_state[i] = NANDFS_BLOCK_BAD; failed++; - } + } else + fsdata_blocks_state[i] = NANDFS_BLOCK_GOOD; } if (failed == NANDFS_NFSAREAS) { Modified: projects/nand/sys/fs/nandfs/bmap.c ============================================================================== --- projects/nand/sys/fs/nandfs/bmap.c Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/sys/fs/nandfs/bmap.c Wed May 9 14:52:03 2012 (r235182) @@ -490,7 +490,7 @@ direct: nandfs_error("%s: cannot destroy " "block %jx, error %d\n", __func__, (uintmax_t)ip->i_db[i], error); - return (error); + return (error); } ip->i_db[i] = 0; } Modified: projects/nand/sys/fs/nandfs/nandfs.h ============================================================================== --- projects/nand/sys/fs/nandfs/nandfs.h Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/sys/fs/nandfs/nandfs.h Wed May 9 14:52:03 2012 (r235182) @@ -97,6 +97,7 @@ int nandfs_init(struct vfsconf *); int nandfs_uninit(struct vfsconf *); extern struct vop_vector nandfs_vnodeops; +extern struct vop_vector nandfs_system_vnodeops; struct nandfs_node; @@ -222,9 +223,8 @@ struct nandfs_device { extern SLIST_HEAD(_nandfs_devices, nandfs_device) nandfs_devices; -#define NANDFS_KILL_SYNCER 0x1 -#define NANDFS_FORCE_SYNCER 0x2 -#define NANDFS_UMOUNT 0x4 +#define NANDFS_FORCE_SYNCER 0x1 +#define NANDFS_UMOUNT 0x2 #define SYNCER_UMOUNT 0x0 #define SYNCER_VFS_SYNC 0x1 @@ -233,10 +233,32 @@ extern SLIST_HEAD(_nandfs_devices, nandf #define SYNCER_FSYNC 0x4 #define SYNCER_ROUPD 0x5 -#define NANDFS_WRITELOCK(vp, fsdev) nandfs_writelock(vp, fsdev) -#define NANDFS_WRITEUNLOCK(fsdev) nandfs_writeunlock(fsdev) +static __inline int +nandfs_writelockflags(struct nandfs_device *fsdev, int flags) +{ + int error = 0; -#define NANDFS_WRITEASSERT(fsdev) nandfs_writeassert(fsdev) + if (lockstatus(&fsdev->nd_seg_const) != LK_EXCLUSIVE) + error = lockmgr(&fsdev->nd_seg_const, flags | LK_SHARED, NULL); + + return (error); +} + +static __inline void +nandfs_writeunlock(struct nandfs_device *fsdev) +{ + + if (lockstatus(&fsdev->nd_seg_const) != LK_EXCLUSIVE) + lockmgr(&(fsdev)->nd_seg_const, LK_RELEASE, NULL); +} + +#define NANDFS_WRITELOCKFLAGS(fsdev, flags) nandfs_writelockflags(fsdev, flags) + +#define NANDFS_WRITELOCK(fsdev) NANDFS_WRITELOCKFLAGS(fsdev, 0) + +#define NANDFS_WRITEUNLOCK(fsdev) nandfs_writeunlock(fsdev) + +#define NANDFS_WRITEASSERT(fsdev) lockmgr_assert(&(fsdev)->nd_seg_const, KA_LOCKED) /* Specific mountpoint; head or a checkpoint/snapshot */ struct nandfsmount { Modified: projects/nand/sys/fs/nandfs/nandfs_alloc.c ============================================================================== --- projects/nand/sys/fs/nandfs/nandfs_alloc.c Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/sys/fs/nandfs/nandfs_alloc.c Wed May 9 14:52:03 2012 (r235182) @@ -286,7 +286,7 @@ nandfs_alloc_entry(struct nandfs_mdt* md uint32_t *mask, maskrw; nandfs_calc_idx_entry(mdt, req->entrynum, &group, &bitmap_idx, - &bitmap_off); + &bitmap_off); DPRINTF(ALLOC, ("nandfs_alloc_entry: req->entrynum=%jx bitmap_idx=%jx" " bitmap_off=%jx group=%jx\n", (uintmax_t)req->entrynum, Modified: projects/nand/sys/fs/nandfs/nandfs_bmap.c ============================================================================== --- projects/nand/sys/fs/nandfs/nandfs_bmap.c Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/sys/fs/nandfs/nandfs_bmap.c Wed May 9 14:52:03 2012 (r235182) @@ -73,37 +73,19 @@ int nandfs_bmap_lookup(struct nandfs_node *node, nandfs_lbn_t lblk, nandfs_daddr_t *vblk) { - int error; - - error = bmap_lookup(node, lblk, vblk); - if (error) - nandfs_error("%s: returned %d", __func__, error); - - return (error); -} - -int -nandfs_bmap_nlookup(struct nandfs_node *node, nandfs_lbn_t from, uint64_t blks, - uint64_t *l2vmap) -{ int error = 0; - nandfs_lbn_t lblk, *vblk; - - MPASS(blks == 1); - lblk = from; - vblk = l2vmap; - if (node->nn_ino == NANDFS_GC_INO && from >= 0) + if (node->nn_ino == NANDFS_GC_INO && lblk >= 0) *vblk = lblk; else - error = nandfs_bmap_lookup(node, from, l2vmap); + error = bmap_lookup(node, lblk, vblk); DPRINTF(TRANSLATE, ("%s: error %d ino %#jx lblocknr %#jx -> %#jx\n", __func__, error, (uintmax_t)node->nn_ino, (uintmax_t)lblk, (uintmax_t)*vblk)); if (error) - nandfs_error("%s: return %d", __func__, error); + nandfs_error("%s: returned %d", __func__, error); return (error); } Modified: projects/nand/sys/fs/nandfs/nandfs_cleaner.c ============================================================================== --- projects/nand/sys/fs/nandfs/nandfs_cleaner.c Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/sys/fs/nandfs/nandfs_cleaner.c Wed May 9 14:52:03 2012 (r235182) @@ -187,8 +187,13 @@ static int nandfs_cleaner_bdesc_is_alive(struct nandfs_device *fsdev, struct nandfs_bdesc *bdesc) { + int alive; - return (bdesc->bd_oblocknr == bdesc->bd_blocknr); + alive = bdesc->bd_oblocknr == bdesc->bd_blocknr; + if (!alive) + MPASS(abs(bdesc->bd_oblocknr - bdesc->bd_blocknr) > 2); + + return (alive); } static void @@ -213,7 +218,12 @@ nandfs_cleaner_iterate_psegment(struct n for (i = 0; i < segsum->ss_nbinfos; i++) { if (binfo[i].bi_v.bi_ino == NANDFS_DAT_INO) { (*bdpp)->bd_oblocknr = blk + segsum->ss_nblocks - - segsum->ss_nbinfos + i - 1; + segsum->ss_nbinfos + i; + /* + * XXX Hack + */ + if (segsum->ss_flags & NANDFS_SS_SR) + (*bdpp)->bd_oblocknr--; (*bdpp)->bd_level = binfo[i].bi_dat.bi_level; (*bdpp)->bd_offset = binfo[i].bi_dat.bi_blkoff; (*bdpp)++; @@ -288,9 +298,10 @@ nandfs_cleaner_choose_segment(struct nan suinfo = malloc(sizeof(*suinfo) * nsegs, M_NANDFSTEMP, M_ZERO | M_WAITOK); - if (*rseg >= fsdev->nd_seg_num) + if (*rseg >= fsdev->nd_fsdata.f_nsegments) *rseg = 0; +retry: error = nandfs_get_segment_info_filter(fsdev, suinfo, nsegs, *rseg, &ssegs, NANDFS_SEGMENT_USAGE_DIRTY, NANDFS_SEGMENT_USAGE_ACTIVE | NANDFS_SEGMENT_USAGE_ERROR | @@ -300,6 +311,11 @@ nandfs_cleaner_choose_segment(struct nan goto out; } + if (ssegs == 0 && *rseg != 0) { + *rseg = 0; + goto retry; + } + print_suinfo(suinfo, ssegs); for (i = 0; i < ssegs; i++) { @@ -392,7 +408,8 @@ nandfs_cleaner_body(struct nandfs_device } } - lockmgr(&fsdev->nd_seg_const, LK_EXCLUSIVE, NULL); + NANDFS_WRITELOCK(fsdev); + DPRINTF(CLEAN, ("%s: got lock\n", __func__)); error = nandfs_get_dat_vinfo(fsdev, vinfo, vip - vinfo); if (error) { @@ -430,7 +447,7 @@ nandfs_cleaner_body(struct nandfs_device nandfs_error("%s:%d\n", __FILE__, __LINE__); out_locked: - lockmgr(&fsdev->nd_seg_const, LK_RELEASE, NULL); + NANDFS_WRITEUNLOCK(fsdev); out: free(cpinfo, M_NANDFSTEMP); free(segnums, M_NANDFSTEMP); @@ -447,7 +464,7 @@ nandfs_cleaner(struct nandfs_device *fsd int error; while (!nandfs_cleaner_finished(fsdev)) { - if (!nandfs_cleaner_enable) + if (!nandfs_cleaner_enable || rebooting) continue; DPRINTF(CLEAN, ("%s: run started\n", __func__)); @@ -478,7 +495,6 @@ nandfs_cleaner_clean_segments(struct nan gc = nffsdev->nd_gc_node; - DPRINTF(CLEAN, ("%s: enter\n", __func__)); VOP_LOCK(NTOV(gc), LK_EXCLUSIVE); @@ -504,7 +520,7 @@ nandfs_cleaner_clean_segments(struct nan /* Delete checkpoints */ for (i = 0; i < npd; i++) { DPRINTF(CLEAN, ("delete checkpoint: %jx\n", - (uintmax_t)pd[i].p_start)); + (uintmax_t)pd[i].p_start)); error = nandfs_delete_cp(nffsdev->nd_cp_node, pd[i].p_start, pd[i].p_end); if (error) { Modified: projects/nand/sys/fs/nandfs/nandfs_cpfile.c ============================================================================== --- projects/nand/sys/fs/nandfs/nandfs_cpfile.c Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/sys/fs/nandfs/nandfs_cpfile.c Wed May 9 14:52:03 2012 (r235182) @@ -256,11 +256,11 @@ nandfs_cp_set_snapshot(struct nandfs_nod while (prev > cno) { curr = prev; nandfs_checkpoint_blk_offset(fsdev, prev, &prev_blk, &offset); - error = nandfs_bread(cp_node, prev_blk, NOCRED, 0, &bp); - if (error) { - brelse(bp); - return (error); - } + error = nandfs_bread(cp_node, prev_blk, NOCRED, 0, &bp); + if (error) { + brelse(bp); + return (error); + } cnp = (struct nandfs_checkpoint *)(bp->b_data + offset); list = &cnp->cp_snapshot_list; prev = list->ssl_prev; @@ -484,7 +484,7 @@ nandfs_cpinfo_fill(struct nandfs_checkpo static int nandfs_get_cpinfo_cp(struct nandfs_node *node, uint64_t cno, - struct nandfs_cpinfo *nci, uint32_t mnmembs, uint32_t *nmembs) + struct nandfs_cpinfo *nci, uint32_t mnmembs, uint32_t *nmembs) { struct nandfs_device *fsdev; struct buf *bp; @@ -521,7 +521,7 @@ nandfs_get_cpinfo_cp(struct nandfs_node do { nandfs_checkpoint_blk_offset(fsdev, cno, &blk, &offset); remaining = nandfs_checkpoint_blk_remaining(fsdev, cno, - blk, offset); + blk, offset); error = nandfs_bread(node, blk, NOCRED, 0, &bp); if (error) { brelse(bp); @@ -555,7 +555,7 @@ nandfs_get_cpinfo_cp(struct nandfs_node static int nandfs_get_cpinfo_sp(struct nandfs_node *node, uint64_t cno, - struct nandfs_cpinfo *nci, uint32_t mnmembs, uint32_t *nmembs) + struct nandfs_cpinfo *nci, uint32_t mnmembs, uint32_t *nmembs) { struct nandfs_checkpoint *cnp; struct nandfs_cpfile_header *cnh; @@ -606,7 +606,7 @@ nandfs_get_cpinfo_sp(struct nandfs_node cnp = (struct nandfs_checkpoint *)(bp->b_data + offset); flag = cnp->cp_flags; if (!(flag & NANDFS_CHECKPOINT_SNAPSHOT) || - (flag & NANDFS_CHECKPOINT_INVALID)) + (flag & NANDFS_CHECKPOINT_INVALID)) break; nci->nci_flags = flag; Modified: projects/nand/sys/fs/nandfs/nandfs_dat.c ============================================================================== --- projects/nand/sys/fs/nandfs/nandfs_dat.c Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/sys/fs/nandfs/nandfs_dat.c Wed May 9 14:52:03 2012 (r235182) @@ -333,7 +333,7 @@ nandfs_get_dat_bdescs(struct nandfs_devi (uintmax_t)bd[i].bd_oblocknr, (uintmax_t)bd[i].bd_blocknr, (uintmax_t)bd[i].bd_offset)); - error = nandfs_bmap_nlookup(dat_node, bd[i].bd_offset, 1, &map); + error = nandfs_bmap_lookup(dat_node, bd[i].bd_offset, &map); if (error) break; bd[i].bd_blocknr = map; Modified: projects/nand/sys/fs/nandfs/nandfs_fs.h ============================================================================== --- projects/nand/sys/fs/nandfs/nandfs_fs.h Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/sys/fs/nandfs/nandfs_fs.h Wed May 9 14:52:03 2012 (r235182) @@ -148,7 +148,7 @@ struct nandfs_fsdata { uint64_t f_ctime; /* creation time (execution time of newfs) */ - /* Block size represented as: blocksize = 1 << (f_log_block_size + 10) */ + /* Block size represented as: blocksize = 1 << (f_log_block_size + 10) */ uint32_t f_log_block_size; uint16_t f_inode_size; /* size of an inode */ @@ -164,15 +164,13 @@ struct nandfs_fsdata { uint32_t f_erasesize; uint64_t f_nsegments; /* number of segm. in filesystem */ - uint64_t f_first_data_block; /* 1st seg disk block number */ + nandfs_daddr_t f_first_data_block; /* 1st seg disk block number */ uint32_t f_blocks_per_segment; /* number of blocks per segment */ uint32_t f_r_segments_percentage; /* reserved segments percentage */ - uint32_t f_crc_seed; /* seed value of CRC calculation */ - struct uuid f_uuid; /* 128-bit uuid for volume */ char f_volume_name[16]; /* volume name */ - uint32_t f_pad[103]; + uint32_t f_pad[104]; } __packed; #ifdef _KERNEL @@ -220,7 +218,7 @@ CTASSERT(sizeof(struct nandfs_super_bloc #define NANDFS_MIN_SEGSIZE NANDFS_DEF_ERASESIZE -#define NANDFS_CURRENT_REV 8 /* current major revision */ +#define NANDFS_CURRENT_REV 9 /* current major revision */ #define NANDFS_FSDATA_CRC_BYTES offsetof(struct nandfs_fsdata, f_pad) /* Bytes count of super_block for CRC-calculation */ @@ -297,8 +295,8 @@ CTASSERT(sizeof(struct nandfs_binfo_v) = /* Convenience union for both types of binfo's */ union nandfs_binfo { - struct nandfs_binfo_v bi_v; - struct nandfs_binfo_dat bi_dat; + struct nandfs_binfo_v bi_v; + struct nandfs_binfo_dat bi_dat; }; /* Indirect buffers path */ Modified: projects/nand/sys/fs/nandfs/nandfs_segment.c ============================================================================== --- projects/nand/sys/fs/nandfs/nandfs_segment.c Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/sys/fs/nandfs/nandfs_segment.c Wed May 9 14:52:03 2012 (r235182) @@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include @@ -275,7 +276,7 @@ nandfs_add_superroot(struct nandfs_segin struct nandfs_super_root *sr; struct buf *bp = NULL; uint64_t crc_skip; - uint32_t crc_seed, crc_calc; + uint32_t crc_calc; int error; fsdev = seginfo->fsdev; @@ -300,9 +301,7 @@ nandfs_add_superroot(struct nandfs_segin sizeof(struct nandfs_inode)); crc_skip = sizeof(sr->sr_sum); - crc_seed = fsdev->nd_fsdata.f_crc_seed; - crc_calc = crc32_le(crc_seed, (uint8_t *)sr + crc_skip, - NANDFS_SR_BYTES - crc_skip); + crc_calc = crc32((uint8_t *)sr + crc_skip, NANDFS_SR_BYTES - crc_skip); sr->sr_sum = crc_calc; @@ -663,9 +662,9 @@ nandfs_fill_segsum(struct nandfs_segment struct nandfs_segment_summary *ss; struct nandfs_device *fsdev; struct buf *bp; - uint32_t rest, segsum_size, blocksize; + uint32_t rest, segsum_size, blocksize, crc_calc; uint16_t flags; - uint8_t *crc_area, crc_skip, crc_seed, crc_calc = 0; + uint8_t *crc_area, crc_skip; DPRINTF(SYNC, ("%s: seg %#jx nblocks %#x sumbytes %#x\n", __func__, (uintmax_t) seg->seg_num, @@ -673,7 +672,6 @@ nandfs_fill_segsum(struct nandfs_segment seg->segsum_bytes)); fsdev = seg->fsdev; - crc_seed = fsdev->nd_fsdata.f_crc_seed; flags = NANDFS_SS_LOGBGN | NANDFS_SS_LOGEND; if (has_sr) @@ -697,9 +695,9 @@ nandfs_fill_segsum(struct nandfs_segment segsum_size = seg->segsum_bytes - crc_skip; rest = min(seg->segsum_bytes, blocksize) - crc_skip; crc_area = (uint8_t *)ss + crc_skip; - crc_calc = crc_seed; + crc_calc = ~0U; while (segsum_size > 0) { - crc_calc = crc32_le(crc_calc, crc_area, rest); + crc_calc = crc32_raw(crc_area, rest, crc_calc); segsum_size -= rest; if (!segsum_size) break; @@ -707,7 +705,7 @@ nandfs_fill_segsum(struct nandfs_segment crc_area = (uint8_t *)bp->b_data; rest = segsum_size <= blocksize ? segsum_size : blocksize; } - ss->ss_sumsum = crc_calc; + ss->ss_sumsum = crc_calc ^ ~0U; return (ss); @@ -887,7 +885,7 @@ clean_seginfo(struct nandfs_seginfo *seg DPRINTF(SYNC, ("%s: seginfo %p\n", __func__, seginfo)); LIST_FOREACH(seg, &seginfo->seg_list, seg_link) { - nandfs_clean_segblocks(seg, unlock); + nandfs_clean_segblocks(seg, unlock); } } @@ -1015,7 +1013,14 @@ nandfs_sync_file(struct vnode *vp) cp = fsdev->nd_cp_node; ifile = nmp->nm_ifile_node; - lockmgr(&fsdev->nd_seg_const, LK_EXCLUSIVE, NULL); + NANDFS_WRITEASSERT(fsdev); + if (lockmgr(&fsdev->nd_seg_const, LK_UPGRADE, NULL) != 0) { + DPRINTF(SYNC, ("%s: lost shared lock\n", __func__)); + if (lockmgr(&fsdev->nd_seg_const, LK_EXCLUSIVE, NULL) != 0) + panic("couldn't lock exclusive"); + } + DPRINTF(SYNC, ("%s: got lock\n", __func__)); + VOP_LOCK(NTOV(su), LK_EXCLUSIVE); create_seginfo(fsdev, &seginfo); @@ -1033,7 +1038,7 @@ nandfs_sync_file(struct vnode *vp) clean_seginfo(seginfo, 0); delete_seginfo(seginfo); VOP_UNLOCK(NTOV(su), 0); - lockmgr(&fsdev->nd_seg_const, LK_RELEASE, NULL); + lockmgr(&fsdev->nd_seg_const, LK_DOWNGRADE, NULL); nandfs_error("%s: err:%d iterating dirty bufs vp:%p", __func__, error, vp); return (error); @@ -1049,7 +1054,7 @@ nandfs_sync_file(struct vnode *vp) delete_seginfo(seginfo); VOP_UNLOCK(NTOV(ifile), 0); VOP_UNLOCK(NTOV(su), 0); - lockmgr(&fsdev->nd_seg_const, LK_RELEASE, NULL); + lockmgr(&fsdev->nd_seg_const, LK_DOWNGRADE, NULL); nandfs_error("%s: err:%d updating vp:%p", __func__, error, vp); return (error); @@ -1068,7 +1073,7 @@ nandfs_sync_file(struct vnode *vp) delete_seginfo(seginfo); VOP_UNLOCK(NTOV(cp), 0); VOP_UNLOCK(NTOV(su), 0); - lockmgr(&fsdev->nd_seg_const, LK_RELEASE, NULL); + lockmgr(&fsdev->nd_seg_const, LK_DOWNGRADE, NULL); nandfs_error("%s: err:%d getting cp:%jx", __func__, error, fsdev->nd_last_cno + 1); return (error); @@ -1085,7 +1090,7 @@ nandfs_sync_file(struct vnode *vp) delete_seginfo(seginfo); VOP_UNLOCK(NTOV(cp), 0); VOP_UNLOCK(NTOV(su), 0); - lockmgr(&fsdev->nd_seg_const, LK_RELEASE, NULL); + lockmgr(&fsdev->nd_seg_const, LK_DOWNGRADE, NULL); nandfs_error("%s: err:%d setting cp:%jx", __func__, error, fsdev->nd_last_cno + 1); return (error); @@ -1103,7 +1108,7 @@ nandfs_sync_file(struct vnode *vp) delete_seginfo(seginfo); VOP_UNLOCK(NTOV(dat), 0); VOP_UNLOCK(NTOV(su), 0); - lockmgr(&fsdev->nd_seg_const, LK_RELEASE, NULL); + lockmgr(&fsdev->nd_seg_const, LK_DOWNGRADE, NULL); nandfs_error("%s: err:%d updating seg", __func__, error); return (error); @@ -1114,7 +1119,7 @@ nandfs_sync_file(struct vnode *vp) VOP_UNLOCK(NTOV(su), 0); delete_seginfo(seginfo); - lockmgr(&fsdev->nd_seg_const, LK_RELEASE, NULL); + lockmgr(&fsdev->nd_seg_const, LK_DOWNGRADE, NULL); if (cno_changed && !error) { if (nandfs_cps_between_sblocks != 0 && @@ -1140,6 +1145,7 @@ nandfs_segment_constructor(struct nandfs fsdev = nmp->nm_nandfsdev; lockmgr(&fsdev->nd_seg_const, LK_EXCLUSIVE, NULL); + DPRINTF(SYNC, ("%s: git lock\n", __func__)); again: create_seginfo(fsdev, &seginfo); Modified: projects/nand/sys/fs/nandfs/nandfs_subr.c ============================================================================== --- projects/nand/sys/fs/nandfs/nandfs_subr.c Wed May 9 14:51:07 2012 (r235181) +++ projects/nand/sys/fs/nandfs/nandfs_subr.c Wed May 9 14:52:03 2012 (r235182) @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -181,27 +182,6 @@ void nandfs_calc_mdt_consts(struct nandf mdt->groups_per_desc_block * mdt->blocks_per_group + 1; } -/* From NetBSD's src/sys/net/if_ethersubr.c */ -uint32_t -crc32_le(uint32_t crc, const uint8_t *buf, size_t len) -{ - static const uint32_t crctab[] = { - 0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, - 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, - 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, - 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c - }; - size_t i; - - for (i = 0; i < len; i++) { - crc ^= buf[i]; - crc = (crc >> 4) ^ crctab[crc & 0xf]; - crc = (crc >> 4) ^ crctab[crc & 0xf]; - } - - return (crc); -} - int nandfs_dev_bread(struct nandfs_device *nandfsdev, nandfs_lbn_t blocknr, struct ucred *cred, int flags, struct buf **bpp) @@ -274,12 +254,13 @@ nandfs_bdestroy(struct nandfs_node *node { int error; - NANDFS_WRITEASSERT(node->nn_nandfsdev); + if (!NANDFS_SYS_NODE(node->nn_ino)) + NANDFS_WRITEASSERT(node->nn_nandfsdev); error = nandfs_vblock_end(node->nn_nandfsdev, vblk); if (error) { nandfs_error("%s: ending vblk: %jx failed\n", - __func__, (uintmax_t)vblk); + __func__, (uintmax_t)vblk); return (error); } node->nn_inode.i_blocks--; @@ -294,7 +275,8 @@ nandfs_bcreate(struct nandfs_node *node, int error; ASSERT_VOP_LOCKED(NTOV(node), __func__); - NANDFS_WRITEASSERT(node->nn_nandfsdev); + if (!NANDFS_SYS_NODE(node->nn_ino)) + NANDFS_WRITEASSERT(node->nn_nandfsdev); DPRINTF(BLOCK, ("%s: vp:%p lbn:%#jx\n", __func__, NTOV(node), blocknr)); @@ -311,7 +293,7 @@ nandfs_bcreate(struct nandfs_node *node, error = nandfs_bmap_insert_block(node, blocknr, *bpp); if (error) { nandfs_warning("%s: failed bmap insert node:%p" - " blk:%jx\n", __func__, node, blocknr); + " blk:%jx\n", __func__, node, blocknr); brelse(*bpp); return (error); } @@ -433,8 +415,8 @@ nandfs_mdt_trans_blk(struct nandfs_mdt * (uintmax_t)*blocknr, *entry_in_block)); } -static int -nandfs_vtop(struct nandfs_device *nandfsdev, nandfs_daddr_t vblocknr, +int +nandfs_vtop(struct nandfs_node *node, nandfs_daddr_t vblocknr, nandfs_daddr_t *pblocknr) { struct nandfs_node *dat_node; @@ -444,8 +426,17 @@ nandfs_vtop(struct nandfs_device *nandfs uint32_t entry_in_block; int locked, error; - dat_node = nandfsdev->nd_dat_node; - nandfs_mdt_trans(&nandfsdev->nd_dat_mdt, vblocknr, &ldatblknr, + if (node->nn_ino == NANDFS_DAT_INO || node->nn_ino == NANDFS_GC_INO) { + *pblocknr = vblocknr; + return (0); + } + + /* only translate valid vblocknrs */ + if (vblocknr == 0) + return (0); + + dat_node = node->nn_nandfsdev->nd_dat_node; + nandfs_mdt_trans(&node->nn_nandfsdev->nd_dat_mdt, vblocknr, &ldatblknr, &entry_in_block); locked = NANDFS_VOP_ISLOCKED(NTOV(dat_node)); @@ -473,52 +464,12 @@ nandfs_vtop(struct nandfs_device *nandfs if (!locked) VOP_UNLOCK(NTOV(dat_node), 0); - MPASS(*pblocknr >= 0); + MPASS(*pblocknr >= node->nn_nandfsdev->nd_fsdata.f_first_data_block || + *pblocknr == 0); return (0); } - -int -nandfs_nvtop(struct nandfs_node *node, uint64_t blks, nandfs_daddr_t *l2vmap, - nandfs_daddr_t *v2pmap) -{ - nandfs_daddr_t vblocknr; - uint64_t *pblocknr; - int i, error; - - /* The DAT and GC nodes are the only ones not mapped virtual */ - if (node->nn_ino == NANDFS_DAT_INO || node->nn_ino == NANDFS_GC_INO) { - memcpy(v2pmap, l2vmap, blks * sizeof(uint64_t)); - return (0); - } - - error = 0; - for (i = 0; i < blks; i++) { - vblocknr = l2vmap[i]; - pblocknr = v2pmap + i; - *pblocknr = 0; - - /* only translate valid vblocknrs */ - if (vblocknr == 0) - continue; - error = nandfs_vtop(node->nn_nandfsdev, vblocknr, pblocknr); - if (error) - break; - } - - return (error); -} - -struct nandfs_recover_info { - uint64_t segnum; - uint64_t pseg; - - struct nandfs_segment_summary segsum; - struct nandfs_super_root super_root; - STAILQ_ENTRY(nandfs_recover_info) next; -}; - int nandfs_segsum_valid(struct nandfs_segment_summary *segsum) { @@ -545,47 +496,32 @@ nandfs_load_segsum(struct nandfs_device if (!nandfs_segsum_valid(segsum)) { DPRINTF(VOLUMES, ("%s: bad magic pseg:%jx\n", __func__, - blocknr)); + blocknr)); return (EINVAL); } return (error); } -/* - * Helper functions of nandfs_mount() that actually mounts the media. - */ -static int -nandfs_load_segsum_ri(struct nandfs_device *nandfsdev, - struct nandfs_recover_info *ri) -{ - - return (nandfs_load_segsum(nandfsdev, ri->pseg, &ri->segsum)); -} - static int nandfs_load_super_root(struct nandfs_device *nandfsdev, - struct nandfs_recover_info *ri) + struct nandfs_segment_summary *segsum, uint64_t pseg) { - struct nandfs_segment_summary *segsum; struct nandfs_super_root super_root; struct buf *bp; uint64_t blocknr; - uint32_t super_root_crc, comp_crc, crc_seed; + uint32_t super_root_crc, comp_crc; int off, error; - /* Process segment summary */ - segsum = &ri->segsum; - /* Check if there is a superroot */ if ((segsum->ss_flags & NANDFS_SS_SR) == 0) { DPRINTF(VOLUMES, ("%s: no super root in pseg:%jx\n", __func__, - ri->pseg)); + pseg)); return (ENOENT); } /* Get our super root, located at the end of the pseg */ - blocknr = ri->pseg + segsum->ss_nblocks - 1; + blocknr = pseg + segsum->ss_nblocks - 1; DPRINTF(VOLUMES, ("%s: try at %#jx\n", __func__, (uintmax_t)blocknr)); error = nandfs_dev_bread(nandfsdev, blocknr, NOCRED, 0, &bp); @@ -598,8 +534,7 @@ nandfs_load_super_root(struct nandfs_dev /* Check super root CRC */ super_root_crc = super_root.sr_sum; off = sizeof(super_root.sr_sum); - crc_seed = nandfsdev->nd_fsdata.f_crc_seed; - comp_crc = crc32_le(crc_seed, ((uint8_t *) &super_root) + off, + comp_crc = crc32((uint8_t *)&super_root + off, NANDFS_SR_BYTES - off); if (super_root_crc != comp_crc) { @@ -621,96 +556,68 @@ int nandfs_search_super_root(struct nandfs_device *nandfsdev) { struct nandfs_super_block *super; - struct nandfs_segment_summary *segsum; - struct nandfs_recover_info *ri, *ori, *i_ri; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed May 9 15:36:38 2012 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 66681106564A; Wed, 9 May 2012 15:36:38 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 51FB58FC17; Wed, 9 May 2012 15:36:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q49FacP3090866; Wed, 9 May 2012 15:36:38 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q49FacpR090863; Wed, 9 May 2012 15:36:38 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201205091536.q49FacpR090863@svn.freebsd.org> From: Marcel Moolenaar Date: Wed, 9 May 2012 15:36:38 +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: r235197 - in projects/altix2/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: Wed, 09 May 2012 15:36:38 -0000 Author: marcel Date: Wed May 9 15:36:37 2012 New Revision: 235197 URL: http://svn.freebsd.org/changeset/base/235197 Log: o Use M_NOWAIT instead of M_WAITOK. It's assumed. This is a good area for control by a flag. o Add busdma_mem_get_seg_addr() and busdma_mem_get_seg_busaddr() so that drivers can obtain address information about a segment. To be added are busdma_mem_get_seg_paddr() and busdma_mem_get_seg_size(). XXX: I assume allocations for 1 segment only. The linked list approach is probably not how I want to productize. Modified: projects/altix2/sys/kern/subr_busdma.c projects/altix2/sys/sys/busdma.h Modified: projects/altix2/sys/kern/subr_busdma.c ============================================================================== --- projects/altix2/sys/kern/subr_busdma.c Wed May 9 15:25:58 2012 (r235196) +++ projects/altix2/sys/kern/subr_busdma.c Wed May 9 15:36:37 2012 (r235197) @@ -55,10 +55,10 @@ struct busdma_tag { struct busdma_seg { TAILQ_ENTRY(busdma_seg) ds_chain; + bus_addr_t ds_baddr; + vm_paddr_t ds_paddr; vm_offset_t ds_vaddr; vm_size_t ds_size; - vm_paddr_t ds_paddr; - bus_addr_t ds_baddr; }; struct busdma_mem { @@ -156,6 +156,18 @@ _busdma_tag_make(device_t dev, struct bu return (0); } +static struct busdma_seg * +_busdma_mem_get_seg(struct busdma_mem *mem, u_int idx) +{ + struct busdma_seg *seg; + + if (idx >= mem->dm_nsegs) + return (NULL); + + seg = TAILQ_FIRST(&mem->dm_seg); + return (seg); +} + int busdma_tag_create(device_t dev, bus_addr_t maxaddr, bus_addr_t align, bus_addr_t bndry, bus_size_t maxsz, u_int nsegs, bus_size_t maxsegsz, @@ -209,13 +221,13 @@ busdma_mem_alloc(struct busdma_tag *tag, struct busdma_seg *seg; vm_size_t maxsz; - mem = malloc(sizeof(*mem), M_BUSDMA_MEM, M_WAITOK | M_ZERO); + mem = malloc(sizeof(*mem), M_BUSDMA_MEM, M_NOWAIT | M_ZERO); mem->dm_tag = tag; TAILQ_INIT(&mem->dm_seg); maxsz = tag->dt_maxsz; while (maxsz > 0 && mem->dm_nsegs < tag->dt_nsegs) { - seg = malloc(sizeof(*seg), M_BUSDMA_SEG, M_WAITOK | M_ZERO); + seg = malloc(sizeof(*seg), M_BUSDMA_SEG, M_NOWAIT | M_ZERO); TAILQ_INSERT_TAIL(&mem->dm_seg, seg, ds_chain); seg->ds_size = MIN(maxsz, tag->dt_maxsegsz); seg->ds_vaddr = kmem_alloc_contig(kernel_map, seg->ds_size, 0, @@ -226,6 +238,7 @@ busdma_mem_alloc(struct busdma_tag *tag, goto fail; } seg->ds_paddr = pmap_kextract(seg->ds_vaddr); + seg->ds_baddr = seg->ds_paddr; maxsz -= seg->ds_size; mem->dm_nsegs++; } @@ -246,3 +259,21 @@ busdma_mem_alloc(struct busdma_tag *tag, free(mem, M_BUSDMA_MEM); return (ENOMEM); } + +vm_offset_t +busdma_mem_get_seg_addr(struct busdma_mem *mem, u_int idx) +{ + struct busdma_seg *seg; + + seg = _busdma_mem_get_seg(mem, idx); + return ((seg != NULL) ? seg->ds_vaddr : 0); +} + +bus_addr_t +busdma_mem_get_seg_busaddr(struct busdma_mem *mem, u_int idx) +{ + struct busdma_seg *seg; + + seg = _busdma_mem_get_seg(mem, idx); + return ((seg != NULL) ? seg->ds_baddr : 0); +} Modified: projects/altix2/sys/sys/busdma.h ============================================================================== --- projects/altix2/sys/sys/busdma.h Wed May 9 15:25:58 2012 (r235196) +++ projects/altix2/sys/sys/busdma.h Wed May 9 15:36:37 2012 (r235197) @@ -83,4 +83,22 @@ int busdma_tag_derive(busdma_tag_t tag, */ int busdma_mem_alloc(busdma_tag_t tag, u_int flags, busdma_mem_t *mem_p); +/* + * busdma_mem_get_seg_addr + * returns: kernel virtual address of the specified segment. + * arguments: + * mem the DMA memory allocated or mapped. + * idx the segment index, starting at 0. + */ +vm_offset_t busdma_mem_get_seg_addr(busdma_mem_t tag, u_int idx); + +/* + * busdma_mem_get_seg_busaddr + * returns: (virtual) bus address of the specified segment. + * arguments: + * mem the BMA memory allocated to mapped. + * idx the segment index, starting at 0. + */ +bus_addr_t busdma_mem_get_seg_busaddr(busdma_mem_t mem, u_int idx); + #endif /* _SYS_BUSDMA_H_ */ From owner-svn-src-projects@FreeBSD.ORG Wed May 9 16:57:09 2012 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 B951A106566C; Wed, 9 May 2012 16:57:09 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A3E638FC0C; Wed, 9 May 2012 16:57:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q49Gv9YO093834; Wed, 9 May 2012 16:57:09 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q49Gv9Ab093830; Wed, 9 May 2012 16:57:09 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201205091657.q49Gv9Ab093830@svn.freebsd.org> From: Marcel Moolenaar Date: Wed, 9 May 2012 16:57:09 +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: r235200 - projects/altix2/sys/dev/mpt 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, 09 May 2012 16:57:09 -0000 Author: marcel Date: Wed May 9 16:57:09 2012 New Revision: 235200 URL: http://svn.freebsd.org/changeset/base/235200 Log: Convert the request buffer to busdma/mi. Since we don't have a dmamap for allocated memory, compile it out entirely. This also exposes the places where we call bus_dmamap_sync(), which is a good open item to have next. Modified: projects/altix2/sys/dev/mpt/mpt.c projects/altix2/sys/dev/mpt/mpt.h projects/altix2/sys/dev/mpt/mpt_pci.c Modified: projects/altix2/sys/dev/mpt/mpt.c ============================================================================== --- projects/altix2/sys/dev/mpt/mpt.c Wed May 9 16:06:20 2012 (r235199) +++ projects/altix2/sys/dev/mpt/mpt.c Wed May 9 16:57:09 2012 (r235200) @@ -742,9 +742,12 @@ mpt_intr(void *arg) */ reply_baddr = MPT_REPLY_BADDR(reply_desc); offset = reply_baddr - (mpt->reply_phys & 0xFFFFFFFF); +#ifdef MPT_USE_BUSDMA +#else bus_dmamap_sync_range(mpt->reply_dmat, mpt->reply_dmap, offset, MPT_REPLY_SIZE, BUS_DMASYNC_POSTREAD); +#endif reply_frame = MPT_REPLY_OTOV(mpt, offset); ctxt_idx = le32toh(reply_frame->MsgContext); } else { @@ -820,15 +823,21 @@ mpt_intr(void *arg) " 0x%x)\n", req_index, reply_desc); } +#ifdef MPT_USE_BUSDMA +#else bus_dmamap_sync(mpt->request_dmat, mpt->request_dmap, BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); +#endif free_rf = mpt_reply_handlers[cb_index](mpt, req, reply_desc, reply_frame); if (reply_frame != NULL && free_rf) { +#ifdef MPT_USE_BUSDMA +#else bus_dmamap_sync_range(mpt->reply_dmat, mpt->reply_dmap, offset, MPT_REPLY_SIZE, BUS_DMASYNC_PREREAD); +#endif mpt_free_reply(mpt, reply_baddr); } @@ -861,8 +870,11 @@ mpt_complete_request_chain(struct mpt_so MSG_REQUEST_HEADER *msg_hdr; u_int cb_index; +#ifdef MPT_USE_BUSDMA +#else bus_dmamap_sync(mpt->request_dmat, mpt->request_dmap, BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); +#endif msg_hdr = (MSG_REQUEST_HEADER *)req->req_vbuf; ioc_status_frame.Function = msg_hdr->Function; ioc_status_frame.MsgContext = msg_hdr->MsgContext; @@ -1250,8 +1262,11 @@ mpt_free_request(struct mpt_softc *mpt, mpt_send_event_ack(mpt, req, &record->reply, record->context); offset = (uint32_t)((uint8_t *)record - mpt->reply); reply_baddr = offset + (mpt->reply_phys & 0xFFFFFFFF); +#ifdef MPT_USE_BUSDMA +#else bus_dmamap_sync_range(mpt->reply_dmat, mpt->reply_dmap, offset, MPT_REPLY_SIZE, BUS_DMASYNC_PREREAD); +#endif mpt_free_reply(mpt, reply_baddr); } @@ -1291,8 +1306,11 @@ mpt_send_cmd(struct mpt_softc *mpt, requ if (mpt->verbose > MPT_PRT_DEBUG2) { mpt_dump_request(mpt, req); } +#ifdef MPT_USE_BUSDMA +#else bus_dmamap_sync(mpt->request_dmat, mpt->request_dmap, BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); +#endif req->state |= REQ_STATE_QUEUED; KASSERT(mpt_req_on_free_list(mpt, req) == 0, ("req %p:%u func %x on freelist list in mpt_send_cmd", @@ -2528,7 +2546,9 @@ mpt_download_fw(struct mpt_softc *mpt) static int mpt_dma_buf_alloc(struct mpt_softc *mpt) { +#ifndef MPT_USE_BUSDMA struct mpt_map_info mi; +#endif uint8_t *vptr; uint32_t pptr, end; int i, error; @@ -2552,6 +2572,16 @@ mpt_dma_buf_alloc(struct mpt_softc *mpt) return (1); } +#ifdef MPT_USE_BUSDMA + error = busdma_mem_alloc((busdma_tag_t)mpt->request_dmat, 0, + &mpt->request_dmam); + if (error != 0) { + mpt_prt(mpt, "cannot allocate DMA memory for requests\n"); + return (error); + } + mpt->request = (void *)busdma_mem_get_seg_addr(mpt->request_dmam, 0); + mpt->request_phys = busdma_mem_get_seg_busaddr(mpt->request_dmam, 0); +#else /* Allocate some DMA accessible memory for requests */ if (bus_dmamem_alloc(mpt->request_dmat, (void **)&mpt->request, BUS_DMA_NOWAIT | BUS_DMA_COHERENT, &mpt->request_dmap) != 0) { @@ -2573,6 +2603,7 @@ mpt_dma_buf_alloc(struct mpt_softc *mpt) return (1); } mpt->request_phys = mi.phys; +#endif /* * Now create per-request dma maps @@ -2618,11 +2649,14 @@ mpt_dma_buf_free(struct mpt_softc *mpt) for (i = 0; i < MPT_MAX_REQUESTS(mpt); i++) { bus_dmamap_destroy(mpt->buffer_dmat, mpt->request_pool[i].dmap); } +#ifdef MPT_USE_BUSDMA +#else bus_dmamap_unload(mpt->request_dmat, mpt->request_dmap); bus_dmamem_free(mpt->request_dmat, mpt->request, mpt->request_dmap); bus_dma_tag_destroy(mpt->request_dmat); mpt->request_dmat = 0; bus_dma_tag_destroy(mpt->buffer_dmat); +#endif } /* Modified: projects/altix2/sys/dev/mpt/mpt.h ============================================================================== --- projects/altix2/sys/dev/mpt/mpt.h Wed May 9 16:06:20 2012 (r235199) +++ projects/altix2/sys/dev/mpt/mpt.h Wed May 9 16:57:09 2012 (r235200) @@ -752,13 +752,21 @@ struct mpt_softc { bus_dma_tag_t parent_dmat; /* DMA tag for parent PCI bus */ bus_dma_tag_t reply_dmat; /* DMA tag for reply memory */ +#ifdef MPT_USE_BUSDMA + busdma_mem_t reply_dmam; +#else bus_dmamap_t reply_dmap; /* DMA map for reply memory */ +#endif uint8_t *reply; /* KVA of reply memory */ bus_addr_t reply_phys; /* BusAddr of reply memory */ bus_dma_tag_t buffer_dmat; /* DMA tag for buffers */ bus_dma_tag_t request_dmat; /* DMA tag for request memroy */ +#ifdef MPT_USE_BUSDMA + busdma_mem_t request_dmam; +#else bus_dmamap_t request_dmap; /* DMA map for request memroy */ +#endif uint8_t *request; /* KVA of Request memory */ bus_addr_t request_phys; /* BusAddr of request memory */ Modified: projects/altix2/sys/dev/mpt/mpt_pci.c ============================================================================== --- projects/altix2/sys/dev/mpt/mpt_pci.c Wed May 9 16:06:20 2012 (r235199) +++ projects/altix2/sys/dev/mpt/mpt_pci.c Wed May 9 16:57:09 2012 (r235200) @@ -734,7 +734,10 @@ static int mpt_dma_mem_alloc(struct mpt_softc *mpt) { size_t len; +#ifndef MPT_USE_BUSDMA struct mpt_map_info mi; +#endif + int error; /* Check if we alreay have allocated the reply memory */ if (mpt->reply_phys != 0) { @@ -746,14 +749,14 @@ mpt_dma_mem_alloc(struct mpt_softc *mpt) mpt->request_pool = (request_t *)malloc(len, M_DEVBUF, M_WAITOK); if (mpt->request_pool == NULL) { mpt_prt(mpt, "cannot allocate request pool\n"); - return (1); + return (ENOMEM); } memset(mpt->request_pool, 0, len); #else mpt->request_pool = (request_t *)malloc(len, M_DEVBUF, M_WAITOK|M_ZERO); if (mpt->request_pool == NULL) { mpt_prt(mpt, "cannot allocate request pool\n"); - return (1); + return (ENOMEM); } #endif @@ -763,32 +766,45 @@ mpt_dma_mem_alloc(struct mpt_softc *mpt) * Align at byte boundaries, * Limit to 32-bit addressing for request/reply queues. */ - if (mpt_dma_tag_create(mpt, /*parent*/bus_get_dma_tag(mpt->dev), + error = mpt_dma_tag_create(mpt, /*parent*/bus_get_dma_tag(mpt->dev), /*alignment*/1, /*boundary*/0, /*lowaddr*/BUS_SPACE_MAXADDR, /*highaddr*/BUS_SPACE_MAXADDR, /*filter*/NULL, /*filterarg*/NULL, /*maxsize*/BUS_SPACE_MAXSIZE_32BIT, /*nsegments*/BUS_SPACE_UNRESTRICTED, /*maxsegsz*/BUS_SPACE_MAXSIZE_32BIT, /*flags*/0, - &mpt->parent_dmat) != 0) { + &mpt->parent_dmat); + if (error != 0) { mpt_prt(mpt, "cannot create parent dma tag\n"); - return (1); + return (error); } /* Create a child tag for reply buffers */ - if (mpt_dma_tag_derive(mpt, mpt->parent_dmat, PAGE_SIZE, 0, + error = mpt_dma_tag_derive(mpt, mpt->parent_dmat, PAGE_SIZE, 0, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, 2 * PAGE_SIZE, 1, BUS_SPACE_MAXSIZE_32BIT, 0, - &mpt->reply_dmat) != 0) { + &mpt->reply_dmat); + if (error != 0) { mpt_prt(mpt, "cannot create a dma tag for replies\n"); - return (1); + return (error); } +#ifdef MPT_USE_BUSDMA + error = busdma_mem_alloc((busdma_tag_t)mpt->reply_dmat, 0, + &mpt->reply_dmam); + if (error != 0) { + mpt_prt(mpt, "cannot allocate DMA memory for replies\n"); + return (error); + } + mpt->reply = (void *)busdma_mem_get_seg_addr(mpt->reply_dmam, 0); + mpt->reply_phys = busdma_mem_get_seg_busaddr(mpt->reply_dmam, 0); +#else /* Allocate some DMA accessible memory for replies */ - if (bus_dmamem_alloc(mpt->reply_dmat, (void **)&mpt->reply, - BUS_DMA_NOWAIT, &mpt->reply_dmap) != 0) { + error = bus_dmamem_alloc(mpt->reply_dmat, (void **)&mpt->reply, + BUS_DMA_NOWAIT, &mpt->reply_dmap); + if (error != 0) { mpt_prt(mpt, "cannot allocate %lu bytes of reply memory\n", (u_long) (2 * PAGE_SIZE)); - return (1); + return (error); } mi.mpt = mpt; @@ -801,9 +817,10 @@ mpt_dma_mem_alloc(struct mpt_softc *mpt) if (mi.error) { mpt_prt(mpt, "error %d loading dma map for DMA reply queue\n", mi.error); - return (1); + return (mi.error); } mpt->reply_phys = mi.phys; +#endif /* MPT_USE_BUSDMA */ return (0); } @@ -819,11 +836,13 @@ mpt_dma_mem_free(struct mpt_softc *mpt) mpt_lprt(mpt, MPT_PRT_DEBUG, "already released dma memory\n"); return; } - +#ifdef MPT_USE_BUSDMA +#else bus_dmamap_unload(mpt->reply_dmat, mpt->reply_dmap); bus_dmamem_free(mpt->reply_dmat, mpt->reply, mpt->reply_dmap); bus_dma_tag_destroy(mpt->reply_dmat); bus_dma_tag_destroy(mpt->parent_dmat); +#endif mpt->reply_dmat = NULL; free(mpt->request_pool, M_DEVBUF); mpt->request_pool = NULL; From owner-svn-src-projects@FreeBSD.ORG Thu May 10 08:03:00 2012 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 85026106564A; Thu, 10 May 2012 08:03:00 +0000 (UTC) (envelope-from gber@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 703388FC15; Thu, 10 May 2012 08:03:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4A8309e023691; Thu, 10 May 2012 08:03:00 GMT (envelope-from gber@svn.freebsd.org) Received: (from gber@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4A830LJ023689; Thu, 10 May 2012 08:03:00 GMT (envelope-from gber@svn.freebsd.org) Message-Id: <201205100803.q4A830LJ023689@svn.freebsd.org> From: Grzegorz Bernacki Date: Thu, 10 May 2012 08:03:00 +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: r235213 - projects/nand/usr.sbin 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, 10 May 2012 08:03:00 -0000 Author: gber Date: Thu May 10 08:02:59 2012 New Revision: 235213 URL: http://svn.freebsd.org/changeset/base/235213 Log: nand: Add userspace tools to Makefile Obtained from: Semihalf Supported by: FreeBSD Foundation, Juniper Networks Modified: projects/nand/usr.sbin/Makefile Modified: projects/nand/usr.sbin/Makefile ============================================================================== --- projects/nand/usr.sbin/Makefile Thu May 10 04:11:39 2012 (r235212) +++ projects/nand/usr.sbin/Makefile Thu May 10 08:02:59 2012 (r235213) @@ -223,6 +223,11 @@ SUBDIR+= lpr SUBDIR+= manctl .endif +.if ${MK_NAND} != "no" +SUBDIR+= nandsim +SUBDIR+= nandtool +.endif + .if ${MK_NETGRAPH} != "no" SUBDIR+= flowctl SUBDIR+= lmcconfig From owner-svn-src-projects@FreeBSD.ORG Thu May 10 08:05:35 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 279D61065673; Thu, 10 May 2012 08:05:35 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EE0C28FC17; Thu, 10 May 2012 08:05:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4A85YmN023802; Thu, 10 May 2012 08:05:34 GMT (envelope-from pho@svn.freebsd.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4A85YZA023801; Thu, 10 May 2012 08:05:34 GMT (envelope-from pho@svn.freebsd.org) Message-Id: <201205100805.q4A85YZA023801@svn.freebsd.org> From: Peter Holm Date: Thu, 10 May 2012 08:05:34 +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: r235214 - projects/stress2/misc 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, 10 May 2012 08:05:35 -0000 Author: pho Date: Thu May 10 08:05:34 2012 New Revision: 235214 URL: http://svn.freebsd.org/changeset/base/235214 Log: Added test scenario for ext2fs(5). Added: projects/stress2/misc/ext2fs.sh Added: projects/stress2/misc/ext2fs.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/stress2/misc/ext2fs.sh Thu May 10 08:05:34 2012 (r235214) @@ -0,0 +1,58 @@ +#!/bin/sh + +# +# Copyright (c) 2012 Peter Holm +# 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 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 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) +# 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$ +# + +# Deadlock seen: http://people.freebsd.org/~pho/stress/log/ext2fs.txt + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +. ../default.cfg + +# Uses mke2fs from sysutils/e2fsprogs +[ -z "`type mke2fs 2>/dev/null`" ] && echo "mke2fs not found" && exit 1 + +mount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint +mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart + +mdconfig -a -t swap -s 1g -u $mdstart +mke2fs -m 0 /dev/md$mdstart > /dev/null + +mount -t ext2fs /dev/md$mdstart /mnt +chmod 777 $mntpoint + +export runRUNTIME=10m +export RUNDIR=$mntpoint/stressX + +su $testuser -c 'cd ..; ./run.sh marcus.cfg' + +while mount | grep $mntpoint | grep -q /dev/md; do + umount $mntpoint || sleep 1 +done + +mdconfig -d -u $mdstart From owner-svn-src-projects@FreeBSD.ORG Thu May 10 08:05:42 2012 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 722E51065785; Thu, 10 May 2012 08:05:42 +0000 (UTC) (envelope-from gber@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E160C8FC1A; Thu, 10 May 2012 08:05:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4A85f5n023842; Thu, 10 May 2012 08:05:41 GMT (envelope-from gber@svn.freebsd.org) Received: (from gber@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4A85fk0023840; Thu, 10 May 2012 08:05:41 GMT (envelope-from gber@svn.freebsd.org) Message-Id: <201205100805.q4A85fk0023840@svn.freebsd.org> From: Grzegorz Bernacki Date: Thu, 10 May 2012 08:05: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: r235215 - projects/nand/share/man/man4 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, 10 May 2012 08:05:42 -0000 Author: gber Date: Thu May 10 08:05:41 2012 New Revision: 235215 URL: http://svn.freebsd.org/changeset/base/235215 Log: nand: nandsim man cleanup. Obtained from: Semihalf Supported by: FreeBSD Foundation, Juniper Networks Modified: projects/nand/share/man/man4/nandsim.4 Modified: projects/nand/share/man/man4/nandsim.4 ============================================================================== --- projects/nand/share/man/man4/nandsim.4 Thu May 10 08:05:34 2012 (r235214) +++ projects/nand/share/man/man4/nandsim.4 Thu May 10 08:05:41 2012 (r235215) @@ -50,8 +50,8 @@ and can be characterized with the follow .It plugs into the .Xr nand 4 -framework APIs as if it were a hardware controller with real NAND chips -connected to it +framework APIs as if it were a hardware controller (hanging on the nexus bus) +with real NAND chips connected to it .It physically part of the kernel code (either statically linked into the kernel image or built as a module) From owner-svn-src-projects@FreeBSD.ORG Thu May 10 10:31:25 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3D91C106566C; Thu, 10 May 2012 10:31:25 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id 9AF968FC08; Thu, 10 May 2012 10:31:24 +0000 (UTC) Received: from skuns.kiev.zoral.com.ua (localhost [127.0.0.1]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id q4AAV6jM017279; Thu, 10 May 2012 13:31:06 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.5/8.14.5) with ESMTP id q4AAV6gs090596; Thu, 10 May 2012 13:31:06 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.5/8.14.5/Submit) id q4AAV6rW090595; Thu, 10 May 2012 13:31:06 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Thu, 10 May 2012 13:31:05 +0300 From: Konstantin Belousov To: Grzegorz Bernacki Message-ID: <20120510103105.GG2358@deviant.kiev.zoral.com.ua> References: <201203170318.q2H3ITdI047893@svn.freebsd.org> <20120317085116.GC1340@garage.freebsd.pl> <20120317161050.GI75778@deviant.kiev.zoral.com.ua> <4FA8FFB9.7090002@freebsd.org> <20120508095631.GV2358@deviant.kiev.zoral.com.ua> <4FA94609.3060306@freebsd.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="i0oNXV9PwusX79ef" Content-Disposition: inline In-Reply-To: <4FA94609.3060306@freebsd.org> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-4.0 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r233072 - projects/nand/sys/kern 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, 10 May 2012 10:31:25 -0000 --i0oNXV9PwusX79ef Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, May 08, 2012 at 06:12:57PM +0200, Grzegorz Bernacki wrote: > On 05/08/12 11:56, Konstantin Belousov wrote: > >On Tue, May 08, 2012 at 01:12:57PM +0200, Grzegorz Bernacki wrote: > >>On 03/17/12 17:10, Konstantin Belousov wrote: > >>>On Sat, Mar 17, 2012 at 09:51:16AM +0100, Pawel Jakub Dawidek wrote: > >>>>On Sat, Mar 17, 2012 at 03:18:29AM +0000, Grzegorz Bernacki wrote: > >>>>>Author: gber > >>>>>Date: Sat Mar 17 03:18:28 2012 > >>>>>New Revision: 233072 > >>>>>URL: http://svn.freebsd.org/changeset/base/233072 > >>>>> > >>>>>Log: > >>>>> Add VFS changes necessary for NANDFS to work. > >>>>> > >>>>> Ignore B_MANAGED buffer by syncer and ignore signal when msleep a= s=20 > >>>>> it > >>>>> can cause file system inconsistency. > >>>> > >>>>I'd suggest running these changes through kib@. Especially > >>>>vn_start_write() > >>>>change below looks ugly, but maybe it is only temporary? > >>>It is not only ugly (and object against it). > >>> > >>>If the change makes any difference for the filesystem, then I just arg= ue > >>>that the filesystem is broken. The vn_start_write() is done on the > >>>VFS entry peripheral, long before filesystem code is hit. > >>> > >>>I did not looked at the managed changes, you would need to describe > >>>what is wrong with current code and what is the purpose of the changes. > >>>B_MANAGED came from xfs, it seems, or at least xfs is the only current > >>>consumer of B_MANAGED buffers. > >> > >>Hi Kostik, > >> > >>Without our change in getblk() whenewer we allocate new block we get=20 > >>panic: > >> > >>panic: bremfree: buffer 0xffffff807bf86080 not on a queue. > >> > >>It is because blocks with B_MANAGED flag are not queued on any queue in > >>brelse() function. Could you look at it and give us approval to merge > >>this change into HEAD? > > > >Right, but this is in fact the only function of the B_MANAGED flag. > >So the question is, what are you trying to accomplish. >=20 > Hi Kostik, >=20 > There are two separate issues. > First is that if we have B_MANAGED flag it should not cause the panic=20 > when used, so in my opinion fix should go into HEAD regardless of NANDFS. > Second thing is the reason of having B_MANAGED flag. We use it because=20 > we want to decide when and where to save buffers. Our FS is log=20 > filesystem and we write buffers every given amount of time or if number= =20 > of dirty buffer exceed given threshold. We write buffers in large groups= =20 > along with metadata related to this group, so we cannot afford writing=20 > single buffer. As a result we cannot allow buf deamon to write buffers= =20 > in an ad hoc manner. > I hope I answered your question. Please let me know if you have more=20 > concerns. If you have some ideas how we can avoid using B_MANAGED flags= =20 > please let us know. I looked at the whole B_MANAGED business over the two days. Finally I think that I agree to some extent with the idea of the patch, but I still do not like details. I put below the change that I think we are discussing. Index: vfs_bio.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- vfs_bio.c (.../head/sys/kern/vfs_bio.c) (revision 235215) +++ vfs_bio.c (.../projects/nand/sys/kern/vfs_bio.c) (revision 235215) @@ -2672,7 +2672,8 @@ loop: else if ((bp->b_flags & (B_VMIO | B_INVAL)) =3D=3D 0) bp->b_flags |=3D B_CACHE; BO_LOCK(bo); - bremfree(bp); + if (!(bp->b_flags & B_MANAGED)) + bremfree(bp); BO_UNLOCK(bo); =20 /* First note, you should not take BO_LOCK if you are not going to call bremfree().Second, I think you need to assert that b_qindex is already QUEUE_NONE if B_MANAGED is set. Note the comment right after the if (bp !=3D NULL) line in getblk(). I think it needs to be adjusted to say 'if not managed' or like. As a general note, explaining my limited disagreement with the whole idea of using managed buffers, is the question how do you react to low free buffer condition at all ? Do you get the notification on the condition at all ? Current scheme involves activation of the bufdaemon when getnewbuf() cannot find a suitable buffer or KVA. With a non-trivial count of buffers not presented on any queue, system has high risk of deadlocking. --i0oNXV9PwusX79ef Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (FreeBSD) iEYEARECAAYFAk+rmOkACgkQC3+MBN1Mb4gTuQCgwCvJ1Oi1ULSzBH6AOdVE8RLF 6OEAn2bQlcPDM2TrpS1B8u8ip1TMalZp =reWJ -----END PGP SIGNATURE----- --i0oNXV9PwusX79ef-- From owner-svn-src-projects@FreeBSD.ORG Thu May 10 11:46:14 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3BF351065701; Thu, 10 May 2012 11:46:14 +0000 (UTC) (envelope-from gber@freebsd.org) Received: from smtp.semihalf.com (smtp.semihalf.com [213.17.239.109]) by mx1.freebsd.org (Postfix) with ESMTP id BE2678FC12; Thu, 10 May 2012 11:46:13 +0000 (UTC) Received: from localhost (unknown [213.17.239.109]) by smtp.semihalf.com (Postfix) with ESMTP id D88CE119C3A; Thu, 10 May 2012 13:46:01 +0200 (CEST) X-Virus-Scanned: by amavisd-new at semihalf.com Received: from smtp.semihalf.com ([213.17.239.109]) by localhost (smtp.semihalf.com [213.17.239.109]) (amavisd-new, port 10024) with ESMTP id trvlvM+8Anm3; Thu, 10 May 2012 13:46:00 +0200 (CEST) Received: from [10.0.0.93] (cardhu.semihalf.com [213.17.239.108]) by smtp.semihalf.com (Postfix) with ESMTPSA id BDE89119C46; Thu, 10 May 2012 13:46:00 +0200 (CEST) Message-ID: <4FABC64F.3060502@freebsd.org> Date: Thu, 10 May 2012 15:44:47 +0200 From: Grzegorz Bernacki User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.24) Gecko/20120127 Thunderbird/3.1.16 MIME-Version: 1.0 To: Konstantin Belousov References: <201203170318.q2H3ITdI047893@svn.freebsd.org> <20120317085116.GC1340@garage.freebsd.pl> <20120317161050.GI75778@deviant.kiev.zoral.com.ua> <4FA8FFB9.7090002@freebsd.org> <20120508095631.GV2358@deviant.kiev.zoral.com.ua> <4FA94609.3060306@freebsd.org> <20120510103105.GG2358@deviant.kiev.zoral.com.ua> In-Reply-To: <20120510103105.GG2358@deviant.kiev.zoral.com.ua> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org, mjg@semihalf.com Subject: Re: svn commit: r233072 - projects/nand/sys/kern 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, 10 May 2012 11:46:14 -0000 On 05/10/12 12:31, Konstantin Belousov wrote: > On Tue, May 08, 2012 at 06:12:57PM +0200, Grzegorz Bernacki wrote: >> On 05/08/12 11:56, Konstantin Belousov wrote: >>> On Tue, May 08, 2012 at 01:12:57PM +0200, Grzegorz Bernacki wrote: >>>> On 03/17/12 17:10, Konstantin Belousov wrote: >>>>> On Sat, Mar 17, 2012 at 09:51:16AM +0100, Pawel Jakub Dawidek wrote: >>>>>> On Sat, Mar 17, 2012 at 03:18:29AM +0000, Grzegorz Bernacki wrote: >>>>>>> Author: gber >>>>>>> Date: Sat Mar 17 03:18:28 2012 >>>>>>> New Revision: 233072 >>>>>>> URL: http://svn.freebsd.org/changeset/base/233072 >>>>>>> >>>>>>> Log: >>>>>>> Add VFS changes necessary for NANDFS to work. >>>>>>> >>>>>>> Ignore B_MANAGED buffer by syncer and ignore signal when msleep as >>>>>>> it >>>>>>> can cause file system inconsistency. >>>>>> >>>>>> I'd suggest running these changes through kib@. Especially >>>>>> vn_start_write() >>>>>> change below looks ugly, but maybe it is only temporary? >>>>> It is not only ugly (and object against it). >>>>> >>>>> If the change makes any difference for the filesystem, then I just argue >>>>> that the filesystem is broken. The vn_start_write() is done on the >>>>> VFS entry peripheral, long before filesystem code is hit. >>>>> >>>>> I did not looked at the managed changes, you would need to describe >>>>> what is wrong with current code and what is the purpose of the changes. >>>>> B_MANAGED came from xfs, it seems, or at least xfs is the only current >>>>> consumer of B_MANAGED buffers. >>>> >>>> Hi Kostik, >>>> >>>> Without our change in getblk() whenewer we allocate new block we get >>>> panic: >>>> >>>> panic: bremfree: buffer 0xffffff807bf86080 not on a queue. >>>> >>>> It is because blocks with B_MANAGED flag are not queued on any queue in >>>> brelse() function. Could you look at it and give us approval to merge >>>> this change into HEAD? >>> >>> Right, but this is in fact the only function of the B_MANAGED flag. >>> So the question is, what are you trying to accomplish. >> >> Hi Kostik, >> >> There are two separate issues. >> First is that if we have B_MANAGED flag it should not cause the panic >> when used, so in my opinion fix should go into HEAD regardless of NANDFS. >> Second thing is the reason of having B_MANAGED flag. We use it because >> we want to decide when and where to save buffers. Our FS is log >> filesystem and we write buffers every given amount of time or if number >> of dirty buffer exceed given threshold. We write buffers in large groups >> along with metadata related to this group, so we cannot afford writing >> single buffer. As a result we cannot allow buf deamon to write buffers >> in an ad hoc manner. >> I hope I answered your question. Please let me know if you have more >> concerns. If you have some ideas how we can avoid using B_MANAGED flags >> please let us know. > > I looked at the whole B_MANAGED business over the two days. Finally I > think that I agree to some extent with the idea of the patch, but I > still do not like details. I put below the change that I think we are > discussing. > > Index: vfs_bio.c > =================================================================== > --- vfs_bio.c (.../head/sys/kern/vfs_bio.c) (revision 235215) > +++ vfs_bio.c (.../projects/nand/sys/kern/vfs_bio.c) (revision 235215) > @@ -2672,7 +2672,8 @@ loop: > else if ((bp->b_flags& (B_VMIO | B_INVAL)) == 0) > bp->b_flags |= B_CACHE; > BO_LOCK(bo); > - bremfree(bp); > + if (!(bp->b_flags& B_MANAGED)) > + bremfree(bp); > BO_UNLOCK(bo); > > /* > > First note, you should not take BO_LOCK if you are not going to call > bremfree().Second, I think you need to assert that b_qindex is already > QUEUE_NONE if B_MANAGED is set. > > Note the comment right after the if (bp != NULL) line in getblk(). I think > it needs to be adjusted to say 'if not managed' or like. Yes, you are right. How about this patch: http://people.freebsd.org/~gber/patches/vfs_bio.diff ? > > As a general note, explaining my limited disagreement with the whole idea > of using managed buffers, is the question how do you react to low free > buffer condition at all ? Do you get the notification on the condition at > all ? I agree that B_MANAGED should be used carefully, but this feature might be very useful and we should not get rid of it. Indeed we do not get notifications from bufdaemon, however we have our own syncer thread which start writes when number of dirty buffer exceeds given threshold. I believe that our threshold of dirty buffers which triggers writes is much lower than the one used by buf deamon. I think that this will prevent the system from having too many dirty buffers. But see below. > > Current scheme involves activation of the bufdaemon when getnewbuf() cannot > find a suitable buffer or KVA. With a non-trivial count of buffers not > presented on any queue, system has high risk of deadlocking. As noted earlier I don't think that this will be a problem with nandfs. However in case such notifications are really needed, I think we can add an EVENTHANDLER that would fire when buf daemon decides to flush buffers. Does this sound reasonable? thanks a lot, grzesiek From owner-svn-src-projects@FreeBSD.ORG Thu May 10 11:59:08 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E7E411065672; Thu, 10 May 2012 11:59:08 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id 4DF048FC1D; Thu, 10 May 2012 11:59:08 +0000 (UTC) Received: from skuns.kiev.zoral.com.ua (localhost [127.0.0.1]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id q4ABwwbL032074; Thu, 10 May 2012 14:58:58 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.5/8.14.5) with ESMTP id q4ABwv2O072089; Thu, 10 May 2012 14:58:57 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.5/8.14.5/Submit) id q4ABwvI7071816; Thu, 10 May 2012 14:58:57 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Thu, 10 May 2012 14:58:57 +0300 From: Konstantin Belousov To: Grzegorz Bernacki Message-ID: <20120510115857.GH2358@deviant.kiev.zoral.com.ua> References: <201203170318.q2H3ITdI047893@svn.freebsd.org> <20120317085116.GC1340@garage.freebsd.pl> <20120317161050.GI75778@deviant.kiev.zoral.com.ua> <4FA8FFB9.7090002@freebsd.org> <20120508095631.GV2358@deviant.kiev.zoral.com.ua> <4FA94609.3060306@freebsd.org> <20120510103105.GG2358@deviant.kiev.zoral.com.ua> <4FABC64F.3060502@freebsd.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="yn4/E51H+KfvW8qm" Content-Disposition: inline In-Reply-To: <4FABC64F.3060502@freebsd.org> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-4.0 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org, mjg@semihalf.com Subject: Re: svn commit: r233072 - projects/nand/sys/kern 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, 10 May 2012 11:59:09 -0000 --yn4/E51H+KfvW8qm Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, May 10, 2012 at 03:44:47PM +0200, Grzegorz Bernacki wrote: > On 05/10/12 12:31, Konstantin Belousov wrote: > >On Tue, May 08, 2012 at 06:12:57PM +0200, Grzegorz Bernacki wrote: > >>On 05/08/12 11:56, Konstantin Belousov wrote: > >>>On Tue, May 08, 2012 at 01:12:57PM +0200, Grzegorz Bernacki wrote: > >>>>On 03/17/12 17:10, Konstantin Belousov wrote: > >>>>>On Sat, Mar 17, 2012 at 09:51:16AM +0100, Pawel Jakub Dawidek wrote: > >>>>>>On Sat, Mar 17, 2012 at 03:18:29AM +0000, Grzegorz Bernacki wrote: > >>>>>>>Author: gber > >>>>>>>Date: Sat Mar 17 03:18:28 2012 > >>>>>>>New Revision: 233072 > >>>>>>>URL: http://svn.freebsd.org/changeset/base/233072 > >>>>>>> > >>>>>>>Log: > >>>>>>> Add VFS changes necessary for NANDFS to work. > >>>>>>> > >>>>>>> Ignore B_MANAGED buffer by syncer and ignore signal when msleep= as > >>>>>>> it > >>>>>>> can cause file system inconsistency. > >>>>>> > >>>>>>I'd suggest running these changes through kib@. Especially > >>>>>>vn_start_write() > >>>>>>change below looks ugly, but maybe it is only temporary? > >>>>>It is not only ugly (and object against it). > >>>>> > >>>>>If the change makes any difference for the filesystem, then I just= =20 > >>>>>argue > >>>>>that the filesystem is broken. The vn_start_write() is done on the > >>>>>VFS entry peripheral, long before filesystem code is hit. > >>>>> > >>>>>I did not looked at the managed changes, you would need to describe > >>>>>what is wrong with current code and what is the purpose of the chang= es. > >>>>>B_MANAGED came from xfs, it seems, or at least xfs is the only curre= nt > >>>>>consumer of B_MANAGED buffers. > >>>> > >>>>Hi Kostik, > >>>> > >>>>Without our change in getblk() whenewer we allocate new block we get > >>>>panic: > >>>> > >>>>panic: bremfree: buffer 0xffffff807bf86080 not on a queue. > >>>> > >>>>It is because blocks with B_MANAGED flag are not queued on any queue = in > >>>>brelse() function. Could you look at it and give us approval to merge > >>>>this change into HEAD? > >>> > >>>Right, but this is in fact the only function of the B_MANAGED flag. > >>>So the question is, what are you trying to accomplish. > >> > >>Hi Kostik, > >> > >>There are two separate issues. > >>First is that if we have B_MANAGED flag it should not cause the panic > >>when used, so in my opinion fix should go into HEAD regardless of NANDF= S. > >>Second thing is the reason of having B_MANAGED flag. We use it because > >>we want to decide when and where to save buffers. Our FS is log > >>filesystem and we write buffers every given amount of time or if number > >>of dirty buffer exceed given threshold. We write buffers in large groups > >>along with metadata related to this group, so we cannot afford writing > >>single buffer. As a result we cannot allow buf deamon to write buffers > >>in an ad hoc manner. > >>I hope I answered your question. Please let me know if you have more > >>concerns. If you have some ideas how we can avoid using B_MANAGED flags > >>please let us know. > > > >I looked at the whole B_MANAGED business over the two days. Finally I > >think that I agree to some extent with the idea of the patch, but I > >still do not like details. I put below the change that I think we are > >discussing. > > > >Index: vfs_bio.c > >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >--- vfs_bio.c (.../head/sys/kern/vfs_bio.c) (revision 235215) > >+++ vfs_bio.c (.../projects/nand/sys/kern/vfs_bio.c) (revision 235215) > >@@ -2672,7 +2672,8 @@ loop: > > else if ((bp->b_flags& (B_VMIO | B_INVAL)) =3D=3D 0) > > bp->b_flags |=3D B_CACHE; > > BO_LOCK(bo); > >- bremfree(bp); > >+ if (!(bp->b_flags& B_MANAGED)) > >+ bremfree(bp); > > BO_UNLOCK(bo); > > > > /* > > > >First note, you should not take BO_LOCK if you are not going to call > >bremfree().Second, I think you need to assert that b_qindex is already > >QUEUE_NONE if B_MANAGED is set. > > > >Note the comment right after the if (bp !=3D NULL) line in getblk(). I t= hink > >it needs to be adjusted to say 'if not managed' or like. >=20 > Yes, you are right. How about this patch: >=20 > http://people.freebsd.org/~gber/patches/vfs_bio.diff Please revert the test condition and exchange the then/else blocks. It is easier to read this way. Still the question how xfs will react to the change stands. Xfs is the only current in-tree consumer of B_MANAGED, might be it is too rotten. >=20 > ? > > > >As a general note, explaining my limited disagreement with the whole idea > >of using managed buffers, is the question how do you react to low free > >buffer condition at all ? Do you get the notification on the condition at > >all ? >=20 > I agree that B_MANAGED should be used carefully, but this feature might= =20 > be very useful and we should not get rid of it. >=20 > Indeed we do not get notifications from bufdaemon, however we have our=20 > own syncer thread which start writes when number of dirty buffer exceeds= =20 > given threshold. I believe that our threshold of dirty buffers which=20 > triggers writes is much lower than the one used by buf deamon. I think=20 > that this will prevent the system from having too many dirty buffers.=20 > But see below. >=20 > > > >Current scheme involves activation of the bufdaemon when getnewbuf() can= not > >find a suitable buffer or KVA. With a non-trivial count of buffers not > >presented on any queue, system has high risk of deadlocking. >=20 > As noted earlier I don't think that this will be a problem with nandfs.= =20 > However in case such notifications are really needed, I think we can add= =20 > an EVENTHANDLER that would fire when buf daemon decides to flush=20 > buffers. Does this sound reasonable? Note that bufdaemon cannot flush some buffers on its own, mostly the buffers belonging to the locked vnode. In this case, getnewbuf() caller threads are used as bufdaemon helpers. Might be eventhandler calls from bufdaemon are not bad, but I want to see a code before making the judgement. --yn4/E51H+KfvW8qm Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (FreeBSD) iEYEARECAAYFAk+rrYEACgkQC3+MBN1Mb4h3UgCgxkBXUef5OHssNlvaJTKVxG3V vwEAn2lIUjeEHqgGYTUK37J/KI3oicAx =6lww -----END PGP SIGNATURE----- --yn4/E51H+KfvW8qm-- From owner-svn-src-projects@FreeBSD.ORG Thu May 10 16:45:24 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 32520106566C; Thu, 10 May 2012 16:45:24 +0000 (UTC) (envelope-from mjg@semihalf.com) Received: from smtp.semihalf.com (smtp.semihalf.com [213.17.239.109]) by mx1.freebsd.org (Postfix) with ESMTP id 677488FC1C; Thu, 10 May 2012 16:45:23 +0000 (UTC) Received: from localhost (unknown [213.17.239.109]) by smtp.semihalf.com (Postfix) with ESMTP id DF035119C58; Thu, 10 May 2012 18:45:12 +0200 (CEST) X-Virus-Scanned: by amavisd-new at semihalf.com Received: from smtp.semihalf.com ([213.17.239.109]) by localhost (smtp.semihalf.com [213.17.239.109]) (amavisd-new, port 10024) with ESMTP id XYWxccJv65CO; Thu, 10 May 2012 18:45:11 +0200 (CEST) Received: from pcbsd-2342.semihalf.com (cardhu.semihalf.com [213.17.239.108]) by smtp.semihalf.com (Postfix) with ESMTPSA id 3F101119C38; Thu, 10 May 2012 18:45:11 +0200 (CEST) Date: Thu, 10 May 2012 18:45:19 +0200 From: Mateusz Guzik To: Konstantin Belousov Message-ID: <20120510164519.GA13258@pcbsd-2342.semihalf.com> References: <201203170318.q2H3ITdI047893@svn.freebsd.org> <20120317085116.GC1340@garage.freebsd.pl> <20120317161050.GI75778@deviant.kiev.zoral.com.ua> <4FA8FFB9.7090002@freebsd.org> <20120508095631.GV2358@deviant.kiev.zoral.com.ua> <4FA94609.3060306@freebsd.org> <20120510103105.GG2358@deviant.kiev.zoral.com.ua> <4FABC64F.3060502@freebsd.org> <20120510115857.GH2358@deviant.kiev.zoral.com.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20120510115857.GH2358@deviant.kiev.zoral.com.ua> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-projects@freebsd.org, Grzegorz Bernacki , src-committers@freebsd.org Subject: Re: svn commit: r233072 - projects/nand/sys/kern 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, 10 May 2012 16:45:24 -0000 On Thu, May 10, 2012 at 02:58:57PM +0300, Konstantin Belousov wrote: > On Thu, May 10, 2012 at 03:44:47PM +0200, Grzegorz Bernacki wrote: > > On 05/10/12 12:31, Konstantin Belousov wrote: > > >On Tue, May 08, 2012 at 06:12:57PM +0200, Grzegorz Bernacki wrote: > > >>On 05/08/12 11:56, Konstantin Belousov wrote: > > >>>On Tue, May 08, 2012 at 01:12:57PM +0200, Grzegorz Bernacki wrote: > > >>>>On 03/17/12 17:10, Konstantin Belousov wrote: > > >>>>>On Sat, Mar 17, 2012 at 09:51:16AM +0100, Pawel Jakub Dawidek wrote: > > >>>>>>On Sat, Mar 17, 2012 at 03:18:29AM +0000, Grzegorz Bernacki wrote: > > >>>>>>>Author: gber > > >>>>>>>Date: Sat Mar 17 03:18:28 2012 > > >>>>>>>New Revision: 233072 > > >>>>>>>URL: http://svn.freebsd.org/changeset/base/233072 > > >>>>>>> > > >>>>>>>Log: > > >>>>>>> Add VFS changes necessary for NANDFS to work. > > >>>>>>> > > >>>>>>> Ignore B_MANAGED buffer by syncer and ignore signal when msleep as > > >>>>>>> it > > >>>>>>> can cause file system inconsistency. > > >>>>>> > > >>>>>>I'd suggest running these changes through kib@. Especially > > >>>>>>vn_start_write() > > >>>>>>change below looks ugly, but maybe it is only temporary? > > >>>>>It is not only ugly (and object against it). > > >>>>> > > >>>>>If the change makes any difference for the filesystem, then I just > > >>>>>argue > > >>>>>that the filesystem is broken. The vn_start_write() is done on the > > >>>>>VFS entry peripheral, long before filesystem code is hit. > > >>>>> > > >>>>>I did not looked at the managed changes, you would need to describe > > >>>>>what is wrong with current code and what is the purpose of the changes. > > >>>>>B_MANAGED came from xfs, it seems, or at least xfs is the only current > > >>>>>consumer of B_MANAGED buffers. > > >>>> > > >>>>Hi Kostik, > > >>>> > > >>>>Without our change in getblk() whenewer we allocate new block we get > > >>>>panic: > > >>>> > > >>>>panic: bremfree: buffer 0xffffff807bf86080 not on a queue. > > >>>> > > >>>>It is because blocks with B_MANAGED flag are not queued on any queue in > > >>>>brelse() function. Could you look at it and give us approval to merge > > >>>>this change into HEAD? > > >>> > > >>>Right, but this is in fact the only function of the B_MANAGED flag. > > >>>So the question is, what are you trying to accomplish. > > >> > > >>Hi Kostik, > > >> > > >>There are two separate issues. > > >>First is that if we have B_MANAGED flag it should not cause the panic > > >>when used, so in my opinion fix should go into HEAD regardless of NANDFS. > > >>Second thing is the reason of having B_MANAGED flag. We use it because > > >>we want to decide when and where to save buffers. Our FS is log > > >>filesystem and we write buffers every given amount of time or if number > > >>of dirty buffer exceed given threshold. We write buffers in large groups > > >>along with metadata related to this group, so we cannot afford writing > > >>single buffer. As a result we cannot allow buf deamon to write buffers > > >>in an ad hoc manner. > > >>I hope I answered your question. Please let me know if you have more > > >>concerns. If you have some ideas how we can avoid using B_MANAGED flags > > >>please let us know. > > > > > >I looked at the whole B_MANAGED business over the two days. Finally I > > >think that I agree to some extent with the idea of the patch, but I > > >still do not like details. I put below the change that I think we are > > >discussing. > > > > > >Index: vfs_bio.c > > >=================================================================== > > >--- vfs_bio.c (.../head/sys/kern/vfs_bio.c) (revision 235215) > > >+++ vfs_bio.c (.../projects/nand/sys/kern/vfs_bio.c) (revision 235215) > > >@@ -2672,7 +2672,8 @@ loop: > > > else if ((bp->b_flags& (B_VMIO | B_INVAL)) == 0) > > > bp->b_flags |= B_CACHE; > > > BO_LOCK(bo); > > >- bremfree(bp); > > >+ if (!(bp->b_flags& B_MANAGED)) > > >+ bremfree(bp); > > > BO_UNLOCK(bo); > > > > > > /* > > > > > >First note, you should not take BO_LOCK if you are not going to call > > >bremfree().Second, I think you need to assert that b_qindex is already > > >QUEUE_NONE if B_MANAGED is set. > > > > > >Note the comment right after the if (bp != NULL) line in getblk(). I think > > >it needs to be adjusted to say 'if not managed' or like. > > > > Yes, you are right. How about this patch: > > > > http://people.freebsd.org/~gber/patches/vfs_bio.diff > Please revert the test condition and exchange the then/else blocks. > It is easier to read this way. > Is this ok: http://people.freebsd.org/~gber/patches/vfs_bio2.diff ? > Still the question how xfs will react to the change stands. Xfs is the only > current in-tree consumer of B_MANAGED, might be it is too rotten. > AFAIR XFS is currently broken and not mpsafe, i.e. it needs work anyway, so I don't think this is something we should be concerned about at the moment. > > > > > >As a general note, explaining my limited disagreement with the whole idea > > >of using managed buffers, is the question how do you react to low free > > >buffer condition at all ? Do you get the notification on the condition at > > >all ? > > > > I agree that B_MANAGED should be used carefully, but this feature might > > be very useful and we should not get rid of it. > > > > Indeed we do not get notifications from bufdaemon, however we have our > > own syncer thread which start writes when number of dirty buffer exceeds > > given threshold. I believe that our threshold of dirty buffers which > > triggers writes is much lower than the one used by buf deamon. I think > > that this will prevent the system from having too many dirty buffers. > > But see below. > > > > > > > >Current scheme involves activation of the bufdaemon when getnewbuf() cannot > > >find a suitable buffer or KVA. With a non-trivial count of buffers not > > >presented on any queue, system has high risk of deadlocking. > > > > As noted earlier I don't think that this will be a problem with nandfs. > > However in case such notifications are really needed, I think we can add > > an EVENTHANDLER that would fire when buf daemon decides to flush > > buffers. Does this sound reasonable? > > Note that bufdaemon cannot flush some buffers on its own, mostly the > buffers belonging to the locked vnode. In this case, getnewbuf() caller > threads are used as bufdaemon helpers. > > Might be eventhandler calls from bufdaemon are not bad, but I want to see > a code before making the judgement. http://people.freebsd.org/~raj/patches/misc/vfs_highdirtybuf.diff callbacks are expected to increase flushed counter if they happend to flush some buffers. Example proof-of-concept (will be cleaned up) change for nandfs: http://people.freebsd.org/~raj/patches/misc/nandfs_vfs_highdirtybuf.diff Does this look reasonable? -- Mateusz Guzik From owner-svn-src-projects@FreeBSD.ORG Thu May 10 20:31:09 2012 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 292FC106564A; Thu, 10 May 2012 20:31:09 +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 EF6508FC0C; Thu, 10 May 2012 20:31:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4AKV8ap050579; Thu, 10 May 2012 20:31:08 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4AKV8Sc050575; Thu, 10 May 2012 20:31:08 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <201205102031.q4AKV8Sc050575@svn.freebsd.org> From: Kip Macy Date: Thu, 10 May 2012 20:31:08 +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: r235242 - projects/iscsi_opt/sys/dev/iscsi/initiator 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, 10 May 2012 20:31:09 -0000 Author: kmacy Date: Thu May 10 20:31:08 2012 New Revision: 235242 URL: http://svn.freebsd.org/changeset/base/235242 Log: don't send a reject unless it corresponds to a ccb increase debug noise when isc_in has a problem Modified: projects/iscsi_opt/sys/dev/iscsi/initiator/isc_sm.c projects/iscsi_opt/sys/dev/iscsi/initiator/isc_soc.c projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c Modified: projects/iscsi_opt/sys/dev/iscsi/initiator/isc_sm.c ============================================================================== --- projects/iscsi_opt/sys/dev/iscsi/initiator/isc_sm.c Thu May 10 20:28:33 2012 (r235241) +++ projects/iscsi_opt/sys/dev/iscsi/initiator/isc_sm.c Thu May 10 20:31:08 2012 (r235242) @@ -113,9 +113,9 @@ _reject(isc_session_t *sp, pduq_t *pq) pdu = mtod(pq->mp, pdu_t *); itt = pdu->ipdu.bhs.itt; reject = &pq->pdu.ipdu.reject; - sdebug(2, "itt=%x reason=0x%x", ntohl(itt), reject->reason); + sdebug(2, "itt=%x rejected reason=0x%x", ntohl(itt), reject->reason); opq = i_search_hld(sp, itt, 0); - if(opq != NULL) + if(opq != NULL && opq->ccb != NULL) iscsi_reject(sp, opq, pq); else { switch(pq->pdu.ipdu.bhs.opcode) { Modified: projects/iscsi_opt/sys/dev/iscsi/initiator/isc_soc.c ============================================================================== --- projects/iscsi_opt/sys/dev/iscsi/initiator/isc_soc.c Thu May 10 20:28:33 2012 (r235241) +++ projects/iscsi_opt/sys/dev/iscsi/initiator/isc_soc.c Thu May 10 20:31:08 2012 (r235242) @@ -617,13 +617,15 @@ isc_in(void *vp) } mtx_unlock(&sp->io_mtx); } else if(error == EPIPE) { + debug(2, "sp->soc=%p error=EPIPE", sp->soc); break; } else if(error == EAGAIN) { + debug(2, "sp->soc=%p error=EAGAIN", sp->soc); isc_in_sleep++; if(so->so_state & SS_ISCONNECTED) // there seems to be a problem in 6.0 ... - tsleep(sp, PRIBIO, "isc_soc", 2*hz); + tsleep(sp, PRIBIO, "isc_soc", hz>>2); } } sdebug(2, "terminated, flags=%x so_count=%d so_state=%x error=%d proc=%p", Modified: projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c ============================================================================== --- projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c Thu May 10 20:28:33 2012 (r235241) +++ projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c Thu May 10 20:31:08 2012 (r235242) @@ -409,7 +409,7 @@ iscsi_reject(isc_session_t *sp, pduq_t * union ccb *ccb = opq->ccb; //reject_t *reject = &pq->pdu.ipdu.reject; - debug_called(8); + debug_called(3); //XXX: check RFC 10.17.1 (page 176) ccb->ccb_h.status = CAM_REQ_ABORTED; XPT_DONE(sp, ccb); From owner-svn-src-projects@FreeBSD.ORG Thu May 10 21:23:00 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 922CA106564A; Thu, 10 May 2012 21:23:00 +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 7DE0D8FC14; Thu, 10 May 2012 21:23:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4ALN0ge052308; Thu, 10 May 2012 21:23:00 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4ALN0ml052306; Thu, 10 May 2012 21:23:00 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <201205102123.q4ALN0ml052306@svn.freebsd.org> From: Kip Macy Date: Thu, 10 May 2012 21:23:00 +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: r235245 - projects/iscsi_opt/sys/dev/iscsi/initiator 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, 10 May 2012 21:23:00 -0000 Author: kmacy Date: Thu May 10 21:22:59 2012 New Revision: 235245 URL: http://svn.freebsd.org/changeset/base/235245 Log: don't call scsi_done if there is no associated ccb Modified: projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c Modified: projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c ============================================================================== --- projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c Thu May 10 20:37:56 2012 (r235244) +++ projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c Thu May 10 21:22:59 2012 (r235245) @@ -356,7 +356,8 @@ iscsi_done(isc_session_t *sp, pduq_t *op debug_called(8); - _scsi_done(sp, cmd->response, cmd->status, opq->ccb, pq); + if (opq->ccb != NULL) + _scsi_done(sp, cmd->response, cmd->status, opq->ccb, pq); pdu_free(sp->isc, opq); } From owner-svn-src-projects@FreeBSD.ORG Thu May 10 21:56:44 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 48EF41065670; Thu, 10 May 2012 21:56:44 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id B30CB8FC0C; Thu, 10 May 2012 21:56:43 +0000 (UTC) Received: from skuns.kiev.zoral.com.ua (localhost [127.0.0.1]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id q4ALubqu060617; Fri, 11 May 2012 00:56:37 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.5/8.14.5) with ESMTP id q4ALua7Y097648; Fri, 11 May 2012 00:56:36 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.5/8.14.5/Submit) id q4ALuaRp097647; Fri, 11 May 2012 00:56:36 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Fri, 11 May 2012 00:56:36 +0300 From: Konstantin Belousov To: Mateusz Guzik Message-ID: <20120510215636.GK2358@deviant.kiev.zoral.com.ua> References: <201203170318.q2H3ITdI047893@svn.freebsd.org> <20120317085116.GC1340@garage.freebsd.pl> <20120317161050.GI75778@deviant.kiev.zoral.com.ua> <4FA8FFB9.7090002@freebsd.org> <20120508095631.GV2358@deviant.kiev.zoral.com.ua> <4FA94609.3060306@freebsd.org> <20120510103105.GG2358@deviant.kiev.zoral.com.ua> <4FABC64F.3060502@freebsd.org> <20120510115857.GH2358@deviant.kiev.zoral.com.ua> <20120510164519.GA13258@pcbsd-2342.semihalf.com> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="KWOayfoLMHFPDe4/" Content-Disposition: inline In-Reply-To: <20120510164519.GA13258@pcbsd-2342.semihalf.com> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-4.0 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-projects@freebsd.org, Grzegorz Bernacki , src-committers@freebsd.org Subject: Re: svn commit: r233072 - projects/nand/sys/kern 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, 10 May 2012 21:56:44 -0000 --KWOayfoLMHFPDe4/ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, May 10, 2012 at 06:45:19PM +0200, Mateusz Guzik wrote: > Is this ok: > http://people.freebsd.org/~gber/patches/vfs_bio2.diff >=20 > ? Yes, looks fine. >=20 > > Still the question how xfs will react to the change stands. Xfs is the = only > > current in-tree consumer of B_MANAGED, might be it is too rotten. > >=20 >=20 > AFAIR XFS is currently broken and not mpsafe, i.e. it needs work anyway, > so I don't think this is something we should be concerned about at the > moment. I would not insist. [I will look at the bufdaemon integration changes tomorrow]. --KWOayfoLMHFPDe4/ Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (FreeBSD) iEYEARECAAYFAk+sOZQACgkQC3+MBN1Mb4jOjACglMG+YC7OdxnKChzsUZTXWOD8 0oMAnjv51dn7snr/BsgBdvNrp5YHVG1Q =F02H -----END PGP SIGNATURE----- --KWOayfoLMHFPDe4/-- From owner-svn-src-projects@FreeBSD.ORG Thu May 10 22:00:39 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6D1A31065670; Thu, 10 May 2012 22:00:39 +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 589F48FC0C; Thu, 10 May 2012 22:00:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4AM0dkF053511; Thu, 10 May 2012 22:00:39 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4AM0dac053508; Thu, 10 May 2012 22:00:39 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <201205102200.q4AM0dac053508@svn.freebsd.org> From: Kip Macy Date: Thu, 10 May 2012 22:00:39 +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: r235247 - projects/iscsi_opt/sys/dev/iscsi/initiator 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, 10 May 2012 22:00:39 -0000 Author: kmacy Date: Thu May 10 22:00:38 2012 New Revision: 235247 URL: http://svn.freebsd.org/changeset/base/235247 Log: unfreeze the queue in recovery situations Modified: projects/iscsi_opt/sys/dev/iscsi/initiator/isc_cam.c projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c Modified: projects/iscsi_opt/sys/dev/iscsi/initiator/isc_cam.c ============================================================================== --- projects/iscsi_opt/sys/dev/iscsi/initiator/isc_cam.c Thu May 10 21:38:48 2012 (r235246) +++ projects/iscsi_opt/sys/dev/iscsi/initiator/isc_cam.c Thu May 10 22:00:38 2012 (r235247) @@ -319,8 +319,13 @@ ic_action(struct cam_sim *sim, union ccb scsi->valid = CTS_SCSI_VALID_TQ; scsi->flags = CTS_SCSI_FLAGS_TAG_ENB; - cts->ccb_h.status = CAM_REQ_CMP; + /* kick a stalled queue */ + if (sp->cam_flags & ISC_QFROZEN) { + sp->space_needed = 0; + cts->ccb_h.status |= CAM_RELEASE_SIMQ; + sp->cam_flags &= ~ISC_QFROZEN; + } break; } default: Modified: projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c ============================================================================== --- projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c Thu May 10 21:38:48 2012 (r235246) +++ projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c Thu May 10 22:00:38 2012 (r235247) @@ -270,6 +270,11 @@ iscsi_requeue(isc_session_t *sp) while((pq = i_dqueue_hld(sp)) != NULL) { i++; if(pq->ccb != NULL) { + if (sp->cam_flags & ISC_QFROZEN) { + sp->space_needed = 0; + pq->ccb->ccb_h.status |= CAM_RELEASE_SIMQ; + sp->cam_flags &= ~ISC_QFROZEN; + } _scsi_done(sp, 0, 0x28, pq->ccb, NULL); n = ntohl(pq->pdu.ipdu.bhs.CmdSN); if(last==0 || (last > n)) From owner-svn-src-projects@FreeBSD.ORG Thu May 10 22:32:34 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 35D81106564A; Thu, 10 May 2012 22:32:34 +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 21C988FC0A; Thu, 10 May 2012 22:32:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4AMWXp9054592; Thu, 10 May 2012 22:32:33 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4AMWXZ2054590; Thu, 10 May 2012 22:32:33 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <201205102232.q4AMWXZ2054590@svn.freebsd.org> From: Kip Macy Date: Thu, 10 May 2012 22:32: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: r235248 - projects/iscsi_opt/sys/dev/iscsi/initiator 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, 10 May 2012 22:32:34 -0000 Author: kmacy Date: Thu May 10 22:32:33 2012 New Revision: 235248 URL: http://svn.freebsd.org/changeset/base/235248 Log: don't overwrite RELEASE_SIMQ from status Modified: projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c Modified: projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c ============================================================================== --- projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c Thu May 10 22:00:38 2012 (r235247) +++ projects/iscsi_opt/sys/dev/iscsi/initiator/iscsi_subr.c Thu May 10 22:32:33 2012 (r235248) @@ -232,7 +232,7 @@ _scsi_done(isc_session_t *sp, u_int resp case 0x18: // Reservation Conflict case 0x28: // Task Set Full - ccb_h->status = CAM_REQUEUE_REQ; + ccb_h->status |= CAM_REQUEUE_REQ; break; default: //case 0x22: // Command Terminated @@ -270,9 +270,10 @@ iscsi_requeue(isc_session_t *sp) while((pq = i_dqueue_hld(sp)) != NULL) { i++; if(pq->ccb != NULL) { + pq->ccb->ccb_h.status = 0; if (sp->cam_flags & ISC_QFROZEN) { sp->space_needed = 0; - pq->ccb->ccb_h.status |= CAM_RELEASE_SIMQ; + pq->ccb->ccb_h.status = CAM_RELEASE_SIMQ; sp->cam_flags &= ~ISC_QFROZEN; } _scsi_done(sp, 0, 0x28, pq->ccb, NULL); From owner-svn-src-projects@FreeBSD.ORG Fri May 11 09:34:40 2012 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 A86251065673; Fri, 11 May 2012 09:34:40 +0000 (UTC) (envelope-from gber@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8E3F58FC0C; Fri, 11 May 2012 09:34:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4B9YemY075557; Fri, 11 May 2012 09:34:40 GMT (envelope-from gber@svn.freebsd.org) Received: (from gber@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4B9Ye51075542; Fri, 11 May 2012 09:34:40 GMT (envelope-from gber@svn.freebsd.org) Message-Id: <201205110934.q4B9Ye51075542@svn.freebsd.org> From: Grzegorz Bernacki Date: Fri, 11 May 2012 09:34:40 +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: r235263 - in projects/nand: . cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/cmd/zstreamdump cddl/contrib/opensolaris/lib/libzfs/common cddl/... 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: Fri, 11 May 2012 09:34:40 -0000 Author: gber Date: Fri May 11 09:34:39 2012 New Revision: 235263 URL: http://svn.freebsd.org/changeset/base/235263 Log: IFC @235262 Added: projects/nand/share/syscons/keymaps/spanish.dvorak.kbd - copied unchanged from r235262, head/share/syscons/keymaps/spanish.dvorak.kbd projects/nand/sys/arm/conf/genboardid.awk - copied unchanged from r235262, head/sys/arm/conf/genboardid.awk projects/nand/sys/arm/conf/mach-types - copied unchanged from r235262, head/sys/arm/conf/mach-types projects/nand/sys/boot/i386/cdboot/cdboot.S - copied unchanged from r235262, head/sys/boot/i386/cdboot/cdboot.S projects/nand/sys/dev/ral/rt2860.c - copied unchanged from r235262, head/sys/dev/ral/rt2860.c projects/nand/sys/dev/ral/rt2860reg.h - copied unchanged from r235262, head/sys/dev/ral/rt2860reg.h projects/nand/sys/dev/ral/rt2860var.h - copied unchanged from r235262, head/sys/dev/ral/rt2860var.h Deleted: projects/nand/sys/boot/i386/cdboot/cdboot.s Modified: projects/nand/Makefile.inc1 projects/nand/cddl/contrib/opensolaris/cmd/zdb/zdb.8 projects/nand/cddl/contrib/opensolaris/cmd/zdb/zdb.c projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs.8 projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c projects/nand/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.1 projects/nand/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h projects/nand/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c projects/nand/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c projects/nand/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h projects/nand/contrib/jemalloc/ChangeLog projects/nand/contrib/jemalloc/FREEBSD-Xlist projects/nand/contrib/jemalloc/FREEBSD-diffs projects/nand/contrib/jemalloc/VERSION projects/nand/contrib/jemalloc/doc/jemalloc.3 projects/nand/contrib/jemalloc/include/jemalloc/internal/arena.h projects/nand/contrib/jemalloc/include/jemalloc/internal/atomic.h projects/nand/contrib/jemalloc/include/jemalloc/internal/ctl.h projects/nand/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal.h projects/nand/contrib/jemalloc/include/jemalloc/internal/mutex.h projects/nand/contrib/jemalloc/include/jemalloc/internal/private_namespace.h projects/nand/contrib/jemalloc/include/jemalloc/internal/prof.h projects/nand/contrib/jemalloc/include/jemalloc/internal/tcache.h projects/nand/contrib/jemalloc/include/jemalloc/internal/tsd.h projects/nand/contrib/jemalloc/include/jemalloc/internal/util.h projects/nand/contrib/jemalloc/include/jemalloc/jemalloc.h projects/nand/contrib/jemalloc/include/jemalloc/jemalloc_defs.h projects/nand/contrib/jemalloc/src/arena.c projects/nand/contrib/jemalloc/src/chunk.c projects/nand/contrib/jemalloc/src/chunk_mmap.c projects/nand/contrib/jemalloc/src/ctl.c projects/nand/contrib/jemalloc/src/huge.c projects/nand/contrib/jemalloc/src/jemalloc.c projects/nand/contrib/jemalloc/src/mutex.c projects/nand/contrib/jemalloc/src/prof.c projects/nand/contrib/jemalloc/src/quarantine.c projects/nand/contrib/jemalloc/src/stats.c projects/nand/contrib/jemalloc/src/tcache.c projects/nand/contrib/jemalloc/src/tsd.c projects/nand/contrib/jemalloc/src/util.c projects/nand/etc/mtree/BSD.usr.dist projects/nand/games/fortune/datfiles/freebsd-tips projects/nand/gnu/usr.bin/binutils/addr2line/addr2line.1 projects/nand/gnu/usr.bin/binutils/ranlib/ranlib.1 projects/nand/gnu/usr.bin/binutils/size/size.1 projects/nand/gnu/usr.bin/binutils/strip/strip.1 projects/nand/gnu/usr.bin/gdb/gdb/gdb.1 projects/nand/lib/libc/locale/toupper.c projects/nand/lib/libc/stdio/fgets.3 projects/nand/lib/libthr/thread/thr_sleepq.c projects/nand/sbin/geom/class/eli/geli.8 projects/nand/sbin/md5/md5.1 projects/nand/sbin/md5/md5.c projects/nand/share/man/man4/ral.4 projects/nand/share/syscons/keymaps/Makefile projects/nand/sys/amd64/conf/GENERIC projects/nand/sys/boot/fdt/fdt_loader_cmd.c projects/nand/sys/boot/i386/cdboot/Makefile projects/nand/sys/boot/i386/loader/main.c projects/nand/sys/boot/i386/pxeldr/Makefile projects/nand/sys/boot/i386/pxeldr/pxeldr.S projects/nand/sys/boot/sparc64/boot1/Makefile projects/nand/sys/boot/sparc64/zfsboot/Makefile projects/nand/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c projects/nand/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c projects/nand/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h projects/nand/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h projects/nand/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h projects/nand/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/nand/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h projects/nand/sys/conf/files projects/nand/sys/conf/files.arm projects/nand/sys/dev/ath/ath_hal/ar5210/ar5210.h projects/nand/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c projects/nand/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c projects/nand/sys/dev/ath/ath_hal/ar5211/ar5211.h projects/nand/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c projects/nand/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c projects/nand/sys/dev/dc/if_dc.c projects/nand/sys/dev/e1000/if_em.c projects/nand/sys/dev/e1000/if_igb.c projects/nand/sys/dev/fxp/if_fxp.c projects/nand/sys/dev/hwpmc/hwpmc_intel.c projects/nand/sys/dev/ral/if_ral_pci.c projects/nand/sys/dev/re/if_re.c projects/nand/sys/dev/sf/if_sf.c projects/nand/sys/dev/usb/net/if_rue.c projects/nand/sys/dev/xl/if_xl.c projects/nand/sys/fs/ext2fs/ext2_vfsops.c projects/nand/sys/geom/eli/g_eli_integrity.c projects/nand/sys/i386/conf/GENERIC projects/nand/sys/modules/ral/Makefile projects/nand/sys/nfsclient/nfs_subs.c projects/nand/sys/sparc64/include/intr_machdep.h projects/nand/sys/sparc64/sparc64/intr_machdep.c projects/nand/sys/vm/vm_fault.c projects/nand/sys/vm/vm_map.c projects/nand/sys/vm/vm_map.h projects/nand/tools/build/mk/OptionalObsoleteFiles.inc projects/nand/usr.bin/calendar/calendar.1 projects/nand/usr.bin/clang/clang/clang.1 projects/nand/usr.bin/clang/tblgen/tblgen.1 projects/nand/usr.bin/csup/csup.1 projects/nand/usr.bin/fetch/fetch.1 projects/nand/usr.bin/gprof/gprof.1 projects/nand/usr.bin/ipcrm/ipcrm.1 projects/nand/usr.bin/join/join.1 projects/nand/usr.bin/limits/limits.1 projects/nand/usr.bin/ncplogin/ncplogout.1 projects/nand/usr.bin/tftp/tftp.1 projects/nand/usr.bin/unzip/unzip.1 projects/nand/usr.bin/who/who.1 projects/nand/usr.bin/whois/whois.1 projects/nand/usr.sbin/bsdinstall/scripts/mirrorselect projects/nand/usr.sbin/pkg_install/updating/pkg_updating.1 projects/nand/usr.sbin/portsnap/portsnap/portsnap.sh Directory Properties: projects/nand/ (props changed) projects/nand/MAINTAINERS (props changed) projects/nand/cddl/contrib/opensolaris/ (props changed) projects/nand/contrib/bind9/ (props changed) projects/nand/contrib/binutils/ (props changed) projects/nand/contrib/bzip2/ (props changed) projects/nand/contrib/com_err/ (props changed) projects/nand/contrib/compiler-rt/ (props changed) projects/nand/contrib/dialog/ (props changed) projects/nand/contrib/ee/ (props changed) projects/nand/contrib/expat/ (props changed) projects/nand/contrib/file/ (props changed) projects/nand/contrib/gcc/ (props changed) projects/nand/contrib/gdb/ (props changed) projects/nand/contrib/gdtoa/ (props changed) projects/nand/contrib/gnu-sort/ (props changed) projects/nand/contrib/groff/ (props changed) projects/nand/contrib/less/ (props changed) projects/nand/contrib/libarchive/ (props changed) projects/nand/contrib/libarchive/cpio/ (props changed) projects/nand/contrib/libarchive/libarchive/ (props changed) projects/nand/contrib/libarchive/libarchive_fe/ (props changed) projects/nand/contrib/libarchive/tar/ (props changed) projects/nand/contrib/libc++/ (props changed) projects/nand/contrib/libcxxrt/ (props changed) projects/nand/contrib/libpcap/ (props changed) projects/nand/contrib/libstdc++/ (props changed) projects/nand/contrib/llvm/ (props changed) projects/nand/contrib/llvm/tools/clang/ (props changed) projects/nand/contrib/ncurses/ (props changed) projects/nand/contrib/netcat/ (props changed) projects/nand/contrib/ntp/ (props changed) projects/nand/contrib/one-true-awk/ (props changed) projects/nand/contrib/openbsm/ (props changed) projects/nand/contrib/openpam/ (props changed) projects/nand/contrib/openresolv/ (props changed) projects/nand/contrib/pf/ (props changed) projects/nand/contrib/sendmail/ (props changed) projects/nand/contrib/tcpdump/ (props changed) projects/nand/contrib/tcsh/ (props changed) projects/nand/contrib/tnftp/ (props changed) projects/nand/contrib/top/ (props changed) projects/nand/contrib/top/install-sh (props changed) projects/nand/contrib/tzcode/stdtime/ (props changed) projects/nand/contrib/tzcode/zic/ (props changed) projects/nand/contrib/tzdata/ (props changed) projects/nand/contrib/wpa/ (props changed) projects/nand/contrib/xz/ (props changed) projects/nand/crypto/heimdal/ (props changed) projects/nand/crypto/openssh/ (props changed) projects/nand/crypto/openssl/ (props changed) projects/nand/gnu/lib/ (props changed) projects/nand/gnu/usr.bin/binutils/ (props changed) projects/nand/gnu/usr.bin/cc/cc_tools/ (props changed) projects/nand/gnu/usr.bin/gdb/ (props changed) projects/nand/lib/libc/ (props changed) projects/nand/lib/libc/stdtime/ (props changed) projects/nand/lib/libutil/ (props changed) projects/nand/lib/libz/ (props changed) projects/nand/sbin/ (props changed) projects/nand/sbin/ipfw/ (props changed) projects/nand/share/man/man4/ (props changed) projects/nand/share/mk/bsd.arch.inc.mk (props changed) projects/nand/share/zoneinfo/ (props changed) projects/nand/sys/ (props changed) projects/nand/sys/amd64/include/xen/ (props changed) projects/nand/sys/boot/ (props changed) projects/nand/sys/boot/i386/efi/ (props changed) projects/nand/sys/boot/ia64/efi/ (props changed) projects/nand/sys/boot/ia64/ski/ (props changed) projects/nand/sys/boot/powerpc/boot1.chrp/ (props changed) projects/nand/sys/boot/powerpc/ofw/ (props changed) projects/nand/sys/cddl/contrib/opensolaris/ (props changed) projects/nand/sys/conf/ (props changed) projects/nand/sys/contrib/dev/acpica/ (props changed) projects/nand/sys/contrib/dev/acpica/changes.txt (props changed) projects/nand/sys/contrib/dev/acpica/common/ (props changed) projects/nand/sys/contrib/dev/acpica/compiler/ (props changed) projects/nand/sys/contrib/dev/acpica/components/debugger/ (props changed) projects/nand/sys/contrib/dev/acpica/components/disassembler/ (props changed) projects/nand/sys/contrib/dev/acpica/components/dispatcher/ (props changed) projects/nand/sys/contrib/dev/acpica/components/events/ (props changed) projects/nand/sys/contrib/dev/acpica/components/executer/ (props changed) projects/nand/sys/contrib/dev/acpica/components/hardware/ (props changed) projects/nand/sys/contrib/dev/acpica/components/namespace/ (props changed) projects/nand/sys/contrib/dev/acpica/components/parser/ (props changed) projects/nand/sys/contrib/dev/acpica/components/resources/ (props changed) projects/nand/sys/contrib/dev/acpica/components/tables/ (props changed) projects/nand/sys/contrib/dev/acpica/components/utilities/ (props changed) projects/nand/sys/contrib/dev/acpica/include/ (props changed) projects/nand/sys/contrib/dev/acpica/os_specific/ (props changed) projects/nand/sys/contrib/octeon-sdk/ (props changed) projects/nand/sys/contrib/pf/ (props changed) projects/nand/sys/contrib/x86emu/ (props changed) projects/nand/sys/i386/conf/XENHVM (props changed) projects/nand/usr.bin/calendar/ (props changed) projects/nand/usr.bin/csup/ (props changed) projects/nand/usr.bin/procstat/ (props changed) projects/nand/usr.sbin/jail/ (props changed) projects/nand/usr.sbin/ndiscvt/ (props changed) projects/nand/usr.sbin/rtadvctl/ (props changed) projects/nand/usr.sbin/rtadvd/ (props changed) projects/nand/usr.sbin/rtsold/ (props changed) projects/nand/usr.sbin/zic/ (props changed) Modified: projects/nand/Makefile.inc1 ============================================================================== --- projects/nand/Makefile.inc1 Fri May 11 07:12:18 2012 (r235262) +++ projects/nand/Makefile.inc1 Fri May 11 09:34:39 2012 (r235263) @@ -223,9 +223,6 @@ CROSSENV= MAKEOBJDIRPREFIX=${OBJTREE} \ MACHINE_ARCH=${TARGET_ARCH} \ MACHINE=${TARGET} \ CPUTYPE=${TARGET_CPUTYPE} -.if ${OSRELDATE} < 700044 -CROSSENV+= AR=gnu-ar RANLIB=gnu-ranlib -.endif .if ${MK_GROFF} != "no" CROSSENV+= GROFF_BIN_PATH=${WORLDTMP}/legacy/usr/bin \ GROFF_FONT_PATH=${WORLDTMP}/legacy/usr/share/groff_font \ @@ -981,8 +978,8 @@ update: # legacy: Build compatibility shims for the next three targets # legacy: -.if ${BOOTSTRAPPING} < 600034 && ${BOOTSTRAPPING} != 0 - @echo "ERROR: Source upgrades from versions prior to 6.0 not supported."; \ +.if ${BOOTSTRAPPING} < 800107 && ${BOOTSTRAPPING} != 0 + @echo "ERROR: Source upgrades from versions prior to 8.0 not supported."; \ false .endif .for _tool in tools/build @@ -1010,14 +1007,6 @@ _gperf= gnu/usr.bin/gperf _groff= gnu/usr.bin/groff .endif -.if ${BOOTSTRAPPING} >= 700044 && ${BOOTSTRAPPING} < 800022 -_ar= usr.bin/ar -.endif - -.if ${BOOTSTRAPPING} < 800013 -_mklocale= usr.bin/mklocale -.endif - .if ${BOOTSTRAPPING} < 900002 _sed= usr.bin/sed .endif @@ -1031,16 +1020,10 @@ _yacc= usr.bin/yacc _awk= usr.bin/awk .endif -.if ${MK_BSNMP} != "no" && \ - (${BOOTSTRAPPING} < 700018 || !exists(/usr/sbin/gensnmptree)) +.if ${MK_BSNMP} != "no" && !exists(/usr/sbin/gensnmptree) _gensnmptree= usr.sbin/bsnmpd/gensnmptree .endif -.if ${MK_RESCUE} != "no" && \ - ${BOOTSTRAPPING} < 700026 -_crunchgen= usr.sbin/crunch/crunchgen -.endif - .if ${MK_CLANG} != "no" _clang_tblgen= \ lib/clang/libllvmsupport \ @@ -1051,9 +1034,7 @@ _clang_tblgen= \ # dtrace tools are required for older bootstrap env and cross-build .if ${MK_CDDL} != "no" && \ - ((${BOOTSTRAPPING} < 800038 && \ - !(${BOOTSTRAPPING} >= 700112 && ${BOOTSTRAPPING} < 799999)) \ - || (${MACHINE} != ${TARGET} || ${MACHINE_ARCH} != ${TARGET_ARCH})) + (${MACHINE} != ${TARGET} || ${MACHINE_ARCH} != ${TARGET_ARCH}) _dtrace_tools= cddl/usr.bin/sgsmsg cddl/lib/libctf lib/libelf \ lib/libdwarf cddl/usr.bin/ctfconvert cddl/usr.bin/ctfmerge .endif @@ -1082,20 +1063,17 @@ bootstrap-tools: ${_strfile} \ ${_gperf} \ ${_groff} \ - ${_ar} \ ${_dtc} \ ${_awk} \ usr.bin/lorder \ usr.bin/makewhatis \ - ${_mklocale} \ usr.bin/rpcgen \ ${_sed} \ ${_lex} \ ${_yacc} \ usr.bin/xinstall \ ${_gensnmptree} \ - usr.sbin/config \ - ${_crunchgen} + usr.sbin/config ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ cd ${.CURDIR}/${_tool}; \ ${MAKE} DIRPRFX=${_tool}/ obj; \ @@ -1154,7 +1132,7 @@ build-tools: # # cross-tools: Build cross-building tools # -.if ${TARGET_ARCH} != ${MACHINE_ARCH} || ${BOOTSTRAPPING} < 800035 +.if ${TARGET_ARCH} != ${MACHINE_ARCH} .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" _btxld= usr.sbin/btxld .endif Modified: projects/nand/cddl/contrib/opensolaris/cmd/zdb/zdb.8 ============================================================================== --- projects/nand/cddl/contrib/opensolaris/cmd/zdb/zdb.8 Fri May 11 07:12:18 2012 (r235262) +++ projects/nand/cddl/contrib/opensolaris/cmd/zdb/zdb.8 Fri May 11 09:34:39 2012 (r235263) @@ -1,61 +1,286 @@ '\" te -.\" Copyright (c) 2011, Martin Matuska . +.\" Copyright (c) 2012, Martin Matuska . .\" All Rights Reserved. .\" -.\" The contents of this file are subject to the terms of the -.\" Common Development and Distribution License (the "License"). -.\" You may not use this file except in compliance with the License. -.\" -.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -.\" or http://www.opensolaris.org/os/licensing. -.\" See the License for the specific language governing permissions -.\" and limitations under the License. -.\" -.\" When distributing Covered Code, include this CDDL HEADER in each -.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE. -.\" If applicable, add the following below this CDDL HEADER, with the -.\" fields enclosed by brackets "[]" replaced with your own identifying -.\" information: Portions Copyright [yyyy] [name of copyright owner] +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. .\" -.\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved. +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2012, Richard Lowe. +.\" Copyright (c) 2012, Marcelo Araujo . +.\" All Rights Reserved. .\" .\" $FreeBSD$ .\" -.Dd November 26, 2011 +.Dd May 10, 2012 .Dt ZDB 8 .Os .Sh NAME .Nm zdb -.Nd ZFS debugger +.Nd Display zpool debugging and consistency information .Sh SYNOPSIS .Nm -.Ar pool +.Op Fl CumdibcsDvhLXFPA +.Op Fl e Op Fl p Ar path... +.Op Fl t Ar txg +.Ar poolname +.Op Ar object ... +.Nm +.Op Fl divPA +.Op Fl e Op Fl p Ar path... +.Ar dataset +.Op Ar object ... +.Nm +.Fl m Op Fl LXFPA +.Op Fl t Ar txg +.Op Fl e Op Fl p Ar path... +.Ar poolname +.Nm +.Fl R Op Fl A +.Op Fl e Op Fl p Ar path... +.Ar poolname +.Ar vdev Ns : Ns Ar offset Ns : Ns Ar size Ns Op Ns : Ns Ar flags +.Nm +.Fl S +.Op Fl AP +.Op Fl e Op Fl p Ar path... +.Ar poolname +.Nm +.Fl l +.Op Fl uA +.Ar device +.Nm +.Fl C +.Op Fl A +.Op Fl U Ar cache .Sh DESCRIPTION The .Nm -command is used by support engineers to diagnose failures and -gather statistics. Since the -.Tn ZFS -file system is always consistent on disk and is self-repairing, -.Nm -should only be run under the direction by a support engineer. -.Pp -If no arguments are specified, -.Nm -performs basic consistency checks on the pool and associated datasets, and -report any problems detected. -.Nm -Any options supported by this command are internal to Sun and subject to change -at any time. -.Sh EXIT STATUS -The following exit values are returned: -.Bl -tag -offset 2n -width 2n -.It 0 -The pool is consistent. -.It 1 -An error was detected. -.It 2 -Invalid command line options were specified. +utility displays information about a ZFS pool useful for debugging and +performs some amount of consistency checking. +It is a not a general purpose tool and options (and facilities) may change. +This is neither a +.Xr fsck 8 +nor a +.Xr fsdb 8 +utility. +.Pp +The output of this command in general reflects the on-disk structure of a ZFS +pool, and is inherently unstable. +The precise output of most invocations is not documented, a knowledge of ZFS +internals is assumed. +.Pp +When operating on an imported and active pool it is possible, though unlikely, +that zdb may interpret inconsistent pool data and behave erratically. +.Sh OPTIONS +Display options: +.Bl -tag -width indent +.It Fl b +Display statistics regarding the number, size (logical, physical and +allocated) and deduplication of blocks. +.It Fl c +Verify the checksum of all metadata blocks while printing block statistics +(see +.Fl b Ns ). +.Pp +If specified multiple times, verify the checksums of all blocks. +.It Fl C +Display information about the configuration. If specified with no other +options, instead display information about the cache file +.Ns ( Pa /etc/zfs/zpool.cache Ns ). +To specify the cache file to display, see +.Fl U +.Pp +If specified multiple times, and a pool name is also specified display both +the cached configuration and the on-disk configuration. +If specified multiple times with +.FL e +also display the configuration that would be used were the pool to be +imported. +.It Fl d +Display information about datasets. Specified once, displays basic dataset +information: ID, create transaction, size, and object count. +.Pp +If specified multiple times provides greater and greater verbosity. +.Pp +If object IDs are specified, display information about those specific objects only. +.It Fl D +Display deduplication statistics, including the deduplication ratio (dedup), +compression ratio (compress), inflation due to the zfs copies property +(copies), and an overall effective ratio (dedup * compress / copies). +.Pp +If specified twice, display a histogram of deduplication statistics, showing +the allocated (physically present on disk) and referenced (logically +referenced in the pool) block counts and sizes by reference count. +.It Fl h +Display pool history similar to +.Cm zpool history , +but include internal changes, transaction, and dataset information. +.It Fl i +Display information about intent log (ZIL) entries relating to each +dataset. +If specified multiple times, display counts of each intent log transaction +type. +.It Fl l Ar device +Display the vdev labels from the specified device. +If the +.Fl u +option is also specified, also display the uberblocks on this device. +.It Fl L +Disable leak tracing and the loading of space maps. +By default, +.Nm +verifies that all non-free blocks are referenced, which can be very expensive. +.It Fl m +Display the offset, spacemap, and free space of each metaslab. +When specified twice, also display information about the maximum contiguous +free space and the percentage of free space in each space map. +When specified three times display every spacemap record. +.It Xo +.Fl R Ar poolname +.Ar vdev Ns : Ns Ar offset Ns : Ns Ar size Ns Op Ns : Ns Ar flags +.Xc +Read and display a block from the specified device. By default the block is +displayed as a hex dump, but see the description of the +.Fl r +flag, below. +.Pp +The block is specified in terms of a colon-separated tuple +.Ar vdev +(an integer vdev identifier) +.Ar offset +(the offset within the vdev) +.Ar size +(the size of the block to read) and, optionally, +.Ar flags +(a set of flags, described below). +.Bl -tag -width indent +.It Sy b offset +Print block pointer +.It Sy d +Decompress the block +.It Sy e +Byte swap the block +.It Sy g +Dump gang block header +.It Sy i +Dump indirect block +.It Sy r +Dump raw uninterpreted block data +.El +.It Fl s +Report statistics on +.Nm Ns 's +I/O. +Display operation counts, bandwidth, and error counts of I/O to the pool from +.Nm . +.It Fl S +Simulate the effects of deduplication, constructing a DDT and then display +that DDT as with \fB-DD\fR. +.It Fl u +Display the current uberblock. +.El +.Pp +Other options: +.Bl -tag -width indent +.It Fl A +Do not abort should any assertion fail. +.It Fl AA +Enable panic recovery, certain errors which would otherwise be fatal are +demoted to warnings. +.It Fl AAA +Do not abort if asserts fail and also enable panic recovery. +.It Fl e Op Fl p Ar path... +Operate on an exported pool, not present in +.Pa /etc/zfs/zpool.cache . +The +.Fl p +flag specifies the path under which devices are to be searched. +.It Fl F +Attempt to make an unreadable pool readable by trying progressively older +transactions. +.It Fl P +Print numbers in an unscaled form more amenable to parsing, eg. 1000000 rather +than 1M. +.It Fl t Ar transaction +Specify the highest transaction to use when searching for uberblocks. +See also the +.Fl u +and +.Fl l +options for a means to see the available uberblocks and their associated +transaction numbers. +.It Fl U Ar cachefile +Use a cache file other than +.Pa /etc/zfs/zpool.cache . +This option is only valid with +.Fl C +.It Fl v +Enable verbosity. +Specify multiple times for increased verbosity. +.It Fl X +Attempt +.Ql extreme +transaction rewind, that is attempt the same recovery as +.Fl F +but read transactions otherwise deemed too old. +.El +.Pp +Specifying a display option more than once enables verbosity for only that +option, with more occurrences enabling more verbosity. +.Pp +If no options are specified, all information about the named pool will be +displayed at default verbosity. +.Sh EXAMPLES +.Bl -tag -width 0n +.It Sy Example 1 Display the configuration of imported pool 'rpool' +.Bd -literal -offset 2n +.Li # Ic zdb -C rpool + +MOS Configuration: + version: 28 + name: 'rpool' + ... +.Ed +.It Sy Example 2 Display basic dataset information about 'rpool' +.Bd -literal -offset 2n +.Li # Ic zdb -d rpool +Dataset mos [META], ID 0, cr_txg 4, 26.9M, 1051 objects +Dataset rpool/swap [ZVOL], ID 59, cr_txg 356, 486M, 2 objects +... +.Ed +.It Xo Sy Example 3 Display basic information about object 0 in +.Sy 'rpool/export/home' +.Xc +.Bd -literal -offset 2n +.Li # Ic zdb -d rpool/export/home 0 +Dataset rpool/export/home [ZPL], ID 137, cr_txg 1546, 32K, 8 objects + + Object lvl iblk dblk dsize lsize %full type + 0 7 16K 16K 15.0K 16K 25.00 DMU dnode +.Ed +.It Xo Sy Example 4 Display the predicted effect of enabling deduplication on +.Sy 'rpool' +.Xc +.Bd -literal -offset 2n +.Li # Ic zdb -S rpool +Simulated DDT histogram: + +bucket allocated referenced +______ ______________________________ ______________________________ +refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE +------ ------ ----- ----- ----- ------ ----- ----- ----- + 1 694K 27.1G 15.0G 15.0G 694K 27.1G 15.0G 15.0G + 2 35.0K 1.33G 699M 699M 74.7K 2.79G 1.45G 1.45G + ... +dedup = 1.11, compress = 1.80, copies = 1.00, dedup * compress / copies = 2.00 +.Ed .El .Sh SEE ALSO .Xr zfs 8 , @@ -64,16 +289,18 @@ Invalid command line options were specif This manual page is a .Xr mdoc 7 reimplementation of the -.Tn OpenSolaris +.Tn illumos manual page .Em zdb(1M) , modified and customized for .Fx and licensed under the -.Tn Common Development and Distribution License +Common Development and Distribution License .Pq Tn CDDL . .Pp The .Xr mdoc 7 implementation of this manual page was initially written by -.An Martin Matuska Aq mm@FreeBSD.org . +.An Martin Matuska Aq mm@FreeBSD.org +and +.An Marcelo Araujo Aq araujo@FreeBSD.org . Modified: projects/nand/cddl/contrib/opensolaris/cmd/zdb/zdb.c ============================================================================== --- projects/nand/cddl/contrib/opensolaris/cmd/zdb/zdb.c Fri May 11 07:12:18 2012 (r235262) +++ projects/nand/cddl/contrib/opensolaris/cmd/zdb/zdb.c Fri May 11 09:34:39 2012 (r235263) @@ -102,13 +102,16 @@ static void usage(void) { (void) fprintf(stderr, - "Usage: %s [-CumdibcsDvhL] poolname [object...]\n" - " %s [-div] dataset [object...]\n" - " %s -m [-L] poolname [vdev [metaslab...]]\n" - " %s -R poolname vdev:offset:size[:flags]\n" - " %s -S poolname\n" - " %s -l [-u] device\n" - " %s -C\n\n", + "Usage: %s [-CumdibcsDvhLXFPA] [-t txg] [-e [-p path...]]" + "poolname [object...]\n" + " %s [-divPA] [-e -p path...] dataset [object...]\n" + " %s -m [-LXFPA] [-t txg] [-e [-p path...]]" + "poolname [vdev [metaslab...]]\n" + " %s -R [-A] [-e [-p path...]] poolname " + "vdev:offset:size[:flags]\n" + " %s -S [-PA] [-e [-p path...]] poolname\n" + " %s -l [-uA] device\n" + " %s -C [-A] [-U config]\n\n", cmdname, cmdname, cmdname, cmdname, cmdname, cmdname, cmdname); (void) fprintf(stderr, " Dataset name must include at least one " @@ -150,7 +153,7 @@ usage(void) "has altroot/not in a cachefile\n"); (void) fprintf(stderr, " -p -- use one or more with " "-e to specify path to vdev dir\n"); - (void) fprintf(stderr, " -P print numbers parsable\n"); + (void) fprintf(stderr, " -P print numbers in parseable form\n"); (void) fprintf(stderr, " -t -- highest txg to use when " "searching for uberblocks\n"); (void) fprintf(stderr, "Specify an option more than once (e.g. -bb) " Modified: projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs.8 ============================================================================== --- projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Fri May 11 07:12:18 2012 (r235262) +++ projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Fri May 11 09:34:39 2012 (r235263) @@ -18,8 +18,9 @@ .\" information: Portions Copyright [yyyy] [name of copyright owner] .\" .\" Copyright (c) 2010, Sun Microsystems, Inc. All Rights Reserved. -.\" Copyright (c) 2011 by Delphix. All rights reserved. +.\" Copyright (c) 2012 by Delphix. All rights reserved. .\" Copyright (c) 2012 Nexenta Systems, Inc. All Rights Reserved. +.\" Copyright (c) 2012, Joyent, Inc. All rights reserved. .\" Copyright (c) 2011, Pawel Jakub Dawidek .\" .\" $FreeBSD$ @@ -77,10 +78,12 @@ .Ar clone-filesystem .Nm .Cm rename +.Op Fl f .Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot .Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot .Nm .Cm rename +.Op Fl f .Fl p .Ar filesystem Ns | Ns Ar volume .Ar filesystem Ns | Ns Ar volume @@ -1646,12 +1649,14 @@ subcommand can be used to rename any con .It Xo .Nm .Cm rename +.Op Fl f .Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot .Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot .Xc .It Xo .Nm .Cm rename +.Op Fl f .Fl p .Ar filesystem Ns | Ns Ar volume .Ar filesystem Ns | Ns Ar volume @@ -1685,6 +1690,11 @@ property is set to or .Cm none , file system is not unmounted even if this option is not given. +.It Fl f +Force unmount any filesystems that need to be unmounted in the process. +This flag has no effect if used together with the +.Fl u +flag. .El .It Xo .Nm @@ -2271,6 +2281,7 @@ flags to determine what data will be sen Print machine-parsable verbose information about the stream package generated. .It Fl v Print verbose information about the stream package generated. +This information includes a per-second report of how much data has been sent. .El .Pp The format of the stream is committed. You will be able to receive your streams Modified: projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c ============================================================================== --- projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Fri May 11 07:12:18 2012 (r235262) +++ projects/nand/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Fri May 11 09:34:39 2012 (r235263) @@ -22,10 +22,12 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2012 Nexenta Systems, Inc. All rights reserved. - * Copyright (c) 2011 by Delphix. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright 2012 Milan Jurik. All rights reserved. + * Copyright (c) 2012, Joyent, Inc. All rights reserved. * Copyright (c) 2011-2012 Pawel Jakub Dawidek . * All rights reserved. - * Copyright (c) 2011 Martin Matuska . All rights reserved. + * Copyright (c) 2012 Martin Matuska . All rights reserved. */ #include @@ -256,9 +258,10 @@ get_usage(zfs_help_t idx) "snapshot>\n" "\treceive [-vnFu] [-d | -e] \n")); case HELP_RENAME: - return (gettext("\trename " + return (gettext("\trename [-f] " "\n" - "\trename -p \n" + "\trename [-f] -p " + "\n" "\trename -r \n" "\trename -u [-p] ")); case HELP_ROLLBACK: @@ -764,7 +767,6 @@ zfs_do_create(int argc, char **argv) (void) fprintf(stderr, gettext("missing size " "argument\n")); goto badusage; - break; case '?': (void) fprintf(stderr, gettext("invalid option '%c'\n"), optopt); @@ -3091,8 +3093,8 @@ zfs_do_list(int argc, char **argv) } /* - * zfs rename - * zfs rename -p + * zfs rename [-f] + * zfs rename [-f] -p * zfs rename -r * zfs rename -u [-p] * @@ -3112,7 +3114,7 @@ zfs_do_rename(int argc, char **argv) boolean_t parents = B_FALSE; /* check options */ - while ((c = getopt(argc, argv, "pru")) != -1) { + while ((c = getopt(argc, argv, "fpru")) != -1) { switch (c) { case 'p': parents = B_TRUE; @@ -3123,6 +3125,9 @@ zfs_do_rename(int argc, char **argv) case 'u': flags.nounmount = B_TRUE; break; + case 'f': + flags.forceunmount = B_TRUE; + break; case '?': default: (void) fprintf(stderr, gettext("invalid option '%c'\n"), @@ -3586,6 +3591,7 @@ zfs_do_send(int argc, char **argv) if (flags.verbose) extraverbose = B_TRUE; flags.verbose = B_TRUE; + flags.progress = B_TRUE; break; case 'D': flags.dedup = B_TRUE; Modified: projects/nand/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.1 ============================================================================== --- projects/nand/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.1 Fri May 11 07:12:18 2012 (r235262) +++ projects/nand/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.1 Fri May 11 09:34:39 2012 (r235263) @@ -25,7 +25,7 @@ .Dt ZSTREAMDUMP 8 .Os .Sh NAME -.Nm zdb +.Nm zstreamdump .Nd filter data in zfs send stream .Sh SYNOPSIS .Nm Modified: projects/nand/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h ============================================================================== --- projects/nand/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h Fri May 11 07:12:18 2012 (r235262) +++ projects/nand/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h Fri May 11 09:34:39 2012 (r235263) @@ -25,7 +25,8 @@ * Copyright (c) 2011 Pawel Jakub Dawidek . * All rights reserved. * Copyright (c) 2011 by Delphix. All rights reserved. - * All rights reserved. + * Copyright (c) 2012, Joyent, Inc. All rights reserved. + * Copyright (c) 2012 Martin Matuska . All rights reserved. */ #ifndef _LIBZFS_H @@ -541,6 +542,9 @@ typedef struct renameflags { /* don't unmount file systems */ int nounmount : 1; + + /* force unmount file systems */ + int forceunmount : 1; } renameflags_t; extern int zfs_rename(zfs_handle_t *, const char *, renameflags_t flags); @@ -569,6 +573,9 @@ typedef struct sendflags { /* parsable verbose output (ie. -P) */ boolean_t parsable; + + /* show progress (ie. -v) */ + boolean_t progress; } sendflags_t; typedef boolean_t (snapfilter_cb_t)(zfs_handle_t *, void *); Modified: projects/nand/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c ============================================================================== --- projects/nand/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Fri May 11 07:12:18 2012 (r235262) +++ projects/nand/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Fri May 11 09:34:39 2012 (r235263) @@ -25,6 +25,7 @@ * Copyright (c) 2011 by Delphix. All rights reserved. * Copyright (c) 2011-2012 Pawel Jakub Dawidek . * All rights reserved. + * Copyright (c) 2012 Martin Matuska . All rights reserved. */ #include @@ -3721,7 +3722,8 @@ zfs_rename(zfs_handle_t *zhp, const char } else { if ((cl = changelist_gather(zhp, ZFS_PROP_NAME, - flags.nounmount ? CL_GATHER_DONT_UNMOUNT : 0, 0)) == NULL) { + flags.nounmount ? CL_GATHER_DONT_UNMOUNT : 0, + flags.forceunmount ? MS_FORCE : 0)) == NULL) { return (-1); } Modified: projects/nand/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c ============================================================================== --- projects/nand/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c Fri May 11 07:12:18 2012 (r235262) +++ projects/nand/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c Fri May 11 09:34:39 2012 (r235263) @@ -22,6 +22,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011 by Delphix. All rights reserved. + * Copyright (c) 2012, Joyent, Inc. All rights reserved. * Copyright (c) 2012 Pawel Jakub Dawidek . * All rights reserved. */ @@ -40,6 +41,7 @@ #include #include #include +#include #include @@ -67,6 +69,12 @@ typedef struct dedup_arg { libzfs_handle_t *dedup_hdl; } dedup_arg_t; +typedef struct progress_arg { + zfs_handle_t *pa_zhp; + int pa_fd; + boolean_t pa_parsable; +} progress_arg_t; + typedef struct dataref { uint64_t ref_guid; uint64_t ref_object; @@ -786,7 +794,7 @@ typedef struct send_dump_data { char prevsnap[ZFS_MAXNAMELEN]; uint64_t prevsnap_obj; boolean_t seenfrom, seento, replicate, doall, fromorigin; - boolean_t verbose, dryrun, parsable; + boolean_t verbose, dryrun, parsable, progress; int outfd; boolean_t err; nvlist_t *fss; @@ -979,10 +987,60 @@ hold_for_send(zfs_handle_t *zhp, send_du return (error); } +static void * +send_progress_thread(void *arg) +{ + progress_arg_t *pa = arg; + + zfs_cmd_t zc = { 0 }; + zfs_handle_t *zhp = pa->pa_zhp; + libzfs_handle_t *hdl = zhp->zfs_hdl; + unsigned long long bytes; + char buf[16]; + + time_t t; + struct tm *tm; + + assert(zhp->zfs_type == ZFS_TYPE_SNAPSHOT); + (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); + + if (!pa->pa_parsable) + (void) fprintf(stderr, "TIME SENT SNAPSHOT\n"); + + /* + * Print the progress from ZFS_IOC_SEND_PROGRESS every second. + */ + for (;;) { + (void) sleep(1); + + zc.zc_cookie = pa->pa_fd; + if (zfs_ioctl(hdl, ZFS_IOC_SEND_PROGRESS, &zc) != 0) + return ((void *)-1); + + (void) time(&t); + tm = localtime(&t); + bytes = zc.zc_cookie; + + if (pa->pa_parsable) { + (void) fprintf(stderr, "%02d:%02d:%02d\t%llu\t%s\n", + tm->tm_hour, tm->tm_min, tm->tm_sec, + bytes, zhp->zfs_name); + } else { + zfs_nicenum(bytes, buf, sizeof (buf)); + (void) fprintf(stderr, "%02d:%02d:%02d %5s %s\n", + tm->tm_hour, tm->tm_min, tm->tm_sec, + buf, zhp->zfs_name); + } + } +} + static int dump_snapshot(zfs_handle_t *zhp, void *arg) { send_dump_data_t *sdd = arg; + progress_arg_t pa = { 0 }; + pthread_t tid; + char *thissnap; int err; boolean_t isfromsnap, istosnap, fromorigin; @@ -1100,8 +1158,29 @@ dump_snapshot(zfs_handle_t *zhp, void *a } if (!sdd->dryrun) { + /* + * If progress reporting is requested, spawn a new thread to + * poll ZFS_IOC_SEND_PROGRESS at a regular interval. + */ + if (sdd->progress) { + pa.pa_zhp = zhp; + pa.pa_fd = sdd->outfd; + pa.pa_parsable = sdd->parsable; + + if (err = pthread_create(&tid, NULL, + send_progress_thread, &pa)) { + zfs_close(zhp); + return (err); + } + } + err = dump_ioctl(zhp, sdd->prevsnap, sdd->prevsnap_obj, fromorigin, sdd->outfd, sdd->debugnv); + + if (sdd->progress) { + (void) pthread_cancel(tid); + (void) pthread_join(tid, NULL); + } } (void) strcpy(sdd->prevsnap, thissnap); @@ -1451,12 +1530,13 @@ zfs_send(zfs_handle_t *zhp, const char * sdd.fsavl = fsavl; sdd.verbose = flags->verbose; sdd.parsable = flags->parsable; + sdd.progress = flags->progress; sdd.dryrun = flags->dryrun; sdd.filter_cb = filter_func; sdd.filter_cb_arg = cb_arg; if (debugnvp) sdd.debugnv = *debugnvp; - if (holdsnaps) { + if (holdsnaps || flags->progress) { ++holdseq; (void) snprintf(sdd.holdtag, sizeof (sdd.holdtag), ".send-%d-%llu", getpid(), (u_longlong_t)holdseq); Modified: projects/nand/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- projects/nand/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Fri May 11 07:12:18 2012 (r235262) +++ projects/nand/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Fri May 11 09:34:39 2012 (r235263) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, Joyent, Inc. All rights reserved. */ #ifndef _SYS_ZFS_CONTEXT_H @@ -228,6 +229,7 @@ struct proc { }; extern struct proc p0; +#define curproc (&p0) #define PS_NONE -1 Modified: projects/nand/contrib/jemalloc/ChangeLog ============================================================================== --- projects/nand/contrib/jemalloc/ChangeLog Fri May 11 07:12:18 2012 (r235262) +++ projects/nand/contrib/jemalloc/ChangeLog Fri May 11 09:34:39 2012 (r235263) @@ -19,9 +19,10 @@ found in the git revision history: New features: - Implement Valgrind support, redzones, and quarantine. - - Add support for additional operating systems: + - Add support for additional platforms: + FreeBSD + Mac OS X Lion + + MinGW - Add support for additional architectures: + MIPS + SH4 @@ -64,18 +65,24 @@ found in the git revision history: - Remove the --enable-sysv configure option. Bug fixes: - - Fix fork-related bugs that could cause deadlock in children between fork - and exec. - Fix a statistics-related bug in the "thread.arena" mallctl that could cause invalid statistics and crashes. - - Work around TLS dallocation via free() on Linux. This bug could cause + - Work around TLS deallocation via free() on Linux. This bug could cause write-after-free memory corruption. + - Fix a potential deadlock that could occur during interval- and + growth-triggered heap profile dumps. - Fix chunk_alloc_dss() to stop claiming memory is zeroed. This bug could cause memory corruption and crashes with --enable-dss specified. + - Fix fork-related bugs that could cause deadlock in children between fork + and exec. - Fix malloc_stats_print() to honor 'b' and 'l' in the opts parameter. - Fix realloc(p, 0) to act like free(p). - Do not enforce minimum alignment in memalign(). - Check for NULL pointer in malloc_usable_size(). + - Fix an off-by-one heap profile statistics bug that could be observed in + interval- and growth-triggered heap profiles. + - Fix the "epoch" mallctl to update cached stats even if the passed in epoch + is 0. - Fix bin->runcur management to fix a layout policy bug. This bug did not affect correctness. - Fix a bug in choose_arena_hard() that potentially caused more arenas to be Modified: projects/nand/contrib/jemalloc/FREEBSD-Xlist ============================================================================== --- projects/nand/contrib/jemalloc/FREEBSD-Xlist Fri May 11 07:12:18 2012 (r235262) +++ projects/nand/contrib/jemalloc/FREEBSD-Xlist Fri May 11 09:34:39 2012 (r235263) @@ -18,6 +18,7 @@ include/jemalloc/internal/jemalloc_inter include/jemalloc/internal/size_classes.sh include/jemalloc/jemalloc.h.in include/jemalloc/jemalloc_defs.h.in +include/msvc_compat/ install-sh src/zone.c test/ Modified: projects/nand/contrib/jemalloc/FREEBSD-diffs ============================================================================== --- projects/nand/contrib/jemalloc/FREEBSD-diffs Fri May 11 07:12:18 2012 (r235262) +++ projects/nand/contrib/jemalloc/FREEBSD-diffs Fri May 11 09:34:39 2012 (r235263) @@ -1,5 +1,5 @@ diff --git a/doc/jemalloc.xml.in b/doc/jemalloc.xml.in -index e8a5722..cec85b5 100644 +index 93c16dc..b5c5595 100644 --- a/doc/jemalloc.xml.in +++ b/doc/jemalloc.xml.in @@ -51,12 +51,23 @@ @@ -27,7 +27,7 @@ index e8a5722..cec85b5 100644 Standard API -@@ -2091,4 +2102,16 @@ malloc_conf = "lg_chunk:24";]]> +@@ -2101,4 +2112,16 @@ malloc_conf = "lg_chunk:24";]]> The posix_memalign function conforms to IEEE Std 1003.1-2001 (“POSIX.1”). @@ -45,7 +45,7 @@ index e8a5722..cec85b5 100644 + diff --git a/include/jemalloc/internal/jemalloc_internal.h.in b/include/jemalloc/internal/jemalloc_internal.h.in -index b61abe8..edbb437 100644 +index 268cd14..cfb1fb9 100644 --- a/include/jemalloc/internal/jemalloc_internal.h.in +++ b/include/jemalloc/internal/jemalloc_internal.h.in @@ -1,5 +1,8 @@ @@ -54,12 +54,12 @@ index b61abe8..edbb437 100644 +#include "libc_private.h" +#include "namespace.h" + - #include - #include - #include -@@ -35,6 +38,9 @@ - #include #include + #ifdef _WIN32 + # include +@@ -54,6 +57,9 @@ typedef intptr_t ssize_t; + #endif + #include +#include "un-namespace.h" +#include "libc_private.h" @@ -68,10 +68,10 @@ index b61abe8..edbb437 100644 #include "../jemalloc@install_suffix@.h" diff --git a/include/jemalloc/internal/mutex.h b/include/jemalloc/internal/mutex.h -index 8837ef5..d7133f4 100644 +index de44e14..564d604 100644 --- a/include/jemalloc/internal/mutex.h +++ b/include/jemalloc/internal/mutex.h -@@ -39,9 +39,6 @@ struct malloc_mutex_s { +@@ -43,9 +43,6 @@ struct malloc_mutex_s { #ifdef JEMALLOC_LAZY_LOCK extern bool isthreaded; @@ -82,10 +82,10 @@ index 8837ef5..d7133f4 100644 bool malloc_mutex_init(malloc_mutex_t *mutex); diff --git a/include/jemalloc/internal/private_namespace.h b/include/jemalloc/internal/private_namespace.h -index bb1b63e..00eb169 100644 +index b816647..b8ce6b1 100644 --- a/include/jemalloc/internal/private_namespace.h +++ b/include/jemalloc/internal/private_namespace.h -@@ -165,7 +165,6 @@ +@@ -186,7 +186,6 @@ #define iqalloc JEMALLOC_N(iqalloc) #define iralloc JEMALLOC_N(iralloc) #define isalloc JEMALLOC_N(isalloc) @@ -94,7 +94,7 @@ index bb1b63e..00eb169 100644 #define jemalloc_postfork_child JEMALLOC_N(jemalloc_postfork_child) #define jemalloc_postfork_parent JEMALLOC_N(jemalloc_postfork_parent) diff --git a/include/jemalloc/jemalloc.h.in b/include/jemalloc/jemalloc.h.in -index f0581db..f26d8bc 100644 +index ad06948..505dd38 100644 --- a/include/jemalloc/jemalloc.h.in +++ b/include/jemalloc/jemalloc.h.in @@ -15,6 +15,7 @@ extern "C" { @@ -107,10 +107,10 @@ index f0581db..f26d8bc 100644 #define ALLOCM_LG_ALIGN(la) (la) diff --git a/include/jemalloc/jemalloc_FreeBSD.h b/include/jemalloc/jemalloc_FreeBSD.h new file mode 100644 -index 0000000..2c5797f +index 0000000..9efab93 --- /dev/null +++ b/include/jemalloc/jemalloc_FreeBSD.h -@@ -0,0 +1,76 @@ +@@ -0,0 +1,80 @@ +/* + * Override settings that were generated in jemalloc_defs.h as necessary. + */ @@ -154,8 +154,12 @@ index 0000000..2c5797f +# define LG_SIZEOF_PTR 2 +#endif +#ifdef __mips__ ++#ifdef __mips_n64 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Fri May 11 10:47:01 2012 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 4ED3F106564A; Fri, 11 May 2012 10:47:01 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id 9D5808FC08; Fri, 11 May 2012 10:47:00 +0000 (UTC) Received: from skuns.kiev.zoral.com.ua (localhost [127.0.0.1]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id q4BAkpdB008838; Fri, 11 May 2012 13:46:51 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.5/8.14.5) with ESMTP id q4BAkmCi034520; Fri, 11 May 2012 13:46:48 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.5/8.14.5/Submit) id q4BAkm31034519; Fri, 11 May 2012 13:46:48 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Fri, 11 May 2012 13:46:48 +0300 From: Konstantin Belousov To: Mateusz Guzik Message-ID: <20120511104648.GM2358@deviant.kiev.zoral.com.ua> References: <201203170318.q2H3ITdI047893@svn.freebsd.org> <20120317085116.GC1340@garage.freebsd.pl> <20120317161050.GI75778@deviant.kiev.zoral.com.ua> <4FA8FFB9.7090002@freebsd.org> <20120508095631.GV2358@deviant.kiev.zoral.com.ua> <4FA94609.3060306@freebsd.org> <20120510103105.GG2358@deviant.kiev.zoral.com.ua> <4FABC64F.3060502@freebsd.org> <20120510115857.GH2358@deviant.kiev.zoral.com.ua> <20120510164519.GA13258@pcbsd-2342.semihalf.com> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="23eOHpR5vYWIDA3o" Content-Disposition: inline In-Reply-To: <20120510164519.GA13258@pcbsd-2342.semihalf.com> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-4.0 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-projects@freebsd.org, Grzegorz Bernacki , src-committers@freebsd.org Subject: Re: svn commit: r233072 - projects/nand/sys/kern 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: Fri, 11 May 2012 10:47:01 -0000 --23eOHpR5vYWIDA3o Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, May 10, 2012 at 06:45:19PM +0200, Mateusz Guzik wrote: > http://people.freebsd.org/~raj/patches/misc/vfs_highdirtybuf.diff >=20 > callbacks are expected to increase flushed counter if they happend to > flush some buffers. I do not think this is right. You need to call a routine when getnewblk() is unable to find a buffer to recycle. As I understand, in your situation with lot of managed buffers, the dirty queue could be just empty. >=20 > Example proof-of-concept (will be cleaned up) change for nandfs: > http://people.freebsd.org/~raj/patches/misc/nandfs_vfs_highdirtybuf.diff >=20 > Does this look reasonable? >=20 > --=20 > Mateusz Guzik --23eOHpR5vYWIDA3o Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (FreeBSD) iEYEARECAAYFAk+s7hYACgkQC3+MBN1Mb4i+QACfTBH8z4JVPDHuSaTcwutFQD3S yvYAoNCvUl9fvyGvd5hB+ILx3M4EPKw+ =LqdC -----END PGP SIGNATURE----- --23eOHpR5vYWIDA3o-- From owner-svn-src-projects@FreeBSD.ORG Fri May 11 15:48:13 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id F04291065672; Fri, 11 May 2012 15:48:13 +0000 (UTC) (envelope-from mjg@semihalf.com) Received: from smtp.semihalf.com (smtp.semihalf.com [213.17.239.109]) by mx1.freebsd.org (Postfix) with ESMTP id 9479C8FC16; Fri, 11 May 2012 15:48:13 +0000 (UTC) Received: from localhost (unknown [213.17.239.109]) by smtp.semihalf.com (Postfix) with ESMTP id 01B4EC3CB7; Fri, 11 May 2012 17:48:03 +0200 (CEST) X-Virus-Scanned: by amavisd-new at semihalf.com Received: from smtp.semihalf.com ([213.17.239.109]) by localhost (smtp.semihalf.com [213.17.239.109]) (amavisd-new, port 10024) with ESMTP id G6yZ0F730E+J; Fri, 11 May 2012 17:48:02 +0200 (CEST) Received: from pcbsd-2342.semihalf.com (cardhu.semihalf.com [213.17.239.108]) by smtp.semihalf.com (Postfix) with ESMTPSA id 2D9A2C3840; Fri, 11 May 2012 17:48:02 +0200 (CEST) Date: Fri, 11 May 2012 17:48:10 +0200 From: Mateusz Guzik To: Konstantin Belousov Message-ID: <20120511154810.GA99005@pcbsd-2342.semihalf.com> References: <20120317085116.GC1340@garage.freebsd.pl> <20120317161050.GI75778@deviant.kiev.zoral.com.ua> <4FA8FFB9.7090002@freebsd.org> <20120508095631.GV2358@deviant.kiev.zoral.com.ua> <4FA94609.3060306@freebsd.org> <20120510103105.GG2358@deviant.kiev.zoral.com.ua> <4FABC64F.3060502@freebsd.org> <20120510115857.GH2358@deviant.kiev.zoral.com.ua> <20120510164519.GA13258@pcbsd-2342.semihalf.com> <20120511104648.GM2358@deviant.kiev.zoral.com.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20120511104648.GM2358@deviant.kiev.zoral.com.ua> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-projects@freebsd.org, Grzegorz Bernacki , src-committers@freebsd.org Subject: Re: svn commit: r233072 - projects/nand/sys/kern 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: Fri, 11 May 2012 15:48:14 -0000 On Fri, May 11, 2012 at 01:46:48PM +0300, Konstantin Belousov wrote: > On Thu, May 10, 2012 at 06:45:19PM +0200, Mateusz Guzik wrote: > > http://people.freebsd.org/~raj/patches/misc/vfs_highdirtybuf.diff > > > > callbacks are expected to increase flushed counter if they happend to > > flush some buffers. > I do not think this is right. You need to call a routine when getnewblk() > is unable to find a buffer to recycle. > > As I understand, in your situation with lot of managed buffers, the dirty > queue could be just empty. I don't think I follow. Is your concern that with a lot of managed buffers and empty dirty queue nothing can be recycled? Or that managed buffers affect calls to buf_do_flush? I presume you talk about the code below the following: /* * If we exhausted our list, sleep as appropriate. We may have to * wakeup various daemons and write out some dirty buffers. * * Generally we are sleeping due to insufficient buffer space. */ if (bp == NULL) { Conditions that cause bufdaemon weakups/buf_do_flush calls seem to be not dependent on buffers being managed or not. buf_do_flush with our change always calls registered callbacks and the callback that we register calls code that knowns what nandfs managed buffers are dirty and flushes those. Buffers from dirty queues (if any) are flushed separately. If I'm wrong or misunderstood you, please elaborate on problem you have in mind. > > > > Example proof-of-concept (will be cleaned up) change for nandfs: > > http://people.freebsd.org/~raj/patches/misc/nandfs_vfs_highdirtybuf.diff > > > > Does this look reasonable? > > -- Mateusz Guzik From owner-svn-src-projects@FreeBSD.ORG Fri May 11 16:08:52 2012 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 8A517106566C; Fri, 11 May 2012 16:08:52 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 74FA28FC17; Fri, 11 May 2012 16:08:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4BG8p9n090652; Fri, 11 May 2012 16:08:51 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4BG8prh090651; Fri, 11 May 2012 16:08:51 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201205111608.q4BG8prh090651@svn.freebsd.org> From: Ulrich Spoerlein Date: Fri, 11 May 2012 16:08:51 +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: r235275 - projects user 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: Fri, 11 May 2012 16:08:52 -0000 Author: uqs Date: Fri May 11 16:08:51 2012 New Revision: 235275 URL: http://svn.freebsd.org/changeset/base/235275 Log: Update guidelines on user/ and projects/ The goal is to make it clearer where future branches should be created. A consistent layout under projects/ would also help with conversions to other VCSes that do not follow the everything-is-a-subdir dogma. TL;DR - If it's a branch of head that you want to merge back -> projects/ - If it's something else -> user/your-login/ (e.g. portmaster, stress2, etc.) Discussed on: developers Silence by: peter Modified: projects/GUIDELINES.txt Changes in other areas also in this revision: Modified: user/GUIDELINES.txt Modified: projects/GUIDELINES.txt ============================================================================== --- projects/GUIDELINES.txt Fri May 11 16:04:55 2012 (r235274) +++ projects/GUIDELINES.txt Fri May 11 16:08:51 2012 (r235275) @@ -1,16 +1,9 @@ $FreeBSD$ -Golden rules: -Rule #1: TAKE IT EASY! DON'T RUSH AND MAKE A MESS! ASK IF NEEDED! -Rule #2: See rule #1, repeat as needed +Guidelines for what can go in /projects +--------------------------------------- -Peril sensitive sunglasses advisory: -This is in flux. Expect refinement. Expect typos. - -Guidelines for what can go in /user and /projects -------------------------------------------------- - -First of all, eveyrbody needs to keep in mind that this repository is +First of all, everybody needs to keep in mind that this repository is replicated as a unit. Anything that goes into the repository uses project and volunteer resources. Once something goes in, it essentially never comes out. Therefore, these are not dumping grounds to put random junk in the @@ -19,82 +12,74 @@ tree that we have to mirror forever. General guidelines: * Should be relevant to FreeBSD. -* Should be at least concievably of interest to somebody else. +* Should be at least conceivably of interest to somebody else. * Should be in a format that is suitable to merge into the base tree. * Should be something that is worth people's time to read commit mail for. * Write decent commit messages! +The difference between /projects and /user wasn't very clear in the past. +Going forward /projects is reserved for branches of FreeBSD itself for possible +re-integration into /head. Branches shall not be nested into e.g. +/projects/foo/stable8, instead /projects/foo_stable8 shall be used. -The difference between /projects and /user is mostly one of intentions. - -If some WIP is intended to be committed to the main src tree, then it -should go in /projects/$name/*. We encourage people to subscribe to projects -commit messages. The reason is that WIP in projects can be expected to hit -the base tree at some point. - -If some WIP is more of an experiment or speculative, that might not ever be -merged, then it goes in /user/$username/$name/*. We don't encourage -people to subscribe to user commit messages. - -If it is something unrelated to the src tree, it should probably go elsewhere. -There will be a separate repostory made available for such things, whether it -be a special version of mysql or xorg or gcc or whatever. - +/user can be used for tools and software tightly related to FreeBSD, but which +is not a copy/branch of FreeBSD itself. Layout: -Since this is for WIP that can concievably be merged, there is an argument -that can be made that teaching the pre-commit scripts to sanity check WIP -as it goes, rather than having a mammoth fixup being needed prior to merging. - -For that to work, the layout has to be predictable. eg: a branch of -"head/sys/*" for a project called "ia65" should be /projects/ia65/sys/*. -An experimental X11-aware verison of bin/ls/* in a user directory for jdoe -would be /user/jdoe/x11-ls/bin/ls/*. + +Since this is for WIP that can conceivably be merged, an argument can be made +that we teach the pre-commit scripts to sanity check WIP as it goes in, rather +than having a mammoth fixup being needed prior to merging. + +For that to work, the layout has to be predictable, e.g. a branch of +"head/*" for a project called "ia65" should be /projects/ia65/*. +An experimental X11-aware version of bin/ls/* would be +/projects/x11-ls/bin/ls/*. Creation and merging: Merging is in flux. The procedure as understood right now: -Assume projects/ia65/sys. $BASE="svn+ssh://svn.freebsd.org/base" - Initial creation: - $ svn cp --parents $BASE/head/sys $BASE/projects/ia65/sys + Assume projects/ia65. BASE="svn+ssh://svn.freebsd.org/base" + + $ svn cp --parents $BASE/head $BASE/projects/ia65 Then check it out: $ svn co $BASE/projects/ia65 To integrate changes from head into your branch: - $ cd ia65 ; svn update; svn status | read output! Should preferably be clean. + $ cd ia65; svn update; svn status | read output! Should preferably be clean. (you may prefer to do merges in a second, clean checkout. It will be easier!) - $ svn merge $BASE/head/sys - (this merges head/sys/* into ., which is projects/ia65/sys) + $ svn merge $BASE/head + (this merges head/* into ., which is projects/ia65) $ svn commit -To merge your changes into head/sys. +To merge your changes into head. $ mail -s 'Is it ok to merge projects/ia65 to head?' peter@freebsd.org $ wait_for_reply (the point is to have somebody on hand for the first - timeto help rescue you if things go horribly wrong.) - (set up a clean checkout of head/sys and projects/ia65/sys. MUST BE CLEAN!!) + time to help rescue you if things go horribly wrong.) + (set up a clean checkout of head and projects/ia65. MUST BE CLEAN!!) $ cd work - $ svn co $BASE/head/sys - $ svn co $BASE/projects/ia65/sys + $ svn co $BASE/head + $ svn co $BASE/projects/ia65 (If you've already got clean checkouts handy, replace with appropriate svn update commands) $ svn info head - NOTE CHANGE NUMBER!!! assume 12345 for this example. (now, bring projects/ia65 up to date with head, AS YOU JUST CHECKED IT OUT) - $ svn merge $BASE/head/sys@12345 projects/ia65/sys + $ svn merge $BASE/head@12345 projects/ia65 (resolve conflicts) - $ svn commit projects/ia65/sys + $ svn commit projects/ia65 (now, projects/ia65 is in sync with @12345, as is your head checkout) (reverse merge to base tree!) - $ svn merge $BASE/projects/ia65/sys head/sys + $ svn merge $BASE/projects/ia65 head (resolve conflicts) - $ svn commit head/sys - $ profit! + $ svn commit head (regular svn users might wonder about merge --reintegrate. Our tree breaks it, sorry. We can't use it.) -Tags: - Place tags in your /user area if possible, even if the origin is a project. - Tag by using svn cp $BASE/projects/xxx $BASE/user/jdoe/yyy. +Other: + +If it is not covered here, and there's no established practice of doing what +you're trying to achieve, always ask your peers first! From owner-svn-src-projects@FreeBSD.ORG Fri May 11 20:44:48 2012 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 8C05B106564A; Fri, 11 May 2012 20:44:48 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 77C348FC1F; Fri, 11 May 2012 20:44:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4BKimcG099666; Fri, 11 May 2012 20:44:48 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4BKimd9099664; Fri, 11 May 2012 20:44:48 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201205112044.q4BKimd9099664@svn.freebsd.org> From: Baptiste Daroussin Date: Fri, 11 May 2012 20:44:48 +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: r235287 - projects/portbuild/www 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: Fri, 11 May 2012 20:44:48 -0000 Author: bapt Date: Fri May 11 20:44:47 2012 New Revision: 235287 URL: http://svn.freebsd.org/changeset/base/235287 Log: Stop recommending USE_XLIB, recommend USE_XORG Keep the usexlib anchor as it is hardcoded in too much place to be removed PR: 167420 Submitted by: crees Modified: projects/portbuild/www/index.html Modified: projects/portbuild/www/index.html ============================================================================== --- projects/portbuild/www/index.html Fri May 11 20:06:46 2012 (r235286) +++ projects/portbuild/www/index.html Fri May 11 20:44:47 2012 (r235287) @@ -956,10 +956,10 @@ through if you are sure it's correct reg often due to misuse of a union.
(uncommon)USE_XLIB
+"usexlib">USE_XORG -
You should specify USE_XLIB for this port since it -appears to use X.
+
You should specify USE_XORG with the correct dependencies for +this port since it appears to use X.
(uncommon)varargs
From owner-svn-src-projects@FreeBSD.ORG Fri May 11 23:20:30 2012 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 B06B31065670; Fri, 11 May 2012 23:20:30 +0000 (UTC) (envelope-from jceel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 829A28FC0C; Fri, 11 May 2012 23:20:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4BNKUFI005022; Fri, 11 May 2012 23:20:30 GMT (envelope-from jceel@svn.freebsd.org) Received: (from jceel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4BNKUpx005021; Fri, 11 May 2012 23:20:30 GMT (envelope-from jceel@svn.freebsd.org) Message-Id: <201205112320.q4BNKUpx005021@svn.freebsd.org> From: Jakub Wojciech Klama Date: Fri, 11 May 2012 23:20:30 +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: r235298 - projects/armv6/sys/arm/conf 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: Fri, 11 May 2012 23:20:30 -0000 Author: jceel Date: Fri May 11 23:20:29 2012 New Revision: 235298 URL: http://svn.freebsd.org/changeset/base/235298 Log: Add missing EA3250.hints file. Added: projects/armv6/sys/arm/conf/EA3250.hints Added: projects/armv6/sys/arm/conf/EA3250.hints ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/conf/EA3250.hints Fri May 11 23:20:29 2012 (r235298) @@ -0,0 +1,2 @@ +hint.ssd1289.0.at="spibus0" +hint.ssd1289.0.cs=26 From owner-svn-src-projects@FreeBSD.ORG Sat May 12 15:52:19 2012 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 F1EB8106566B; Sat, 12 May 2012 15:52:19 +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 C508B8FC12; Sat, 12 May 2012 15:52:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4CFqJpa040712; Sat, 12 May 2012 15:52:19 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4CFqJte040711; Sat, 12 May 2012 15:52:19 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <201205121552.q4CFqJte040711@svn.freebsd.org> From: Kip Macy Date: Sat, 12 May 2012 15:52:19 +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: r235339 - projects/rtentry_cache 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: Sat, 12 May 2012 15:52:20 -0000 Author: kmacy Date: Sat May 12 15:52:19 2012 New Revision: 235339 URL: http://svn.freebsd.org/changeset/base/235339 Log: create branch for import of changes Added: - copied from r235338, head/ Directory Properties: projects/rtentry_cache/ (props changed) From owner-svn-src-projects@FreeBSD.ORG Sat May 12 16:10:57 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9B6F41065670; Sat, 12 May 2012 16:10:57 +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 8555F8FC0A; Sat, 12 May 2012 16:10:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4CGAv4H041423; Sat, 12 May 2012 16:10:57 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4CGAvvT041410; Sat, 12 May 2012 16:10:57 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <201205121610.q4CGAvvT041410@svn.freebsd.org> From: Kip Macy Date: Sat, 12 May 2012 16:10:57 +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: r235341 - in projects/rtentry_cache/sys: net netinet netinet6 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: Sat, 12 May 2012 16:10:57 -0000 Author: kmacy Date: Sat May 12 16:10:56 2012 New Revision: 235341 URL: http://svn.freebsd.org/changeset/base/235341 Log: Commit current state of rtentry patch. Modified: projects/rtentry_cache/sys/net/if_ethersubr.c projects/rtentry_cache/sys/net/route.c projects/rtentry_cache/sys/netinet/in_pcb.c projects/rtentry_cache/sys/netinet/in_pcb.h projects/rtentry_cache/sys/netinet/ip_output.c projects/rtentry_cache/sys/netinet/tcp_output.c projects/rtentry_cache/sys/netinet/tcp_usrreq.c projects/rtentry_cache/sys/netinet6/in6_src.c projects/rtentry_cache/sys/netinet6/ip6_forward.c projects/rtentry_cache/sys/netinet6/ip6_output.c projects/rtentry_cache/sys/netinet6/nd6.c projects/rtentry_cache/sys/netinet6/nd6.h Modified: projects/rtentry_cache/sys/net/if_ethersubr.c ============================================================================== --- projects/rtentry_cache/sys/net/if_ethersubr.c Sat May 12 16:08:05 2012 (r235340) +++ projects/rtentry_cache/sys/net/if_ethersubr.c Sat May 12 16:10:56 2012 (r235341) @@ -146,9 +146,30 @@ int ether_ipfw_chk(struct mbuf **m0, struct ifnet *dst, int shared); static VNET_DEFINE(int, ether_ipfw); #define V_ether_ipfw VNET(ether_ipfw) -#endif +static __inline void +update_cached_lle(struct route *ro, struct llentry *lle, struct ifnet *ifp, + struct sockaddr *dst) +{ + + if (lle == ro->ro_lle || + (ro->ro_flags & RT_CACHING_CONTEXT) == 0) + return; + + IF_AFDATA_RLOCK(ifp); + lle = lla_lookup(LLTABLE(ifp), LLE_EXCLUSIVE, dst); + IF_AFDATA_RUNLOCK(ifp); + if (lle != NULL) { + LLE_ADDREF(lle); + LLE_WUNLOCK(lle); + if (ro->ro_lle != NULL) + LLE_FREE(ro->ro_lle); + ro->ro_lle = lle; + } +} +#endif + /* * Ethernet output routine. * Encapsulate a packet of type family for the local net. @@ -198,6 +219,8 @@ ether_output(struct ifnet *ifp, struct m if (error) return (error == EWOULDBLOCK ? 0 : error); type = htons(ETHERTYPE_IP); + if (ro != NULL) + update_cached_lle(ro, lle, ifp, dst); break; case AF_ARP: { @@ -236,6 +259,8 @@ ether_output(struct ifnet *ifp, struct m if (error) return error; type = htons(ETHERTYPE_IPV6); + if (ro != NULL) + update_cached_lle(ro, lle, ifp, dst); break; #endif #ifdef IPX Modified: projects/rtentry_cache/sys/net/route.c ============================================================================== --- projects/rtentry_cache/sys/net/route.c Sat May 12 16:08:05 2012 (r235340) +++ projects/rtentry_cache/sys/net/route.c Sat May 12 16:10:56 2012 (r235341) @@ -99,6 +99,11 @@ SYSCTL_UINT(_net, OID_AUTO, fibs, CTLFLA */ TUNABLE_INT("net.fibs", &rt_numfibs); +u_int inpcb_rt_cache_enable = 0; +SYSCTL_UINT(_net, OID_AUTO, conn_rt_cache, CTLFLAG_RW|CTLFLAG_TUN, &inpcb_rt_cache_enable, 0, ""); +TUNABLE_INT("net.conn_rt_cache", &inpcb_rt_cache_enable); + + /* * By default add routes to all fibs for new interfaces. * Once this is set to 0 then only allocate routes on interface @@ -905,6 +910,7 @@ rtexpunge(struct rtentry *rt) * but when callers invoke us blindly it may not (sigh). */ rn = rnh->rnh_deladdr(rt_key(rt), rt_mask(rt), rnh); + atomic_add_int(&rnh->rnh_gen, 1); if (rn == NULL) { error = ESRCH; goto bad; @@ -994,6 +1000,7 @@ rn_mpath_update(int req, struct rt_addri * to the caller */ rn = rnh->rnh_deladdr(dst, netmask, rnh); + atomic_add_int(&rnh->rnh_gen, 1); KASSERT(rt == RNTORT(rn), ("radix node disappeared")); goto gwdelete; } @@ -1117,6 +1124,7 @@ rtrequest1_fib(int req, struct rt_addrin * Complain if it is not there and do no more processing. */ rn = rnh->rnh_deladdr(dst, netmask, rnh); + atomic_add_int(&rnh->rnh_gen, 1); if (rn == NULL) senderr(ESRCH); if (rn->rn_flags & (RNF_ACTIVE | RNF_ROOT)) @@ -1278,6 +1286,7 @@ rtrequest1_fib(int req, struct rt_addrin /* XXX mtu manipulation will be done in rnh_addaddr -- itojun */ rn = rnh->rnh_addaddr(ndst, netmask, rnh, rt->rt_nodes); + atomic_add_int(&rnh->rnh_gen, 1); /* * If it still failed to go into the tree, * then un-make it (this should be a function) Modified: projects/rtentry_cache/sys/netinet/in_pcb.c ============================================================================== --- projects/rtentry_cache/sys/netinet/in_pcb.c Sat May 12 16:08:05 2012 (r235340) +++ projects/rtentry_cache/sys/netinet/in_pcb.c Sat May 12 16:10:56 2012 (r235341) @@ -67,6 +67,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include +#include #include #include #include @@ -128,6 +130,8 @@ static VNET_DEFINE(int, ipport_tcplastco #define V_ipport_tcplastcount VNET(ipport_tcplastcount) +extern u_int inpcb_rt_cache_enable; + static void in_pcbremlists(struct inpcb *inp); #ifdef INET static struct inpcb *in_pcblookup_hash_locked(struct inpcbinfo *pcbinfo, @@ -466,6 +470,180 @@ in_pcb_lport(struct inpcb *inp, struct i return (0); } + +/* + * in_rt_valid() both checks for, and attempts to ensure, that a cached route + * is present on a socket. It will call in_pcbrtalloc() if conditions are + * right (i.e. routing is enabled on the socket) and required (no route cached + * already or the cached rout is no longer valid). A route can only be + * installed if the caller passes the inp with a write lock, but the route may + * be used if a read lock is held. + */ + +int +in_rt_valid(struct inpcb *inp) +{ + struct radix_node_head *rnh; + + INP_WLOCK_ASSERT(inp); + + if (inpcb_rt_cache_enable == 0) + return (0); + if (inp->inp_socket == NULL) + return (0); + if (inp->inp_socket->so_options & SO_DONTROUTE) + return (0); + if (inp->inp_vflag & INP_IPV6PROTO) + rnh = rt_tables_get_rnh(0, AF_INET6); + else + rnh = rt_tables_get_rnh(inp->inp_inc.inc_fibnum, AF_INET); + if (inp->inp_rt != NULL && + (inp->inp_rt->rt_flags & RTF_UP) && + inp->inp_rt_gen == rnh->rnh_gen) + return (1); + /* + * This will handle selectively replacing one field or the other or + * merely updating the inpcb's routing generation count. + */ + in_pcbrtalloc(inp); + return (inp->inp_rt != NULL && inp->inp_rt->rt_ifp != NULL); +} + +/* + * in_pcbrtalloc will install or update a cached route on an inpcb. + */ + +void +in_pcbrtalloc(struct inpcb *inp) +{ + struct rtentry *rt; + struct radix_node_head *rnh = NULL; + int gen; + struct route_in6 iproute; +#ifdef INET6 + struct route_in6 *sro6 = NULL; + struct sockaddr_in6 *sin6 = NULL; +#endif +#ifdef INET + struct sockaddr_in *sin = NULL; + struct route *sro = NULL; + struct in_ifaddr *ia; +#endif + + INP_WLOCK_ASSERT(inp); + + if (inpcb_rt_cache_enable == 0) + return; + + if (inp->inp_socket->so_options & SO_DONTROUTE) + return; + + if (inp->inp_vflag & INP_IPV6PROTO) { +#ifdef INET6 + sro6 = &iproute; + bzero(sro6, sizeof(*sro6)); + rnh = rt_tables_get_rnh(0, AF_INET6); + sin6 = (struct sockaddr_in6 *)&sro6->ro_dst; + sin6->sin6_family = AF_INET6; + sin6->sin6_len = sizeof(struct sockaddr_in6); + sin6->sin6_addr = inp->in6p_faddr; +#endif + } else { +#ifdef INET + sro = (struct route *)&iproute; + bzero(sro, sizeof(*sro)); + rnh = rt_tables_get_rnh(inp->inp_inc.inc_fibnum, AF_INET); + sin = (struct sockaddr_in *)&sro->ro_dst; + sin->sin_family = AF_INET; + sin->sin_len = sizeof(struct sockaddr_in); + sin->sin_addr.s_addr = inp->inp_faddr.s_addr; +#endif + + } + if (inp->inp_rt != NULL && + inp->inp_rt_gen == rnh->rnh_gen) { + KASSERT(inp->inp_rt->rt_flags & RTF_UP, + ("gen count unchanged but route invalid")); + rt = inp->inp_rt; + return; + } +resolve: + + gen = rnh->rnh_gen; + + if (inp->inp_vflag & INP_IPV6PROTO) { +#ifdef INET6 +#ifdef RADIX_MPATH + rtalloc_mpath((struct route *)ro, + ntohl(sin6->sin6_addr.s6_addr32[3])); +#else + sro6->ro_rt = rtalloc1(&((struct route *)sro6) + ->ro_dst, 0, 0UL); + if (sro6->ro_rt) + RT_UNLOCK(sro6->ro_rt); +#endif + rt = sro6->ro_rt; +#endif + } else { +#ifdef INET +#ifdef RADIX_MPATH + rtalloc_mpath_fib(sro, ntohl(faddr->s_addr), + inp->inp_inc.inc_fibnum); +#else + rtalloc_ign_fib(sro, 0, inp->inp_inc.inc_fibnum); +#endif + rt = sro->ro_rt; +#endif + } + + if (inp->inp_rt != NULL) { + if (rt == inp->inp_rt) { + /* The route is unchanged so we drop the added + * reference and update reference count. + */ + RTFREE(rt); + inp->inp_rt_gen = gen; + + /* The route has been validated and the generation + * count updated so we're done here. + */ + return; + } +#ifdef INET + /* Drop our reference to the old route */ + ia = ifatoia(inp->inp_rt->rt_ifa); + ifa_free(&ia->ia_ifa); + inp->inp_ifaddr = NULL; +#endif + RTFREE(inp->inp_rt); + inp->inp_rt = NULL; + } + + if (inp->inp_lle != NULL) { + LLE_FREE(inp->inp_lle); + inp->inp_lle = NULL; + } + if (rt == NULL) + return; + + if (gen != rnh->rnh_gen) { + /* + * The routing tree was updated some time after we read its + * generation counter. + */ + RTFREE(rt); + goto resolve; + } + + inp->inp_rt = rt; +#ifdef INET + ia = ifatoia(rt->rt_ifa); + ifa_ref(&ia->ia_ifa); + inp->inp_ifaddr = ia; +#endif + inp->inp_rt_gen = gen; +} + #endif /* INET || INET6 */ #ifdef INET @@ -662,6 +840,7 @@ in_pcbconnect_mbuf(struct inpcb *inp, st inp->inp_laddr.s_addr = laddr; inp->inp_faddr.s_addr = faddr; inp->inp_fport = fport; + in_pcbrehash_mbuf(inp, m); if (anonport) @@ -714,7 +893,7 @@ in_pcbladdr(struct inpcb *inp, struct in * Find out route to destination. */ if ((inp->inp_socket->so_options & SO_DONTROUTE) == 0) - in_rtalloc_ign(&sro, 0, inp->inp_inc.inc_fibnum); + rtalloc_ign_fib(&sro, 0, inp->inp_inc.inc_fibnum); /* * If we found a route, use the address corresponding to @@ -1034,6 +1213,19 @@ in_pcbdisconnect(struct inpcb *inp) INP_WLOCK_ASSERT(inp); INP_HASH_WLOCK_ASSERT(inp->inp_pcbinfo); + if (inp->inp_rt != NULL) { + RTFREE(inp->inp_rt); + inp->inp_rt = NULL; + } + if (inp->inp_ifaddr != NULL) { + ifa_free(&inp->inp_ifaddr->ia_ifa); + inp->inp_ifaddr = NULL; + } + if (inp->inp_lle != NULL) { + LLE_FREE(inp->inp_lle); + inp->inp_lle = NULL; + } + inp->inp_faddr.s_addr = INADDR_ANY; inp->inp_fport = 0; in_pcbrehash(inp); @@ -1165,6 +1357,20 @@ in_pcbfree(struct inpcb *inp) INP_INFO_WLOCK_ASSERT(pcbinfo); INP_WLOCK_ASSERT(inp); + if (inp->inp_rt != NULL) { + RTFREE(inp->inp_rt); + inp->inp_rt = NULL; +#ifdef INET + KASSERT(inp->inp_ifaddr != NULL, ("route valid but ifaddr not set")); + ifa_free(&inp->inp_ifaddr->ia_ifa); + inp->inp_ifaddr = NULL; +#endif + } + if (inp->inp_lle != NULL) { + LLE_FREE(inp->inp_lle); + inp->inp_lle = NULL; + } + /* XXXRW: Do as much as possible here. */ #ifdef IPSEC if (inp->inp_sp != NULL) Modified: projects/rtentry_cache/sys/netinet/in_pcb.h ============================================================================== --- projects/rtentry_cache/sys/netinet/in_pcb.h Sat May 12 16:08:05 2012 (r235340) +++ projects/rtentry_cache/sys/netinet/in_pcb.h Sat May 12 16:10:56 2012 (r235341) @@ -141,6 +141,7 @@ struct icmp6_filter; * these fields that write locks be held on both the inpcb and global locks. * * Key: + * (a) - Atomically incremented * (c) - Constant after initialization * (g) - Protected by the pcbgroup lock * (i) - Protected by the inpcb lock @@ -179,6 +180,8 @@ struct inpcb { u_char inp_ip_minttl; /* (i) minimum TTL or drop */ uint32_t inp_flowid; /* (x) flow id / queue id */ u_int inp_refcount; /* (i) refcount */ + struct in_ifaddr *inp_ifaddr; /* (i) reference to the local ifaddr */ + u_int inp_rt_gen; /* (a) generation count of routing entry */ void *inp_pspare[5]; /* (x) route caching / general use */ u_int inp_ispare[6]; /* (x) route caching / user cookie / * general use */ @@ -537,8 +540,6 @@ void inp_4tuple_get(struct inpcb *inp, /* * Flags for inp_flags2. */ -#define INP_LLE_VALID 0x00000001 /* cached lle is valid */ -#define INP_RT_VALID 0x00000002 /* cached rtentry is valid */ #define INP_PCBGROUPWILD 0x00000004 /* in pcbgroup wildcard list */ #define INP_REUSEPORT 0x00000008 /* SO_REUSEPORT option is set */ @@ -632,6 +633,8 @@ void in_pcbdrop(struct inpcb *); void in_pcbfree(struct inpcb *); int in_pcbinshash(struct inpcb *); int in_pcbinshash_nopcbgroup(struct inpcb *); +void in_pcbrtalloc(struct inpcb *inp); +int in_rt_valid(struct inpcb *inp); struct inpcb * in_pcblookup_local(struct inpcbinfo *, struct in_addr, u_short, int, struct ucred *); Modified: projects/rtentry_cache/sys/netinet/ip_output.c ============================================================================== --- projects/rtentry_cache/sys/netinet/ip_output.c Sat May 12 16:08:05 2012 (r235340) +++ projects/rtentry_cache/sys/netinet/ip_output.c Sat May 12 16:10:56 2012 (r235341) @@ -146,7 +146,6 @@ ip_output(struct mbuf *m, struct mbuf *o if (ro == NULL) { ro = &iproute; bzero(ro, sizeof (*ro)); - #ifdef FLOWTABLE { struct flentry *fle; @@ -163,6 +162,9 @@ ip_output(struct mbuf *m, struct mbuf *o } } #endif + } else { + nortfree = 1; + ia = ro->ro_ia; } if (opt) { @@ -277,6 +279,7 @@ again: inp ? inp->inp_inc.inc_fibnum : M_GETFIB(m)); #endif rte = ro->ro_rt; + nortfree = 0; } if (rte == NULL || rte->rt_ifp == NULL || @@ -672,9 +675,11 @@ passout: IPSTAT_INC(ips_fragmented); done: - if (ro == &iproute && ro->ro_rt && !nortfree) { + if (nortfree) + return (error); + + if (ro->ro_rt) RTFREE(ro->ro_rt); - } if (ia != NULL) ifa_free(&ia->ia_ifa); return (error); Modified: projects/rtentry_cache/sys/netinet/tcp_output.c ============================================================================== --- projects/rtentry_cache/sys/netinet/tcp_output.c Sat May 12 16:08:05 2012 (r235340) +++ projects/rtentry_cache/sys/netinet/tcp_output.c Sat May 12 16:10:56 2012 (r235341) @@ -169,6 +169,15 @@ tcp_output(struct tcpcb *tp) struct ip *ip = NULL; struct ipovly *ipov = NULL; struct tcphdr *th; +#ifdef INET + struct sockaddr_in *sin; + struct route iproute, *ro = NULL; +#endif +#ifdef INET6 + struct sockaddr_in6 *sin6; + struct route_in6 iproute6, *ro6 = NULL; +#endif + struct inpcb *inp; u_char opt[TCP_MAXOLEN]; unsigned ipoptlen, optlen, hdrlen; #ifdef IPSEC @@ -189,7 +198,8 @@ tcp_output(struct tcpcb *tp) isipv6 = (tp->t_inpcb->inp_vflag & INP_IPV6) != 0; #endif - INP_WLOCK_ASSERT(tp->t_inpcb); + inp = tp->t_inpcb; + INP_WLOCK_ASSERT(inp); /* * Determine length of data that should be transmitted, @@ -1203,11 +1213,27 @@ timer: */ ip6->ip6_hlim = in6_selecthlim(tp->t_inpcb, NULL); + if (in_rt_valid(inp)) { + ro6 = &iproute6; + sin6 = (struct sockaddr_in6 *)&ro6->ro_dst; + sin6->sin6_family = AF_INET6; + sin6->sin6_len = sizeof(struct sockaddr_in6); + memcpy(&sin6->sin6_addr.s6_addr, &inp->in6p_faddr.s6_addr, 16); + ro6->ro_rt = inp->inp_rt; + ro6->ro_lle = inp->inp_lle; + ro6->ro_flags |= RT_CACHING_CONTEXT; + } else + ro6 = NULL; + /* TODO: IPv6 IP6TOS_ECT bit on */ error = ip6_output(m, - tp->t_inpcb->in6p_outputopts, NULL, + tp->t_inpcb->in6p_outputopts, ro6, ((so->so_options & SO_DONTROUTE) ? IP_ROUTETOIF : 0), NULL, NULL, tp->t_inpcb); + if (ro6 != NULL && ro6->ro_lle != NULL && + inp->inp_lle != ro6->ro_lle) + inp->inp_lle = ro6->ro_lle; + } #endif /* INET6 */ #if defined(INET) && defined(INET6) @@ -1231,9 +1257,25 @@ timer: if (V_path_mtu_discovery && tp->t_maxopd > V_tcp_minmss) ip->ip_off |= IP_DF; - error = ip_output(m, tp->t_inpcb->inp_options, NULL, + if (in_rt_valid(inp)) { + ro = &iproute; + sin = (struct sockaddr_in *)&ro->ro_dst; + sin->sin_family = AF_INET; + sin->sin_len = sizeof(struct sockaddr_in); + sin->sin_addr.s_addr = inp->inp_faddr.s_addr; + ro->ro_rt = inp->inp_rt; + ro->ro_lle = inp->inp_lle; + ro->ro_ia = inp->inp_ifaddr; + ro->ro_flags |= RT_CACHING_CONTEXT; + } else + ro = NULL; + + error = ip_output(m, tp->t_inpcb->inp_options, ro, ((so->so_options & SO_DONTROUTE) ? IP_ROUTETOIF : 0), 0, tp->t_inpcb); + if (ro != NULL && ro->ro_lle != NULL && inp->inp_lle != ro->ro_lle) + inp->inp_lle = ro->ro_lle; + } #endif /* INET */ if (error) { Modified: projects/rtentry_cache/sys/netinet/tcp_usrreq.c ============================================================================== --- projects/rtentry_cache/sys/netinet/tcp_usrreq.c Sat May 12 16:08:05 2012 (r235340) +++ projects/rtentry_cache/sys/netinet/tcp_usrreq.c Sat May 12 16:10:56 2012 (r235341) @@ -1104,6 +1104,7 @@ tcp_connect(struct tcpcb *tp, struct soc goto out; } inp->inp_laddr = laddr; + in_pcbrtalloc(inp); in_pcbrehash(inp); INP_HASH_WUNLOCK(&V_tcbinfo); Modified: projects/rtentry_cache/sys/netinet6/in6_src.c ============================================================================== --- projects/rtentry_cache/sys/netinet6/in6_src.c Sat May 12 16:08:05 2012 (r235340) +++ projects/rtentry_cache/sys/netinet6/in6_src.c Sat May 12 16:10:56 2012 (r235341) @@ -662,7 +662,9 @@ selectroute(struct sockaddr_in6 *dstsock ((struct sockaddr *)(&ro->ro_dst))->sa_family != AF_INET6 || !IN6_ARE_ADDR_EQUAL(&satosin6(&ro->ro_dst)->sin6_addr, dst))) { - RTFREE(ro->ro_rt); + + if (!(ro->ro_flags & RT_CACHING_CONTEXT)) + RTFREE(ro->ro_rt); ro->ro_rt = (struct rtentry *)NULL; } if (ro->ro_rt == (struct rtentry *)NULL) { @@ -696,7 +698,8 @@ selectroute(struct sockaddr_in6 *dstsock ifp = ro->ro_rt->rt_ifp; if (ifp == NULL) { /* can this really happen? */ - RTFREE(ro->ro_rt); + if (!(ro->ro_flags & RT_CACHING_CONTEXT)) + RTFREE(ro->ro_rt); ro->ro_rt = NULL; } } Modified: projects/rtentry_cache/sys/netinet6/ip6_forward.c ============================================================================== --- projects/rtentry_cache/sys/netinet6/ip6_forward.c Sat May 12 16:08:05 2012 (r235340) +++ projects/rtentry_cache/sys/netinet6/ip6_forward.c Sat May 12 16:10:56 2012 (r235341) @@ -627,7 +627,7 @@ skip_routing: #endif /* IPFIREWALL_FORWARD */ pass: - error = nd6_output(rt->rt_ifp, origifp, m, dst, rt); + error = nd6_output(rt->rt_ifp, origifp, m, dst, &rin6); if (error) { in6_ifstat_inc(rt->rt_ifp, ifs6_out_discard); V_ip6stat.ip6s_cantforward++; Modified: projects/rtentry_cache/sys/netinet6/ip6_output.c ============================================================================== --- projects/rtentry_cache/sys/netinet6/ip6_output.c Sat May 12 16:08:05 2012 (r235340) +++ projects/rtentry_cache/sys/netinet6/ip6_output.c Sat May 12 16:10:56 2012 (r235341) @@ -981,7 +981,7 @@ passout: ia6->ia_ifa.if_obytes += m->m_pkthdr.len; ifa_free(&ia6->ia_ifa); } - error = nd6_output(ifp, origifp, m, dst, ro->ro_rt); + error = nd6_output(ifp, origifp, m, dst, ro); goto done; } @@ -1120,7 +1120,7 @@ sendorfree: ia->ia_ifa.if_opackets++; ia->ia_ifa.if_obytes += m->m_pkthdr.len; } - error = nd6_output(ifp, origifp, m, dst, ro->ro_rt); + error = nd6_output(ifp, origifp, m, dst, ro); } else m_freem(m); } Modified: projects/rtentry_cache/sys/netinet6/nd6.c ============================================================================== --- projects/rtentry_cache/sys/netinet6/nd6.c Sat May 12 16:08:05 2012 (r235340) +++ projects/rtentry_cache/sys/netinet6/nd6.c Sat May 12 16:10:56 2012 (r235341) @@ -1822,10 +1822,10 @@ nd6_slowtimo(void *arg) int nd6_output(struct ifnet *ifp, struct ifnet *origifp, struct mbuf *m0, - struct sockaddr_in6 *dst, struct rtentry *rt0) + struct sockaddr_in6 *dst, struct route_in6 *ro) { - return (nd6_output_lle(ifp, origifp, m0, dst, rt0, NULL, NULL)); + return (nd6_output_lle(ifp, origifp, m0, dst, ro->ro_rt, ro->ro_lle, NULL)); } @@ -1851,6 +1851,7 @@ nd6_output_lle(struct ifnet *ifp, struct int error = 0; int flags = 0; int ip6len; + struct route ro; #ifdef INVARIANTS if (lle != NULL) { @@ -2078,7 +2079,9 @@ nd6_output_lle(struct ifnet *ifp, struct return ((*ifp->if_output)(origifp, m, (struct sockaddr *)dst, NULL)); } - error = (*ifp->if_output)(ifp, m, (struct sockaddr *)dst, NULL); + ro.ro_rt = rt0; + ro.ro_lle = ln; + error = (*ifp->if_output)(ifp, m, (struct sockaddr *)dst, &ro); return (error); bad: Modified: projects/rtentry_cache/sys/netinet6/nd6.h ============================================================================== --- projects/rtentry_cache/sys/netinet6/nd6.h Sat May 12 16:08:05 2012 (r235340) +++ projects/rtentry_cache/sys/netinet6/nd6.h Sat May 12 16:10:56 2012 (r235341) @@ -408,7 +408,7 @@ int nd6_ioctl __P((u_long, caddr_t, stru struct llentry *nd6_cache_lladdr __P((struct ifnet *, struct in6_addr *, char *, int, int, int)); int nd6_output __P((struct ifnet *, struct ifnet *, struct mbuf *, - struct sockaddr_in6 *, struct rtentry *)); + struct sockaddr_in6 *, struct route_in6 *)); int nd6_output_lle __P((struct ifnet *, struct ifnet *, struct mbuf *, struct sockaddr_in6 *, struct rtentry *, struct llentry *, struct mbuf **));