From owner-svn-src-projects@FreeBSD.ORG Sun Mar 31 17:50:02 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 5746EC60; Sun, 31 Mar 2013 17:50:02 +0000 (UTC) (envelope-from cherry@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 4A8558A5; Sun, 31 Mar 2013 17:50:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r2VHo1SE031603; Sun, 31 Mar 2013 17:50:01 GMT (envelope-from cherry@svn.freebsd.org) Received: (from cherry@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r2VHo1iX031602; Sun, 31 Mar 2013 17:50:01 GMT (envelope-from cherry@svn.freebsd.org) Message-Id: <201303311750.r2VHo1iX031602@svn.freebsd.org> From: "Cherry G. Mathew" Date: Sun, 31 Mar 2013 17:50:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r248952 - projects/amd64_xen_pv/sys/xen/xenbus X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 31 Mar 2013 17:50:02 -0000 Author: cherry Date: Sun Mar 31 17:50:01 2013 New Revision: 248952 URL: http://svnweb.freebsd.org/changeset/base/248952 Log: Do not defer disestablishing intrhooks when there are pending connecting device children. Any hooks that children establish will be run at SI_SUB_INT_CONFIG_HOOKS and in the order of registration, and thus the order of intrhook registration and running should reflect the device hierarchy. This patch takes the boot to vfsmountroot() Approved by: gibbs(implicit) Modified: projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c Modified: projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c ============================================================================== --- projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c Sun Mar 31 17:42:54 2013 (r248951) +++ projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c Sun Mar 31 17:50:01 2013 (r248952) @@ -594,8 +594,7 @@ xenbusb_release_confighook(struct xenbus KASSERT(xbs->xbs_connecting_children > 0, ("Connecting device count error\n")); xbs->xbs_connecting_children--; - if (xbs->xbs_connecting_children == 0 - && (xbs->xbs_flags & XBS_ATTACH_CH_ACTIVE) != 0) { + if ((xbs->xbs_flags & XBS_ATTACH_CH_ACTIVE) != 0) { xbs->xbs_flags &= ~XBS_ATTACH_CH_ACTIVE; mtx_unlock(&xbs->xbs_lock); config_intrhook_disestablish(&xbs->xbs_attach_ch); From owner-svn-src-projects@FreeBSD.ORG Mon Apr 1 10:45:36 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 1A119407; Mon, 1 Apr 2013 10:45:36 +0000 (UTC) (envelope-from cherry@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id E86711F9; Mon, 1 Apr 2013 10:45:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r31AjZmJ029847; Mon, 1 Apr 2013 10:45:35 GMT (envelope-from cherry@svn.freebsd.org) Received: (from cherry@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r31AjZCV029846; Mon, 1 Apr 2013 10:45:35 GMT (envelope-from cherry@svn.freebsd.org) Message-Id: <201304011045.r31AjZCV029846@svn.freebsd.org> From: "Cherry G. Mathew" Date: Mon, 1 Apr 2013 10:45:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r248970 - projects/amd64_xen_pv/sys/amd64/xen X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 01 Apr 2013 10:45:36 -0000 Author: cherry Date: Mon Apr 1 10:45:35 2013 New Revision: 248970 URL: http://svnweb.freebsd.org/changeset/base/248970 Log: Use memcchr(9) instead of homebrew (and slow) memrchr(3) (incorrectly used here). This implements the current semantics of searching for zero-ed out backing lower page table, before zapping its higher level table entry. Approved by: gibbs(implicit) Modified: projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c Modified: projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c ============================================================================== --- projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c Mon Apr 1 09:59:38 2013 (r248969) +++ projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c Mon Apr 1 10:45:35 2013 (r248970) @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include "opt_smp.h" +#include #include #include #include @@ -383,30 +384,6 @@ mmu_map_hold_va(struct pmap *pm, void *a return alloced; } -/*$FreeBSD: head/lib/libc/string/memrchr.c 178051 2008-04-10 00:12:44Z delphij $*/ -/* - * Reverse memchr() - * Find the last occurrence of 'c' in the buffer 's' of size 'n'. - */ - -static const void * memrchr(const void *, int, size_t); - -static const void * -memrchr(const void *s, int c, size_t n) -{ - const unsigned char *cp; - - if (n != 0) { - cp = (const unsigned char *)s + n; - do { - if (*(--cp) == (unsigned char)c) - return((const void *)cp); - } while (--n != 0); - } - return(NULL); -} - - void mmu_map_release_va(struct pmap *pm, void *addr, uintptr_t va) { @@ -461,7 +438,7 @@ mmu_map_release_va(struct pmap *pm, void } /* We can free the PT only after the PDT entry is zapped */ - if (memrchr(pti->pt, 0, PAGE_SIZE) == ((char *)pti->pt + PAGE_SIZE - 1)) { + if (memcchr(pti->pt, 0, PAGE_SIZE) == NULL) { /* Zap the backing PDT entry */ pdtep_ma = xpmap_ptom(pti->ptmb.vtop((uintptr_t)pdtep)); xen_queue_pt_update(pdtep_ma, 0); @@ -509,7 +486,7 @@ mmu_map_release_va(struct pmap *pm, void } /* We can free the PDT only after the PDPT entry is zapped */ - if (memrchr(pti->pdt, 0, PAGE_SIZE) == ((char *)pti->pdt + PAGE_SIZE - 1)) { + if (memcchr(pti->pt, 0, PAGE_SIZE) == NULL) { pdptep_ma = xpmap_ptom(pti->ptmb.vtop((uintptr_t)pdptep)); xen_queue_pt_update(pdptep_ma, 0); xen_flush_queue(); @@ -551,7 +528,7 @@ mmu_map_release_va(struct pmap *pm, void return; } - if (memrchr(pti->pdpt, 0, PAGE_SIZE) == ((char *)pti->pdpt + PAGE_SIZE - 1)) { + if (memcchr(pti->pt, 0, PAGE_SIZE) == NULL) { pml4tep_ma = xpmap_ptom(pti->ptmb.vtop((uintptr_t)pml4tep) ); xen_queue_pt_update(pml4tep_ma, 0); From owner-svn-src-projects@FreeBSD.ORG Mon Apr 1 13:27:51 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 7F8C5848; Mon, 1 Apr 2013 13:27:51 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 71C5C3DA; Mon, 1 Apr 2013 13:27:51 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r31DRpw7076583; Mon, 1 Apr 2013 13:27:51 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r31DRo5n076575; Mon, 1 Apr 2013 13:27:50 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304011327.r31DRo5n076575@svn.freebsd.org> From: Alexander Motin Date: Mon, 1 Apr 2013 13:27:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r248974 - in projects/camlock/sys/cam: . ata ctl scsi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 01 Apr 2013 13:27:51 -0000 Author: mav Date: Mon Apr 1 13:27:49 2013 New Revision: 248974 URL: http://svnweb.freebsd.org/changeset/base/248974 Log: Remove per-SIM queue of free CCBs. Modified: projects/camlock/sys/cam/ata/ata_xpt.c projects/camlock/sys/cam/cam_sim.c projects/camlock/sys/cam/cam_sim.h projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/ctl/scsi_ctl.c projects/camlock/sys/cam/scsi/scsi_xpt.c Modified: projects/camlock/sys/cam/ata/ata_xpt.c ============================================================================== --- projects/camlock/sys/cam/ata/ata_xpt.c Mon Apr 1 13:18:34 2013 (r248973) +++ projects/camlock/sys/cam/ata/ata_xpt.c Mon Apr 1 13:27:49 2013 (r248974) @@ -1549,11 +1549,6 @@ ata_alloc_device(struct cam_eb *bus, str device->serial_num = NULL; device->serial_num_len = 0; - /* - * XXX should be limited by number of CCBs this bus can - * do. - */ - bus->sim->max_ccbs += device->ccbq.devq_openings; /* Insertion sort into our target's device list */ cur_device = TAILQ_FIRST(&target->ed_entries); while (cur_device != NULL && cur_device->lun_id < lun_id) Modified: projects/camlock/sys/cam/cam_sim.c ============================================================================== --- projects/camlock/sys/cam/cam_sim.c Mon Apr 1 13:18:34 2013 (r248973) +++ projects/camlock/sys/cam/cam_sim.c Mon Apr 1 13:27:49 2013 (r248974) @@ -87,7 +87,6 @@ cam_sim_alloc(sim_action_func sim_action sim->flags = 0; sim->refcount = 1; sim->devq = queue; - sim->max_ccbs = 8; /* Reserve for management purposes. */ sim->mtx = mtx; if (mtx == &Giant) { sim->flags |= 0; @@ -97,7 +96,6 @@ cam_sim_alloc(sim_action_func sim_action callout_init(&sim->callout, 1); } - SLIST_INIT(&sim->ccb_freeq); TAILQ_INIT(&sim->sim_doneq); return (sim); @@ -106,7 +104,6 @@ cam_sim_alloc(sim_action_func sim_action void cam_sim_free(struct cam_sim *sim, int free_devq) { - union ccb *ccb; int error; sim->refcount--; @@ -117,10 +114,6 @@ cam_sim_free(struct cam_sim *sim, int fr KASSERT(sim->refcount == 0, ("sim->refcount == 0")); - while ((ccb = (union ccb *)SLIST_FIRST(&sim->ccb_freeq)) != NULL) { - SLIST_REMOVE_HEAD(&sim->ccb_freeq, xpt_links.sle); - xpt_free_ccb(ccb); - } if (free_devq) cam_simq_free(sim->devq); free(sim, M_CAMSIM); Modified: projects/camlock/sys/cam/cam_sim.h ============================================================================== --- projects/camlock/sys/cam/cam_sim.h Mon Apr 1 13:18:34 2013 (r248973) +++ projects/camlock/sys/cam/cam_sim.h Mon Apr 1 13:27:49 2013 (r248974) @@ -110,17 +110,6 @@ struct cam_sim { struct callout callout; struct cam_devq *devq; /* Device Queue to use for this SIM */ int refcount; /* References to the SIM. */ - - /* "Pool" of inactive ccbs managed by xpt_get_ccb and xpt_release_ccb */ - SLIST_HEAD(,ccb_hdr) ccb_freeq; - /* - * Maximum size of ccb pool. Modified as devices are added/removed - * or have their * opening counts changed. - */ - u_int max_ccbs; - /* Current count of allocated ccbs */ - u_int ccb_count; - }; #define CAM_SIM_LOCK(sim) mtx_lock((sim)->mtx); Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Mon Apr 1 13:18:34 2013 (r248973) +++ projects/camlock/sys/cam/cam_xpt.c Mon Apr 1 13:27:49 2013 (r248974) @@ -3756,13 +3756,7 @@ xpt_release_ccb(union ccb *free_ccb) cam_ccbq_resize(&device->ccbq, device->ccbq.dev_openings + device->ccbq.dev_active); } - if (sim->ccb_count > sim->max_ccbs) { - xpt_free_ccb(free_ccb); - sim->ccb_count--; - } else { - SLIST_INSERT_HEAD(&sim->ccb_freeq, &free_ccb->ccb_h, - xpt_links.sle); - } + xpt_free_ccb(free_ccb); xpt_run_dev_allocq(device); } @@ -4326,22 +4320,11 @@ static union ccb * xpt_get_ccb(struct cam_ed *device) { union ccb *new_ccb; - struct cam_sim *sim; - sim = device->sim; - if ((new_ccb = (union ccb *)SLIST_FIRST(&sim->ccb_freeq)) == NULL) { - new_ccb = xpt_alloc_ccb_nowait(); - if (new_ccb == NULL) { - return (NULL); - } - if ((sim->flags & CAM_SIM_MPSAFE) == 0) - callout_handle_init(&new_ccb->ccb_h.timeout_ch); - SLIST_INSERT_HEAD(&sim->ccb_freeq, &new_ccb->ccb_h, - xpt_links.sle); - sim->ccb_count++; - } + new_ccb = malloc(sizeof(*new_ccb), M_CAMCCB, M_NOWAIT); + if (new_ccb == NULL) + return (NULL); cam_ccbq_take_opening(&device->ccbq); - SLIST_REMOVE_HEAD(&sim->ccb_freeq, xpt_links.sle); return (new_ccb); } @@ -4431,7 +4414,6 @@ xpt_alloc_device_default(struct cam_eb * device->mintags = 1; device->maxtags = 1; - bus->sim->max_ccbs += device->ccbq.devq_openings; cur_device = TAILQ_FIRST(&target->ed_entries); while (cur_device != NULL && cur_device->lun_id < lun_id) cur_device = TAILQ_NEXT(cur_device, links); @@ -4525,7 +4507,6 @@ xpt_release_device(struct cam_ed *device TAILQ_REMOVE(&device->target->ed_entries, device,links); device->target->generation++; - device->target->bus->sim->max_ccbs -= device->ccbq.devq_openings; /* Release our slot in the devq */ devq = device->target->bus->sim->devq; cam_devq_resize(devq, devq->send_queue.array_size - 1); @@ -4565,8 +4546,6 @@ xpt_dev_ccbq_resize(struct cam_path *pat if ((dev->flags & CAM_DEV_TAG_AFTER_COUNT) != 0 || (dev->inq_flags & SID_CmdQue) != 0) dev->tag_saved_openings = newopenings; - /* Adjust the global limit */ - dev->sim->max_ccbs += diff; return (result); } Modified: projects/camlock/sys/cam/ctl/scsi_ctl.c ============================================================================== --- projects/camlock/sys/cam/ctl/scsi_ctl.c Mon Apr 1 13:18:34 2013 (r248973) +++ projects/camlock/sys/cam/ctl/scsi_ctl.c Mon Apr 1 13:27:49 2013 (r248974) @@ -2063,12 +2063,6 @@ ctlfe_dump_sim(struct cam_sim *sim) printf("%s%d: max tagged openings: %d, max dev openings: %d\n", sim->sim_name, sim->unit_number, sim->max_tagged_dev_openings, sim->max_dev_openings); - printf("%s%d: max_ccbs: %u, ccb_count: %u\n", - sim->sim_name, sim->unit_number, - sim->max_ccbs, sim->ccb_count); - printf("%s%d: ccb_freeq is %sempty\n", - sim->sim_name, sim->unit_number, - (SLIST_FIRST(&sim->ccb_freeq) == NULL) ? "" : "NOT "); printf("\n"); } Modified: projects/camlock/sys/cam/scsi/scsi_xpt.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_xpt.c Mon Apr 1 13:18:34 2013 (r248973) +++ projects/camlock/sys/cam/scsi/scsi_xpt.c Mon Apr 1 13:27:49 2013 (r248974) @@ -2331,11 +2331,6 @@ scsi_alloc_device(struct cam_eb *bus, st device->supported_vpds = NULL; device->supported_vpds_len = 0; - /* - * XXX should be limited by number of CCBs this bus can - * do. - */ - bus->sim->max_ccbs += device->ccbq.devq_openings; /* Insertion sort into our target's device list */ cur_device = TAILQ_FIRST(&target->ed_entries); while (cur_device != NULL && cur_device->lun_id < lun_id) From owner-svn-src-projects@FreeBSD.ORG Mon Apr 1 16:26:21 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 7484FFF6; Mon, 1 Apr 2013 16:26:21 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 4EED712E; Mon, 1 Apr 2013 16:26:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r31GQLIQ029460; Mon, 1 Apr 2013 16:26:21 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r31GQKeI029458; Mon, 1 Apr 2013 16:26:20 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304011626.r31GQKeI029458@svn.freebsd.org> From: Alexander Motin Date: Mon, 1 Apr 2013 16:26:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r248978 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 01 Apr 2013 16:26:21 -0000 Author: mav Date: Mon Apr 1 16:26:20 2013 New Revision: 248978 URL: http://svnweb.freebsd.org/changeset/base/248978 Log: Remove cam_ccbq_frozen(), that is trivial after removing multilevel freeze at r248918. Modified: projects/camlock/sys/cam/cam_queue.h projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_queue.h ============================================================================== --- projects/camlock/sys/cam/cam_queue.h Mon Apr 1 16:23:34 2013 (r248977) +++ projects/camlock/sys/cam/cam_queue.h Mon Apr 1 16:26:20 2013 (r248978) @@ -243,12 +243,5 @@ cam_ccbq_release_opening(struct cam_ccbq ccbq->devq_openings++; } -static __inline u_int32_t -cam_ccbq_frozen(struct cam_ccbq *ccbq) -{ - - return (ccbq->queue.qfrozen_cnt); -} - #endif /* _KERNEL */ #endif /* _CAM_CAM_QUEUE_H */ Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Mon Apr 1 16:23:34 2013 (r248977) +++ projects/camlock/sys/cam/cam_xpt.c Mon Apr 1 16:26:20 2013 (r248978) @@ -306,7 +306,7 @@ xpt_schedule_dev_sendq(struct cam_eb *bu if ((dev->ccbq.queue.entries > 0) && (dev->ccbq.dev_openings > 0) && - (cam_ccbq_frozen(&dev->ccbq) == 0)) { + (dev->ccbq.queue.qfrozen_cnt == 0)) { /* * The priority of a device waiting for controller * resources is that of the highest priority CCB @@ -3156,7 +3156,7 @@ xpt_run_dev_allocq(struct cam_ed *device while ((drvq->entries > 0) && (device->ccbq.devq_openings > 0 || CAMQ_GET_PRIO(drvq) <= CAM_PRIORITY_OOB) && - (cam_ccbq_frozen(&device->ccbq) == 0)) { + (device->ccbq.queue.qfrozen_cnt == 0)) { union ccb *work_ccb; struct cam_periph *drv; @@ -4156,9 +4156,7 @@ xpt_release_devq_device(struct cam_ed *d count = dev->ccbq.queue.qfrozen_cnt; } dev->ccbq.queue.qfrozen_cnt -= count; - if (cam_ccbq_frozen(&dev->ccbq) == 0) - xpt_run_dev_allocq(dev); - if (cam_ccbq_frozen(&dev->ccbq) == 0) { + if (dev->ccbq.queue.qfrozen_cnt == 0) { /* * No longer need to wait for a successful * command completion. @@ -4172,6 +4170,7 @@ xpt_release_devq_device(struct cam_ed *d callout_stop(&dev->callout); dev->flags &= ~CAM_DEV_REL_TIMEOUT_PENDING; } + xpt_run_dev_allocq(dev); if (run_queue == 0) return; /* From owner-svn-src-projects@FreeBSD.ORG Mon Apr 1 17:32:52 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id D2F4426E; Mon, 1 Apr 2013 17:32:52 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id AE1E6643; Mon, 1 Apr 2013 17:32:52 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r31HWqW2049474; Mon, 1 Apr 2013 17:32:52 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r31HWqDh049473; Mon, 1 Apr 2013 17:32:52 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201304011732.r31HWqDh049473@svn.freebsd.org> From: Neel Natu Date: Mon, 1 Apr 2013 17:32:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r248981 - projects/bhyve_svm X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 01 Apr 2013 17:32:52 -0000 Author: neel Date: Mon Apr 1 17:32:52 2013 New Revision: 248981 URL: http://svnweb.freebsd.org/changeset/base/248981 Log: Create projects branch for AMD/SVM support in bhyve. Added: - copied from r248980, head/ Directory Properties: projects/bhyve_svm/ (props changed) From owner-svn-src-projects@FreeBSD.ORG Mon Apr 1 19:11:49 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 3A5F25AC; Mon, 1 Apr 2013 19:11:49 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 2A6BEA83; Mon, 1 Apr 2013 19:11:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r31JBncC078476; Mon, 1 Apr 2013 19:11:49 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r31JBiSE078444; Mon, 1 Apr 2013 19:11:44 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304011911.r31JBiSE078444@svn.freebsd.org> From: Alexander Motin Date: Mon, 1 Apr 2013 19:11:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r248982 - in projects/camlock/sys: cam cam/ata cam/ctl cam/scsi dev/aac dev/arcmsr dev/ata dev/ciss dev/firewire dev/hpt27xx dev/hptiop dev/hptrr dev/isci dev/iscsi/initiator dev/isp de... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 01 Apr 2013 19:11:49 -0000 Author: mav Date: Mon Apr 1 19:11:43 2013 New Revision: 248982 URL: http://svnweb.freebsd.org/changeset/base/248982 Log: Stop abusing xpt_periph in random plases that really have no periph related to CCB, for example, bus scanning. NULL value is fine in such cases and it is correctly logged in debug messages as "noperiph". If at some point we need some real XPT periphs (alike to pmpX now), quite likely they will be per-bus, and not a single global instance as xpt_periph now. Modified: projects/camlock/sys/cam/ata/ata_xpt.c projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c projects/camlock/sys/cam/scsi/scsi_xpt.c projects/camlock/sys/dev/aac/aac_cam.c projects/camlock/sys/dev/arcmsr/arcmsr.c projects/camlock/sys/dev/ata/atapi-cam.c projects/camlock/sys/dev/ciss/ciss.c projects/camlock/sys/dev/firewire/sbp.c projects/camlock/sys/dev/hpt27xx/osm_bsd.c projects/camlock/sys/dev/hptiop/hptiop.c projects/camlock/sys/dev/hptrr/hptrr_osm_bsd.c projects/camlock/sys/dev/isci/isci_controller.c projects/camlock/sys/dev/isci/isci_domain.c projects/camlock/sys/dev/isci/isci_remote_device.c projects/camlock/sys/dev/iscsi/initiator/isc_cam.c projects/camlock/sys/dev/isp/isp_freebsd.c projects/camlock/sys/dev/mfi/mfi_cam.c projects/camlock/sys/dev/mly/mly.c projects/camlock/sys/dev/mps/mps_sas.c projects/camlock/sys/dev/mpt/mpt_cam.c projects/camlock/sys/dev/mpt/mpt_raid.c projects/camlock/sys/dev/twa/tw_osl_cam.c projects/camlock/sys/dev/tws/tws_cam.c projects/camlock/sys/dev/virtio/scsi/virtio_scsi.c Modified: projects/camlock/sys/cam/ata/ata_xpt.c ============================================================================== --- projects/camlock/sys/cam/ata/ata_xpt.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/cam/ata/ata_xpt.c Mon Apr 1 19:11:43 2013 (r248982) @@ -1413,7 +1413,7 @@ done: scan_info->counter = (scan_info->counter + 1 ) % (scan_info->cpi->max_target + 1); scan_next: - status = xpt_create_path(&path, xpt_periph, + status = xpt_create_path(&path, NULL, scan_info->request_ccb->ccb_h.path_id, scan_info->counter, 0); if (status != CAM_REQ_CMP) { @@ -1471,7 +1471,7 @@ ata_scan_lun(struct cam_periph *periph, "can't continue\n"); return; } - status = xpt_create_path(&new_path, xpt_periph, + status = xpt_create_path(&new_path, NULL, path->bus->path_id, path->target->target_id, path->device->lun_id); Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/cam/cam_xpt.c Mon Apr 1 19:11:43 2013 (r248982) @@ -458,7 +458,7 @@ xptioctl(struct cdev *dev, u_long cmd, c * Create a path using the bus, target, and lun the * user passed in. */ - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, + if (xpt_create_path(&ccb->ccb_h.path, NULL, inccb->ccb_h.path_id, inccb->ccb_h.target_id, inccb->ccb_h.target_lun) != @@ -494,7 +494,7 @@ xptioctl(struct cdev *dev, u_long cmd, c * Create a path using the bus, target, and lun the * user passed in. */ - if (xpt_create_path(&ccb.ccb_h.path, xpt_periph, + if (xpt_create_path(&ccb.ccb_h.path, NULL, inccb->ccb_h.path_id, inccb->ccb_h.target_id, inccb->ccb_h.target_lun) != @@ -2956,7 +2956,7 @@ xpt_action_default(union ccb *start_ccb) CAM_SIM_LOCK(xpt_path_sim(start_ccb->ccb_h.path)); } if (start_ccb->cdbg.flags != CAM_DEBUG_NONE) { - if (xpt_create_path(&cam_dpath, xpt_periph, + if (xpt_create_path(&cam_dpath, NULL, start_ccb->ccb_h.path_id, start_ccb->ccb_h.target_id, start_ccb->ccb_h.target_lun) != @@ -4669,7 +4669,7 @@ xpt_config(void *arg) /* Setup debugging path */ if (cam_dflags != CAM_DEBUG_NONE) { - if (xpt_create_path_unlocked(&cam_dpath, xpt_periph, + if (xpt_create_path_unlocked(&cam_dpath, NULL, CAM_DEBUG_BUS, CAM_DEBUG_TARGET, CAM_DEBUG_LUN) != CAM_REQ_CMP) { printf("xpt_config: xpt_create_path() failed for debug" Modified: projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c ============================================================================== --- projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c Mon Apr 1 19:11:43 2013 (r248982) @@ -291,7 +291,7 @@ cfcs_onoffline(void *arg, int online) goto bailout; } - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, + if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(softc->sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { printf("%s: can't allocate path for rescan\n", __func__); Modified: projects/camlock/sys/cam/scsi/scsi_xpt.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_xpt.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/cam/scsi/scsi_xpt.c Mon Apr 1 19:11:43 2013 (r248982) @@ -1953,7 +1953,7 @@ scsi_scan_bus(struct cam_periph *periph, if (i == initiator_id) continue; - status = xpt_create_path(&path, xpt_periph, + status = xpt_create_path(&path, NULL, request_ccb->ccb_h.path_id, i, 0); if (status != CAM_REQ_CMP) { @@ -2154,7 +2154,7 @@ scsi_scan_bus(struct cam_periph *periph, xpt_free_ccb(request_ccb); break; } - status = xpt_create_path(&path, xpt_periph, + status = xpt_create_path(&path, NULL, scan_info->request_ccb->ccb_h.path_id, scan_info->counter, 0); if (status != CAM_REQ_CMP) { @@ -2177,7 +2177,7 @@ scsi_scan_bus(struct cam_periph *periph, request_ccb->crcn.flags = scan_info->request_ccb->crcn.flags; } else { - status = xpt_create_path(&path, xpt_periph, + status = xpt_create_path(&path, NULL, path_id, target_id, lun_id); /* * Free the old request path- we're done with it. We @@ -2250,7 +2250,7 @@ scsi_scan_lun(struct cam_periph *periph, "can't continue\n"); return; } - status = xpt_create_path(&new_path, xpt_periph, + status = xpt_create_path(&new_path, NULL, path->bus->path_id, path->target->target_id, path->device->lun_id); Modified: projects/camlock/sys/dev/aac/aac_cam.c ============================================================================== --- projects/camlock/sys/dev/aac/aac_cam.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/aac/aac_cam.c Mon Apr 1 19:11:43 2013 (r248982) @@ -129,7 +129,7 @@ aac_cam_rescan(struct aac_softc *sc, uin return; } - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, + if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(camsc->sim), target_id, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { xpt_free_ccb(ccb); Modified: projects/camlock/sys/dev/arcmsr/arcmsr.c ============================================================================== --- projects/camlock/sys/dev/arcmsr/arcmsr.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/arcmsr/arcmsr.c Mon Apr 1 19:11:43 2013 (r248982) @@ -1599,7 +1599,8 @@ static void arcmsr_rescan_lun(struct Ada if ((ccb = (union ccb *)xpt_alloc_ccb_nowait()) == NULL) return; - if (xpt_create_path(&path, xpt_periph, cam_sim_path(acb->psim), target, lun) != CAM_REQ_CMP) + if (xpt_create_path(&path, NULL, cam_sim_path(acb->psim), target, lun) + != CAM_REQ_CMP) { xpt_free_ccb(ccb); return; Modified: projects/camlock/sys/dev/ata/atapi-cam.c ============================================================================== --- projects/camlock/sys/dev/ata/atapi-cam.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/ata/atapi-cam.c Mon Apr 1 19:11:43 2013 (r248982) @@ -825,7 +825,7 @@ cam_rescan(struct cam_sim *sim) ccb = xpt_alloc_ccb_nowait(); if (ccb == NULL) return; - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(sim), + if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { xpt_free_ccb(ccb); return; Modified: projects/camlock/sys/dev/ciss/ciss.c ============================================================================== --- projects/camlock/sys/dev/ciss/ciss.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/ciss/ciss.c Mon Apr 1 19:11:43 2013 (r248982) @@ -2913,7 +2913,7 @@ ciss_cam_rescan_target(struct ciss_softc return; } - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, + if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sc->ciss_cam_sim[bus]), target, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { ciss_printf(sc, "rescan failed (can't create path)\n"); Modified: projects/camlock/sys/dev/firewire/sbp.c ============================================================================== --- projects/camlock/sys/dev/firewire/sbp.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/firewire/sbp.c Mon Apr 1 19:11:43 2013 (r248982) @@ -1086,7 +1086,7 @@ END_DEBUG sbp_xfer_free(xfer); if (sdev->path == NULL) - xpt_create_path(&sdev->path, xpt_periph, + xpt_create_path(&sdev->path, NULL, cam_sim_path(target->sbp->sim), target->target_id, sdev->lun_id); @@ -2039,7 +2039,7 @@ END_DEBUG if (xpt_bus_register(sbp->sim, dev, /*bus*/0) != CAM_SUCCESS) goto fail; - if (xpt_create_path(&sbp->path, xpt_periph, cam_sim_path(sbp->sim), + if (xpt_create_path(&sbp->path, NULL, cam_sim_path(sbp->sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { xpt_bus_deregister(cam_sim_path(sbp->sim)); goto fail; Modified: projects/camlock/sys/dev/hpt27xx/osm_bsd.c ============================================================================== --- projects/camlock/sys/dev/hpt27xx/osm_bsd.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/hpt27xx/osm_bsd.c Mon Apr 1 19:11:43 2013 (r248982) @@ -1347,7 +1347,7 @@ static int hpt_rescan_bus(void) #endif ldm_for_each_vbus(vbus, vbus_ext) { - if (xpt_create_path(&path, xpt_periph, cam_sim_path(vbus_ext->sim), + if (xpt_create_path(&path, NULL, cam_sim_path(vbus_ext->sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) return(EIO); if ((ccb = malloc(sizeof(union ccb), M_TEMP, M_WAITOK)) == NULL) Modified: projects/camlock/sys/dev/hptiop/hptiop.c ============================================================================== --- projects/camlock/sys/dev/hptiop/hptiop.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/hptiop/hptiop.c Mon Apr 1 19:11:43 2013 (r248982) @@ -1437,7 +1437,7 @@ static int hptiop_rescan_bus(struct hpt if ((ccb = xpt_alloc_ccb()) == NULL) return(ENOMEM); - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(hba->sim), + if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(hba->sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { xpt_free_ccb(ccb); return(EIO); Modified: projects/camlock/sys/dev/hptrr/hptrr_osm_bsd.c ============================================================================== --- projects/camlock/sys/dev/hptrr/hptrr_osm_bsd.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/hptrr/hptrr_osm_bsd.c Mon Apr 1 19:11:43 2013 (r248982) @@ -1355,7 +1355,7 @@ static int hpt_rescan_bus(void) ldm_for_each_vbus(vbus, vbus_ext) { if ((ccb = xpt_alloc_ccb()) == NULL) return(ENOMEM); - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, + if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(vbus_ext->sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { xpt_free_ccb(ccb); Modified: projects/camlock/sys/dev/isci/isci_controller.c ============================================================================== --- projects/camlock/sys/dev/isci/isci_controller.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/isci/isci_controller.c Mon Apr 1 19:11:43 2013 (r248982) @@ -580,7 +580,7 @@ void isci_controller_domain_discovery_co */ union ccb *ccb = xpt_alloc_ccb_nowait(); - xpt_create_path(&ccb->ccb_h.path, xpt_periph, + xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(isci_controller->sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD); Modified: projects/camlock/sys/dev/isci/isci_domain.c ============================================================================== --- projects/camlock/sys/dev/isci/isci_domain.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/isci/isci_domain.c Mon Apr 1 19:11:43 2013 (r248982) @@ -300,7 +300,7 @@ scif_cb_domain_device_removed(SCI_CONTRO isci_controller->remote_device[isci_remote_device->index] = NULL; - xpt_create_path(&ccb->ccb_h.path, xpt_periph, path, + xpt_create_path(&ccb->ccb_h.path, NULL, path, isci_remote_device->index, CAM_LUN_WILDCARD); xpt_rescan(ccb); Modified: projects/camlock/sys/dev/isci/isci_remote_device.c ============================================================================== --- projects/camlock/sys/dev/isci/isci_remote_device.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/isci/isci_remote_device.c Mon Apr 1 19:11:43 2013 (r248982) @@ -83,7 +83,7 @@ scif_cb_remote_device_ready(SCI_CONTROLL */ union ccb *ccb = xpt_alloc_ccb_nowait(); - xpt_create_path(&ccb->ccb_h.path, xpt_periph, + xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(isci_controller->sim), isci_remote_device->index, CAM_LUN_WILDCARD); @@ -262,7 +262,7 @@ isci_remote_device_freeze_lun_queue(stru if (!(remote_device->frozen_lun_mask & (1 << lun))) { struct cam_path *path; - xpt_create_path(&path, xpt_periph, + xpt_create_path(&path, NULL, cam_sim_path(remote_device->domain->controller->sim), remote_device->index, lun); xpt_freeze_devq(path, 1); @@ -279,7 +279,7 @@ isci_remote_device_release_lun_queue(str struct cam_path *path; remote_device->frozen_lun_mask &= ~(1 << lun); - xpt_create_path(&path, xpt_periph, + xpt_create_path(&path, NULL, cam_sim_path(remote_device->domain->controller->sim), remote_device->index, lun); xpt_release_devq(path, 1, TRUE); Modified: projects/camlock/sys/dev/iscsi/initiator/isc_cam.c ============================================================================== --- projects/camlock/sys/dev/iscsi/initiator/isc_cam.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/iscsi/initiator/isc_cam.c Mon Apr 1 19:11:43 2013 (r248982) @@ -150,7 +150,7 @@ ic_scan(isc_session_t *sp) sp->flags |= ISC_SCANWAIT; CAM_LOCK(sp); - if(xpt_create_path(&sp->cam_path, xpt_periph, cam_sim_path(sp->cam_sim), + if(xpt_create_path(&sp->cam_path, NULL, cam_sim_path(sp->cam_sim), 0, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { xdebug("can't create cam path"); CAM_UNLOCK(sp); Modified: projects/camlock/sys/dev/isp/isp_freebsd.c ============================================================================== --- projects/camlock/sys/dev/isp/isp_freebsd.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/isp/isp_freebsd.c Mon Apr 1 19:11:43 2013 (r248982) @@ -4554,7 +4554,8 @@ isp_make_here(ispsoftc_t *isp, int chan, isp_prt(isp, ISP_LOGWARN, "Chan %d unable to alloc CCB for rescan", chan); return; } - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(fc->sim), tgt, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { + if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(fc->sim), + tgt, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { isp_prt(isp, ISP_LOGWARN, "unable to create path for rescan"); xpt_free_ccb(ccb); return; Modified: projects/camlock/sys/dev/mfi/mfi_cam.c ============================================================================== --- projects/camlock/sys/dev/mfi/mfi_cam.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/mfi/mfi_cam.c Mon Apr 1 19:11:43 2013 (r248982) @@ -318,7 +318,7 @@ mfip_cam_rescan(struct mfi_softc *sc, ui } sim = camsc->sim; - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(sim), + if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sim), tid, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { xpt_free_ccb(ccb); device_printf(sc->mfi_dev, Modified: projects/camlock/sys/dev/mly/mly.c ============================================================================== --- projects/camlock/sys/dev/mly/mly.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/mly/mly.c Mon Apr 1 19:11:43 2013 (r248982) @@ -2025,7 +2025,7 @@ mly_cam_rescan_btl(struct mly_softc *sc, mly_printf(sc, "rescan failed (can't allocate CCB)\n"); return; } - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, + if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sc->mly_cam_sim[bus]), target, 0) != CAM_REQ_CMP) { mly_printf(sc, "rescan failed (can't create path)\n"); xpt_free_ccb(ccb); Modified: projects/camlock/sys/dev/mps/mps_sas.c ============================================================================== --- projects/camlock/sys/dev/mps/mps_sas.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/mps/mps_sas.c Mon Apr 1 19:11:43 2013 (r248982) @@ -271,7 +271,7 @@ mpssas_rescan_target(struct mps_softc *s return; } - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, pathid, + if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid, targetid, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { mps_dprint(sc, MPS_FAULT, "unable to create path for rescan\n"); xpt_free_ccb(ccb); @@ -3318,7 +3318,7 @@ mpssas_check_eedp(struct mpssas_softc *s return; } - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, + if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid, targetid, lunid) != CAM_REQ_CMP) { mps_dprint(sc, MPS_FAULT, "Unable to create " "path for EEDP support\n"); Modified: projects/camlock/sys/dev/mpt/mpt_cam.c ============================================================================== --- projects/camlock/sys/dev/mpt/mpt_cam.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/mpt/mpt_cam.c Mon Apr 1 19:11:43 2013 (r248982) @@ -2364,7 +2364,7 @@ mpt_cam_event(struct mpt_softc *mpt, req break; } - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, pathid, + if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid, CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { mpt_prt(mpt, "unable to create path for rescan\n"); xpt_free_ccb(ccb); @@ -2512,7 +2512,7 @@ mpt_cam_event(struct mpt_softc *mpt, req "unable to alloc CCB for rescan\n"); break; } - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, + if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sim), psdsc->TargetID, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { mpt_prt(mpt, Modified: projects/camlock/sys/dev/mpt/mpt_raid.c ============================================================================== --- projects/camlock/sys/dev/mpt/mpt_raid.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/mpt/mpt_raid.c Mon Apr 1 19:11:43 2013 (r248982) @@ -705,7 +705,7 @@ mpt_raid_thread(void *arg) ccb = xpt_alloc_ccb(); MPT_LOCK(mpt); - error = xpt_create_path(&ccb->ccb_h.path, xpt_periph, + error = xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(mpt->phydisk_sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD); if (error != CAM_REQ_CMP) { @@ -1662,7 +1662,7 @@ mpt_raid_set_vol_queue_depth(struct mpt_ mpt->raid_rescan = 0; - error = xpt_create_path(&path, xpt_periph, + error = xpt_create_path(&path, NULL, cam_sim_path(mpt->sim), mpt_vol->config_page->VolumeID, /*lun*/0); Modified: projects/camlock/sys/dev/twa/tw_osl_cam.c ============================================================================== --- projects/camlock/sys/dev/twa/tw_osl_cam.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/twa/tw_osl_cam.c Mon Apr 1 19:11:43 2013 (r248982) @@ -488,7 +488,7 @@ tw_osli_request_bus_scan(struct twa_soft if ((ccb = xpt_alloc_ccb()) == NULL) return(ENOMEM); mtx_lock(sc->sim_lock); - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(sc->sim), + if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sc->sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { xpt_free_ccb(ccb); mtx_unlock(sc->sim_lock); Modified: projects/camlock/sys/dev/tws/tws_cam.c ============================================================================== --- projects/camlock/sys/dev/tws/tws_cam.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/tws/tws_cam.c Mon Apr 1 19:11:43 2013 (r248982) @@ -221,7 +221,7 @@ tws_bus_scan(struct tws_softc *sc) if ((ccb = xpt_alloc_ccb()) == NULL) return(ENOMEM); - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(sc->sim), + if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sc->sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { xpt_free_ccb(ccb); return(EIO); Modified: projects/camlock/sys/dev/virtio/scsi/virtio_scsi.c ============================================================================== --- projects/camlock/sys/dev/virtio/scsi/virtio_scsi.c Mon Apr 1 17:32:52 2013 (r248981) +++ projects/camlock/sys/dev/virtio/scsi/virtio_scsi.c Mon Apr 1 19:11:43 2013 (r248982) @@ -1702,7 +1702,7 @@ vtscsi_execute_rescan(struct vtscsi_soft return; } - status = xpt_create_path(&ccb->ccb_h.path, xpt_periph, + status = xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sc->vtscsi_sim), target_id, lun_id); if (status != CAM_REQ_CMP) { xpt_free_ccb(ccb); From owner-svn-src-projects@FreeBSD.ORG Tue Apr 2 04:12:17 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id AEF44BC4; Tue, 2 Apr 2013 04:12:17 +0000 (UTC) (envelope-from cherry@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id A0DED65A; Tue, 2 Apr 2013 04:12:17 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r324CHhv038577; Tue, 2 Apr 2013 04:12:17 GMT (envelope-from cherry@svn.freebsd.org) Received: (from cherry@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r324CH8C038576; Tue, 2 Apr 2013 04:12:17 GMT (envelope-from cherry@svn.freebsd.org) Message-Id: <201304020412.r324CH8C038576@svn.freebsd.org> From: "Cherry G. Mathew" Date: Tue, 2 Apr 2013 04:12:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r248994 - projects/amd64_xen_pv/sys/xen/xenbus X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Apr 2013 04:12:17 -0000 Author: cherry Date: Tue Apr 2 04:12:17 2013 New Revision: 248994 URL: http://svnweb.freebsd.org/changeset/base/248994 Log: Revert r248952 This was a configuration error rather than a programming bug. Reviewed and Pointed out by: gibbs@ Modified: projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c Modified: projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c ============================================================================== --- projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c Tue Apr 2 00:57:54 2013 (r248993) +++ projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c Tue Apr 2 04:12:17 2013 (r248994) @@ -594,7 +594,8 @@ xenbusb_release_confighook(struct xenbus KASSERT(xbs->xbs_connecting_children > 0, ("Connecting device count error\n")); xbs->xbs_connecting_children--; - if ((xbs->xbs_flags & XBS_ATTACH_CH_ACTIVE) != 0) { + if (xbs->xbs_connecting_children == 0 + && (xbs->xbs_flags & XBS_ATTACH_CH_ACTIVE) != 0) { xbs->xbs_flags &= ~XBS_ATTACH_CH_ACTIVE; mtx_unlock(&xbs->xbs_lock); config_intrhook_disestablish(&xbs->xbs_attach_ch); From owner-svn-src-projects@FreeBSD.ORG Tue Apr 2 06:48:30 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 28BC1A3F; Tue, 2 Apr 2013 06:48:30 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 1AC8FB38; Tue, 2 Apr 2013 06:48:30 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r326mT63083982; Tue, 2 Apr 2013 06:48:29 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r326mTwN083981; Tue, 2 Apr 2013 06:48:29 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304020648.r326mTwN083981@svn.freebsd.org> From: Alexander Motin Date: Tue, 2 Apr 2013 06:48:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249001 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Apr 2013 06:48:30 -0000 Author: mav Date: Tue Apr 2 06:48:29 2013 New Revision: 249001 URL: http://svnweb.freebsd.org/changeset/base/249001 Log: - Since we no longer have device allocq, rename *_dev_sendq() to *_devq(). - *_devq() functions are really operating on device queues that may be used for several buses, not on a single bus; change arguments respectively. Modified: projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 06:25:10 2013 (r249000) +++ projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 06:48:29 2013 (r249001) @@ -224,7 +224,7 @@ static path_id_t xptnextfreepathid(void) static path_id_t xptpathid(const char *sim_name, int sim_unit, int sim_bus); static union ccb *xpt_get_ccb(struct cam_ed *device); static void xpt_run_dev_allocq(struct cam_ed *device); -static void xpt_run_dev_sendq(struct cam_eb *bus); +static void xpt_run_devq(struct cam_devq *devq); static timeout_t xpt_release_devq_timeout; static void xpt_release_simq_timeout(void *arg) __unused; static void xpt_release_bus(struct cam_eb *bus); @@ -300,7 +300,7 @@ static __inline int device_is_alloc_queu static __inline int device_is_send_queued(struct cam_ed *device); static __inline int -xpt_schedule_dev_sendq(struct cam_eb *bus, struct cam_ed *dev) +xpt_schedule_devq(struct cam_devq *devq, struct cam_ed *dev) { int retval; @@ -313,7 +313,7 @@ xpt_schedule_dev_sendq(struct cam_eb *bu * enqueued. */ retval = - xpt_schedule_dev(&bus->sim->devq->send_queue, + xpt_schedule_dev(&devq->send_queue, &dev->send_ccb_entry.pinfo, CAMQ_GET_PRIO(&dev->ccbq.queue)); } else { @@ -2494,8 +2494,8 @@ xpt_action_default(union ccb *start_ccb) frozen = cam_ccbq_insert_ccb(&path->device->ccbq, start_ccb); if (frozen > 0) xpt_run_dev_allocq(path->device); - if (xpt_schedule_dev_sendq(path->bus, path->device)) - xpt_run_dev_sendq(path->bus); + if (xpt_schedule_devq(path->bus->sim->devq, path->device)) + xpt_run_devq(path->bus->sim->devq); break; } case XPT_CALC_GEOMETRY: @@ -3186,14 +3186,11 @@ xpt_run_dev_allocq(struct cam_ed *device } static void -xpt_run_dev_sendq(struct cam_eb *bus) +xpt_run_devq(struct cam_devq *devq) { - struct cam_devq *devq; char cdb_str[(SCSI_MAX_CDBLEN * 3) + 1]; - CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("xpt_run_dev_sendq\n")); - - devq = bus->sim->devq; + CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("xpt_run_devq\n")); devq->send_queue.qfrozen_cnt++; while ((devq->send_queue.entries > 0) @@ -3248,7 +3245,7 @@ xpt_run_dev_sendq(struct cam_eb *bus) devq->send_openings--; devq->send_active++; - xpt_schedule_dev_sendq(bus, device); + xpt_schedule_devq(devq, device); if (work_ccb && (work_ccb->ccb_h.flags & CAM_DEV_QFREEZE) != 0){ /* @@ -4178,8 +4175,8 @@ xpt_release_devq_device(struct cam_ed *d * device so any pending transactions are * run. */ - if (xpt_schedule_dev_sendq(dev->target->bus, dev)) - xpt_run_dev_sendq(dev->target->bus); + if (xpt_schedule_devq(dev->sim->devq, dev)) + xpt_run_devq(dev->sim->devq); } } @@ -4208,14 +4205,10 @@ xpt_release_simq(struct cam_sim *sim, in sim->flags &= ~CAM_SIM_REL_TIMEOUT_PENDING; } if (run_queue) { - struct cam_eb *bus; - /* * Now that we are unfrozen run the send queue. */ - bus = xpt_find_bus(sim->path_id); - xpt_run_dev_sendq(bus); - xpt_release_bus(bus); + xpt_run_devq(sim->devq); } } } @@ -4973,8 +4966,8 @@ camisr_runqueue(void *V_queue) && (--dev->tag_delay_count == 0)) xpt_start_tags(ccb_h->path); if (!device_is_send_queued(dev)) { - (void)xpt_schedule_dev_sendq(ccb_h->path->bus, - dev); + (void)xpt_schedule_devq( + ccb_h->path->bus->sim->devq, dev); } } @@ -4991,7 +4984,7 @@ camisr_runqueue(void *V_queue) /*run_queue*/TRUE); ccb_h->status &= ~CAM_DEV_QFRZN; } else if (runq) { - xpt_run_dev_sendq(ccb_h->path->bus); + xpt_run_devq(ccb_h->path->bus->sim->devq); } /* Call the peripheral driver's callback */ From owner-svn-src-projects@FreeBSD.ORG Tue Apr 2 07:28:19 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id A7D3BF08; Tue, 2 Apr 2013 07:28:19 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 96522CFE; Tue, 2 Apr 2013 07:28:19 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r327SJhN096005; Tue, 2 Apr 2013 07:28:19 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r327SEQh095972; Tue, 2 Apr 2013 07:28:14 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304020728.r327SEQh095972@svn.freebsd.org> From: Alexander Motin Date: Tue, 2 Apr 2013 07:28:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249003 - in projects/camlock: . bin/setfacl bin/sh cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt cddl/contrib/opensolari... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Apr 2013 07:28:19 -0000 Author: mav Date: Tue Apr 2 07:28:14 2013 New Revision: 249003 URL: http://svnweb.freebsd.org/changeset/base/249003 Log: MFC @r249002 Added: projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh - copied unchanged from r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh - copied unchanged from r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh - copied unchanged from r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh Modified: projects/camlock/Makefile projects/camlock/Makefile.inc1 projects/camlock/bin/setfacl/setfacl.1 projects/camlock/bin/sh/exec.c projects/camlock/bin/sh/expand.c projects/camlock/bin/sh/input.c projects/camlock/bin/sh/input.h projects/camlock/bin/sh/jobs.c projects/camlock/bin/sh/main.c projects/camlock/bin/sh/memalloc.c projects/camlock/bin/sh/memalloc.h projects/camlock/bin/sh/parser.c projects/camlock/bin/sh/parser.h projects/camlock/bin/sh/trap.c projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst projects/camlock/cddl/contrib/opensolaris/tools/ctf/cvt/input.c projects/camlock/contrib/libarchive/libarchive/archive_write_disk_posix.c projects/camlock/contrib/libarchive/libarchive/test/test_extattr_freebsd.c projects/camlock/crypto/openssh/umac128.c projects/camlock/etc/mtree/BSD.usr.dist projects/camlock/lib/libc/gen/wordexp.c projects/camlock/lib/libc/sys/extattr_get_file.2 projects/camlock/sys/amd64/vmm/intel/vmx.c projects/camlock/sys/amd64/vmm/io/vlapic.c projects/camlock/sys/amd64/vmm/vmm_stat.c projects/camlock/sys/amd64/vmm/vmm_stat.h projects/camlock/sys/arm/arm/locore.S projects/camlock/sys/arm/at91/at91rm9200.c projects/camlock/sys/arm/at91/uart_dev_at91usart.c projects/camlock/sys/arm/s3c2xx0/uart_dev_s3c2410.c projects/camlock/sys/arm/sa11x0/uart_dev_sa1110.c projects/camlock/sys/boot/arm/uboot/start.S projects/camlock/sys/boot/fdt/fdt_loader_cmd.c projects/camlock/sys/cam/scsi/scsi_all.c projects/camlock/sys/cam/scsi/scsi_all.h projects/camlock/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace_impl.h projects/camlock/sys/compat/freebsd32/freebsd32_proto.h projects/camlock/sys/compat/freebsd32/freebsd32_syscall.h projects/camlock/sys/compat/freebsd32/freebsd32_syscalls.c projects/camlock/sys/compat/freebsd32/freebsd32_sysent.c projects/camlock/sys/compat/freebsd32/freebsd32_systrace_args.c projects/camlock/sys/compat/freebsd32/syscalls.master projects/camlock/sys/compat/linux/linux_file.c projects/camlock/sys/conf/NOTES projects/camlock/sys/dev/ath/if_ath.c projects/camlock/sys/dev/ath/if_ath_misc.h projects/camlock/sys/dev/ath/if_ath_rx.c projects/camlock/sys/dev/ath/if_ath_rx_edma.c projects/camlock/sys/dev/ath/if_ath_tx.c projects/camlock/sys/dev/bge/if_bge.c projects/camlock/sys/dev/nvd/nvd.c projects/camlock/sys/dev/nvme/nvme.h projects/camlock/sys/dev/nvme/nvme_ns.c projects/camlock/sys/dev/nvme/nvme_ns_cmd.c projects/camlock/sys/dev/nvme/nvme_private.h projects/camlock/sys/dev/nvme/nvme_qpair.c projects/camlock/sys/dev/tws/tws_cam.c projects/camlock/sys/dev/tws/tws_user.c projects/camlock/sys/dev/uart/uart_core.c projects/camlock/sys/dev/uart/uart_dev_imx.c projects/camlock/sys/dev/uart/uart_dev_pl011.c projects/camlock/sys/dev/uart/uart_dev_quicc.c projects/camlock/sys/dev/uart/uart_dev_sab82532.c projects/camlock/sys/dev/uart/uart_dev_z8530.c projects/camlock/sys/fs/nfsclient/nfs_clbio.c projects/camlock/sys/kern/init_sysent.c projects/camlock/sys/kern/sys_pipe.c projects/camlock/sys/kern/syscalls.c projects/camlock/sys/kern/syscalls.master projects/camlock/sys/kern/systrace_args.c projects/camlock/sys/kern/vfs_extattr.c projects/camlock/sys/kern/vfs_lookup.c projects/camlock/sys/kern/vfs_vnops.c projects/camlock/sys/mips/adm5120/uart_dev_adm5120.c projects/camlock/sys/mips/rt305x/uart_dev_rt305x.c projects/camlock/sys/modules/dtrace/dtrace/Makefile projects/camlock/sys/netinet/sctp_constants.h projects/camlock/sys/netpfil/ipfw/ip_fw_sockopt.c projects/camlock/sys/sparc64/pci/sbbc.c projects/camlock/sys/sys/extattr.h projects/camlock/sys/sys/socket.h projects/camlock/sys/sys/syscall.h projects/camlock/sys/sys/syscall.mk projects/camlock/sys/sys/syscallsubr.h projects/camlock/sys/sys/sysproto.h projects/camlock/sys/x86/x86/busdma_machdep.c projects/camlock/tools/regression/lib/libc/gen/test-wordexp.c projects/camlock/usr.sbin/bhyvectl/bhyvectl.c projects/camlock/usr.sbin/extattr/rmextattr.c Directory Properties: projects/camlock/ (props changed) projects/camlock/cddl/ (props changed) projects/camlock/cddl/contrib/opensolaris/ (props changed) projects/camlock/contrib/libarchive/ (props changed) projects/camlock/contrib/libarchive/libarchive/ (props changed) projects/camlock/crypto/openssh/ (props changed) projects/camlock/lib/libc/ (props changed) projects/camlock/sys/ (props changed) projects/camlock/sys/amd64/vmm/ (props changed) projects/camlock/sys/boot/ (props changed) projects/camlock/sys/cddl/contrib/opensolaris/ (props changed) projects/camlock/sys/conf/ (props changed) projects/camlock/usr.sbin/bhyvectl/ (props changed) Modified: projects/camlock/Makefile ============================================================================== --- projects/camlock/Makefile Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/Makefile Tue Apr 2 07:28:14 2013 (r249003) @@ -392,6 +392,14 @@ universe_${target}_${target_arch}: unive .endfor .endif .if !defined(MAKE_JUST_WORLDS) +# If we are building world and kernels wait for the required worlds to finish +.if !defined(MAKE_JUST_KERNELS) +.for target_arch in ${TARGET_ARCHES_${target}} +universe_${target}_kernels: universe_${target}_${target_arch} +.endfor +.endif +universe_${target}: universe_${target}_kernels +universe_${target}_kernels: universe_${target}_prologue .if exists(${KERNSRCDIR}/${target}/conf/NOTES) @(cd ${KERNSRCDIR}/${target}/conf && env __MAKE_CONF=/dev/null \ ${MAKE} LINT > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \ Modified: projects/camlock/Makefile.inc1 ============================================================================== --- projects/camlock/Makefile.inc1 Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/Makefile.inc1 Tue Apr 2 07:28:14 2013 (r249003) @@ -1743,13 +1743,15 @@ XDTP=/usr/${XDDIR} CDBENV=MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX}/${XDDIR} \ INSTALL="sh ${.CURDIR}/tools/install.sh" CDENV= ${CDBENV} \ - _SHLIBDIRPREFIX=${XDTP} \ - TOOLS_PREFIX=${XDTP} -CD2ENV=${CDENV} \ + _SHLIBDIRPREFIX=${XDDESTDIR} \ + TOOLS_PREFIX=${XDDESTDIR} +CD2CFLAGS=-isystem ${XDDESTDIR}/usr/include -L${XDDESTDIR}/usr/lib \ + -B${XDDESTDIR}/usr/lib +CD2ENV=${CDENV} CC="${CC} ${CD2CFLAGS}" \ MACHINE=${XDEV} MACHINE_ARCH=${XDEV_ARCH} -CDTMP= ${MAKEOBJDIRPREFIX}/${XDEV}/${.CURDIR}/tmp -CDMAKE=${CDENV} ${MAKE} ${NOFUN} +CDTMP= ${MAKEOBJDIRPREFIX}/${XDDIR}/${.CURDIR}/tmp +CDMAKE=${CDENV} PATH=${CDTMP}/usr/bin:${PATH} ${MAKE} ${NOFUN} CD2MAKE=${CD2ENV} PATH=${CDTMP}/usr/bin:${XDTP}/usr/bin:${PATH} ${MAKE} ${NOFUN} XDDESTDIR=${DESTDIR}${XDTP} .if !defined(OSREL) @@ -1759,8 +1761,24 @@ OSREL!= uname -r | sed -e 's/[-(].*//' .ORDER: xdev-build xdev-install xdev: xdev-build xdev-install -.ORDER: _xb-build-tools _xb-cross-tools -xdev-build: _xb-build-tools _xb-cross-tools +.ORDER: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools +xdev-build: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools + +_xb-worldtmp: + mkdir -p ${CDTMP}/usr + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ + -p ${CDTMP}/usr >/dev/null + +_xb-bootstrap-tools: +.for _tool in \ + ${_clang_tblgen} + ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ + cd ${.CURDIR}/${_tool}; \ + ${CDMAKE} DIRPRFX=${_tool}/ obj; \ + ${CDMAKE} DIRPRFX=${_tool}/ depend; \ + ${CDMAKE} DIRPRFX=${_tool}/ all; \ + ${CDMAKE} DIRPRFX=${_tool}/ DESTDIR=${CDTMP} install +.endfor _xb-build-tools: ${_+_}@cd ${.CURDIR}; \ @@ -1770,7 +1788,9 @@ _xb-cross-tools: .for _tool in \ gnu/usr.bin/binutils \ gnu/usr.bin/cc \ - usr.bin/ar + usr.bin/ar \ + ${_clang_libs} \ + ${_clang} ${_+_}@${ECHODIR} "===> xdev ${_tool} (obj,depend,all)"; \ cd ${.CURDIR}/${_tool}; \ ${CDMAKE} DIRPRFX=${_tool}/ obj; \ @@ -1796,7 +1816,8 @@ _xi-cross-tools: .for _tool in \ gnu/usr.bin/binutils \ gnu/usr.bin/cc \ - usr.bin/ar + usr.bin/ar \ + ${_clang} ${_+_}@${ECHODIR} "===> xdev ${_tool} (install)"; \ cd ${.CURDIR}/${_tool}; \ ${CDMAKE} DIRPRFX=${_tool}/ install DESTDIR=${XDDESTDIR} Modified: projects/camlock/bin/setfacl/setfacl.1 ============================================================================== --- projects/camlock/bin/setfacl/setfacl.1 Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/bin/setfacl/setfacl.1 Tue Apr 2 07:28:14 2013 (r249003) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 8, 2013 +.Dd April 1, 2013 .Dt SETFACL 1 .Os .Sh NAME @@ -401,6 +401,10 @@ NFSv4 ACL entries are evaluated in their .Pp Multiple ACL entries specified on the command line are separated by commas. +.Pp +Note that the file owner is always granted the read_acl, write_acl, +read_attributes, and write_attributes permissions, even if the ACL +would deny it. .Sh EXIT STATUS .Ex -std .Sh EXAMPLES Modified: projects/camlock/bin/sh/exec.c ============================================================================== --- projects/camlock/bin/sh/exec.c Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/bin/sh/exec.c Tue Apr 2 07:28:14 2013 (r249003) @@ -165,7 +165,7 @@ tryexec(char *cmd, char **argv, char **e } } *argv = cmd; - *--argv = _PATH_BSHELL; + *--argv = __DECONST(char *, _PATH_BSHELL); execve(_PATH_BSHELL, argv, envp); } errno = e; @@ -188,7 +188,7 @@ padvance(const char **path, const char * { const char *p, *start; char *q; - int len; + size_t len; if (*path == NULL) return NULL; Modified: projects/camlock/bin/sh/expand.c ============================================================================== --- projects/camlock/bin/sh/expand.c Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/bin/sh/expand.c Tue Apr 2 07:28:14 2013 (r249003) @@ -460,7 +460,7 @@ expbackq(union node *cmd, int quoted, in int startloc = dest - stackblock(); char const *syntax = quoted? DQSYNTAX : BASESYNTAX; int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR); - int nnl; + size_t nnl; INTOFF; saveifs = ifsfirst; @@ -1163,9 +1163,9 @@ nometa: static void expmeta(char *enddir, char *name) { - char *p; - char *q; - char *start; + const char *p; + const char *q; + const char *start; char *endname; int metaflag; struct stat statb; @@ -1229,7 +1229,7 @@ expmeta(char *enddir, char *name) addfname(expdir); return; } - endname = p; + endname = name + (p - name); if (start != name) { p = name; while (p < start) { @@ -1412,7 +1412,8 @@ match_charclass(const char *p, wchar_t c *end = NULL; p++; nameend = strstr(p, ":]"); - if (nameend == NULL || nameend - p >= sizeof(name) || nameend == p) + if (nameend == NULL || (size_t)(nameend - p) >= sizeof(name) || + nameend == p) return 0; memcpy(name, p, nameend - p); name[nameend - p] = '\0'; Modified: projects/camlock/bin/sh/input.c ============================================================================== --- projects/camlock/bin/sh/input.c Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/bin/sh/input.c Tue Apr 2 07:28:14 2013 (r249003) @@ -66,7 +66,7 @@ __FBSDID("$FreeBSD$"); struct strpush { struct strpush *prev; /* preceding string on stack */ - char *prevstring; + const char *prevstring; int prevnleft; int prevlleft; struct alias *ap; /* if push was associated with an alias */ @@ -83,7 +83,7 @@ struct parsefile { int fd; /* file descriptor (or -1 if string) */ int nleft; /* number of chars left in this line */ int lleft; /* number of lines left in this buffer */ - char *nextc; /* next char in buffer */ + const char *nextc; /* next char in buffer */ char *buf; /* input buffer */ struct strpush *strpush; /* for pushing strings at this level */ struct strpush basestrpush; /* so pushing one is fast */ @@ -93,7 +93,7 @@ struct parsefile { int plinno = 1; /* input line number */ int parsenleft; /* copy of parsefile->nleft */ MKINIT int parselleft; /* copy of parsefile->lleft */ -char *parsenextc; /* copy of parsefile->nextc */ +const char *parsenextc; /* copy of parsefile->nextc */ static char basebuf[BUFSIZ + 1];/* buffer for top level input file */ static struct parsefile basepf = { /* top level input file */ .nextc = basebuf, @@ -185,7 +185,7 @@ retry: nr = el_len; if (nr > BUFSIZ) nr = BUFSIZ; - memcpy(parsenextc, rl_cp, nr); + memcpy(parsefile->buf, rl_cp, nr); if (nr != el_len) { el_len -= nr; rl_cp += nr; @@ -194,7 +194,7 @@ retry: } } else #endif - nr = read(parsefile->fd, parsenextc, BUFSIZ); + nr = read(parsefile->fd, parsefile->buf, BUFSIZ); if (nr <= 0) { if (nr < 0) { @@ -252,7 +252,7 @@ again: } } - q = p = parsenextc; + q = p = parsefile->buf + (parsenextc - parsefile->buf); /* delete nul characters */ something = 0; @@ -439,7 +439,7 @@ setinputfd(int fd, int push) */ void -setinputstring(char *string, int push) +setinputstring(const char *string, int push) { INTOFF; if (push) Modified: projects/camlock/bin/sh/input.h ============================================================================== --- projects/camlock/bin/sh/input.h Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/bin/sh/input.h Tue Apr 2 07:28:14 2013 (r249003) @@ -42,7 +42,7 @@ */ extern int plinno; extern int parsenleft; /* number of characters left in input buffer */ -extern char *parsenextc; /* next character in input buffer */ +extern const char *parsenextc; /* next character in input buffer */ struct alias; struct parsefile; @@ -55,7 +55,7 @@ void pungetc(void); void pushstring(char *, int, struct alias *); void setinputfile(const char *, int); void setinputfd(int, int); -void setinputstring(char *, int); +void setinputstring(const char *, int); void popfile(void); struct parsefile *getcurrentfile(void); void popfilesupto(struct parsefile *); Modified: projects/camlock/bin/sh/jobs.c ============================================================================== --- projects/camlock/bin/sh/jobs.c Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/bin/sh/jobs.c Tue Apr 2 07:28:14 2013 (r249003) @@ -668,7 +668,8 @@ makejob(union node *node __unused, int n jobtab = jp; } jp = jobtab + njobs; - for (i = 4 ; --i >= 0 ; jobtab[njobs++].used = 0); + for (i = 4 ; --i >= 0 ; jobtab[njobs++].used = 0) + ; INTON; break; } @@ -1005,7 +1006,7 @@ waitforjob(struct job *jp, int *origstat static void -dummy_handler(int sig) +dummy_handler(int sig __unused) { } Modified: projects/camlock/bin/sh/main.c ============================================================================== --- projects/camlock/bin/sh/main.c Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/bin/sh/main.c Tue Apr 2 07:28:14 2013 (r249003) @@ -80,7 +80,7 @@ struct jmploc main_handler; int localeisutf8, initial_localeisutf8; static void cmdloop(int); -static void read_profile(char *); +static void read_profile(const char *); static char *find_dot_file(char *); /* @@ -239,7 +239,7 @@ cmdloop(int top) */ static void -read_profile(char *name) +read_profile(const char *name) { int fd; const char *expandedname; Modified: projects/camlock/bin/sh/memalloc.c ============================================================================== --- projects/camlock/bin/sh/memalloc.c Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/bin/sh/memalloc.c Tue Apr 2 07:28:14 2013 (r249003) @@ -233,7 +233,8 @@ growstackblock(int min) if (min < stacknleft) min = stacknleft; - if (min >= INT_MAX / 2 - ALIGN(sizeof(struct stack_block))) + if ((unsigned int)min >= + INT_MAX / 2 - ALIGN(sizeof(struct stack_block))) error("Out of space"); min += stacknleft; min += ALIGN(sizeof(struct stack_block)); @@ -327,7 +328,7 @@ makestrspace(int min, char *p) char * -stputbin(const char *data, int len, char *p) +stputbin(const char *data, size_t len, char *p) { CHECKSTRSPACE(len, p); memcpy(p, data, len); Modified: projects/camlock/bin/sh/memalloc.h ============================================================================== --- projects/camlock/bin/sh/memalloc.h Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/bin/sh/memalloc.h Tue Apr 2 07:28:14 2013 (r249003) @@ -57,7 +57,7 @@ void setstackmark(struct stackmark *); void popstackmark(struct stackmark *); char *growstackstr(void); char *makestrspace(int, char *); -char *stputbin(const char *data, int len, char *p); +char *stputbin(const char *data, size_t len, char *p); char *stputs(const char *data, char *p); @@ -67,7 +67,7 @@ char *stputs(const char *data, char *p); #define grabstackblock(n) stalloc(n) #define STARTSTACKSTR(p) p = stackblock() #define STPUTC(c, p) do { if (p == sstrend) p = growstackstr(); *p++ = (c); } while(0) -#define CHECKSTRSPACE(n, p) { if (sstrend - p < n) p = makestrspace(n, p); } +#define CHECKSTRSPACE(n, p) { if ((size_t)(sstrend - p) < n) p = makestrspace(n, p); } #define USTPUTC(c, p) (*p++ = (c)) /* * STACKSTRNUL's use is where we want to be able to turn a stack Modified: projects/camlock/bin/sh/parser.c ============================================================================== --- projects/camlock/bin/sh/parser.c Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/bin/sh/parser.c Tue Apr 2 07:28:14 2013 (r249003) @@ -119,7 +119,7 @@ static void parseheredoc(void); static int peektoken(void); static int readtoken(void); static int xxreadtoken(void); -static int readtoken1(int, char const *, char *, int); +static int readtoken1(int, const char *, const char *, int); static int noexpand(char *); static void synexpect(int) __dead2; static void synerror(const char *) __dead2; @@ -983,7 +983,7 @@ parsebackq(char *out, struct nodelist ** char *volatile str; struct jmploc jmploc; struct jmploc *const savehandler = handler; - int savelen; + size_t savelen; int saveprompt; const int bq_startlinno = plinno; char *volatile ostr = NULL; @@ -1300,7 +1300,8 @@ readcstyleesc(char *out) #define PARSEARITH() {goto parsearith; parsearith_return:;} static int -readtoken1(int firstc, char const *initialsyntax, char *eofmark, int striptabs) +readtoken1(int firstc, char const *initialsyntax, const char *eofmark, + int striptabs) { int c = firstc; char *out; @@ -1521,7 +1522,7 @@ checkend: { } if (c == *eofmark) { if (pfgets(line, sizeof line) != NULL) { - char *p, *q; + const char *p, *q; p = line; for (q = eofmark + 1 ; *q && *p == *q ; p++, q++); @@ -2038,7 +2039,7 @@ getprompt(void *unused __unused) const char * -expandstr(char *ps) +expandstr(const char *ps) { union node n; struct jmploc jmploc; Modified: projects/camlock/bin/sh/parser.h ============================================================================== --- projects/camlock/bin/sh/parser.h Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/bin/sh/parser.h Tue Apr 2 07:28:14 2013 (r249003) @@ -82,4 +82,4 @@ void fixredir(union node *, const char * int goodname(const char *); int isassignment(const char *); char *getprompt(void *); -const char *expandstr(char *); +const char *expandstr(const char *); Modified: projects/camlock/bin/sh/trap.c ============================================================================== --- projects/camlock/bin/sh/trap.c Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/bin/sh/trap.c Tue Apr 2 07:28:14 2013 (r249003) @@ -150,7 +150,7 @@ printsignals(void) * The trap builtin. */ int -trapcmd(int argc, char **argv) +trapcmd(int argc __unused, char **argv) { char *action; int signo; Modified: projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst ============================================================================== --- projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst Tue Apr 2 07:28:14 2013 (r249003) @@ -23,7 +23,6 @@ # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # -# ident "%Z%%M% %I% %E% SMI" # Exception list: names tests that are bypassed when running in Java # mode (relative to /opt/SUNWdtrt/tst) @@ -52,14 +51,17 @@ common/usdt/tst.enabled.ksh common/usdt/tst.enabled2.ksh common/usdt/tst.entryreturn.ksh common/usdt/tst.fork.ksh -common/usdt/tst.header.ksh common/usdt/tst.guess32.ksh common/usdt/tst.guess64.ksh +common/usdt/tst.header.ksh common/usdt/tst.linkpriv.ksh common/usdt/tst.linkunpriv.ksh common/usdt/tst.multiple.ksh common/usdt/tst.nodtrace.ksh +common/usdt/tst.noreap.ksh +common/usdt/tst.noreapring.ksh common/usdt/tst.onlyenabled.ksh +common/usdt/tst.reap.ksh common/usdt/tst.reeval.ksh common/usdt/tst.static.ksh common/usdt/tst.static2.ksh Copied: projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh (from r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh Tue Apr 2 07:28:14 2013 (r249003, copy of r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh) @@ -0,0 +1,128 @@ +# +# CDDL HEADER START +# +# 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] +# +# CDDL HEADER END +# + +# +# Copyright (c) 2011, Joyent, Inc. All rights reserved. +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +dtrace=$1 +DIR=/var/tmp/dtest.$$ + +mkdir $DIR +cd $DIR + +cat > test.c < +#include + +int +main(int argc, char **argv) +{ + DTRACE_PROBE(test_prov, probe1); +} +EOF + +cat > prov.d < 10/ + { + exit(0); + } +EOF +} + +script 2>&1 | tee test.out + +# +# It should be true that our probe was not reaped after the provider was made +# defunct: the speculative tracing action prevents reaping of any ECB in the +# enabling. +# +status=0 + +if grep D_PDESC_INVAL test.out 2> /dev/null 1>&2 ; then + status=1 +else + grep D_PROC_GRAB test.out 2> /dev/null 1>&2 + status=$? +fi + +cd / +/usr/bin/rm -rf $DIR + +exit $status Copied: projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh (from r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh Tue Apr 2 07:28:14 2013 (r249003, copy of r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh) @@ -0,0 +1,124 @@ +# +# CDDL HEADER START +# +# 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] +# +# CDDL HEADER END +# + +# +# Copyright (c) 2011, Joyent, Inc. All rights reserved. +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +dtrace=$1 +DIR=/var/tmp/dtest.$$ + +mkdir $DIR +cd $DIR + +cat > test.c < +#include + +int +main(int argc, char **argv) +{ + DTRACE_PROBE(test_prov, probe1); +} +EOF + +cat > prov.d < 10/ + { + exit(0); + } +EOF +} + +$dtrace -x bufpolicy=ring -ZwqP test_prov\* > /dev/null 2>&1 & +background=$! +echo launched ring buffered enabling as pid $background +script 2>&1 | tee test.out + +# +# It should be true that our probe was not reaped after the provider was made +# defunct: the active ring buffer in the earlier enabling prevents reaping of +# any of the earlier enabling's ECBs. +# +status=0 + +if grep D_PDESC_INVAL test.out 2> /dev/null 1>&2 ; then + status=1 +else + grep D_PROC_GRAB test.out 2> /dev/null 1>&2 + status=$? +fi + +kill $background +cd / +/usr/bin/rm -rf $DIR + +exit $status Copied: projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh (from r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh Tue Apr 2 07:28:14 2013 (r249003, copy of r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh) @@ -0,0 +1,115 @@ +# +# CDDL HEADER START +# +# 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] +# +# CDDL HEADER END +# + +# +# Copyright (c) 2011, Joyent, Inc. All rights reserved. +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +dtrace=$1 +DIR=/var/tmp/dtest.$$ + +mkdir $DIR +cd $DIR + +cat > test.c < +#include + +int +main(int argc, char **argv) +{ + DTRACE_PROBE(test_prov, probe1); +} +EOF + +cat > prov.d < 10/ + { + exit(0); + } +EOF +} + +script 2>&1 | tee test.out + +# +# It should be true that our probe was reaped over the course of the enabling, +# causing the embedded DTrace invocation to fail on an invalid probe (that is, +# D_PDESC_INVAL) instead of an inability to grab the underlying process +# (D_PROC_GRAB). +# +grep D_PDESC_INVAL test.out 2> /dev/null 1>&2 +status=$? + +cd / +/usr/bin/rm -rf $DIR + +exit $status Modified: projects/camlock/cddl/contrib/opensolaris/tools/ctf/cvt/input.c ============================================================================== --- projects/camlock/cddl/contrib/opensolaris/tools/ctf/cvt/input.c Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/cddl/contrib/opensolaris/tools/ctf/cvt/input.c Tue Apr 2 07:28:14 2013 (r249003) @@ -387,6 +387,7 @@ GElf_Sym * symit_next(symit_data_t *si, int type) { GElf_Sym sym; + char *bname; int check_sym = (type == STT_OBJECT || type == STT_FUNC); for (; si->si_next < si->si_nument; si->si_next++) { @@ -394,8 +395,10 @@ symit_next(symit_data_t *si, int type) gelf_getsym(si->si_symd, si->si_next, &sym); si->si_curname = (caddr_t)si->si_strd->d_buf + sym.st_name; - if (GELF_ST_TYPE(sym.st_info) == STT_FILE) - si->si_curfile = si->si_curname; + if (GELF_ST_TYPE(sym.st_info) == STT_FILE) { + bname = strrchr(si->si_curname, '/'); + si->si_curfile = bname == NULL ? si->si_curname : bname + 1; + } if (GELF_ST_TYPE(sym.st_info) != type || sym.st_shndx == SHN_UNDEF) Modified: projects/camlock/contrib/libarchive/libarchive/archive_write_disk_posix.c ============================================================================== --- projects/camlock/contrib/libarchive/libarchive/archive_write_disk_posix.c Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/contrib/libarchive/libarchive/archive_write_disk_posix.c Tue Apr 2 07:28:14 2013 (r249003) @@ -3707,7 +3707,7 @@ set_xattrs(struct archive_write_disk *a) size_t size; archive_entry_xattr_next(entry, &name, &value, &size); if (name != NULL) { - int e; + ssize_t e; int namespace; if (strncmp(name, "user.", 5) == 0) { @@ -3734,7 +3734,7 @@ set_xattrs(struct archive_write_disk *a) e = extattr_set_file(archive_entry_pathname(entry), namespace, name, value, size); } - if (e != (int)size) { + if (e != (ssize_t)size) { if (errno == ENOTSUP || errno == ENOSYS) { if (!warning_done) { warning_done = 1; Modified: projects/camlock/contrib/libarchive/libarchive/test/test_extattr_freebsd.c ============================================================================== --- projects/camlock/contrib/libarchive/libarchive/test/test_extattr_freebsd.c Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/contrib/libarchive/libarchive/test/test_extattr_freebsd.c Tue Apr 2 07:28:14 2013 (r249003) @@ -47,7 +47,8 @@ DEFINE_TEST(test_extattr_freebsd) struct stat st; struct archive *a; struct archive_entry *ae; - int n, fd; + ssize_t n; + int fd; int extattr_privilege_bug = 0; /* Modified: projects/camlock/crypto/openssh/umac128.c ============================================================================== --- projects/camlock/crypto/openssh/umac128.c Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/crypto/openssh/umac128.c Tue Apr 2 07:28:14 2013 (r249003) @@ -1,7 +1,11 @@ /* $FreeBSD$ */ #define UMAC_OUTPUT_LEN 16 +#undef umac_new #define umac_new ssh_umac128_new +#undef umac_update #define umac_update ssh_umac128_update +#undef umac_final #define umac_final ssh_umac128_final +#undef umac_delete #define umac_delete ssh_umac128_delete #include "umac.c" Modified: projects/camlock/etc/mtree/BSD.usr.dist ============================================================================== --- projects/camlock/etc/mtree/BSD.usr.dist Tue Apr 2 06:49:44 2013 (r249002) +++ projects/camlock/etc/mtree/BSD.usr.dist Tue Apr 2 07:28:14 2013 (r249003) @@ -22,14 +22,14 @@ .. engines .. - i18n - .. + i18n + .. .. lib32 - dtrace - .. - i18n - .. + dtrace + .. + i18n + .. .. libdata gcc @@ -40,8 +40,8 @@ .. .. libexec - bsdinstall - .. + bsdinstall + .. lpr ru .. @@ -207,7 +207,7 @@ dtrace toolkit .. - .. + .. examples BSD_daemon .. @@ -330,79 +330,79 @@ fortune .. .. + i18n + csmapper + APPLE + .. + AST + .. + BIG5 + .. + CNS + .. + CP + .. + EBCDIC + .. + GB + .. + GEORGIAN + .. + ISO-8859 + .. + ISO646 + .. + JIS + .. + KAZAKH + .. + KOI + .. + KS + .. + MISC + .. + TCVN + .. + .. + esdb + APPLE + .. + AST + .. + BIG5 + .. + CP + .. + DEC + .. + EBCDIC + .. + EUC + .. + GB + .. + GEORGIAN + .. + ISO-2022 + .. + ISO-8859 + .. + ISO646 + .. + KAZAKH + .. + KOI + .. + MISC + .. + TCVN + .. + UTF + .. + .. + .. *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Tue Apr 2 09:03:41 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 821269B0; Tue, 2 Apr 2013 09:03:41 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 752F3149; Tue, 2 Apr 2013 09:03:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r3293f6k024681; Tue, 2 Apr 2013 09:03:41 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r3293fGK024680; Tue, 2 Apr 2013 09:03:41 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304020903.r3293fGK024680@svn.freebsd.org> From: Alexander Motin Date: Tue, 2 Apr 2013 09:03:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249006 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Apr 2013 09:03:41 -0000 Author: mav Date: Tue Apr 2 09:03:40 2013 New Revision: 249006 URL: http://svnweb.freebsd.org/changeset/base/249006 Log: Pass SIM pointer as an argument to camisr_runqueue() instead of doneq pointer. Modified: projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 08:41:38 2013 (r249005) +++ projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 09:03:40 2013 (r249006) @@ -244,7 +244,7 @@ static xpt_devicefunc_t xptpassannouncef static void xptaction(struct cam_sim *sim, union ccb *work_ccb); static void xptpoll(struct cam_sim *sim); static void camisr(void *); -static void camisr_runqueue(void *); +static void camisr_runqueue(struct cam_sim *); static dev_match_ret xptbusmatch(struct dev_match_pattern *patterns, u_int num_patterns, struct cam_eb *bus); static dev_match_ret xptdevicematch(struct dev_match_pattern *patterns, @@ -3022,7 +3022,7 @@ xpt_polled_action(union ccb *start_ccb) dev->ccbq.dev_openings < 0) && (--timeout > 0)) { DELAY(100); (*(sim->sim_poll))(sim); - camisr_runqueue(&sim->sim_doneq); + camisr_runqueue(sim); } dev->ccbq.devq_openings++; @@ -3032,7 +3032,7 @@ xpt_polled_action(union ccb *start_ccb) xpt_action(start_ccb); while(--timeout > 0) { (*(sim->sim_poll))(sim); - camisr_runqueue(&sim->sim_doneq); + camisr_runqueue(sim); if ((start_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_INPROG) break; @@ -4270,7 +4270,7 @@ xpt_batch_done(struct cam_sim *sim) sim->flags &= ~CAM_SIM_BATCH; if (!TAILQ_EMPTY(&sim->sim_doneq) && (sim->flags & CAM_SIM_ON_DONEQ) == 0) - camisr_runqueue(&sim->sim_doneq); + camisr_runqueue(sim); } union ccb * @@ -4884,7 +4884,7 @@ camisr(void *dummy) while ((sim = TAILQ_FIRST(&queue)) != NULL) { TAILQ_REMOVE(&queue, sim, links); CAM_SIM_LOCK(sim); - camisr_runqueue(&sim->sim_doneq); + camisr_runqueue(sim); sim->flags &= ~CAM_SIM_ON_DONEQ; CAM_SIM_UNLOCK(sim); } @@ -4894,15 +4894,14 @@ camisr(void *dummy) } static void -camisr_runqueue(void *V_queue) +camisr_runqueue(struct cam_sim *sim) { - cam_isrq_t *queue = V_queue; struct ccb_hdr *ccb_h; - while ((ccb_h = TAILQ_FIRST(queue)) != NULL) { + while ((ccb_h = TAILQ_FIRST(&sim->sim_doneq)) != NULL) { int runq; - TAILQ_REMOVE(queue, ccb_h, sim_links.tqe); + TAILQ_REMOVE(&sim->sim_doneq, ccb_h, sim_links.tqe); ccb_h->pinfo.index = CAM_UNQUEUED_INDEX; CAM_DEBUG(ccb_h->path, CAM_DEBUG_TRACE, @@ -4944,8 +4943,8 @@ camisr_runqueue(void *V_queue) dev = ccb_h->path->device; cam_ccbq_ccb_done(&dev->ccbq, (union ccb *)ccb_h); - ccb_h->path->bus->sim->devq->send_active--; - ccb_h->path->bus->sim->devq->send_openings++; + sim->devq->send_active--; + sim->devq->send_openings++; runq = TRUE; if (((dev->flags & CAM_DEV_REL_ON_QUEUE_EMPTY) != 0 @@ -4966,14 +4965,12 @@ camisr_runqueue(void *V_queue) && (--dev->tag_delay_count == 0)) xpt_start_tags(ccb_h->path); if (!device_is_send_queued(dev)) { - (void)xpt_schedule_devq( - ccb_h->path->bus->sim->devq, dev); + (void)xpt_schedule_devq(sim->devq, dev); } } if (ccb_h->status & CAM_RELEASE_SIMQ) { - xpt_release_simq(ccb_h->path->bus->sim, - /*run_queue*/TRUE); + xpt_release_simq(sim, /*run_queue*/TRUE); ccb_h->status &= ~CAM_RELEASE_SIMQ; runq = FALSE; } @@ -4984,7 +4981,7 @@ camisr_runqueue(void *V_queue) /*run_queue*/TRUE); ccb_h->status &= ~CAM_DEV_QFRZN; } else if (runq) { - xpt_run_devq(ccb_h->path->bus->sim->devq); + xpt_run_devq(sim->devq); } /* Call the peripheral driver's callback */ From owner-svn-src-projects@FreeBSD.ORG Tue Apr 2 09:33:23 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 1FB7366E; Tue, 2 Apr 2013 09:33:23 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 0348F390; Tue, 2 Apr 2013 09:33:23 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r329XMtb033586; Tue, 2 Apr 2013 09:33:22 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r329XMKh033583; Tue, 2 Apr 2013 09:33:22 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304020933.r329XMKh033583@svn.freebsd.org> From: Alexander Motin Date: Tue, 2 Apr 2013 09:33:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249007 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Apr 2013 09:33:23 -0000 Author: mav Date: Tue Apr 2 09:33:22 2013 New Revision: 249007 URL: http://svnweb.freebsd.org/changeset/base/249007 Log: Introduce sim_doneq_mtx, mutex protecting done CCB queue. Now it is only pessimization, but it removes barrier for dropping SIM mutex during CCB completion processing. Modified: projects/camlock/sys/cam/cam_sim.c projects/camlock/sys/cam/cam_sim.h projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_sim.c ============================================================================== --- projects/camlock/sys/cam/cam_sim.c Tue Apr 2 09:03:40 2013 (r249006) +++ projects/camlock/sys/cam/cam_sim.c Tue Apr 2 09:33:22 2013 (r249007) @@ -95,7 +95,7 @@ cam_sim_alloc(sim_action_func sim_action sim->flags |= CAM_SIM_MPSAFE; callout_init(&sim->callout, 1); } - + mtx_init(&sim->sim_doneq_mtx, "CAM doneq", NULL, MTX_DEF); TAILQ_INIT(&sim->sim_doneq); return (sim); @@ -116,6 +116,7 @@ cam_sim_free(struct cam_sim *sim, int fr if (free_devq) cam_simq_free(sim->devq); + mtx_destroy(&sim->sim_doneq_mtx); free(sim, M_CAMSIM); } Modified: projects/camlock/sys/cam/cam_sim.h ============================================================================== --- projects/camlock/sys/cam/cam_sim.h Tue Apr 2 09:03:40 2013 (r249006) +++ projects/camlock/sys/cam/cam_sim.h Tue Apr 2 09:33:22 2013 (r249007) @@ -95,6 +95,11 @@ struct cam_sim { void *softc; struct mtx *mtx; TAILQ_HEAD(, ccb_hdr) sim_doneq; + struct mtx sim_doneq_mtx; + int sim_doneq_flags; +#define CAM_SIM_DQ_ONQ 0x04 +#define CAM_SIM_DQ_POLLED 0x08 +#define CAM_SIM_DQ_BATCH 0x10 TAILQ_ENTRY(cam_sim) links; u_int32_t path_id;/* The Boot device may set this to 0? */ u_int32_t unit_number; @@ -104,9 +109,6 @@ struct cam_sim { u_int32_t flags; #define CAM_SIM_REL_TIMEOUT_PENDING 0x01 #define CAM_SIM_MPSAFE 0x02 -#define CAM_SIM_ON_DONEQ 0x04 -#define CAM_SIM_POLLED 0x08 -#define CAM_SIM_BATCH 0x10 struct callout callout; struct cam_devq *devq; /* Device Queue to use for this SIM */ int refcount; /* References to the SIM. */ Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 09:03:40 2013 (r249006) +++ projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 09:33:22 2013 (r249007) @@ -3009,7 +3009,9 @@ xpt_polled_action(union ccb *start_ccb) mtx_assert(sim->mtx, MA_OWNED); /* Don't use ISR for this SIM while polling. */ - sim->flags |= CAM_SIM_POLLED; + mtx_lock(&sim->sim_doneq_mtx); + sim->sim_doneq_flags |= CAM_SIM_DQ_POLLED; + mtx_unlock(&sim->sim_doneq_mtx); /* * Steal an opening so that no other queued requests @@ -3052,7 +3054,9 @@ xpt_polled_action(union ccb *start_ccb) } /* We will use CAM ISR for this SIM again. */ - sim->flags &= ~CAM_SIM_POLLED; + mtx_lock(&sim->sim_doneq_mtx); + sim->sim_doneq_flags &= ~CAM_SIM_DQ_POLLED; + mtx_unlock(&sim->sim_doneq_mtx); } /* @@ -4238,19 +4242,22 @@ xpt_done(union ccb *done_ccb) * any of the "non-immediate" type of ccbs. */ sim = done_ccb->ccb_h.path->bus->sim; + mtx_lock(&sim->sim_doneq_mtx); TAILQ_INSERT_TAIL(&sim->sim_doneq, &done_ccb->ccb_h, sim_links.tqe); done_ccb->ccb_h.pinfo.index = CAM_DONEQ_INDEX; - if ((sim->flags & (CAM_SIM_ON_DONEQ | CAM_SIM_POLLED | - CAM_SIM_BATCH)) == 0) { + if ((sim->sim_doneq_flags & (CAM_SIM_DQ_ONQ | + CAM_SIM_DQ_POLLED | CAM_SIM_DQ_BATCH)) == 0) { mtx_lock(&cam_simq_lock); first = TAILQ_EMPTY(&cam_simq); TAILQ_INSERT_TAIL(&cam_simq, sim, links); mtx_unlock(&cam_simq_lock); - sim->flags |= CAM_SIM_ON_DONEQ; - if (first) - swi_sched(cambio_ih, 0); - } + sim->sim_doneq_flags |= CAM_SIM_DQ_ONQ; + } else + first = 0; + mtx_unlock(&sim->sim_doneq_mtx); + if (first) + swi_sched(cambio_ih, 0); } } @@ -4258,19 +4265,32 @@ void xpt_batch_start(struct cam_sim *sim) { - KASSERT((sim->flags & CAM_SIM_BATCH) == 0, ("Batch flag already set")); - sim->flags |= CAM_SIM_BATCH; + mtx_lock(&sim->sim_doneq_mtx); + KASSERT((sim->sim_doneq_flags & CAM_SIM_DQ_BATCH) == 0, + ("Batch flag already set")); + sim->sim_doneq_flags |= CAM_SIM_DQ_BATCH; + mtx_unlock(&sim->sim_doneq_mtx); } void xpt_batch_done(struct cam_sim *sim) { + int runq; - KASSERT((sim->flags & CAM_SIM_BATCH) != 0, ("Batch flag was not set")); - sim->flags &= ~CAM_SIM_BATCH; - if (!TAILQ_EMPTY(&sim->sim_doneq) && - (sim->flags & CAM_SIM_ON_DONEQ) == 0) + mtx_lock(&sim->sim_doneq_mtx); + KASSERT((sim->sim_doneq_flags & CAM_SIM_DQ_BATCH) != 0, + ("Batch flag was not set")); + sim->sim_doneq_flags &= ~CAM_SIM_DQ_BATCH; + runq = ((sim->sim_doneq_flags & (CAM_SIM_DQ_ONQ | + CAM_SIM_DQ_POLLED)) == 0); + if (runq) + sim->sim_doneq_flags |= CAM_SIM_DQ_ONQ; + mtx_unlock(&sim->sim_doneq_mtx); + if (runq) { + CAM_SIM_UNLOCK(sim); camisr_runqueue(sim); + CAM_SIM_LOCK(sim); + } } union ccb * @@ -4883,10 +4903,7 @@ camisr(void *dummy) while ((sim = TAILQ_FIRST(&queue)) != NULL) { TAILQ_REMOVE(&queue, sim, links); - CAM_SIM_LOCK(sim); camisr_runqueue(sim); - sim->flags &= ~CAM_SIM_ON_DONEQ; - CAM_SIM_UNLOCK(sim); } mtx_lock(&cam_simq_lock); } @@ -4897,11 +4914,13 @@ static void camisr_runqueue(struct cam_sim *sim) { struct ccb_hdr *ccb_h; + int runq; + mtx_lock(&sim->sim_doneq_mtx); while ((ccb_h = TAILQ_FIRST(&sim->sim_doneq)) != NULL) { - int runq; - TAILQ_REMOVE(&sim->sim_doneq, ccb_h, sim_links.tqe); + mtx_unlock(&sim->sim_doneq_mtx); + CAM_SIM_LOCK(sim); ccb_h->pinfo.index = CAM_UNQUEUED_INDEX; CAM_DEBUG(ccb_h->path, CAM_DEBUG_TRACE, @@ -4986,5 +5005,9 @@ camisr_runqueue(struct cam_sim *sim) /* Call the peripheral driver's callback */ (*ccb_h->cbfcnp)(ccb_h->path->periph, (union ccb *)ccb_h); + CAM_SIM_UNLOCK(sim); + mtx_lock(&sim->sim_doneq_mtx); } + sim->sim_doneq_flags &= ~CAM_SIM_DQ_ONQ; + mtx_unlock(&sim->sim_doneq_mtx); } From owner-svn-src-projects@FreeBSD.ORG Tue Apr 2 09:44:13 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 2FF89D4C; Tue, 2 Apr 2013 09:44:13 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 23EC0633; Tue, 2 Apr 2013 09:44:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r329iDLA036724; Tue, 2 Apr 2013 09:44:13 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r329iCjr036722; Tue, 2 Apr 2013 09:44:12 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304020944.r329iCjr036722@svn.freebsd.org> From: Alexander Motin Date: Tue, 2 Apr 2013 09:44:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249010 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Apr 2013 09:44:13 -0000 Author: mav Date: Tue Apr 2 09:44:12 2013 New Revision: 249010 URL: http://svnweb.freebsd.org/changeset/base/249010 Log: Remove owner field from struct cam_ed, unused at least since FreeBSD 7. Modified: projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/cam_xpt_internal.h Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 09:42:42 2013 (r249009) +++ projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 09:44:12 2013 (r249010) @@ -4479,7 +4479,6 @@ xpt_alloc_device(struct cam_eb *bus, str SLIST_INIT(&device->asyncs); SLIST_INIT(&device->periphs); device->generation = 0; - device->owner = NULL; device->flags = CAM_DEV_UNCONFIGURED; device->tag_delay_count = 0; device->tag_saved_openings = 0; Modified: projects/camlock/sys/cam/cam_xpt_internal.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt_internal.h Tue Apr 2 09:42:42 2013 (r249009) +++ projects/camlock/sys/cam/cam_xpt_internal.h Tue Apr 2 09:44:12 2013 (r249010) @@ -84,7 +84,6 @@ struct cam_ed { struct async_list asyncs; /* Async callback info for this B/T/L */ struct periph_list periphs; /* All attached devices */ u_int generation; /* Generation number */ - struct cam_periph *owner; /* Peripheral driver's ownership tag */ void *quirk; /* Oddities about this device */ u_int maxtags; u_int mintags; From owner-svn-src-projects@FreeBSD.ORG Tue Apr 2 09:51:43 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 5CAF2358; Tue, 2 Apr 2013 09:51:43 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 4C39C6A2; Tue, 2 Apr 2013 09:51:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r329phv4039516; Tue, 2 Apr 2013 09:51:43 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r329pbqc039480; Tue, 2 Apr 2013 09:51:37 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201304020951.r329pbqc039480@svn.freebsd.org> From: Gleb Smirnoff Date: Tue, 2 Apr 2013 09:51:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249013 - in projects/counters: . bin/chflags bin/ed bin/mv bin/setfacl bin/sh cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/f... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Apr 2013 09:51:43 -0000 Author: glebius Date: Tue Apr 2 09:51:36 2013 New Revision: 249013 URL: http://svnweb.freebsd.org/changeset/base/249013 Log: Merge head r243428 through r249011. Added: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.tolower.d - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.tolower.d projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.toupper.d - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.toupper.d - copied from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/err.D_TRACEMEM_ARGS.d - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/err.D_TRACEMEM_ARGS.d projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/err.D_TRACEMEM_DYNSIZE.d - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/err.D_TRACEMEM_DYNSIZE.d projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/tst.dynsize.d - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/tst.dynsize.d projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/tst.dynsize.d.out - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/tst.dynsize.d.out projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_print.c - copied unchanged from r249011, head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_print.c projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.Z.uu - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.Z.uu projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.bz2.uu - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.bz2.uu projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.grz.uu - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.grz.uu projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.gz.uu - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.gz.uu projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.lrz.uu - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.lrz.uu projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.lz.uu - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.lz.uu projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.lzma.uu - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.lzma.uu projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.lzo.uu - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.lzo.uu projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.xz.uu - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.xz.uu projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_Z.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_Z.c projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_bz2.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_bz2.c projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_grz.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_grz.c projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_gz.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_gz.c projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_lrz.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_lrz.c projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_lz.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_lz.c projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_lzma.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_lzma.c projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_lzo.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_lzo.c projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_xz.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_xz.c projects/counters/contrib/libarchive/cpio/test/test_option_b64encode.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_option_b64encode.c projects/counters/contrib/libarchive/cpio/test/test_option_grzip.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_option_grzip.c projects/counters/contrib/libarchive/cpio/test/test_option_lrzip.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_option_lrzip.c projects/counters/contrib/libarchive/cpio/test/test_option_lzop.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_option_lzop.c projects/counters/contrib/libarchive/cpio/test/test_option_uuencode.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_option_uuencode.c projects/counters/contrib/libarchive/cpio/test/test_option_xz.c - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_option_xz.c projects/counters/contrib/libarchive/libarchive/archive_cmdline.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_cmdline.c projects/counters/contrib/libarchive/libarchive/archive_cmdline_private.h - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_cmdline_private.h projects/counters/contrib/libarchive/libarchive/archive_read_append_filter.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_read_append_filter.c projects/counters/contrib/libarchive/libarchive/archive_read_set_format.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_read_set_format.c projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_grzip.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_read_support_filter_grzip.c projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_lrzip.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_read_support_filter_lrzip.c projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_by_name.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_add_filter_by_name.c projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_grzip.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_add_filter_grzip.c projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_lrzip.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_add_filter_lrzip.c projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_lzop.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_add_filter_lzop.c projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_uuencode.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_add_filter_uuencode.c projects/counters/contrib/libarchive/libarchive/archive_write_set_format_v7tar.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_set_format_v7tar.c projects/counters/contrib/libarchive/libarchive/filter_fork_posix.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/filter_fork_posix.c projects/counters/contrib/libarchive/libarchive/test/test_archive_cmdline.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_archive_cmdline.c projects/counters/contrib/libarchive/libarchive/test/test_archive_read_multiple_data_objects.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_archive_read_multiple_data_objects.c projects/counters/contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c projects/counters/contrib/libarchive/libarchive/test/test_archive_write_set_format_by_name.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_archive_write_set_format_by_name.c projects/counters/contrib/libarchive/libarchive/test/test_compat_lzop.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_compat_lzop.c projects/counters/contrib/libarchive/libarchive/test/test_compat_lzop_1.tar.lzo.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_compat_lzop_1.tar.lzo.uu projects/counters/contrib/libarchive/libarchive/test/test_compat_lzop_2.tar.lzo.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_compat_lzop_2.tar.lzo.uu projects/counters/contrib/libarchive/libarchive/test/test_compat_lzop_3.tar.lzo.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_compat_lzop_3.tar.lzo.uu projects/counters/contrib/libarchive/libarchive/test/test_compat_uudecode.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_compat_uudecode.c projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part1.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part1.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part2.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part2.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part3.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part3.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part4.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part4.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part5.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part5.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part6.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part6.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part1.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part1.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part2.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part2.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part3.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part3.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part04.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part04.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part05.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part05.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part06.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part06.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part07.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part07.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_read_filter_grzip.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_grzip.c projects/counters/contrib/libarchive/libarchive/test/test_read_filter_grzip.tar.grz.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_grzip.tar.grz.uu projects/counters/contrib/libarchive/libarchive/test/test_read_filter_lrzip.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_lrzip.c projects/counters/contrib/libarchive/libarchive/test/test_read_filter_lrzip.tar.lrz.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_lrzip.tar.lrz.uu projects/counters/contrib/libarchive/libarchive/test/test_read_filter_lzop.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_lzop.c projects/counters/contrib/libarchive/libarchive/test/test_read_filter_lzop.tar.lzo.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_lzop.tar.lzo.uu projects/counters/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.c projects/counters/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu projects/counters/contrib/libarchive/libarchive/test/test_read_filter_program.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_program.c projects/counters/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c projects/counters/contrib/libarchive/libarchive/test/test_read_filter_uudecode.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_uudecode.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic2.mtree.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic2.mtree.uu projects/counters/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic3.mtree.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic3.mtree.uu projects/counters/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_1.zip.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_1.zip.uu projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_2.zip.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_2.zip.uu projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.zip.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.zip.uu projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.uu projects/counters/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_aa.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_aa.uu projects/counters/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ab.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ab.uu projects/counters/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ac.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ac.uu projects/counters/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ad.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ad.uu projects/counters/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ae.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ae.uu projects/counters/contrib/libarchive/libarchive/test/test_read_set_format.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_set_format.c projects/counters/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu projects/counters/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu projects/counters/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu projects/counters/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu projects/counters/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_aa.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_aa.uu projects/counters/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ab.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ab.uu projects/counters/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ac.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ac.uu projects/counters/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c projects/counters/contrib/libarchive/libarchive/test/test_write_disk_appledouble.cpio.gz.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_appledouble.cpio.gz.uu projects/counters/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c projects/counters/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.tgz.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.tgz.uu projects/counters/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c projects/counters/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.tar.gz.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.tar.gz.uu projects/counters/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.c projects/counters/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.tgz.uu - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.tgz.uu projects/counters/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c projects/counters/contrib/libarchive/libarchive/test/test_write_filter_bzip2.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_bzip2.c projects/counters/contrib/libarchive/libarchive/test/test_write_filter_compress.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_compress.c projects/counters/contrib/libarchive/libarchive/test/test_write_filter_gzip.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_gzip.c projects/counters/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c projects/counters/contrib/libarchive/libarchive/test/test_write_filter_lrzip.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_lrzip.c projects/counters/contrib/libarchive/libarchive/test/test_write_filter_lzip.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_lzip.c projects/counters/contrib/libarchive/libarchive/test/test_write_filter_lzma.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_lzma.c projects/counters/contrib/libarchive/libarchive/test/test_write_filter_lzop.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_lzop.c projects/counters/contrib/libarchive/libarchive/test/test_write_filter_program.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_program.c projects/counters/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c projects/counters/contrib/libarchive/libarchive/test/test_write_filter_xz.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_xz.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree_absolute_path.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_mtree_absolute_path.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree_classic_indent.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_mtree_classic_indent.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree_no_separator.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_mtree_no_separator.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree_quoted_filename.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_mtree_quoted_filename.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c projects/counters/contrib/libarchive/libarchive/test/test_write_zip_set_compression_store.c - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_zip_set_compression_store.c projects/counters/contrib/libarchive/tar/creation_set.c - copied unchanged from r249011, head/contrib/libarchive/tar/creation_set.c projects/counters/contrib/libarchive/tar/test/test_extract.tar.Z.uu - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.Z.uu projects/counters/contrib/libarchive/tar/test/test_extract.tar.bz2.uu - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.bz2.uu projects/counters/contrib/libarchive/tar/test/test_extract.tar.grz.uu - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.grz.uu projects/counters/contrib/libarchive/tar/test/test_extract.tar.gz.uu - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.gz.uu projects/counters/contrib/libarchive/tar/test/test_extract.tar.lrz.uu - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.lrz.uu projects/counters/contrib/libarchive/tar/test/test_extract.tar.lz.uu - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.lz.uu projects/counters/contrib/libarchive/tar/test/test_extract.tar.lzma.uu - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.lzma.uu projects/counters/contrib/libarchive/tar/test/test_extract.tar.lzo.uu - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.lzo.uu projects/counters/contrib/libarchive/tar/test/test_extract.tar.xz.uu - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.xz.uu projects/counters/contrib/libarchive/tar/test/test_extract_tar_Z.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_Z.c projects/counters/contrib/libarchive/tar/test/test_extract_tar_bz2.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_bz2.c projects/counters/contrib/libarchive/tar/test/test_extract_tar_grz.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_grz.c projects/counters/contrib/libarchive/tar/test/test_extract_tar_gz.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_gz.c projects/counters/contrib/libarchive/tar/test/test_extract_tar_lrz.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_lrz.c projects/counters/contrib/libarchive/tar/test/test_extract_tar_lz.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_lz.c projects/counters/contrib/libarchive/tar/test/test_extract_tar_lzma.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_lzma.c projects/counters/contrib/libarchive/tar/test/test_extract_tar_lzo.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_lzo.c projects/counters/contrib/libarchive/tar/test/test_extract_tar_xz.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_xz.c projects/counters/contrib/libarchive/tar/test/test_option_a.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_a.c projects/counters/contrib/libarchive/tar/test/test_option_b64encode.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_b64encode.c projects/counters/contrib/libarchive/tar/test/test_option_grzip.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_grzip.c projects/counters/contrib/libarchive/tar/test/test_option_j.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_j.c projects/counters/contrib/libarchive/tar/test/test_option_lrzip.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_lrzip.c projects/counters/contrib/libarchive/tar/test/test_option_lzma.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_lzma.c projects/counters/contrib/libarchive/tar/test/test_option_lzop.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_lzop.c projects/counters/contrib/libarchive/tar/test/test_option_older_than.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_older_than.c projects/counters/contrib/libarchive/tar/test/test_option_uuencode.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_uuencode.c projects/counters/contrib/libarchive/tar/test/test_option_xz.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_xz.c projects/counters/contrib/libarchive/tar/test/test_option_z.c - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_z.c projects/counters/contrib/libarchive/test_utils/ - copied from r249011, head/contrib/libarchive/test_utils/ projects/counters/crypto/openssh/PROTOCOL.krl - copied unchanged from r249011, head/crypto/openssh/PROTOCOL.krl projects/counters/crypto/openssh/krl.c - copied unchanged from r249011, head/crypto/openssh/krl.c projects/counters/crypto/openssh/krl.h - copied unchanged from r249011, head/crypto/openssh/krl.h projects/counters/crypto/openssh/openbsd-compat/bsd-setres_id.c - copied unchanged from r249011, head/crypto/openssh/openbsd-compat/bsd-setres_id.c projects/counters/crypto/openssh/openbsd-compat/bsd-setres_id.h - copied unchanged from r249011, head/crypto/openssh/openbsd-compat/bsd-setres_id.h projects/counters/crypto/openssh/openbsd-compat/strtoull.c - copied unchanged from r249011, head/crypto/openssh/openbsd-compat/strtoull.c projects/counters/crypto/openssh/scard/ - copied from r249011, head/crypto/openssh/scard/ projects/counters/crypto/openssh/umac128.c - copied unchanged from r249011, head/crypto/openssh/umac128.c projects/counters/lib/libpmc/pmc.haswell.3 - copied unchanged from r249011, head/lib/libpmc/pmc.haswell.3 projects/counters/lib/libpmc/pmc.haswelluc.3 - copied unchanged from r249011, head/lib/libpmc/pmc.haswelluc.3 projects/counters/share/man/man4/ctl.4 - copied unchanged from r249011, head/share/man/man4/ctl.4 projects/counters/sys/arm/include/at91_gpio.h - copied unchanged from r249011, head/sys/arm/include/at91_gpio.h projects/counters/sys/mips/atheros/ar933x_chip.c - copied unchanged from r249011, head/sys/mips/atheros/ar933x_chip.c projects/counters/sys/mips/atheros/ar933x_chip.h - copied unchanged from r249011, head/sys/mips/atheros/ar933x_chip.h projects/counters/sys/mips/atheros/ar933x_uart.h - copied unchanged from r249011, head/sys/mips/atheros/ar933x_uart.h projects/counters/sys/mips/atheros/ar933xreg.h - copied unchanged from r249011, head/sys/mips/atheros/ar933xreg.h projects/counters/sys/mips/atheros/uart_bus_ar933x.c - copied unchanged from r249011, head/sys/mips/atheros/uart_bus_ar933x.c projects/counters/sys/mips/atheros/uart_cpu_ar933x.c - copied unchanged from r249011, head/sys/mips/atheros/uart_cpu_ar933x.c projects/counters/sys/mips/atheros/uart_dev_ar933x.c - copied unchanged from r249011, head/sys/mips/atheros/uart_dev_ar933x.c projects/counters/sys/mips/atheros/uart_dev_ar933x.h - copied unchanged from r249011, head/sys/mips/atheros/uart_dev_ar933x.h projects/counters/sys/mips/conf/AP121 - copied unchanged from r249011, head/sys/mips/conf/AP121 projects/counters/sys/mips/conf/AP121.hints - copied unchanged from r249011, head/sys/mips/conf/AP121.hints projects/counters/sys/mips/conf/AR933X_BASE - copied unchanged from r249011, head/sys/mips/conf/AR933X_BASE projects/counters/sys/mips/conf/AR933X_BASE.hints - copied unchanged from r249011, head/sys/mips/conf/AR933X_BASE.hints projects/counters/sys/modules/ctl/ - copied from r249011, head/sys/modules/ctl/ projects/counters/sys/modules/cxgbe/t4_firmware/ - copied from r249011, head/sys/modules/cxgbe/t4_firmware/ projects/counters/tools/tools/ath/athalq/ar9300_ds.c - copied unchanged from r249011, head/tools/tools/ath/athalq/ar9300_ds.c projects/counters/tools/tools/ath/athalq/ar9300_ds.h - copied unchanged from r249011, head/tools/tools/ath/athalq/ar9300_ds.h projects/counters/tools/tools/cxgbetool/reg_defs_t5.c - copied unchanged from r249011, head/tools/tools/cxgbetool/reg_defs_t5.c projects/counters/tools/tools/shlib-compat/ - copied from r249011, head/tools/tools/shlib-compat/ projects/counters/usr.bin/unifdef/unifdef.h - copied unchanged from r249011, head/usr.bin/unifdef/unifdef.h Directory Properties: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/ (props changed) Deleted: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/err.D_PROTO_LEN.toomany.d projects/counters/contrib/libarchive/libarchive/filter_fork.c projects/counters/contrib/libarchive/libarchive/test/test_acl_freebsd.c projects/counters/contrib/libarchive/libarchive/test/test_read_compress_program.c projects/counters/contrib/libarchive/libarchive/test/test_read_uu.c projects/counters/contrib/libarchive/libarchive/test/test_write_compress.c projects/counters/contrib/libarchive/libarchive/test/test_write_compress_bzip2.c projects/counters/contrib/libarchive/libarchive/test/test_write_compress_gzip.c projects/counters/contrib/libarchive/libarchive/test/test_write_compress_lzip.c projects/counters/contrib/libarchive/libarchive/test/test_write_compress_lzma.c projects/counters/contrib/libarchive/libarchive/test/test_write_compress_program.c projects/counters/contrib/libarchive/libarchive/test/test_write_compress_xz.c projects/counters/crypto/openssh/acss.c projects/counters/crypto/openssh/acss.h projects/counters/crypto/openssh/cipher-acss.c projects/counters/sys/modules/cxgbe/firmware/ Modified: projects/counters/MAINTAINERS (contents, props changed) projects/counters/Makefile projects/counters/Makefile.inc1 projects/counters/ObsoleteFiles.inc projects/counters/bin/chflags/chflags.c projects/counters/bin/ed/cbc.c projects/counters/bin/mv/mv.c projects/counters/bin/setfacl/setfacl.1 projects/counters/bin/sh/exec.c projects/counters/bin/sh/expand.c projects/counters/bin/sh/input.c projects/counters/bin/sh/input.h projects/counters/bin/sh/jobs.c projects/counters/bin/sh/main.c projects/counters/bin/sh/memalloc.c projects/counters/bin/sh/memalloc.h projects/counters/bin/sh/parser.c projects/counters/bin/sh/parser.h projects/counters/bin/sh/sh.1 projects/counters/bin/sh/trap.c projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pointers/err.InvalidAddress5.d projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dof.c projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_map.c projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_pragma.c projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_program.c projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h projects/counters/cddl/contrib/opensolaris/tools/ctf/cvt/input.c projects/counters/cddl/lib/libdtrace/Makefile projects/counters/contrib/bind9/CHANGES projects/counters/contrib/bind9/config.h.in projects/counters/contrib/bind9/configure.in projects/counters/contrib/bind9/version projects/counters/contrib/binutils/bfd/dwarf2.c projects/counters/contrib/binutils/binutils/dwarf.c projects/counters/contrib/libarchive/NEWS projects/counters/contrib/libarchive/README projects/counters/contrib/libarchive/cpio/bsdcpio.1 projects/counters/contrib/libarchive/cpio/cmdline.c projects/counters/contrib/libarchive/cpio/cpio.c projects/counters/contrib/libarchive/cpio/cpio.h projects/counters/contrib/libarchive/cpio/test/main.c projects/counters/contrib/libarchive/cpio/test/test.h projects/counters/contrib/libarchive/cpio/test/test_basic.c projects/counters/contrib/libarchive/cpio/test/test_format_newc.c projects/counters/contrib/libarchive/cpio/test/test_option_y.c projects/counters/contrib/libarchive/cpio/test/test_option_z.c projects/counters/contrib/libarchive/libarchive/archive.h projects/counters/contrib/libarchive/libarchive/archive_crypto.c projects/counters/contrib/libarchive/libarchive/archive_entry.c projects/counters/contrib/libarchive/libarchive/archive_entry.h projects/counters/contrib/libarchive/libarchive/archive_entry_link_resolver.c projects/counters/contrib/libarchive/libarchive/archive_match.c projects/counters/contrib/libarchive/libarchive/archive_options.c projects/counters/contrib/libarchive/libarchive/archive_ppmd7.c projects/counters/contrib/libarchive/libarchive/archive_private.h projects/counters/contrib/libarchive/libarchive/archive_rb.c projects/counters/contrib/libarchive/libarchive/archive_read.c projects/counters/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c projects/counters/contrib/libarchive/libarchive/archive_read_disk_posix.c projects/counters/contrib/libarchive/libarchive/archive_read_extract.c projects/counters/contrib/libarchive/libarchive/archive_read_open_fd.c projects/counters/contrib/libarchive/libarchive/archive_read_open_file.c projects/counters/contrib/libarchive/libarchive/archive_read_open_filename.c projects/counters/contrib/libarchive/libarchive/archive_read_private.h projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_all.c projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_bzip2.c projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_compress.c projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_gzip.c projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_program.c projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_rpm.c projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_uu.c projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_xz.c projects/counters/contrib/libarchive/libarchive/archive_read_support_format_7zip.c projects/counters/contrib/libarchive/libarchive/archive_read_support_format_ar.c projects/counters/contrib/libarchive/libarchive/archive_read_support_format_cab.c projects/counters/contrib/libarchive/libarchive/archive_read_support_format_cpio.c projects/counters/contrib/libarchive/libarchive/archive_read_support_format_empty.c projects/counters/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c projects/counters/contrib/libarchive/libarchive/archive_read_support_format_lha.c projects/counters/contrib/libarchive/libarchive/archive_read_support_format_mtree.c projects/counters/contrib/libarchive/libarchive/archive_read_support_format_rar.c projects/counters/contrib/libarchive/libarchive/archive_read_support_format_raw.c projects/counters/contrib/libarchive/libarchive/archive_read_support_format_tar.c projects/counters/contrib/libarchive/libarchive/archive_read_support_format_xar.c projects/counters/contrib/libarchive/libarchive/archive_read_support_format_zip.c projects/counters/contrib/libarchive/libarchive/archive_string.c projects/counters/contrib/libarchive/libarchive/archive_util.c projects/counters/contrib/libarchive/libarchive/archive_virtual.c projects/counters/contrib/libarchive/libarchive/archive_write.c projects/counters/contrib/libarchive/libarchive/archive_write_add_filter.c projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_bzip2.c projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_compress.c projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_gzip.c projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_program.c projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_xz.c projects/counters/contrib/libarchive/libarchive/archive_write_disk_acl.c projects/counters/contrib/libarchive/libarchive/archive_write_disk_posix.c projects/counters/contrib/libarchive/libarchive/archive_write_free.3 projects/counters/contrib/libarchive/libarchive/archive_write_open_filename.c projects/counters/contrib/libarchive/libarchive/archive_write_private.h projects/counters/contrib/libarchive/libarchive/archive_write_set_format_7zip.c projects/counters/contrib/libarchive/libarchive/archive_write_set_format_ar.c projects/counters/contrib/libarchive/libarchive/archive_write_set_format_by_name.c projects/counters/contrib/libarchive/libarchive/archive_write_set_format_iso9660.c projects/counters/contrib/libarchive/libarchive/archive_write_set_format_mtree.c projects/counters/contrib/libarchive/libarchive/archive_write_set_format_pax.c projects/counters/contrib/libarchive/libarchive/archive_write_set_format_xar.c projects/counters/contrib/libarchive/libarchive/archive_write_set_format_zip.c projects/counters/contrib/libarchive/libarchive/archive_write_set_options.c projects/counters/contrib/libarchive/libarchive/filter_fork.h projects/counters/contrib/libarchive/libarchive/libarchive-formats.5 projects/counters/contrib/libarchive/libarchive/test/main.c projects/counters/contrib/libarchive/libarchive/test/test.h projects/counters/contrib/libarchive/libarchive/test/test_acl_freebsd_nfs4.c projects/counters/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c projects/counters/contrib/libarchive/libarchive/test/test_acl_nfs4.c projects/counters/contrib/libarchive/libarchive/test/test_acl_pax.c projects/counters/contrib/libarchive/libarchive/test/test_acl_posix1e.c projects/counters/contrib/libarchive/libarchive/test/test_archive_clear_error.c projects/counters/contrib/libarchive/libarchive/test/test_archive_read_close_twice.c projects/counters/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_fd.c projects/counters/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_filename.c projects/counters/contrib/libarchive/libarchive/test/test_archive_read_set_filter_option.c projects/counters/contrib/libarchive/libarchive/test/test_archive_read_set_format_option.c projects/counters/contrib/libarchive/libarchive/test/test_archive_read_set_option.c projects/counters/contrib/libarchive/libarchive/test/test_archive_read_set_options.c projects/counters/contrib/libarchive/libarchive/test/test_archive_set_error.c projects/counters/contrib/libarchive/libarchive/test/test_archive_write_set_filter_option.c projects/counters/contrib/libarchive/libarchive/test/test_archive_write_set_format_option.c projects/counters/contrib/libarchive/libarchive/test/test_archive_write_set_option.c projects/counters/contrib/libarchive/libarchive/test/test_archive_write_set_options.c projects/counters/contrib/libarchive/libarchive/test/test_compat_bzip2.c projects/counters/contrib/libarchive/libarchive/test/test_compat_cpio.c projects/counters/contrib/libarchive/libarchive/test/test_compat_gtar.c projects/counters/contrib/libarchive/libarchive/test/test_compat_gzip.c projects/counters/contrib/libarchive/libarchive/test/test_compat_lzip.c projects/counters/contrib/libarchive/libarchive/test/test_compat_lzma.c projects/counters/contrib/libarchive/libarchive/test/test_compat_mac.c projects/counters/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c projects/counters/contrib/libarchive/libarchive/test/test_compat_xz.c projects/counters/contrib/libarchive/libarchive/test/test_compat_zip.c projects/counters/contrib/libarchive/libarchive/test/test_empty_write.c projects/counters/contrib/libarchive/libarchive/test/test_entry.c projects/counters/contrib/libarchive/libarchive/test/test_extattr_freebsd.c projects/counters/contrib/libarchive/libarchive/test/test_filter_count.c projects/counters/contrib/libarchive/libarchive/test/test_fuzz.c projects/counters/contrib/libarchive/libarchive/test/test_open_failure.c projects/counters/contrib/libarchive/libarchive/test/test_open_fd.c projects/counters/contrib/libarchive/libarchive/test/test_open_file.c projects/counters/contrib/libarchive/libarchive/test/test_open_filename.c projects/counters/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c projects/counters/contrib/libarchive/libarchive/test/test_read_data_large.c projects/counters/contrib/libarchive/libarchive/test/test_read_disk.c projects/counters/contrib/libarchive/libarchive/test/test_read_extract.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_7zip.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_ar.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cab.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cab_filename.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_Z.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_bz2.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_gz.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzip.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzma.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_xz.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_filename.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_odc.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4c_Z.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_empty.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_gtar_gz.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_gtar_lzma.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_iso_Z.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_iso_xorriso.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_isojoliet_bz2.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_isojoliet_long.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_isojoliet_rr.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_isojoliet_versioned.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_isorr_bz2.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_isorr_ce.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_isorr_new_bz2.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_isorr_rr_moved.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_isozisofs_bz2.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_lha.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_lha_filename.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_mtree.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_pax_bz2.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_rar.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_tar.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_tbz.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_tgz.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_tlz.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_txz.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_tz.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_xar.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip.c projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_filename.c projects/counters/contrib/libarchive/libarchive/test/test_read_pax_truncated.c projects/counters/contrib/libarchive/libarchive/test/test_read_truncated.c projects/counters/contrib/libarchive/libarchive/test/test_read_truncated_filter.c projects/counters/contrib/libarchive/libarchive/test/test_sparse_basic.c projects/counters/contrib/libarchive/libarchive/test/test_tar_filenames.c projects/counters/contrib/libarchive/libarchive/test/test_ustar_filenames.c projects/counters/contrib/libarchive/libarchive/test/test_write_disk_sparse.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_7zip.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_ar.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_cpio.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_cpio_empty.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_cpio_newc.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_cpio_odc.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_gnutar.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_iso9660.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_iso9660_boot.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_iso9660_empty.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_iso9660_filename.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_iso9660_zisofs.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree_fflags.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_pax.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_shar_empty.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_tar.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_tar_empty.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_tar_sparse.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_tar_ustar.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_xar.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_xar_empty.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_zip.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c projects/counters/contrib/libarchive/libarchive/test/test_write_format_zip_no_compression.c projects/counters/contrib/libarchive/libarchive/test/test_write_open_memory.c projects/counters/contrib/libarchive/tar/bsdtar.1 projects/counters/contrib/libarchive/tar/bsdtar.c projects/counters/contrib/libarchive/tar/bsdtar.h projects/counters/contrib/libarchive/tar/cmdline.c projects/counters/contrib/libarchive/tar/read.c projects/counters/contrib/libarchive/tar/subst.c projects/counters/contrib/libarchive/tar/test/main.c projects/counters/contrib/libarchive/tar/test/test.h projects/counters/contrib/libarchive/tar/test/test_copy.c projects/counters/contrib/libarchive/tar/test/test_option_newer_than.c projects/counters/contrib/libarchive/tar/test/test_option_r.c projects/counters/contrib/libarchive/tar/test/test_stdio.c projects/counters/contrib/libarchive/tar/util.c projects/counters/contrib/libarchive/tar/write.c projects/counters/contrib/openbsm/etc/audit_event projects/counters/crypto/openssh/ChangeLog projects/counters/crypto/openssh/FREEBSD-upgrade projects/counters/crypto/openssh/INSTALL projects/counters/crypto/openssh/PROTOCOL projects/counters/crypto/openssh/PROTOCOL.agent projects/counters/crypto/openssh/README projects/counters/crypto/openssh/auth-options.c projects/counters/crypto/openssh/auth-rsa.c projects/counters/crypto/openssh/auth.c projects/counters/crypto/openssh/auth.h projects/counters/crypto/openssh/auth1.c projects/counters/crypto/openssh/auth2-chall.c projects/counters/crypto/openssh/auth2-gss.c projects/counters/crypto/openssh/auth2-jpake.c projects/counters/crypto/openssh/auth2-pubkey.c projects/counters/crypto/openssh/auth2.c projects/counters/crypto/openssh/authfile.c projects/counters/crypto/openssh/channels.c projects/counters/crypto/openssh/cipher-aes.c projects/counters/crypto/openssh/cipher-ctr.c projects/counters/crypto/openssh/cipher.c projects/counters/crypto/openssh/cipher.h projects/counters/crypto/openssh/clientloop.c projects/counters/crypto/openssh/clientloop.h projects/counters/crypto/openssh/compat.c projects/counters/crypto/openssh/config.h projects/counters/crypto/openssh/config.h.in projects/counters/crypto/openssh/defines.h projects/counters/crypto/openssh/includes.h projects/counters/crypto/openssh/kex.c projects/counters/crypto/openssh/kex.h projects/counters/crypto/openssh/key.c projects/counters/crypto/openssh/key.h projects/counters/crypto/openssh/log.c projects/counters/crypto/openssh/log.h projects/counters/crypto/openssh/loginrec.c projects/counters/crypto/openssh/mac.c projects/counters/crypto/openssh/moduli projects/counters/crypto/openssh/moduli.5 projects/counters/crypto/openssh/monitor.c projects/counters/crypto/openssh/monitor.h projects/counters/crypto/openssh/monitor_wrap.c projects/counters/crypto/openssh/mux.c projects/counters/crypto/openssh/myproposal.h projects/counters/crypto/openssh/openbsd-compat/bsd-misc.c projects/counters/crypto/openssh/openbsd-compat/bsd-misc.h projects/counters/crypto/openssh/openbsd-compat/openbsd-compat.h projects/counters/crypto/openssh/openbsd-compat/openssl-compat.h projects/counters/crypto/openssh/openbsd-compat/sys-queue.h projects/counters/crypto/openssh/openbsd-compat/sys-tree.h projects/counters/crypto/openssh/openbsd-compat/vis.c projects/counters/crypto/openssh/openbsd-compat/vis.h projects/counters/crypto/openssh/packet.c projects/counters/crypto/openssh/platform.c projects/counters/crypto/openssh/platform.h projects/counters/crypto/openssh/scp.1 projects/counters/crypto/openssh/scp.c projects/counters/crypto/openssh/servconf.c projects/counters/crypto/openssh/servconf.h projects/counters/crypto/openssh/serverloop.c projects/counters/crypto/openssh/session.c projects/counters/crypto/openssh/sftp-server.8 projects/counters/crypto/openssh/sftp-server.c projects/counters/crypto/openssh/sftp.1 projects/counters/crypto/openssh/sftp.c projects/counters/crypto/openssh/ssh-add.1 projects/counters/crypto/openssh/ssh-add.c projects/counters/crypto/openssh/ssh-gss.h projects/counters/crypto/openssh/ssh-keygen.1 projects/counters/crypto/openssh/ssh-keygen.c projects/counters/crypto/openssh/ssh-keyscan.1 projects/counters/crypto/openssh/ssh.1 projects/counters/crypto/openssh/ssh_config projects/counters/crypto/openssh/ssh_config.5 projects/counters/crypto/openssh/ssh_namespace.h projects/counters/crypto/openssh/sshconnect.c projects/counters/crypto/openssh/sshconnect2.c projects/counters/crypto/openssh/sshd.8 projects/counters/crypto/openssh/sshd.c projects/counters/crypto/openssh/sshd_config projects/counters/crypto/openssh/sshd_config.5 projects/counters/crypto/openssh/uidswap.c projects/counters/crypto/openssh/umac.c projects/counters/crypto/openssh/umac.h projects/counters/crypto/openssh/version.h projects/counters/etc/mtree/BSD.usr.dist projects/counters/etc/rc.d/sysctl projects/counters/etc/rc.subr projects/counters/gnu/lib/libsupc++/Makefile projects/counters/gnu/usr.bin/gdb/kgdb/kld.c projects/counters/lib/bind/config.h projects/counters/lib/bind/dns/code.h projects/counters/lib/bind/dns/dns/enumclass.h projects/counters/lib/bind/dns/dns/enumtype.h projects/counters/lib/bind/dns/dns/rdatastruct.h projects/counters/lib/libarchive/Makefile projects/counters/lib/libarchive/config_freebsd.h projects/counters/lib/libarchive/test/Makefile projects/counters/lib/libc/gen/wordexp.c projects/counters/lib/libc/locale/btowc.3 projects/counters/lib/libc/locale/isblank.3 projects/counters/lib/libc/stdtime/Makefile.inc projects/counters/lib/libc/sys/Makefile.inc projects/counters/lib/libc/sys/Symbol.map projects/counters/lib/libc/sys/accept.2 projects/counters/lib/libc/sys/cap_rights_limit.2 projects/counters/lib/libc/sys/chflags.2 projects/counters/lib/libc/sys/extattr_get_file.2 projects/counters/lib/libc/sys/posix_openpt.2 projects/counters/lib/libdwarf/dwarf_die.c projects/counters/lib/libpmc/Makefile projects/counters/lib/libpmc/libpmc.c projects/counters/lib/libpmc/pmc.sandybridgexeon.3 projects/counters/release/doc/en_US.ISO8859-1/hardware/article.xml projects/counters/sbin/dumpfs/dumpfs.c projects/counters/sbin/fsck_ffs/fsck.h projects/counters/sbin/fsck_ffs/fsutil.c projects/counters/sbin/fsck_ffs/inode.c projects/counters/sbin/fsck_ffs/pass1.c projects/counters/sbin/fsck_ffs/pass5.c projects/counters/sbin/fsck_ffs/setup.c projects/counters/sbin/fsck_ffs/suj.c projects/counters/sbin/fsdb/fsdb.c projects/counters/sbin/geom/class/eli/geli.8 projects/counters/sbin/newfs/mkfs.c projects/counters/sbin/newfs/newfs.8 projects/counters/sbin/newfs/newfs.c projects/counters/sbin/newfs/newfs.h projects/counters/sbin/nvmecontrol/nvmecontrol.8 projects/counters/sbin/nvmecontrol/nvmecontrol.c projects/counters/sbin/tunefs/tunefs.8 projects/counters/sbin/tunefs/tunefs.c projects/counters/secure/lib/libssh/Makefile projects/counters/secure/libexec/ssh-keysign/Makefile projects/counters/share/examples/bhyve/vmrun.sh projects/counters/share/examples/etc/make.conf projects/counters/share/man/man4/Makefile projects/counters/share/man/man5/make.conf.5 projects/counters/share/man/man9/taskqueue.9 projects/counters/share/misc/committers-ports.dot projects/counters/share/mk/bsd.lib.mk projects/counters/share/mk/bsd.own.mk projects/counters/share/mk/bsd.prog.mk projects/counters/sys/amd64/include/vmm_instruction_emul.h (contents, props changed) projects/counters/sys/amd64/vmm/intel/vmx.c projects/counters/sys/amd64/vmm/io/vlapic.c projects/counters/sys/amd64/vmm/vmm_instruction_emul.c projects/counters/sys/amd64/vmm/vmm_stat.c projects/counters/sys/amd64/vmm/vmm_stat.h projects/counters/sys/arm/arm/busdma_machdep-v6.c projects/counters/sys/arm/arm/locore.S projects/counters/sys/arm/at91/at91_machdep.c projects/counters/sys/arm/at91/at91_mci.c projects/counters/sys/arm/at91/at91_pio.c projects/counters/sys/arm/at91/at91_piovar.h projects/counters/sys/arm/at91/at91_pmc.c projects/counters/sys/arm/at91/at91rm9200.c projects/counters/sys/arm/at91/at91rm9200_devices.c projects/counters/sys/arm/at91/uart_dev_at91usart.c projects/counters/sys/arm/include/machdep.h projects/counters/sys/arm/s3c2xx0/uart_dev_s3c2410.c projects/counters/sys/arm/sa11x0/uart_dev_sa1110.c projects/counters/sys/boot/arm/uboot/start.S projects/counters/sys/boot/fdt/fdt_loader_cmd.c projects/counters/sys/bsm/audit_kevents.h projects/counters/sys/cam/ata/ata_all.c projects/counters/sys/cam/ata/ata_da.c projects/counters/sys/cam/cam.c projects/counters/sys/cam/cam.h projects/counters/sys/cam/cam_periph.c projects/counters/sys/cam/cam_periph.h projects/counters/sys/cam/cam_sim.c projects/counters/sys/cam/ctl/README.ctl.txt projects/counters/sys/cam/ctl/ctl.c projects/counters/sys/cam/ctl/ctl_frontend_cam_sim.c projects/counters/sys/cam/ctl/ctl_frontend_internal.c projects/counters/sys/cam/ctl/scsi_ctl.c projects/counters/sys/cam/scsi/scsi_all.c projects/counters/sys/cam/scsi/scsi_all.h projects/counters/sys/cam/scsi/scsi_da.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace_impl.h projects/counters/sys/cddl/dev/fbt/fbt.c projects/counters/sys/compat/freebsd32/freebsd32_proto.h projects/counters/sys/compat/freebsd32/freebsd32_syscall.h projects/counters/sys/compat/freebsd32/freebsd32_syscalls.c projects/counters/sys/compat/freebsd32/freebsd32_sysent.c projects/counters/sys/compat/freebsd32/freebsd32_systrace_args.c projects/counters/sys/compat/freebsd32/syscalls.master projects/counters/sys/compat/linux/linux_file.c projects/counters/sys/conf/NOTES projects/counters/sys/conf/files projects/counters/sys/dev/ahci/ahci.c projects/counters/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_domains.h projects/counters/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_regmap.h projects/counters/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c projects/counters/sys/dev/ath/if_ath.c projects/counters/sys/dev/ath/if_ath_beacon.c projects/counters/sys/dev/ath/if_ath_beacon.h projects/counters/sys/dev/ath/if_ath_misc.h projects/counters/sys/dev/ath/if_ath_rx.c projects/counters/sys/dev/ath/if_ath_rx_edma.c projects/counters/sys/dev/ath/if_ath_sysctl.c projects/counters/sys/dev/ath/if_ath_tdma.c projects/counters/sys/dev/ath/if_ath_tx.c projects/counters/sys/dev/ath/if_ath_tx_edma.c projects/counters/sys/dev/ath/if_athvar.h projects/counters/sys/dev/bge/if_bge.c projects/counters/sys/dev/ciss/ciss.c projects/counters/sys/dev/cxgbe/adapter.h projects/counters/sys/dev/cxgbe/common/common.h projects/counters/sys/dev/cxgbe/common/t4_hw.c projects/counters/sys/dev/cxgbe/common/t4_hw.h projects/counters/sys/dev/cxgbe/common/t4_msg.h projects/counters/sys/dev/cxgbe/common/t4_regs.h projects/counters/sys/dev/cxgbe/osdep.h projects/counters/sys/dev/cxgbe/t4_ioctl.h projects/counters/sys/dev/cxgbe/t4_main.c projects/counters/sys/dev/cxgbe/t4_sge.c projects/counters/sys/dev/cxgbe/tom/t4_connect.c projects/counters/sys/dev/cxgbe/tom/t4_cpl_io.c projects/counters/sys/dev/cxgbe/tom/t4_ddp.c projects/counters/sys/dev/cxgbe/tom/t4_listen.c projects/counters/sys/dev/cxgbe/tom/t4_tom.c projects/counters/sys/dev/cxgbe/tom/t4_tom.h projects/counters/sys/dev/drm2/ttm/ttm_bo_util.c projects/counters/sys/dev/drm2/ttm/ttm_bo_vm.c projects/counters/sys/dev/drm2/ttm/ttm_memory.c projects/counters/sys/dev/e1000/if_igb.c projects/counters/sys/dev/e1000/if_igb.h projects/counters/sys/dev/fb/vesa.c projects/counters/sys/dev/hwpmc/hwpmc_core.c projects/counters/sys/dev/hwpmc/hwpmc_intel.c projects/counters/sys/dev/hwpmc/hwpmc_uncore.c projects/counters/sys/dev/hwpmc/pmc_events.h projects/counters/sys/dev/ipmi/ipmi_kcs.c projects/counters/sys/dev/ipmi/ipmi_smic.c projects/counters/sys/dev/isci/isci_controller.c projects/counters/sys/dev/isci/isci_io_request.c projects/counters/sys/dev/ixgbe/ixgbe.c projects/counters/sys/dev/mfi/mfi_disk.c projects/counters/sys/dev/mmc/mmc.c projects/counters/sys/dev/mmc/mmcsd.c projects/counters/sys/dev/mps/mps_sas.c projects/counters/sys/dev/nvd/nvd.c projects/counters/sys/dev/nvme/nvme.c projects/counters/sys/dev/nvme/nvme.h projects/counters/sys/dev/nvme/nvme_ctrlr.c projects/counters/sys/dev/nvme/nvme_ctrlr_cmd.c projects/counters/sys/dev/nvme/nvme_ns.c projects/counters/sys/dev/nvme/nvme_ns_cmd.c projects/counters/sys/dev/nvme/nvme_private.h projects/counters/sys/dev/nvme/nvme_qpair.c projects/counters/sys/dev/nvme/nvme_sysctl.c projects/counters/sys/dev/nvme/nvme_test.c projects/counters/sys/dev/nvme/nvme_uio.c projects/counters/sys/dev/sound/pci/hda/hdaa_patches.c projects/counters/sys/dev/tws/tws_cam.c projects/counters/sys/dev/tws/tws_user.c projects/counters/sys/dev/uart/uart_core.c projects/counters/sys/dev/uart/uart_dev_imx.c projects/counters/sys/dev/uart/uart_dev_pl011.c projects/counters/sys/dev/uart/uart_dev_quicc.c projects/counters/sys/dev/uart/uart_dev_sab82532.c projects/counters/sys/dev/uart/uart_dev_z8530.c projects/counters/sys/fs/nfsclient/nfs_clbio.c projects/counters/sys/fs/tmpfs/tmpfs.h projects/counters/sys/fs/tmpfs/tmpfs_subr.c projects/counters/sys/fs/tmpfs/tmpfs_vnops.c projects/counters/sys/geom/gate/g_gate.c projects/counters/sys/geom/geom_dev.c projects/counters/sys/geom/geom_disk.c projects/counters/sys/geom/geom_event.c projects/counters/sys/geom/geom_int.h projects/counters/sys/geom/geom_io.c projects/counters/sys/geom/geom_slice.c projects/counters/sys/geom/geom_subr.c projects/counters/sys/geom/multipath/g_multipath.c projects/counters/sys/geom/nop/g_nop.c projects/counters/sys/geom/raid/tr_raid1e.c projects/counters/sys/i386/include/param.h projects/counters/sys/kern/capabilities.conf projects/counters/sys/kern/init_sysent.c projects/counters/sys/kern/kern_physio.c projects/counters/sys/kern/kern_timeout.c projects/counters/sys/kern/kern_umtx.c projects/counters/sys/kern/subr_bus_dma.c projects/counters/sys/kern/subr_taskqueue.c projects/counters/sys/kern/sys_pipe.c projects/counters/sys/kern/syscalls.c projects/counters/sys/kern/syscalls.master projects/counters/sys/kern/systrace_args.c projects/counters/sys/kern/tty_pts.c projects/counters/sys/kern/uipc_mbuf.c projects/counters/sys/kern/uipc_sockbuf.c projects/counters/sys/kern/uipc_socket.c projects/counters/sys/kern/uipc_syscalls.c projects/counters/sys/kern/vfs_aio.c projects/counters/sys/kern/vfs_bio.c projects/counters/sys/kern/vfs_extattr.c projects/counters/sys/kern/vfs_lookup.c projects/counters/sys/kern/vfs_mountroot.c projects/counters/sys/kern/vfs_syscalls.c projects/counters/sys/kern/vfs_vnops.c projects/counters/sys/mips/adm5120/uart_dev_adm5120.c projects/counters/sys/mips/atheros/ar71xx_chip.c projects/counters/sys/mips/atheros/ar71xx_cpudef.h projects/counters/sys/mips/atheros/ar71xx_machdep.c projects/counters/sys/mips/atheros/ar71xx_setup.c projects/counters/sys/mips/atheros/ar724x_chip.c projects/counters/sys/mips/atheros/ar91xx_chip.c projects/counters/sys/mips/atheros/files.ar71xx projects/counters/sys/mips/rt305x/uart_dev_rt305x.c projects/counters/sys/modules/Makefile projects/counters/sys/modules/cxgbe/Makefile projects/counters/sys/modules/dtrace/dtrace/Makefile projects/counters/sys/modules/igb/Makefile projects/counters/sys/net/if_arcsubr.c projects/counters/sys/net/if_bridge.c projects/counters/sys/net/if_lagg.c projects/counters/sys/net/if_lagg.h projects/counters/sys/netgraph/netflow/netflow.c projects/counters/sys/netgraph/netflow/ng_netflow.c projects/counters/sys/netgraph/ng_ksocket.c projects/counters/sys/netinet/sctp_constants.h projects/counters/sys/netinet/tcp_input.c projects/counters/sys/netinet6/in6_proto.c projects/counters/sys/netinet6/nd6.c projects/counters/sys/netpfil/ipfw/ip_fw_sockopt.c projects/counters/sys/sparc64/pci/sbbc.c projects/counters/sys/sys/bio.h projects/counters/sys/sys/bus_dma.h projects/counters/sys/sys/capability.h projects/counters/sys/sys/conf.h projects/counters/sys/sys/extattr.h projects/counters/sys/sys/pmc.h projects/counters/sys/sys/socket.h projects/counters/sys/sys/stat.h projects/counters/sys/sys/syscall.h projects/counters/sys/sys/syscall.mk projects/counters/sys/sys/syscallsubr.h projects/counters/sys/sys/sysproto.h projects/counters/sys/sys/taskqueue.h projects/counters/sys/ufs/ffs/ffs_alloc.c projects/counters/sys/ufs/ffs/ffs_balloc.c projects/counters/sys/ufs/ffs/fs.h projects/counters/sys/vm/vm_mmap.c projects/counters/sys/vm/vm_radix.c projects/counters/sys/x86/x86/busdma_machdep.c projects/counters/tools/regression/lib/libc/gen/test-wordexp.c projects/counters/tools/regression/pjdfstest/Makefile projects/counters/tools/regression/pjdfstest/pjdfstest.c projects/counters/tools/regression/security/cap_test/cap_test_capabilities.c projects/counters/tools/tools/ath/athstats/athstats.c projects/counters/tools/tools/cxgbetool/cxgbetool.c projects/counters/tools/tools/tinybsd/conf/firewall/TINYBSD projects/counters/usr.bin/ar/Makefile projects/counters/usr.bin/ar/acpyacc.y projects/counters/usr.bin/ar/read.c projects/counters/usr.bin/ar/write.c projects/counters/usr.bin/cpio/Makefile projects/counters/usr.bin/cpio/test/Makefile projects/counters/usr.bin/ctlstat/ctlstat.8 projects/counters/usr.bin/systat/vmstat.c projects/counters/usr.bin/tar/Makefile projects/counters/usr.bin/tar/test/Makefile projects/counters/usr.bin/unifdef/unifdef.1 projects/counters/usr.bin/unifdef/unifdef.c projects/counters/usr.bin/unifdef/unifdefall.sh projects/counters/usr.bin/unzip/unzip.c projects/counters/usr.sbin/bhyvectl/bhyvectl.c projects/counters/usr.sbin/bsdinstall/distextract/distextract.c projects/counters/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_storage_tbl.c projects/counters/usr.sbin/config/main.c projects/counters/usr.sbin/ctladm/ctladm.8 projects/counters/usr.sbin/extattr/rmextattr.c projects/counters/usr.sbin/jail/command.c projects/counters/usr.sbin/jail/config.c projects/counters/usr.sbin/jail/jailp.h projects/counters/usr.sbin/newsyslog/newsyslog.c projects/counters/usr.sbin/watchdogd/watchdogd.8 projects/counters/usr.sbin/watchdogd/watchdogd.c Directory Properties: projects/counters/ (props changed) projects/counters/cddl/ (props changed) projects/counters/cddl/contrib/opensolaris/ (props changed) projects/counters/contrib/bind9/ (props changed) projects/counters/contrib/binutils/ (props changed) projects/counters/contrib/libarchive/ (props changed) projects/counters/contrib/libarchive/cpio/ (props changed) projects/counters/contrib/libarchive/libarchive/ (props changed) projects/counters/contrib/libarchive/tar/ (props changed) projects/counters/contrib/openbsm/ (props changed) projects/counters/crypto/openssh/ (props changed) projects/counters/gnu/lib/ (props changed) projects/counters/gnu/usr.bin/gdb/ (props changed) projects/counters/lib/libc/ (props changed) projects/counters/lib/libc/stdtime/ (props changed) projects/counters/sbin/ (props changed) projects/counters/share/man/man4/ (props changed) projects/counters/sys/ (props changed) projects/counters/sys/amd64/vmm/ (props changed) projects/counters/sys/boot/ (props changed) projects/counters/sys/cddl/contrib/opensolaris/ (props changed) projects/counters/sys/conf/ (props changed) projects/counters/usr.sbin/bhyvectl/ (props changed) projects/counters/usr.sbin/jail/ (props changed) Modified: projects/counters/MAINTAINERS ============================================================================== --- projects/counters/MAINTAINERS Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/MAINTAINERS Tue Apr 2 09:51:36 2013 (r249013) @@ -30,7 +30,8 @@ contrib/openbsm rwatson Pre-commit revie sys/security/audit rwatson Pre-commit review requested. ahc(4) gibbs Pre-commit review requested. ahd(4) gibbs Pre-commit review requested. -NEWCARD imp Pre-commit review requested. +PC Card imp Pre-commit review requested. +CardBus imp Pre-commit review requested. pci bus imp,jhb Pre-commit review requested. cdboot jhb Pre-commit review requested. pxeboot jhb Pre-commit review requested. Modified: projects/counters/Makefile ============================================================================== --- projects/counters/Makefile Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/Makefile Tue Apr 2 09:51:36 2013 (r249013) @@ -392,6 +392,14 @@ universe_${target}_${target_arch}: unive .endfor .endif .if !defined(MAKE_JUST_WORLDS) +# If we are building world and kernels wait for the required worlds to finish +.if !defined(MAKE_JUST_KERNELS) +.for target_arch in ${TARGET_ARCHES_${target}} +universe_${target}_kernels: universe_${target}_${target_arch} +.endfor +.endif +universe_${target}: universe_${target}_kernels +universe_${target}_kernels: universe_${target}_prologue .if exists(${KERNSRCDIR}/${target}/conf/NOTES) @(cd ${KERNSRCDIR}/${target}/conf && env __MAKE_CONF=/dev/null \ ${MAKE} LINT > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \ Modified: projects/counters/Makefile.inc1 ============================================================================== --- projects/counters/Makefile.inc1 Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/Makefile.inc1 Tue Apr 2 09:51:36 2013 (r249013) @@ -1743,13 +1743,15 @@ XDTP=/usr/${XDDIR} CDBENV=MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX}/${XDDIR} \ INSTALL="sh ${.CURDIR}/tools/install.sh" CDENV= ${CDBENV} \ - _SHLIBDIRPREFIX=${XDTP} \ - TOOLS_PREFIX=${XDTP} -CD2ENV=${CDENV} \ + _SHLIBDIRPREFIX=${XDDESTDIR} \ + TOOLS_PREFIX=${XDDESTDIR} +CD2CFLAGS=-isystem ${XDDESTDIR}/usr/include -L${XDDESTDIR}/usr/lib \ + -B${XDDESTDIR}/usr/lib +CD2ENV=${CDENV} CC="${CC} ${CD2CFLAGS}" \ MACHINE=${XDEV} MACHINE_ARCH=${XDEV_ARCH} -CDTMP= ${MAKEOBJDIRPREFIX}/${XDEV}/${.CURDIR}/tmp -CDMAKE=${CDENV} ${MAKE} ${NOFUN} +CDTMP= ${MAKEOBJDIRPREFIX}/${XDDIR}/${.CURDIR}/tmp +CDMAKE=${CDENV} PATH=${CDTMP}/usr/bin:${PATH} ${MAKE} ${NOFUN} CD2MAKE=${CD2ENV} PATH=${CDTMP}/usr/bin:${XDTP}/usr/bin:${PATH} ${MAKE} ${NOFUN} XDDESTDIR=${DESTDIR}${XDTP} .if !defined(OSREL) @@ -1759,8 +1761,24 @@ OSREL!= uname -r | sed -e 's/[-(].*//' .ORDER: xdev-build xdev-install xdev: xdev-build xdev-install -.ORDER: _xb-build-tools _xb-cross-tools -xdev-build: _xb-build-tools _xb-cross-tools +.ORDER: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools +xdev-build: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools + +_xb-worldtmp: + mkdir -p ${CDTMP}/usr + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ + -p ${CDTMP}/usr >/dev/null + +_xb-bootstrap-tools: +.for _tool in \ + ${_clang_tblgen} + ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ + cd ${.CURDIR}/${_tool}; \ + ${CDMAKE} DIRPRFX=${_tool}/ obj; \ + ${CDMAKE} DIRPRFX=${_tool}/ depend; \ + ${CDMAKE} DIRPRFX=${_tool}/ all; \ + ${CDMAKE} DIRPRFX=${_tool}/ DESTDIR=${CDTMP} install +.endfor _xb-build-tools: ${_+_}@cd ${.CURDIR}; \ @@ -1770,7 +1788,9 @@ _xb-cross-tools: .for _tool in \ gnu/usr.bin/binutils \ gnu/usr.bin/cc \ - usr.bin/ar + usr.bin/ar \ + ${_clang_libs} \ + ${_clang} ${_+_}@${ECHODIR} "===> xdev ${_tool} (obj,depend,all)"; \ cd ${.CURDIR}/${_tool}; \ ${CDMAKE} DIRPRFX=${_tool}/ obj; \ @@ -1796,7 +1816,8 @@ _xi-cross-tools: .for _tool in \ gnu/usr.bin/binutils \ gnu/usr.bin/cc \ - usr.bin/ar + usr.bin/ar \ + ${_clang} ${_+_}@${ECHODIR} "===> xdev ${_tool} (install)"; \ cd ${.CURDIR}/${_tool}; \ ${CDMAKE} DIRPRFX=${_tool}/ install DESTDIR=${XDDESTDIR} @@ -1819,6 +1840,6 @@ _xi-links: ../../../../usr/bin/${XDDIR}${OSREL}-$$i; \ done .else -xdev xdev-buil xdev-install: +xdev xdev-build xdev-install: @echo "*** Error: Both XDEV and XDEV_ARCH must be defined for \"${.TARGET}\" target" .endif Modified: projects/counters/ObsoleteFiles.inc ============================================================================== --- projects/counters/ObsoleteFiles.inc Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/ObsoleteFiles.inc Tue Apr 2 09:51:36 2013 (r249013) @@ -38,7 +38,11 @@ # xargs -n1 | sort | uniq -d; # done +# 20130316: vinum.4 removed OLD_FILES+=usr/share/man/man4/vinum.4.gz +# 20130312: fortunes-o removed +OLD_FILES+=usr/share/games/fortune/fortunes-o +OLD_FILES+=usr/share/games/fortune/fortunes-o.dat # 20130311: Ports are no more available via cvsup OLD_FILES+=usr/share/examples/cvsup/ports-supfile OLD_FILES+=usr/share/examples/cvsup/refuse Modified: projects/counters/bin/chflags/chflags.c ============================================================================== --- projects/counters/bin/chflags/chflags.c Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/chflags/chflags.c Tue Apr 2 09:51:36 2013 (r249013) @@ -117,11 +117,7 @@ main(int argc, char *argv[]) } else fts_options = hflag ? FTS_PHYSICAL : FTS_LOGICAL; - /* XXX: Why don't chflags and lchflags have compatible prototypes? */ - if (hflag) - change_flags = (int (*)(const char *, unsigned long))lchflags; - else - change_flags = chflags; + change_flags = hflag ? lchflags : chflags; flags = *argv; if (*flags >= '0' && *flags <= '7') { Modified: projects/counters/bin/ed/cbc.c ============================================================================== --- projects/counters/bin/ed/cbc.c Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/ed/cbc.c Tue Apr 2 09:51:36 2013 (r249013) @@ -71,7 +71,6 @@ __FBSDID("$FreeBSD$"); #ifdef DES static DES_cblock ivec; /* initialization vector */ static DES_cblock pvec; /* padding vector */ -#endif static char bits[] = { /* used to extract bits from a char */ '\200', '\100', '\040', '\020', '\010', '\004', '\002', '\001' @@ -79,13 +78,12 @@ static char bits[] = { /* used to extr static int pflag; /* 1 to preserve parity bits */ -#ifdef DES static DES_key_schedule schedule; /* expanded DES key */ -#endif static unsigned char des_buf[8];/* shared buffer for get_des_char/put_des_char */ static int des_ct = 0; /* count for get_des_char/put_des_char */ static int des_n = 0; /* index for put_des_char/get_des_char */ +#endif /* init_des_cipher: initialize DES */ void Modified: projects/counters/bin/mv/mv.c ============================================================================== --- projects/counters/bin/mv/mv.c Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/mv/mv.c Tue Apr 2 09:51:36 2013 (r249013) @@ -337,7 +337,7 @@ err: if (unlink(to)) * on a file that we copied, i.e., that we didn't create.) */ errno = 0; - if (fchflags(to_fd, (u_long)sbp->st_flags)) + if (fchflags(to_fd, sbp->st_flags)) if (errno != EOPNOTSUPP || sbp->st_flags != 0) warn("%s: set flags (was: 0%07o)", to, sbp->st_flags); Modified: projects/counters/bin/setfacl/setfacl.1 ============================================================================== --- projects/counters/bin/setfacl/setfacl.1 Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/setfacl/setfacl.1 Tue Apr 2 09:51:36 2013 (r249013) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 8, 2013 +.Dd April 1, 2013 .Dt SETFACL 1 .Os .Sh NAME @@ -401,6 +401,10 @@ NFSv4 ACL entries are evaluated in their .Pp Multiple ACL entries specified on the command line are separated by commas. +.Pp +Note that the file owner is always granted the read_acl, write_acl, +read_attributes, and write_attributes permissions, even if the ACL +would deny it. .Sh EXIT STATUS .Ex -std .Sh EXAMPLES Modified: projects/counters/bin/sh/exec.c ============================================================================== --- projects/counters/bin/sh/exec.c Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/sh/exec.c Tue Apr 2 09:51:36 2013 (r249013) @@ -165,7 +165,7 @@ tryexec(char *cmd, char **argv, char **e } } *argv = cmd; - *--argv = _PATH_BSHELL; + *--argv = __DECONST(char *, _PATH_BSHELL); execve(_PATH_BSHELL, argv, envp); } errno = e; @@ -188,7 +188,7 @@ padvance(const char **path, const char * { const char *p, *start; char *q; - int len; + size_t len; if (*path == NULL) return NULL; Modified: projects/counters/bin/sh/expand.c ============================================================================== --- projects/counters/bin/sh/expand.c Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/sh/expand.c Tue Apr 2 09:51:36 2013 (r249013) @@ -460,7 +460,7 @@ expbackq(union node *cmd, int quoted, in int startloc = dest - stackblock(); char const *syntax = quoted? DQSYNTAX : BASESYNTAX; int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR); - int nnl; + size_t nnl; INTOFF; saveifs = ifsfirst; @@ -1163,9 +1163,9 @@ nometa: static void expmeta(char *enddir, char *name) { - char *p; - char *q; - char *start; + const char *p; + const char *q; + const char *start; char *endname; int metaflag; struct stat statb; @@ -1229,7 +1229,7 @@ expmeta(char *enddir, char *name) addfname(expdir); return; } - endname = p; + endname = name + (p - name); if (start != name) { p = name; while (p < start) { @@ -1412,7 +1412,8 @@ match_charclass(const char *p, wchar_t c *end = NULL; p++; nameend = strstr(p, ":]"); - if (nameend == NULL || nameend - p >= sizeof(name) || nameend == p) + if (nameend == NULL || (size_t)(nameend - p) >= sizeof(name) || + nameend == p) return 0; memcpy(name, p, nameend - p); name[nameend - p] = '\0'; Modified: projects/counters/bin/sh/input.c ============================================================================== --- projects/counters/bin/sh/input.c Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/sh/input.c Tue Apr 2 09:51:36 2013 (r249013) @@ -66,7 +66,7 @@ __FBSDID("$FreeBSD$"); struct strpush { struct strpush *prev; /* preceding string on stack */ - char *prevstring; + const char *prevstring; int prevnleft; int prevlleft; struct alias *ap; /* if push was associated with an alias */ @@ -83,7 +83,7 @@ struct parsefile { int fd; /* file descriptor (or -1 if string) */ int nleft; /* number of chars left in this line */ int lleft; /* number of lines left in this buffer */ - char *nextc; /* next char in buffer */ + const char *nextc; /* next char in buffer */ char *buf; /* input buffer */ struct strpush *strpush; /* for pushing strings at this level */ struct strpush basestrpush; /* so pushing one is fast */ @@ -93,7 +93,7 @@ struct parsefile { int plinno = 1; /* input line number */ int parsenleft; /* copy of parsefile->nleft */ MKINIT int parselleft; /* copy of parsefile->lleft */ -char *parsenextc; /* copy of parsefile->nextc */ +const char *parsenextc; /* copy of parsefile->nextc */ static char basebuf[BUFSIZ + 1];/* buffer for top level input file */ static struct parsefile basepf = { /* top level input file */ .nextc = basebuf, @@ -185,7 +185,7 @@ retry: nr = el_len; if (nr > BUFSIZ) nr = BUFSIZ; - memcpy(parsenextc, rl_cp, nr); + memcpy(parsefile->buf, rl_cp, nr); if (nr != el_len) { el_len -= nr; rl_cp += nr; @@ -194,7 +194,7 @@ retry: } } else #endif - nr = read(parsefile->fd, parsenextc, BUFSIZ); + nr = read(parsefile->fd, parsefile->buf, BUFSIZ); if (nr <= 0) { if (nr < 0) { @@ -252,7 +252,7 @@ again: } } - q = p = parsenextc; + q = p = parsefile->buf + (parsenextc - parsefile->buf); /* delete nul characters */ something = 0; @@ -439,7 +439,7 @@ setinputfd(int fd, int push) */ void -setinputstring(char *string, int push) +setinputstring(const char *string, int push) { INTOFF; if (push) Modified: projects/counters/bin/sh/input.h ============================================================================== --- projects/counters/bin/sh/input.h Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/sh/input.h Tue Apr 2 09:51:36 2013 (r249013) @@ -42,7 +42,7 @@ */ extern int plinno; extern int parsenleft; /* number of characters left in input buffer */ -extern char *parsenextc; /* next character in input buffer */ +extern const char *parsenextc; /* next character in input buffer */ struct alias; struct parsefile; @@ -55,7 +55,7 @@ void pungetc(void); void pushstring(char *, int, struct alias *); void setinputfile(const char *, int); void setinputfd(int, int); -void setinputstring(char *, int); +void setinputstring(const char *, int); void popfile(void); struct parsefile *getcurrentfile(void); void popfilesupto(struct parsefile *); Modified: projects/counters/bin/sh/jobs.c ============================================================================== --- projects/counters/bin/sh/jobs.c Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/sh/jobs.c Tue Apr 2 09:51:36 2013 (r249013) @@ -668,7 +668,8 @@ makejob(union node *node __unused, int n jobtab = jp; } jp = jobtab + njobs; - for (i = 4 ; --i >= 0 ; jobtab[njobs++].used = 0); + for (i = 4 ; --i >= 0 ; jobtab[njobs++].used = 0) + ; INTON; break; } @@ -1005,7 +1006,7 @@ waitforjob(struct job *jp, int *origstat static void -dummy_handler(int sig) +dummy_handler(int sig __unused) { } Modified: projects/counters/bin/sh/main.c ============================================================================== --- projects/counters/bin/sh/main.c Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/sh/main.c Tue Apr 2 09:51:36 2013 (r249013) @@ -80,7 +80,7 @@ struct jmploc main_handler; int localeisutf8, initial_localeisutf8; static void cmdloop(int); -static void read_profile(char *); +static void read_profile(const char *); static char *find_dot_file(char *); /* @@ -239,7 +239,7 @@ cmdloop(int top) */ static void -read_profile(char *name) +read_profile(const char *name) { int fd; const char *expandedname; Modified: projects/counters/bin/sh/memalloc.c ============================================================================== --- projects/counters/bin/sh/memalloc.c Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/sh/memalloc.c Tue Apr 2 09:51:36 2013 (r249013) @@ -233,7 +233,8 @@ growstackblock(int min) if (min < stacknleft) min = stacknleft; - if (min >= INT_MAX / 2 - ALIGN(sizeof(struct stack_block))) + if ((unsigned int)min >= + INT_MAX / 2 - ALIGN(sizeof(struct stack_block))) error("Out of space"); min += stacknleft; min += ALIGN(sizeof(struct stack_block)); @@ -327,7 +328,7 @@ makestrspace(int min, char *p) char * -stputbin(const char *data, int len, char *p) +stputbin(const char *data, size_t len, char *p) { CHECKSTRSPACE(len, p); memcpy(p, data, len); Modified: projects/counters/bin/sh/memalloc.h ============================================================================== --- projects/counters/bin/sh/memalloc.h Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/sh/memalloc.h Tue Apr 2 09:51:36 2013 (r249013) @@ -57,7 +57,7 @@ void setstackmark(struct stackmark *); void popstackmark(struct stackmark *); char *growstackstr(void); char *makestrspace(int, char *); -char *stputbin(const char *data, int len, char *p); +char *stputbin(const char *data, size_t len, char *p); char *stputs(const char *data, char *p); @@ -67,7 +67,7 @@ char *stputs(const char *data, char *p); #define grabstackblock(n) stalloc(n) #define STARTSTACKSTR(p) p = stackblock() #define STPUTC(c, p) do { if (p == sstrend) p = growstackstr(); *p++ = (c); } while(0) -#define CHECKSTRSPACE(n, p) { if (sstrend - p < n) p = makestrspace(n, p); } +#define CHECKSTRSPACE(n, p) { if ((size_t)(sstrend - p) < n) p = makestrspace(n, p); } #define USTPUTC(c, p) (*p++ = (c)) /* * STACKSTRNUL's use is where we want to be able to turn a stack Modified: projects/counters/bin/sh/parser.c ============================================================================== --- projects/counters/bin/sh/parser.c Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/sh/parser.c Tue Apr 2 09:51:36 2013 (r249013) @@ -119,7 +119,7 @@ static void parseheredoc(void); static int peektoken(void); static int readtoken(void); static int xxreadtoken(void); -static int readtoken1(int, char const *, char *, int); +static int readtoken1(int, const char *, const char *, int); static int noexpand(char *); static void synexpect(int) __dead2; static void synerror(const char *) __dead2; @@ -983,7 +983,7 @@ parsebackq(char *out, struct nodelist ** char *volatile str; struct jmploc jmploc; struct jmploc *const savehandler = handler; - int savelen; + size_t savelen; int saveprompt; const int bq_startlinno = plinno; char *volatile ostr = NULL; @@ -1300,7 +1300,8 @@ readcstyleesc(char *out) #define PARSEARITH() {goto parsearith; parsearith_return:;} static int -readtoken1(int firstc, char const *initialsyntax, char *eofmark, int striptabs) +readtoken1(int firstc, char const *initialsyntax, const char *eofmark, + int striptabs) { int c = firstc; char *out; @@ -1521,7 +1522,7 @@ checkend: { } if (c == *eofmark) { if (pfgets(line, sizeof line) != NULL) { - char *p, *q; + const char *p, *q; p = line; for (q = eofmark + 1 ; *q && *p == *q ; p++, q++); @@ -2038,7 +2039,7 @@ getprompt(void *unused __unused) const char * -expandstr(char *ps) +expandstr(const char *ps) { union node n; struct jmploc jmploc; Modified: projects/counters/bin/sh/parser.h ============================================================================== --- projects/counters/bin/sh/parser.h Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/sh/parser.h Tue Apr 2 09:51:36 2013 (r249013) @@ -82,4 +82,4 @@ void fixredir(union node *, const char * int goodname(const char *); int isassignment(const char *); char *getprompt(void *); -const char *expandstr(char *); +const char *expandstr(const char *); Modified: projects/counters/bin/sh/sh.1 ============================================================================== --- projects/counters/bin/sh/sh.1 Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/sh/sh.1 Tue Apr 2 09:51:36 2013 (r249013) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd January 22, 2013 +.Dd March 24, 2013 .Dt SH 1 .Os .Sh NAME @@ -1061,6 +1061,9 @@ A subshell environment may be implemente If job control is enabled in an interactive shell, commands grouped in parentheses can be suspended and continued as a unit. .Pp +For compatibility with other shells, +two open parentheses in sequence should be separated by whitespace. +.Pp The second form never forks another shell, so it is slightly more efficient. Grouping commands together this way allows the user to @@ -1618,6 +1621,16 @@ and .Ic times returns information about the same process if they are the only command in a command substitution. +.Pp +If a command substitution of the +.Li $( +form begins with a subshell, +the +.Li $( +and +.Li (\& +must be separated by whitespace +to avoid ambiguity with arithmetic expansion. .Ss Arithmetic Expansion Arithmetic expansion provides a mechanism for evaluating an arithmetic expression and substituting its value. Modified: projects/counters/bin/sh/trap.c ============================================================================== --- projects/counters/bin/sh/trap.c Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/bin/sh/trap.c Tue Apr 2 09:51:36 2013 (r249013) @@ -150,7 +150,7 @@ printsignals(void) * The trap builtin. */ int -trapcmd(int argc, char **argv) +trapcmd(int argc __unused, char **argv) { char *action; int signo; Modified: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst ============================================================================== --- projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst Tue Apr 2 09:45:34 2013 (r249012) +++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst Tue Apr 2 09:51:36 2013 (r249013) @@ -23,7 +23,6 @@ # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # -# ident "%Z%%M% %I% %E% SMI" # Exception list: names tests that are bypassed when running in Java # mode (relative to /opt/SUNWdtrt/tst) @@ -52,14 +51,17 @@ common/usdt/tst.enabled.ksh common/usdt/tst.enabled2.ksh common/usdt/tst.entryreturn.ksh common/usdt/tst.fork.ksh -common/usdt/tst.header.ksh common/usdt/tst.guess32.ksh common/usdt/tst.guess64.ksh +common/usdt/tst.header.ksh common/usdt/tst.linkpriv.ksh common/usdt/tst.linkunpriv.ksh common/usdt/tst.multiple.ksh common/usdt/tst.nodtrace.ksh +common/usdt/tst.noreap.ksh +common/usdt/tst.noreapring.ksh common/usdt/tst.onlyenabled.ksh +common/usdt/tst.reap.ksh common/usdt/tst.reeval.ksh common/usdt/tst.static.ksh common/usdt/tst.static2.ksh Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d Tue Apr 2 09:51:36 2013 (r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d) @@ -0,0 +1,30 @@ +/* + * CDDL HEADER START + * + * 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] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2011, Joyent, Inc. All rights reserved. + */ + +BEGIN +{ + trace(tolower(2152006)); + exit(1); +} Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d Tue Apr 2 09:51:36 2013 (r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d) @@ -0,0 +1,30 @@ +/* + * CDDL HEADER START + * + * 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] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2011, Joyent, Inc. All rights reserved. + */ + +BEGIN +{ + trace(toupper(timestamp)); + exit(1); +} Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d Tue Apr 2 09:51:36 2013 (r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d) @@ -0,0 +1,30 @@ +/* + * CDDL HEADER START + * + * 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] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2011, Joyent, Inc. All rights reserved. + */ + +BEGIN +{ + trace(tolower()); + exit(1); +} Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d Tue Apr 2 09:51:36 2013 (r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d) @@ -0,0 +1,30 @@ +/* + * CDDL HEADER START + * + * 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] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2011, Joyent, Inc. All rights reserved. + */ + +BEGIN +{ + trace(tolower("dory", "eel", "roughy")); + exit(1); +} Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d Tue Apr 2 09:51:36 2013 (r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d) @@ -0,0 +1,30 @@ +/* + * CDDL HEADER START + * + * 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] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2011, Joyent, Inc. All rights reserved. + */ + +BEGIN +{ + trace(toupper()); + exit(1); +} Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d Tue Apr 2 09:51:36 2013 (r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d) @@ -0,0 +1,30 @@ +/* + * CDDL HEADER START + * + * 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] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2011, Joyent, Inc. All rights reserved. + */ + +BEGIN +{ + trace(tolower("haino", "tylo")); + exit(1); +} Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d Tue Apr 2 09:51:36 2013 (r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d) @@ -0,0 +1,80 @@ +/* + * CDDL HEADER START + * + * 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] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2011, Joyent, Inc. All rights reserved. + */ + +#pragma D option quiet + +int64_t val[int]; + +BEGIN +{ + base = -2; + i = 0; + val[i++] = -10; + val[i++] = -1; + val[i++] = 0; + val[i++] = 10; + val[i++] = 100; + val[i++] = 1000; + val[i++] = (1LL << 62); + maxval = i; + i = 0; +} + +tick-1ms +/i < maxval/ +{ + printf("base %2d of %20d: ", base, val[i]); +} + +tick-1ms +/i < maxval/ +{ + printf(" %s\n", lltostr(val[i], base)); +} + +ERROR +{ + printf(" \n"); +} + +tick-1ms +/i < maxval/ +{ + i++; +} + +tick-1ms +/i == maxval/ +{ + i = 0; + base++; +} + +tick-1ms +/base > 40/ +{ + exit(0); +} + Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out Tue Apr 2 09:51:36 2013 (r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out) @@ -0,0 +1,302 @@ +base -2 of -10: +base -2 of -1: +base -2 of 0: +base -2 of 10: +base -2 of 100: +base -2 of 1000: +base -2 of 4611686018427387904: +base -1 of -10: +base -1 of -1: +base -1 of 0: +base -1 of 10: +base -1 of 100: +base -1 of 1000: +base -1 of 4611686018427387904: +base 0 of -10: +base 0 of -1: +base 0 of 0: +base 0 of 10: +base 0 of 100: +base 0 of 1000: +base 0 of 4611686018427387904: +base 1 of -10: +base 1 of -1: +base 1 of 0: +base 1 of 10: +base 1 of 100: +base 1 of 1000: +base 1 of 4611686018427387904: +base 2 of -10: 1111111111111111111111111111111111111111111111111111111111110110 +base 2 of -1: 1111111111111111111111111111111111111111111111111111111111111111 +base 2 of 0: 0 +base 2 of 10: 1010 +base 2 of 100: 1100100 +base 2 of 1000: 1111101000 +base 2 of 4611686018427387904: 100000000000000000000000000000000000000000000000000000000000000 +base 3 of -10: 11112220022122120101211020120210210211120 +base 3 of -1: 11112220022122120101211020120210210211220 +base 3 of 0: 0 +base 3 of 10: 101 +base 3 of 100: 10201 +base 3 of 1000: 1101001 +base 3 of 4611686018427387904: 1010201120122220002201001122110012110111 +base 4 of -10: 33333333333333333333333333333312 +base 4 of -1: 33333333333333333333333333333333 +base 4 of 0: 0 +base 4 of 10: 22 +base 4 of 100: 1210 +base 4 of 1000: 33220 +base 4 of 4611686018427387904: 10000000000000000000000000000000 +base 5 of -10: 2214220303114400424121122411 +base 5 of -1: 2214220303114400424121122430 +base 5 of 0: 0 +base 5 of 10: 20 +base 5 of 100: 400 +base 5 of 1000: 13000 +base 5 of 4611686018427387904: 302141200402211214402403104 +base 6 of -10: 3520522010102100444244410 +base 6 of -1: 3520522010102100444244423 +base 6 of 0: 0 +base 6 of 10: 14 +base 6 of 100: 244 +base 6 of 1000: 4344 +base 6 of 4611686018427387904: 550120301313313111041104 +base 7 of -10: 45012021522523134134556 +base 7 of -1: 45012021522523134134601 +base 7 of 0: 0 +base 7 of 10: 13 +base 7 of 100: 202 +base 7 of 1000: 2626 +base 7 of 4611686018427387904: 11154003640456024361134 +base 8 of -10: 01777777777777777777766 +base 8 of -1: 01777777777777777777777 +base 8 of 0: 0 +base 8 of 10: 012 +base 8 of 100: 0144 +base 8 of 1000: 01750 +base 8 of 4611686018427387904: 0400000000000000000000 +base 9 of -10: 145808576354216723746 +base 9 of -1: 145808576354216723756 +base 9 of 0: 0 +base 9 of 10: 11 +base 9 of 100: 121 +base 9 of 1000: 1331 +base 9 of 4611686018427387904: 33646586081048405414 +base 10 of -10: -10 +base 10 of -1: -1 +base 10 of 0: 0 +base 10 of 10: 10 +base 10 of 100: 100 +base 10 of 1000: 1000 +base 10 of 4611686018427387904: 4611686018427387904 +base 11 of -10: 335500516a429071276 +base 11 of -1: 335500516a429071284 +base 11 of 0: 0 +base 11 of 10: a +base 11 of 100: 91 +base 11 of 1000: 82a +base 11 of 4611686018427387904: 9140013181078458a4 +base 12 of -10: 839365134a2a240706 +base 12 of -1: 839365134a2a240713 +base 12 of 0: 0 +base 12 of 10: a +base 12 of 100: 84 +base 12 of 1000: 6b4 +base 12 of 4611686018427387904: 20b3a733a268670194 +base 13 of -10: 219505a9511a867b66 +base 13 of -1: 219505a9511a867b72 +base 13 of 0: 0 +base 13 of 10: a +base 13 of 100: 79 +base 13 of 1000: 5bc +base 13 of 4611686018427387904: 6c1349246a2881c84 +base 14 of -10: 8681049adb03db166 +base 14 of -1: 8681049adb03db171 +base 14 of 0: 0 +base 14 of 10: a +base 14 of 100: 72 +base 14 of 1000: 516 +base 14 of 4611686018427387904: 219038263637dd3c4 +base 15 of -10: 2c1d56b648c6cd106 +base 15 of -1: 2c1d56b648c6cd110 +base 15 of 0: 0 +base 15 of 10: a +base 15 of 100: 6a +base 15 of 1000: 46a +base 15 of 4611686018427387904: a7e8ce189a933404 +base 16 of -10: 0xfffffffffffffff6 +base 16 of -1: 0xffffffffffffffff +base 16 of 0: 0x0 +base 16 of 10: 0xa +base 16 of 100: 0x64 +base 16 of 1000: 0x3e8 +base 16 of 4611686018427387904: 0x4000000000000000 +base 17 of -10: 67979g60f5428008 +base 17 of -1: 67979g60f5428010 +base 17 of 0: 0 +base 17 of 10: a +base 17 of 100: 5f +base 17 of 1000: 37e +base 17 of 4611686018427387904: 1a6a6ca03e10a88d +base 18 of -10: 2d3fgb0b9cg4bd26 +base 18 of -1: 2d3fgb0b9cg4bd2f +base 18 of 0: 0 +base 18 of 10: a +base 18 of 100: 5a +base 18 of 1000: 31a +base 18 of 4611686018427387904: c588bdbfgd12ge4 +base 19 of -10: 141c8786h1ccaag7 +base 19 of -1: 141c8786h1ccaagg +base 19 of 0: 0 +base 19 of 10: a +base 19 of 100: 55 +base 19 of 1000: 2ec +base 19 of 4611686018427387904: 5ecbb6fi9h7ggi9 +base 20 of -10: b53bjh07be4dj06 +base 20 of -1: b53bjh07be4dj0f +base 20 of 0: 0 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Tue Apr 2 10:05:31 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 288FC882; Tue, 2 Apr 2013 10:05:31 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 1B7EE73E; Tue, 2 Apr 2013 10:05:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r32A5UpF043223; Tue, 2 Apr 2013 10:05:30 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r32A5UAB043220; Tue, 2 Apr 2013 10:05:30 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304021005.r32A5UAB043220@svn.freebsd.org> From: Alexander Motin Date: Tue, 2 Apr 2013 10:05:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249014 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Apr 2013 10:05:31 -0000 Author: mav Date: Tue Apr 2 10:05:30 2013 New Revision: 249014 URL: http://svnweb.freebsd.org/changeset/base/249014 Log: - Drop alloc_ccb_entry field, unused since r248890. - Rename send_ccb_entry field to devq_entry. Modified: projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/cam_xpt_internal.h Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 09:51:36 2013 (r249013) +++ projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 10:05:30 2013 (r249014) @@ -296,8 +296,7 @@ static xpt_busfunc_t xptsetasyncbusfunc; static cam_status xptregister(struct cam_periph *periph, void *arg); static __inline int periph_is_queued(struct cam_periph *periph); -static __inline int device_is_alloc_queued(struct cam_ed *device); -static __inline int device_is_send_queued(struct cam_ed *device); +static __inline int device_is_queued(struct cam_ed *device); static __inline int xpt_schedule_devq(struct cam_devq *devq, struct cam_ed *dev) @@ -314,7 +313,7 @@ xpt_schedule_devq(struct cam_devq *devq, */ retval = xpt_schedule_dev(&devq->send_queue, - &dev->send_ccb_entry.pinfo, + &dev->devq_entry.pinfo, CAMQ_GET_PRIO(&dev->ccbq.queue)); } else { retval = 0; @@ -329,15 +328,9 @@ periph_is_queued(struct cam_periph *peri } static __inline int -device_is_alloc_queued(struct cam_ed *device) +device_is_queued(struct cam_ed *device) { - return (device->alloc_ccb_entry.pinfo.index != CAM_UNQUEUED_INDEX); -} - -static __inline int -device_is_send_queued(struct cam_ed *device) -{ - return (device->send_ccb_entry.pinfo.index != CAM_UNQUEUED_INDEX); + return (device->devq_entry.pinfo.index != CAM_UNQUEUED_INDEX); } static void @@ -4112,9 +4105,9 @@ xpt_freeze_devq(struct cam_path *path, u mtx_assert(path->bus->sim->mtx, MA_OWNED); dev->ccbq.queue.qfrozen_cnt += count; /* Remove frozen device from sendq. */ - if (device_is_send_queued(dev)) { + if (device_is_queued(dev)) { camq_remove(&dev->sim->devq->send_queue, - dev->send_ccb_entry.pinfo.index); + dev->devq_entry.pinfo.index); } return (dev->ccbq.queue.qfrozen_cnt); } @@ -4458,10 +4451,8 @@ xpt_alloc_device(struct cam_eb *bus, str } if (device != NULL) { - cam_init_pinfo(&device->alloc_ccb_entry.pinfo); - device->alloc_ccb_entry.device = device; - cam_init_pinfo(&device->send_ccb_entry.pinfo); - device->send_ccb_entry.device = device; + cam_init_pinfo(&device->devq_entry.pinfo); + device->devq_entry.device = device; device->target = target; device->lun_id = lun_id; device->sim = bus->sim; @@ -4509,8 +4500,7 @@ xpt_release_device(struct cam_ed *device if (device->refcount == 1) { struct cam_devq *devq; - if (device->alloc_ccb_entry.pinfo.index != CAM_UNQUEUED_INDEX - || device->send_ccb_entry.pinfo.index != CAM_UNQUEUED_INDEX) + if (device->devq_entry.pinfo.index != CAM_UNQUEUED_INDEX) panic("Removing device while still queued for ccbs"); if ((device->flags & CAM_DEV_REL_TIMEOUT_PENDING) != 0) @@ -4982,7 +4972,7 @@ camisr_runqueue(struct cam_sim *sim) if ((dev->flags & CAM_DEV_TAG_AFTER_COUNT) != 0 && (--dev->tag_delay_count == 0)) xpt_start_tags(ccb_h->path); - if (!device_is_send_queued(dev)) { + if (!device_is_queued(dev)) { (void)xpt_schedule_devq(sim->devq, dev); } } Modified: projects/camlock/sys/cam/cam_xpt_internal.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt_internal.h Tue Apr 2 09:51:36 2013 (r249013) +++ projects/camlock/sys/cam/cam_xpt_internal.h Tue Apr 2 10:05:30 2013 (r249014) @@ -71,8 +71,7 @@ struct cam_ed_qinfo { */ struct cam_ed { TAILQ_ENTRY(cam_ed) links; - struct cam_ed_qinfo alloc_ccb_entry; - struct cam_ed_qinfo send_ccb_entry; + struct cam_ed_qinfo devq_entry; struct cam_et *target; struct cam_sim *sim; lun_id_t lun_id; From owner-svn-src-projects@FreeBSD.ORG Tue Apr 2 11:45:39 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id E3E8C201; Tue, 2 Apr 2013 11:45:39 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id D6773D46; Tue, 2 Apr 2013 11:45:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r32BjdHg072905; Tue, 2 Apr 2013 11:45:39 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r32Bjd4s072897; Tue, 2 Apr 2013 11:45:39 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304021145.r32Bjd4s072897@svn.freebsd.org> From: Alexander Motin Date: Tue, 2 Apr 2013 11:45:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249017 - in projects/camlock/sys/cam: . ata scsi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Apr 2013 11:45:40 -0000 Author: mav Date: Tue Apr 2 11:45:38 2013 New Revision: 249017 URL: http://svnweb.freebsd.org/changeset/base/249017 Log: Some cosmetic things: - Unify device to target insertion inside xpt_alloc_device() instead of duplicating it three times. - Remove extra checks for empty lists of devices and targets on release since zero refcount check also implies it. - Reformat code to reduce indentation. Modified: projects/camlock/sys/cam/ata/ata_xpt.c projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/cam_xpt_internal.h projects/camlock/sys/cam/scsi/scsi_xpt.c Modified: projects/camlock/sys/cam/ata/ata_xpt.c ============================================================================== --- projects/camlock/sys/cam/ata/ata_xpt.c Tue Apr 2 11:44:55 2013 (r249016) +++ projects/camlock/sys/cam/ata/ata_xpt.c Tue Apr 2 11:45:38 2013 (r249017) @@ -1529,7 +1529,6 @@ ata_alloc_device(struct cam_eb *bus, str struct cam_path path; struct ata_quirk_entry *quirk; struct cam_ed *device; - struct cam_ed *cur_device; device = xpt_alloc_device(bus, target, lun_id); if (device == NULL) @@ -1549,16 +1548,6 @@ ata_alloc_device(struct cam_eb *bus, str device->serial_num = NULL; device->serial_num_len = 0; - /* Insertion sort into our target's device list */ - cur_device = TAILQ_FIRST(&target->ed_entries); - while (cur_device != NULL && cur_device->lun_id < lun_id) - cur_device = TAILQ_NEXT(cur_device, links); - if (cur_device != NULL) { - TAILQ_INSERT_BEFORE(cur_device, device, links); - } else { - TAILQ_INSERT_TAIL(&target->ed_entries, device, links); - } - target->generation++; if (lun_id != CAM_LUN_WILDCARD) { xpt_compile_path(&path, NULL, Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 11:44:55 2013 (r249016) +++ projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 11:45:38 2013 (r249017) @@ -4339,8 +4339,7 @@ xpt_release_bus(struct cam_eb *bus) mtx_lock(&xsoftc.xpt_topo_lock); KASSERT(bus->refcount >= 1, ("bus->refcount >= 1")); - if ((--bus->refcount == 0) - && (TAILQ_FIRST(&bus->et_entries) == NULL)) { + if (--bus->refcount == 0) { TAILQ_REMOVE(&xsoftc.xpt_busses, bus, links); xsoftc.bus_generation++; mtx_unlock(&xsoftc.xpt_topo_lock); @@ -4353,40 +4352,38 @@ xpt_release_bus(struct cam_eb *bus) static struct cam_et * xpt_alloc_target(struct cam_eb *bus, target_id_t target_id) { - struct cam_et *target; + struct cam_et *cur_target, *target; target = (struct cam_et *)malloc(sizeof(*target), M_CAMXPT, M_NOWAIT|M_ZERO); - if (target != NULL) { - struct cam_et *cur_target; + if (target == NULL) + return (NULL); - TAILQ_INIT(&target->ed_entries); - target->bus = bus; - target->target_id = target_id; - target->refcount = 1; - target->generation = 0; - target->luns = NULL; - timevalclear(&target->last_reset); - /* - * Hold a reference to our parent bus so it - * will not go away before we do. - */ - mtx_lock(&xsoftc.xpt_topo_lock); - bus->refcount++; - mtx_unlock(&xsoftc.xpt_topo_lock); + TAILQ_INIT(&target->ed_entries); + target->bus = bus; + target->target_id = target_id; + target->refcount = 1; + target->generation = 0; + target->luns = NULL; + timevalclear(&target->last_reset); + /* + * Hold a reference to our parent bus so it + * will not go away before we do. + */ + mtx_lock(&xsoftc.xpt_topo_lock); + bus->refcount++; + mtx_unlock(&xsoftc.xpt_topo_lock); - /* Insertion sort into our bus's target list */ - cur_target = TAILQ_FIRST(&bus->et_entries); - while (cur_target != NULL && cur_target->target_id < target_id) - cur_target = TAILQ_NEXT(cur_target, links); - - if (cur_target != NULL) { - TAILQ_INSERT_BEFORE(cur_target, target, links); - } else { - TAILQ_INSERT_TAIL(&bus->et_entries, target, links); - } - bus->generation++; + /* Insertion sort into our bus's target list */ + cur_target = TAILQ_FIRST(&bus->et_entries); + while (cur_target != NULL && cur_target->target_id < target_id) + cur_target = TAILQ_NEXT(cur_target, links); + if (cur_target != NULL) { + TAILQ_INSERT_BEFORE(cur_target, target, links); + } else { + TAILQ_INSERT_TAIL(&bus->et_entries, target, links); } + bus->generation++; return (target); } @@ -4394,24 +4391,21 @@ static void xpt_release_target(struct cam_et *target) { - if (target->refcount == 1) { - if (TAILQ_FIRST(&target->ed_entries) == NULL) { - TAILQ_REMOVE(&target->bus->et_entries, target, links); - target->bus->generation++; - xpt_release_bus(target->bus); - if (target->luns) - free(target->luns, M_CAMXPT); - free(target, M_CAMXPT); - } - } else - target->refcount--; + if (--target->refcount > 0) + return; + TAILQ_REMOVE(&target->bus->et_entries, target, links); + target->bus->generation++; + xpt_release_bus(target->bus); + if (target->luns) + free(target->luns, M_CAMXPT); + free(target, M_CAMXPT); } static struct cam_ed * xpt_alloc_device_default(struct cam_eb *bus, struct cam_et *target, lun_id_t lun_id) { - struct cam_ed *device, *cur_device; + struct cam_ed *device; device = xpt_alloc_device(bus, target, lun_id); if (device == NULL) @@ -4419,70 +4413,61 @@ xpt_alloc_device_default(struct cam_eb * device->mintags = 1; device->maxtags = 1; - cur_device = TAILQ_FIRST(&target->ed_entries); - while (cur_device != NULL && cur_device->lun_id < lun_id) - cur_device = TAILQ_NEXT(cur_device, links); - if (cur_device != NULL) { - TAILQ_INSERT_BEFORE(cur_device, device, links); - } else { - TAILQ_INSERT_TAIL(&target->ed_entries, device, links); - } - target->generation++; - return (device); } struct cam_ed * xpt_alloc_device(struct cam_eb *bus, struct cam_et *target, lun_id_t lun_id) { - struct cam_ed *device; - struct cam_devq *devq; + struct cam_ed *cur_device, *device; + struct cam_devq *devq; cam_status status; /* Make space for us in the device queue on our bus */ devq = bus->sim->devq; status = cam_devq_resize(devq, devq->send_queue.array_size + 1); + if (status != CAM_REQ_CMP) + return (NULL); - if (status != CAM_REQ_CMP) { - device = NULL; - } else { - device = (struct cam_ed *)malloc(sizeof(*device), - M_CAMDEV, M_NOWAIT|M_ZERO); - } - - if (device != NULL) { - cam_init_pinfo(&device->devq_entry.pinfo); - device->devq_entry.device = device; - device->target = target; - device->lun_id = lun_id; - device->sim = bus->sim; - /* Initialize our queues */ - if (camq_init(&device->drvq, 0) != 0) { - free(device, M_CAMDEV); - return (NULL); - } - if (cam_ccbq_init(&device->ccbq, - bus->sim->max_dev_openings) != 0) { - camq_fini(&device->drvq); - free(device, M_CAMDEV); - return (NULL); - } - SLIST_INIT(&device->asyncs); - SLIST_INIT(&device->periphs); - device->generation = 0; - device->flags = CAM_DEV_UNCONFIGURED; - device->tag_delay_count = 0; - device->tag_saved_openings = 0; - device->refcount = 1; - callout_init_mtx(&device->callout, bus->sim->mtx, 0); - - /* - * Hold a reference to our parent target so it - * will not go away before we do. - */ - target->refcount++; + device = (struct cam_ed *)malloc(sizeof(*device), + M_CAMDEV, M_NOWAIT|M_ZERO); + if (device == NULL) + return (NULL); + cam_init_pinfo(&device->devq_entry.pinfo); + device->devq_entry.device = device; + device->target = target; + device->lun_id = lun_id; + device->sim = bus->sim; + /* Initialize our queues */ + if (camq_init(&device->drvq, 0) != 0) { + free(device, M_CAMDEV); + return (NULL); + } + if (cam_ccbq_init(&device->ccbq, + bus->sim->max_dev_openings) != 0) { + camq_fini(&device->drvq); + free(device, M_CAMDEV); + return (NULL); } + SLIST_INIT(&device->asyncs); + SLIST_INIT(&device->periphs); + device->generation = 0; + device->flags = CAM_DEV_UNCONFIGURED; + device->tag_delay_count = 0; + device->tag_saved_openings = 0; + device->refcount = 1; + callout_init_mtx(&device->callout, bus->sim->mtx, 0); + + cur_device = TAILQ_FIRST(&target->ed_entries); + while (cur_device != NULL && cur_device->lun_id < lun_id) + cur_device = TAILQ_NEXT(cur_device, links); + if (cur_device != NULL) + TAILQ_INSERT_BEFORE(cur_device, device, links); + else + TAILQ_INSERT_TAIL(&target->ed_entries, device, links); + target->refcount++; + target->generation++; return (device); } @@ -4496,38 +4481,37 @@ xpt_acquire_device(struct cam_ed *device void xpt_release_device(struct cam_ed *device) { + struct cam_devq *devq; - if (device->refcount == 1) { - struct cam_devq *devq; - - if (device->devq_entry.pinfo.index != CAM_UNQUEUED_INDEX) - panic("Removing device while still queued for ccbs"); + if (--device->refcount > 0) + return; - if ((device->flags & CAM_DEV_REL_TIMEOUT_PENDING) != 0) - callout_stop(&device->callout); + if (device->devq_entry.pinfo.index != CAM_UNQUEUED_INDEX) + panic("Removing device while still queued for ccbs"); - TAILQ_REMOVE(&device->target->ed_entries, device,links); - device->target->generation++; - /* Release our slot in the devq */ - devq = device->target->bus->sim->devq; - cam_devq_resize(devq, devq->send_queue.array_size - 1); - camq_fini(&device->drvq); - cam_ccbq_fini(&device->ccbq); - /* - * Free allocated memory. free(9) does nothing if the - * supplied pointer is NULL, so it is safe to call without - * checking. - */ - free(device->supported_vpds, M_CAMXPT); - free(device->device_id, M_CAMXPT); - free(device->physpath, M_CAMXPT); - free(device->rcap_buf, M_CAMXPT); - free(device->serial_num, M_CAMXPT); + if ((device->flags & CAM_DEV_REL_TIMEOUT_PENDING) != 0) + callout_stop(&device->callout); + + TAILQ_REMOVE(&device->target->ed_entries, device,links); + device->target->generation++; + /* Release our slot in the devq */ + devq = device->target->bus->sim->devq; + cam_devq_resize(devq, devq->send_queue.array_size - 1); + camq_fini(&device->drvq); + cam_ccbq_fini(&device->ccbq); + /* + * Free allocated memory. free(9) does nothing if the + * supplied pointer is NULL, so it is safe to call without + * checking. + */ + free(device->supported_vpds, M_CAMXPT); + free(device->device_id, M_CAMXPT); + free(device->physpath, M_CAMXPT); + free(device->rcap_buf, M_CAMXPT); + free(device->serial_num, M_CAMXPT); - xpt_release_target(device->target); - free(device, M_CAMDEV); - } else - device->refcount--; + xpt_release_target(device->target); + free(device, M_CAMDEV); } u_int32_t Modified: projects/camlock/sys/cam/cam_xpt_internal.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt_internal.h Tue Apr 2 11:44:55 2013 (r249016) +++ projects/camlock/sys/cam/cam_xpt_internal.h Tue Apr 2 11:45:38 2013 (r249017) @@ -75,6 +75,7 @@ struct cam_ed { struct cam_et *target; struct cam_sim *sim; lun_id_t lun_id; + struct mtx mtx; struct camq drvq; /* * Queue of type drivers wanting to do * work on this device. Modified: projects/camlock/sys/cam/scsi/scsi_xpt.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_xpt.c Tue Apr 2 11:44:55 2013 (r249016) +++ projects/camlock/sys/cam/scsi/scsi_xpt.c Tue Apr 2 11:45:38 2013 (r249017) @@ -2307,7 +2307,6 @@ scsi_alloc_device(struct cam_eb *bus, st struct cam_path path; struct scsi_quirk_entry *quirk; struct cam_ed *device; - struct cam_ed *cur_device; device = xpt_alloc_device(bus, target, lun_id); if (device == NULL) @@ -2331,16 +2330,6 @@ scsi_alloc_device(struct cam_eb *bus, st device->supported_vpds = NULL; device->supported_vpds_len = 0; - /* Insertion sort into our target's device list */ - cur_device = TAILQ_FIRST(&target->ed_entries); - while (cur_device != NULL && cur_device->lun_id < lun_id) - cur_device = TAILQ_NEXT(cur_device, links); - if (cur_device != NULL) { - TAILQ_INSERT_BEFORE(cur_device, device, links); - } else { - TAILQ_INSERT_TAIL(&target->ed_entries, device, links); - } - target->generation++; if (lun_id != CAM_LUN_WILDCARD) { xpt_compile_path(&path, NULL, From owner-svn-src-projects@FreeBSD.ORG Tue Apr 2 11:48:10 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 8A1CC341; Tue, 2 Apr 2013 11:48:10 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 6E1F0D60; Tue, 2 Apr 2013 11:48:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r32BmAKP073309; Tue, 2 Apr 2013 11:48:10 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r32Bm7ur073283; Tue, 2 Apr 2013 11:48:07 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304021148.r32Bm7ur073283@svn.freebsd.org> From: Alexander Motin Date: Tue, 2 Apr 2013 11:48:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249018 - in projects/camlock: crypto/openssh share/man/man4 sys/cam sys/cam/ctl sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/modules sys/modules/ctl usr.bin/ctlstat usr.sbin/ctladm X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Apr 2013 11:48:10 -0000 Author: mav Date: Tue Apr 2 11:48:06 2013 New Revision: 249018 URL: http://svnweb.freebsd.org/changeset/base/249018 Log: MFC @ r249017 Added: projects/camlock/share/man/man4/ctl.4 - copied unchanged from r249017, head/share/man/man4/ctl.4 projects/camlock/sys/modules/ctl/ - copied from r249017, head/sys/modules/ctl/ Modified: projects/camlock/crypto/openssh/krl.c projects/camlock/crypto/openssh/readconf.c projects/camlock/crypto/openssh/readconf.h projects/camlock/crypto/openssh/ssh.c projects/camlock/crypto/openssh/sshconnect2.c projects/camlock/share/man/man4/Makefile projects/camlock/sys/cam/cam_periph.c projects/camlock/sys/cam/ctl/README.ctl.txt projects/camlock/sys/cam/ctl/ctl.c projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c projects/camlock/sys/cam/ctl/ctl_frontend_internal.c projects/camlock/sys/cam/ctl/scsi_ctl.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/camlock/sys/modules/Makefile projects/camlock/usr.bin/ctlstat/ctlstat.8 projects/camlock/usr.sbin/ctladm/ctladm.8 Directory Properties: projects/camlock/ (props changed) projects/camlock/crypto/openssh/ (props changed) projects/camlock/share/man/man4/ (props changed) projects/camlock/sys/ (props changed) projects/camlock/sys/cddl/contrib/opensolaris/ (props changed) Modified: projects/camlock/crypto/openssh/krl.c ============================================================================== --- projects/camlock/crypto/openssh/krl.c Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/crypto/openssh/krl.c Tue Apr 2 11:48:06 2013 (r249018) @@ -502,8 +502,11 @@ choose_next_state(int current_state, u_i } debug3("%s: contig %llu last_gap %llu next_gap %llu final %d, costs:" "list %llu range %llu bitmap %llu new bitmap %llu, " - "selected 0x%02x%s", __func__, contig, last_gap, next_gap, final, - cost_list, cost_range, cost_bitmap, cost_bitmap_restart, new_state, + "selected 0x%02x%s", __func__, (unsigned long long)contig, + (unsigned long long)last_gap, (unsigned long long)next_gap, final, + (unsigned long long)cost_list, (unsigned long long)cost_range, + (unsigned long long)cost_bitmap, + (unsigned long long)cost_bitmap_restart, new_state, *force_new_section ? " restart" : ""); return new_state; } @@ -539,7 +542,8 @@ revoked_certs_generate(struct revoked_ce rs != NULL; rs = RB_NEXT(revoked_serial_tree, &rc->revoked_serials, rs)) { debug3("%s: serial %llu:%llu state 0x%02x", __func__, - rs->lo, rs->hi, state); + (unsigned long long)rs->lo, (unsigned long long)rs->hi, + state); /* Check contiguous length and gap to next section (if any) */ nrs = RB_NEXT(revoked_serial_tree, &rc->revoked_serials, rs); @@ -928,8 +932,9 @@ ssh_krl_from_blob(Buffer *buf, struct ss } format_timestamp(krl->generated_date, timestamp, sizeof(timestamp)); - debug("KRL version %llu generated at %s%s%s", krl->krl_version, - timestamp, *krl->comment ? ": " : "", krl->comment); + debug("KRL version %llu generated at %s%s%s", + (unsigned long long)krl->krl_version, timestamp, + *krl->comment ? ": " : "", krl->comment); /* * 1st pass: verify signatures, if any. This is done to avoid Modified: projects/camlock/crypto/openssh/readconf.c ============================================================================== --- projects/camlock/crypto/openssh/readconf.c Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/crypto/openssh/readconf.c Tue Apr 2 11:48:06 2013 (r249018) @@ -1,4 +1,4 @@ -/* $OpenBSD: readconf.c,v 1.194 2011/09/23 07:45:05 markus Exp $ */ +/* $OpenBSD: readconf.c,v 1.195 2013/02/17 23:16:57 dtucker Exp $ */ /* $FreeBSD$ */ /* * Author: Tatu Ylonen @@ -356,6 +356,26 @@ clear_forwardings(Options *options) options->tun_open = SSH_TUNMODE_NO; } +void +add_identity_file(Options *options, const char *dir, const char *filename, + int userprovided) +{ + char *path; + + if (options->num_identity_files >= SSH_MAX_IDENTITY_FILES) + fatal("Too many identity files specified (max %d)", + SSH_MAX_IDENTITY_FILES); + + if (dir == NULL) /* no dir, filename is absolute */ + path = xstrdup(filename); + else + (void)xasprintf(&path, "%.100s%.100s", dir, filename); + + options->identity_file_userprovided[options->num_identity_files] = + userprovided; + options->identity_files[options->num_identity_files++] = path; +} + /* * Returns the number of the token pointed to by cp or oBadOption. */ @@ -616,9 +636,7 @@ parse_yesnoask: if (*intptr >= SSH_MAX_IDENTITY_FILES) fatal("%.200s line %d: Too many identity files specified (max %d).", filename, linenum, SSH_MAX_IDENTITY_FILES); - charptr = &options->identity_files[*intptr]; - *charptr = xstrdup(arg); - *intptr = *intptr + 1; + add_identity_file(options, NULL, arg, 1); } break; Modified: projects/camlock/crypto/openssh/readconf.h ============================================================================== --- projects/camlock/crypto/openssh/readconf.h Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/crypto/openssh/readconf.h Tue Apr 2 11:48:06 2013 (r249018) @@ -1,4 +1,4 @@ -/* $OpenBSD: readconf.h,v 1.91 2011/09/23 07:45:05 markus Exp $ */ +/* $OpenBSD: readconf.h,v 1.92 2013/02/17 23:16:57 dtucker Exp $ */ /* $FreeBSD$ */ /* @@ -97,6 +97,7 @@ typedef struct { int num_identity_files; /* Number of files for RSA/DSA identities. */ char *identity_files[SSH_MAX_IDENTITY_FILES]; + int identity_file_userprovided[SSH_MAX_IDENTITY_FILES]; Key *identity_keys[SSH_MAX_IDENTITY_FILES]; /* Local TCP/IP forward requests. */ @@ -172,5 +173,6 @@ process_config_line(Options *, const cha void add_local_forward(Options *, const Forward *); void add_remote_forward(Options *, const Forward *); +void add_identity_file(Options *, const char *, const char *, int); #endif /* READCONF_H */ Modified: projects/camlock/crypto/openssh/ssh.c ============================================================================== --- projects/camlock/crypto/openssh/ssh.c Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/crypto/openssh/ssh.c Tue Apr 2 11:48:06 2013 (r249018) @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh.c,v 1.370 2012/07/06 01:47:38 djm Exp $ */ +/* $OpenBSD: ssh.c,v 1.371 2013/02/17 23:16:57 dtucker Exp $ */ /* $FreeBSD$ */ /* * Author: Tatu Ylonen @@ -407,12 +407,7 @@ main(int ac, char **av) strerror(errno)); break; } - if (options.num_identity_files >= - SSH_MAX_IDENTITY_FILES) - fatal("Too many identity files specified " - "(max %d)", SSH_MAX_IDENTITY_FILES); - options.identity_files[options.num_identity_files++] = - xstrdup(optarg); + add_identity_file(&options, NULL, optarg, 1); break; case 'I': #ifdef ENABLE_PKCS11 Modified: projects/camlock/crypto/openssh/sshconnect2.c ============================================================================== --- projects/camlock/crypto/openssh/sshconnect2.c Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/crypto/openssh/sshconnect2.c Tue Apr 2 11:48:06 2013 (r249018) @@ -1,4 +1,4 @@ -/* $OpenBSD: sshconnect2.c,v 1.191 2013/02/15 00:21:01 dtucker Exp $ */ +/* $OpenBSD: sshconnect2.c,v 1.192 2013/02/17 23:16:57 dtucker Exp $ */ /* $FreeBSD$ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. @@ -1418,7 +1418,7 @@ pubkey_prepare(Authctxt *authctxt) id = xcalloc(1, sizeof(*id)); id->key = key; id->filename = xstrdup(options.identity_files[i]); - id->userprovided = 1; + id->userprovided = options.identity_file_userprovided[i]; TAILQ_INSERT_TAIL(&files, id, next); } /* Prefer PKCS11 keys that are explicitly listed */ Modified: projects/camlock/share/man/man4/Makefile ============================================================================== --- projects/camlock/share/man/man4/Makefile Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/share/man/man4/Makefile Tue Apr 2 11:48:06 2013 (r249018) @@ -99,6 +99,7 @@ MAN= aac.4 \ ${_cpuctl.4} \ cpufreq.4 \ crypto.4 \ + ctl.4 \ cue.4 \ cxgb.4 \ cxgbe.4 \ Copied: projects/camlock/share/man/man4/ctl.4 (from r249017, head/share/man/man4/ctl.4) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/camlock/share/man/man4/ctl.4 Tue Apr 2 11:48:06 2013 (r249018, copy of r249017, head/share/man/man4/ctl.4) @@ -0,0 +1,90 @@ +.\" Copyright (c) 2013 Edward Tomasz Napierala +.\" 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$ +.Dd April 2, 2013 +.Dt CTL 4 +.Os +.Sh NAME +.Nm ctl +.Nd CAM Target Layer +.Sh SYNOPSIS +To compile this driver into the kernel, +place the following line in your +kernel configuration file: +.Bd -ragged -offset indent +.Cd "device ctl" +.Ed +.Pp +Alternatively, to load the driver as a +module at boot time, place the following line in +.Xr loader.conf 5 : +.Bd -literal -offset indent +ctl_load="YES" +.Ed +.Sh DESCRIPTION +The +.Nm +subsystem provides SCSI disk and processor emulation. +It supports features such as: +.Pp +.Bl -bullet -compact +.It +Disk and processor device emulation +.It +Tagged queueing +.It +SCSI task attribute support (ordered, head of queue, simple tags) +.It +SCSI implicit command ordering support. +.It +Full task management support (abort, LUN reset, target reset, etc.) +.It +Support for multiple ports +.It +Support for multiple simultaneous initiators +.It +Support for multiple simultaneous backing stores +.It +Persistent reservation support +.It +Mode sense/select support +.It +Error injection support +.It +All I/O handled in-kernel, no userland context switch overhead +.El +.Sh SEE ALSO +.Xr ctladm 8 , +.Xr ctlstat 8 +.Sh HISTORY +The +.Nm +subsystem first appeared in +.Fx 9.1 . +.Sh AUTHORS +The +.Nm +subsystem was written by +.An Kenneth Merry Aq ken@FreeBSD.org . Modified: projects/camlock/sys/cam/cam_periph.c ============================================================================== --- projects/camlock/sys/cam/cam_periph.c Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/sys/cam/cam_periph.c Tue Apr 2 11:48:06 2013 (r249018) @@ -218,9 +218,9 @@ cam_periph_alloc(periph_ctor_t *periph_c } if (*p_drv == NULL) { printf("cam_periph_alloc: invalid periph name '%s'\n", name); + xpt_unlock_buses(); xpt_free_path(periph->path); free(periph, M_CAMPERIPH); - xpt_unlock_buses(); return (CAM_REQ_INVALID); } periph->unit_number = camperiphunit(*p_drv, path_id, target_id, lun_id); Modified: projects/camlock/sys/cam/ctl/README.ctl.txt ============================================================================== --- projects/camlock/sys/cam/ctl/README.ctl.txt Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/sys/cam/ctl/README.ctl.txt Tue Apr 2 11:48:06 2013 (r249018) @@ -227,9 +227,6 @@ Revision 1.2 Changes To Do List: ========== - - Make CTL buildable as a module. Work needs to be done on initialization, - and on freeing resources and LUNs when it is built as a module. - - Use devstat(9) for CTL's statistics collection. CTL uses a home-grown statistics collection system that is similar to devstat(9). ctlstat should be retired in favor of iostat, etc., once aggregation modes are Modified: projects/camlock/sys/cam/ctl/ctl.c ============================================================================== --- projects/camlock/sys/cam/ctl/ctl.c Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/sys/cam/ctl/ctl.c Tue Apr 2 11:48:06 2013 (r249018) @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -338,7 +339,7 @@ TUNABLE_INT("kern.cam.ctl.disable", &ctl static void ctl_isc_event_handler(ctl_ha_channel chanel, ctl_ha_event event, int param); static void ctl_copy_sense_data(union ctl_ha_msg *src, union ctl_io *dest); -static void ctl_init(void); +static int ctl_init(void); void ctl_shutdown(void); static int ctl_open(struct cdev *dev, int flags, int fmt, struct thread *td); static int ctl_close(struct cdev *dev, int flags, int fmt, struct thread *td); @@ -458,11 +459,16 @@ static struct cdevsw ctl_cdevsw = { MALLOC_DEFINE(M_CTL, "ctlmem", "Memory used for CTL"); -/* - * If we have the CAM SIM, we may or may not have another SIM that will - * cause CTL to get initialized. If not, we need to initialize it. - */ -SYSINIT(ctl_init, SI_SUB_CONFIGURE, SI_ORDER_THIRD, ctl_init, NULL); +static int ctl_module_event_handler(module_t, int /*modeventtype_t*/, void *); + +static moduledata_t ctl_moduledata = { + "ctl", + ctl_module_event_handler, + NULL +}; + +DECLARE_MODULE(ctl, ctl_moduledata, SI_SUB_CONFIGURE, SI_ORDER_THIRD); +MODULE_VERSION(ctl, 1); static void ctl_isc_handler_finish_xfer(struct ctl_softc *ctl_softc, @@ -942,7 +948,7 @@ ctl_copy_sense_data(union ctl_ha_msg *sr dest->io_hdr.status = src->hdr.status; } -static void +static int ctl_init(void) { struct ctl_softc *softc; @@ -953,7 +959,7 @@ ctl_init(void) #if 0 int i; #endif - int retval; + int error, retval; //int isc_retval; retval = 0; @@ -962,7 +968,7 @@ ctl_init(void) /* If we're disabled, don't initialize. */ if (ctl_disable != 0) - return; + return (0); control_softc = malloc(sizeof(*control_softc), M_DEVBUF, M_WAITOK | M_ZERO); @@ -991,7 +997,7 @@ ctl_init(void) destroy_dev(softc->dev); free(control_softc, M_DEVBUF); control_softc = NULL; - return; + return (ENOMEM); } SYSCTL_ADD_INT(&softc->sysctl_ctx, @@ -1053,7 +1059,7 @@ ctl_init(void) &internal_pool)!= 0){ printf("ctl: can't allocate %d entry internal pool, " "exiting\n", CTL_POOL_ENTRIES_INTERNAL); - return; + return (ENOMEM); } if (ctl_pool_create(softc, CTL_POOL_EMERGENCY, @@ -1061,7 +1067,7 @@ ctl_init(void) printf("ctl: can't allocate %d entry emergency pool, " "exiting\n", CTL_POOL_ENTRIES_EMERGENCY); ctl_pool_free(softc, internal_pool); - return; + return (ENOMEM); } if (ctl_pool_create(softc, CTL_POOL_4OTHERSC, CTL_POOL_ENTRIES_OTHER_SC, @@ -1071,7 +1077,7 @@ ctl_init(void) "exiting\n", CTL_POOL_ENTRIES_OTHER_SC); ctl_pool_free(softc, internal_pool); ctl_pool_free(softc, emergency_pool); - return; + return (ENOMEM); } softc->internal_pool = internal_pool; @@ -1092,14 +1098,15 @@ ctl_init(void) mtx_unlock(&softc->ctl_lock); #endif - if (kproc_create(ctl_work_thread, softc, &softc->work_thread, 0, 0, - "ctl_thrd") != 0) { + error = kproc_create(ctl_work_thread, softc, &softc->work_thread, 0, 0, + "ctl_thrd"); + if (error != 0) { printf("error creating CTL work thread!\n"); ctl_free_lun(lun); ctl_pool_free(softc, internal_pool); ctl_pool_free(softc, emergency_pool); ctl_pool_free(softc, other_pool); - return; + return (error); } printf("ctl: CAM Target Layer loaded\n"); @@ -1139,10 +1146,11 @@ ctl_init(void) if (sizeof(struct callout) > CTL_TIMER_BYTES) { printf("sizeof(struct callout) %zd > CTL_TIMER_BYTES %zd\n", sizeof(struct callout), CTL_TIMER_BYTES); - return; + return (EINVAL); } #endif /* CTL_IO_DELAY */ + return (0); } void @@ -1199,6 +1207,20 @@ ctl_shutdown(void) printf("ctl: CAM Target Layer unloaded\n"); } +static int +ctl_module_event_handler(module_t mod, int what, void *arg) +{ + + switch (what) { + case MOD_LOAD: + return (ctl_init()); + case MOD_UNLOAD: + return (EBUSY); + default: + return (EOPNOTSUPP); + } +} + /* * XXX KDM should we do some access checks here? Bump a reference count to * prevent a CTL module from being unloaded while someone has it open? Modified: projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c ============================================================================== --- projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c Tue Apr 2 11:48:06 2013 (r249018) @@ -121,12 +121,23 @@ struct cfcs_softc cfcs_softc; static int cfcs_max_sense = sizeof(struct scsi_sense_data); extern int ctl_disable; -SYSINIT(cfcs_init, SI_SUB_CONFIGURE, SI_ORDER_FOURTH, cfcs_init, NULL); SYSCTL_NODE(_kern_cam, OID_AUTO, ctl2cam, CTLFLAG_RD, 0, "CAM Target Layer SIM frontend"); SYSCTL_INT(_kern_cam_ctl2cam, OID_AUTO, max_sense, CTLFLAG_RW, &cfcs_max_sense, 0, "Maximum sense data size"); +static int cfcs_module_event_handler(module_t, int /*modeventtype_t*/, void *); + +static moduledata_t cfcs_moduledata = { + "ctlcfcs", + cfcs_module_event_handler, + NULL +}; + +DECLARE_MODULE(ctlcfcs, cfcs_moduledata, SI_SUB_CONFIGURE, SI_ORDER_FOURTH); +MODULE_VERSION(ctlcfcs, 1); +MODULE_DEPEND(ctlcfi, ctl, 1, 1, 1); +MODULE_DEPEND(ctlcfi, cam, 1, 1, 1); int cfcs_init(void) @@ -176,7 +187,7 @@ cfcs_init(void) printf("%s: ctl_frontend_register() failed with error %d!\n", __func__, retval); mtx_destroy(&softc->lock); - return (1); + return (retval); } /* @@ -236,7 +247,7 @@ cfcs_init(void) CAM_LUN_WILDCARD) != CAM_REQ_CMP) { printf("%s: error creating path\n", __func__); xpt_bus_deregister(cam_sim_path(softc->sim)); - retval = 1; + retval = EINVAL; goto bailout; } @@ -274,6 +285,20 @@ cfcs_shutdown(void) } +static int +cfcs_module_event_handler(module_t mod, int what, void *arg) +{ + + switch (what) { + case MOD_LOAD: + return (cfcs_init()); + case MOD_UNLOAD: + return (EBUSY); + default: + return (EOPNOTSUPP); + } +} + static void cfcs_onoffline(void *arg, int online) { Modified: projects/camlock/sys/cam/ctl/ctl_frontend_internal.c ============================================================================== --- projects/camlock/sys/cam/ctl/ctl_frontend_internal.c Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/sys/cam/ctl/ctl_frontend_internal.c Tue Apr 2 11:48:06 2013 (r249018) @@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -189,7 +190,7 @@ MALLOC_DEFINE(M_CTL_CFI, "ctlcfi", "CTL static struct cfi_softc fetd_internal_softc; extern int ctl_disable; -void cfi_init(void); +int cfi_init(void); void cfi_shutdown(void) __unused; static void cfi_online(void *arg); static void cfi_offline(void *arg); @@ -217,9 +218,19 @@ static void cfi_metatask_io_done(union c static void cfi_err_recovery_done(union ctl_io *io); static void cfi_lun_io_done(union ctl_io *io); -SYSINIT(cfi_init, SI_SUB_CONFIGURE, SI_ORDER_FOURTH, cfi_init, NULL); +static int cfi_module_event_handler(module_t, int /*modeventtype_t*/, void *); -void +static moduledata_t cfi_moduledata = { + "ctlcfi", + cfi_module_event_handler, + NULL +}; + +DECLARE_MODULE(ctlcfi, cfi_moduledata, SI_SUB_CONFIGURE, SI_ORDER_FOURTH); +MODULE_VERSION(ctlcfi, 1); +MODULE_DEPEND(ctlcfi, ctl, 1, 1, 1); + +int cfi_init(void) { struct cfi_softc *softc; @@ -234,7 +245,7 @@ cfi_init(void) /* If we're disabled, don't initialize */ if (ctl_disable != 0) - return; + return (0); if (sizeof(struct cfi_lun_io) > CTL_PORT_PRIV_SIZE) { printf("%s: size of struct cfi_lun_io %zd > " @@ -292,7 +303,7 @@ cfi_init(void) } bailout: - return; + return (0); bailout_error: @@ -309,6 +320,8 @@ bailout_error: default: break; } + + return (ENOMEM); } void @@ -331,6 +344,20 @@ cfi_shutdown(void) printf("%s: error shrinking LUN pool\n", __func__); } +static int +cfi_module_event_handler(module_t mod, int what, void *arg) +{ + + switch (what) { + case MOD_LOAD: + return (cfi_init()); + case MOD_UNLOAD: + return (EBUSY); + default: + return (EOPNOTSUPP); + } +} + static void cfi_online(void *arg) { Modified: projects/camlock/sys/cam/ctl/scsi_ctl.c ============================================================================== --- projects/camlock/sys/cam/ctl/scsi_ctl.c Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/sys/cam/ctl/scsi_ctl.c Tue Apr 2 11:48:06 2013 (r249018) @@ -225,38 +225,26 @@ static struct periph_driver ctlfe_driver ctlfeinit, "ctl", TAILQ_HEAD_INITIALIZER(ctlfe_driver.units), /*generation*/ 0 }; -PERIPHDRIVER_DECLARE(ctl, ctlfe_driver); -extern struct ctl_softc *control_softc; -extern int ctl_disable; - -int -ctlfeinitialize(void) -{ - cam_status status; - - /* Don't initialize if we're disabled */ - if (ctl_disable != 0) - return (0); +static int ctlfe_module_event_handler(module_t, int /*modeventtype_t*/, void *); - STAILQ_INIT(&ctlfe_softc_list); - - mtx_init(&ctlfe_list_mtx, ctlfe_mtx_desc, NULL, MTX_DEF); - - xpt_lock_buses(); - periphdriver_register(&ctlfe_driver); - xpt_unlock_buses(); +/* + * We're not using PERIPHDRIVER_DECLARE(), because it runs at SI_SUB_DRIVERS, + * and that happens before CTL gets initialised. + */ +static moduledata_t ctlfe_moduledata = { + "ctlfe", + ctlfe_module_event_handler, + NULL +}; - status = xpt_register_async(AC_PATH_REGISTERED | AC_PATH_DEREGISTERED | - AC_CONTRACT, ctlfeasync, NULL, NULL); +DECLARE_MODULE(ctlfe, ctlfe_moduledata, SI_SUB_CONFIGURE, SI_ORDER_FOURTH); +MODULE_VERSION(ctlfe, 1); +MODULE_DEPEND(ctlfe, ctl, 1, 1, 1); +MODULE_DEPEND(ctlfe, cam, 1, 1, 1); - if (status != CAM_REQ_CMP) { - printf("ctl: Failed to attach async callback due to CAM " - "status 0x%x!\n", status); - } - - return (0); -} +extern struct ctl_softc *control_softc; +extern int ctl_disable; void ctlfeshutdown(void) @@ -288,6 +276,21 @@ ctlfeinit(void) } } +static int +ctlfe_module_event_handler(module_t mod, int what, void *arg) +{ + + switch (what) { + case MOD_LOAD: + periphdriver_register(&ctlfe_driver); + return (0); + case MOD_UNLOAD: + return (EBUSY); + default: + return (EOPNOTSUPP); + } +} + static void ctlfeasync(void *callback_arg, uint32_t code, struct cam_path *path, void *arg) { @@ -1971,7 +1974,6 @@ ctlfe_lun_enable(void *arg, struct ctl_i struct cam_sim *sim; cam_status status; - bus_softc = (struct ctlfe_softc *)arg; sim = bus_softc->sim; Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c ============================================================================== --- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Tue Apr 2 11:48:06 2013 (r249018) @@ -5713,11 +5713,11 @@ zfsdev_ioctl(struct cdev *dev, u_long zc { zfs_cmd_t *zc; uint_t vecnum; - int error, rc, len; #ifdef illumos + int error, rc, len; minor_t minor = getminor(dev); #else - int cflag, cmd, oldvecnum; + int error, len, cflag, cmd, oldvecnum; cred_t *cr = td->td_ucred; #endif const zfs_ioc_vec_t *vec; @@ -5904,8 +5904,11 @@ zfsdev_ioctl(struct cdev *dev, u_long zc out: nvlist_free(innvl); +#ifdef illumos + rc = ddi_copyout(zc, (void *)arg, sizeof (zfs_cmd_t), flag); if (error == 0 && rc != 0) error = EFAULT; +#endif if (error == 0 && vec->zvec_allow_log) { char *s = tsd_get(zfs_allow_log_key); if (s != NULL) Modified: projects/camlock/sys/modules/Makefile ============================================================================== --- projects/camlock/sys/modules/Makefile Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/sys/modules/Makefile Tue Apr 2 11:48:06 2013 (r249018) @@ -78,6 +78,7 @@ SUBDIR= \ ${_cs} \ ${_ct} \ ${_ctau} \ + ctl \ ${_cxgb} \ cxgbe \ ${_cyclic} \ Modified: projects/camlock/usr.bin/ctlstat/ctlstat.8 ============================================================================== --- projects/camlock/usr.bin/ctlstat/ctlstat.8 Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/usr.bin/ctlstat/ctlstat.8 Tue Apr 2 11:48:06 2013 (r249018) @@ -34,7 +34,7 @@ .\" $Id: //depot/users/kenm/FreeBSD-test2/usr.bin/ctlstat/ctlstat.8#2 $ .\" $FreeBSD$ .\" -.Dd June 4, 2010 +.Dd March 6, 2013 .Dt CTLSTAT 8 .Os .Sh NAME @@ -113,6 +113,7 @@ every 10 seconds. .Sh SEE ALSO .Xr cam 3 , .Xr cam 4 , +.Xr ctl 4 , .Xr xpt 4 , .Xr camcontrol 8 , .Xr ctladm 8 , Modified: projects/camlock/usr.sbin/ctladm/ctladm.8 ============================================================================== --- projects/camlock/usr.sbin/ctladm/ctladm.8 Tue Apr 2 11:45:38 2013 (r249017) +++ projects/camlock/usr.sbin/ctladm/ctladm.8 Tue Apr 2 11:48:06 2013 (r249018) @@ -34,7 +34,7 @@ .\" $Id: //depot/users/kenm/FreeBSD-test2/usr.sbin/ctladm/ctladm.8#3 $ .\" $FreeBSD$ .\" -.Dd March 6, 2012 +.Dd April 2, 2013 .Dt CTLADM 8 .Os .Sh NAME @@ -975,6 +975,7 @@ This will result in a sense key of NOT R .Xr cam 3 , .Xr cam_cdbparse 3 , .Xr cam 4 , +.Xr ctl 4 , .Xr xpt 4 , .Xr camcontrol 8 .Sh HISTORY From owner-svn-src-projects@FreeBSD.ORG Tue Apr 2 19:07:12 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 92F91BC2; Tue, 2 Apr 2013 19:07:12 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 85FD0172; Tue, 2 Apr 2013 19:07:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r32J7BDo015667; Tue, 2 Apr 2013 19:07:11 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r32J7B8j015666; Tue, 2 Apr 2013 19:07:11 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304021907.r32J7B8j015666@svn.freebsd.org> From: Alexander Motin Date: Tue, 2 Apr 2013 19:07:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249030 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Apr 2013 19:07:12 -0000 Author: mav Date: Tue Apr 2 19:07:11 2013 New Revision: 249030 URL: http://svnweb.freebsd.org/changeset/base/249030 Log: Remove two no longer needed checks. Modified: projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 17:34:42 2013 (r249029) +++ projects/camlock/sys/cam/cam_xpt.c Tue Apr 2 19:07:11 2013 (r249030) @@ -2481,16 +2481,10 @@ xpt_action_default(union ccb *start_ccb) case XPT_RESET_DEV: case XPT_ENG_EXEC: case XPT_SMP_IO: - { - int frozen; - - frozen = cam_ccbq_insert_ccb(&path->device->ccbq, start_ccb); - if (frozen > 0) - xpt_run_dev_allocq(path->device); + cam_ccbq_insert_ccb(&path->device->ccbq, start_ccb); if (xpt_schedule_devq(path->bus->sim->devq, path->device)) xpt_run_devq(path->bus->sim->devq); break; - } case XPT_CALC_GEOMETRY: { struct cam_sim *sim; @@ -3244,7 +3238,7 @@ xpt_run_devq(struct cam_devq *devq) xpt_schedule_devq(devq, device); - if (work_ccb && (work_ccb->ccb_h.flags & CAM_DEV_QFREEZE) != 0){ + if ((work_ccb->ccb_h.flags & CAM_DEV_QFREEZE) != 0) { /* * The client wants to freeze the queue * after this CCB is sent. From owner-svn-src-projects@FreeBSD.ORG Wed Apr 3 06:29:26 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id C220D403; Wed, 3 Apr 2013 06:29:26 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id B61A5792; Wed, 3 Apr 2013 06:29:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r336TQ86016472; Wed, 3 Apr 2013 06:29:26 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r336TQkq016471; Wed, 3 Apr 2013 06:29:26 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201304030629.r336TQkq016471@svn.freebsd.org> From: Neel Natu Date: Wed, 3 Apr 2013 06:29:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249037 - projects/bhyve_svm/sys/x86/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Apr 2013 06:29:26 -0000 Author: neel Date: Wed Apr 3 06:29:26 2013 New Revision: 249037 URL: http://svnweb.freebsd.org/changeset/base/249037 Log: SVM related MSR registers and bitfield definitions. Submitted by: Anish Gupta (akgupt3@gmail.com) Modified: projects/bhyve_svm/sys/x86/include/specialreg.h Modified: projects/bhyve_svm/sys/x86/include/specialreg.h ============================================================================== --- projects/bhyve_svm/sys/x86/include/specialreg.h Wed Apr 3 01:27:15 2013 (r249036) +++ projects/bhyve_svm/sys/x86/include/specialreg.h Wed Apr 3 06:29:26 2013 (r249037) @@ -81,6 +81,7 @@ #define EFER_LME 0x000000100 /* Long mode enable (R/W) */ #define EFER_LMA 0x000000400 /* Long mode active (R) */ #define EFER_NXE 0x000000800 /* PTE No-Execute bit enable (R/W) */ +#define EFER_SVM 0x000001000 /* SVM enable bit for AMD, reserved for Intel */ /* * Intel Extended Features registers @@ -691,6 +692,11 @@ #define MSR_TOP_MEM2 0xc001001d /* boundary for ram above 4G */ #define MSR_K8_UCODE_UPDATE 0xc0010020 /* update microcode */ #define MSR_MC0_CTL_MASK 0xc0010044 +#define MSR_VM_CR 0xC0010114 /* SVM: feature control */ +#define MSR_VM_HSAVE_PA 0xC0010117 /* SVM: host save area address */ + +/* AMD VM_CR related */ +#define VM_CR_SVMDIS 0x10 /* SVM: disabled by BIOS */ /* VIA ACE crypto featureset: for via_feature_rng */ #define VIA_HAS_RNG 1 /* cpu has RNG */ From owner-svn-src-projects@FreeBSD.ORG Wed Apr 3 10:37:28 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 8B88FD56; Wed, 3 Apr 2013 10:37:28 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 7BF3D360; Wed, 3 Apr 2013 10:37:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r33AbSae090082; Wed, 3 Apr 2013 10:37:28 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r33AbQKh090067; Wed, 3 Apr 2013 10:37:26 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201304031037.r33AbQKh090067@svn.freebsd.org> From: Gleb Smirnoff Date: Wed, 3 Apr 2013 10:37:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249044 - in projects/counters/sys: amd64/include arm/include i386/include ia64/include mips/include netinet powerpc/include sparc64/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Apr 2013 10:37:28 -0000 Author: glebius Date: Wed Apr 3 10:37:26 2013 New Revision: 249044 URL: http://svnweb.freebsd.org/changeset/base/249044 Log: o Add counter_enter(), counter_exit(), counter_u64_add_protected(). o Remove counter_u64_subtract() and change argument type to int64_t. Discussed with: luigi, kib Modified: projects/counters/sys/amd64/include/counter.h projects/counters/sys/arm/include/counter.h projects/counters/sys/i386/include/counter.h projects/counters/sys/ia64/include/counter.h projects/counters/sys/mips/include/counter.h projects/counters/sys/netinet/ip_input.c projects/counters/sys/netinet/ip_var.h projects/counters/sys/powerpc/include/counter.h projects/counters/sys/sparc64/include/counter.h Modified: projects/counters/sys/amd64/include/counter.h ============================================================================== --- projects/counters/sys/amd64/include/counter.h Wed Apr 3 10:31:13 2013 (r249043) +++ projects/counters/sys/amd64/include/counter.h Wed Apr 3 10:37:26 2013 (r249044) @@ -33,23 +33,18 @@ extern struct pcpu __pcpu[1]; -static inline void -counter_u64_add(counter_u64_t c, uint64_t inc) -{ +#define counter_enter() do {} while (0) +#define counter_exit() do {} while (0) - __asm __volatile("addq\t%1,%%gs:(%0)" - : - : "r" ((char *)c - (char *)&__pcpu[0]), "r" (inc) - : "memory", "cc"); -} +#define counter_u64_add_protected(c, i) counter_u64_add(c, i) static inline void -counter_u64_subtract(counter_u64_t c, uint64_t dec) +counter_u64_add(counter_u64_t c, int64_t inc) { - __asm __volatile("subq\t%1,%%gs:(%0)" + __asm __volatile("addq\t%1,%%gs:(%0)" : - : "r" ((char *)c - (char *)&__pcpu[0]), "r" (dec) + : "r" ((char *)c - (char *)&__pcpu[0]), "r" (inc) : "memory", "cc"); } Modified: projects/counters/sys/arm/include/counter.h ============================================================================== --- projects/counters/sys/arm/include/counter.h Wed Apr 3 10:31:13 2013 (r249043) +++ projects/counters/sys/arm/include/counter.h Wed Apr 3 10:37:26 2013 (r249044) @@ -31,22 +31,21 @@ #include -static inline void -counter_u64_add(counter_u64_t c, uint64_t inc) -{ +#define counter_enter() critical_enter() +#define counter_exit() critical_exit() - critical_enter(); - *(uint64_t *)zpcpu_get(c) += inc; - critical_exit(); -} +#define counter_u64_add_protected(c, inc) do { \ + CRITICAL_ASSERT(td); \ + *(uint64_t *)zpcpu_get(c) += (inc); \ +} while (0) static inline void -counter_u64_subtract(counter_u64_t c, uint64_t dec) +counter_u64_add(counter_u64_t c, int64_t inc) { - critical_enter(); - *(uint64_t *)zpcpu_get(c) -= dec; - critical_exit(); + counter_enter(); + counter_u64_add_protected(c, inc); + counter_exit(); } #endif /* ! __MACHINE_COUNTER_H__ */ Modified: projects/counters/sys/i386/include/counter.h ============================================================================== --- projects/counters/sys/i386/include/counter.h Wed Apr 3 10:31:13 2013 (r249043) +++ projects/counters/sys/i386/include/counter.h Wed Apr 3 10:37:26 2013 (r249044) @@ -33,8 +33,18 @@ #include #include +#define counter_enter() do { \ + if ((cpu_feature & CPUID_CX8) == 0) \ + critical_enter(); \ +} while (0) + +#define counter_exit() do { \ + if ((cpu_feature & CPUID_CX8) == 0) \ + critical_exit(); \ +} while (0) + static inline void -counter_64_inc_8b(uint64_t *p, uint64_t inc) +counter_64_inc_8b(uint64_t *p, int64_t inc) { __asm __volatile( @@ -52,8 +62,16 @@ counter_64_inc_8b(uint64_t *p, uint64_t : "memory", "cc", "eax", "edx", "ebx", "ecx"); } +#define counter_u64_add_protected(c, inc) do { \ + if ((cpu_feature & CPUID_CX8) == 0) { \ + CRITICAL_ASSERT(td); \ + *(uint64_t *)zpcpu_get(c) += (inc); \ + } else \ + counter_64_inc_8b((c), (inc)); \ +} while (0) + static inline void -counter_u64_add(counter_u64_t c, uint64_t inc) +counter_u64_add(counter_u64_t c, int64_t inc) { if ((cpu_feature & CPUID_CX8) == 0) { @@ -65,11 +83,4 @@ counter_u64_add(counter_u64_t c, uint64_ } } -static inline void -counter_u64_subtract(counter_u64_t c, uint64_t dec) -{ - - counter_u64_add(c, -(int64_t)dec); -} - #endif /* ! __MACHINE_COUNTER_H__ */ Modified: projects/counters/sys/ia64/include/counter.h ============================================================================== --- projects/counters/sys/ia64/include/counter.h Wed Apr 3 10:31:13 2013 (r249043) +++ projects/counters/sys/ia64/include/counter.h Wed Apr 3 10:37:26 2013 (r249044) @@ -31,22 +31,21 @@ #include -static inline void -counter_u64_add(counter_u64_t c, uint64_t inc) -{ +#define counter_enter() critical_enter() +#define counter_exit() critical_exit() - critical_enter(); - *(uint64_t *)zpcpu_get(c) += inc; - critical_exit(); -} +#define counter_u64_add_protected(c, inc) do { \ + CRITICAL_ASSERT(td); \ + *(uint64_t *)zpcpu_get(c) += (inc); \ +} while (0) static inline void -counter_u64_subtract(counter_u64_t c, uint64_t dec) +counter_u64_add(counter_u64_t c, int64_t inc) { - critical_enter(); - *(uint64_t *)zpcpu_get(c) -= dec; - critical_exit(); + counter_enter(); + counter_u64_add_protected(c, inc); + counter_exit(); } #endif /* ! __MACHINE_COUNTER_H__ */ Modified: projects/counters/sys/mips/include/counter.h ============================================================================== --- projects/counters/sys/mips/include/counter.h Wed Apr 3 10:31:13 2013 (r249043) +++ projects/counters/sys/mips/include/counter.h Wed Apr 3 10:37:26 2013 (r249044) @@ -31,22 +31,21 @@ #include -static inline void -counter_u64_add(counter_u64_t c, uint64_t inc) -{ +#define counter_enter() critical_enter() +#define counter_exit() critical_exit() - critical_enter(); - *(uint64_t *)zpcpu_get(c) += inc; - critical_exit(); -} +#define counter_u64_add_protected(c, inc) do { \ + CRITICAL_ASSERT(td); \ + *(uint64_t *)zpcpu_get(c) += (inc); \ +} while (0) static inline void -counter_u64_subtract(counter_u64_t c, uint64_t dec) +counter_u64_add(counter_u64_t c, int64_t inc) { - critical_enter(); - *(uint64_t *)zpcpu_get(c) -= dec; - critical_exit(); + counter_enter(); + counter_u64_add_protected(c, inc); + counter_exit(); } #endif /* ! __MACHINE_COUNTER_H__ */ Modified: projects/counters/sys/netinet/ip_input.c ============================================================================== --- projects/counters/sys/netinet/ip_input.c Wed Apr 3 10:31:13 2013 (r249043) +++ projects/counters/sys/netinet/ip_input.c Wed Apr 3 10:37:26 2013 (r249044) @@ -293,7 +293,7 @@ void kmod_ipstat_dec(int statnum) { - counter_u64_subtract((counter_u64_t )&V_ipstatp + statnum, 1); + counter_u64_add((counter_u64_t )&V_ipstatp + statnum, -1); } static int Modified: projects/counters/sys/netinet/ip_var.h ============================================================================== --- projects/counters/sys/netinet/ip_var.h Wed Apr 3 10:31:13 2013 (r249043) +++ projects/counters/sys/netinet/ip_var.h Wed Apr 3 10:37:26 2013 (r249044) @@ -175,7 +175,7 @@ VNET_DECLARE(struct ipstat_p, ipstatp); #define IPSTAT_ADD(name, val) counter_u64_add(V_ipstatp.name, (val)) #define IPSTAT_SUB(name, val) counter_u64_subtract(V_ipstatp.name, (val)) #define IPSTAT_INC(name) IPSTAT_ADD(name, 1) -#define IPSTAT_DEC(name) IPSTAT_SUB(name, 1) +#define IPSTAT_DEC(name) IPSTAT_ADD(name, -1) /* * Kernel module consumers must use this accessor macro. Modified: projects/counters/sys/powerpc/include/counter.h ============================================================================== --- projects/counters/sys/powerpc/include/counter.h Wed Apr 3 10:31:13 2013 (r249043) +++ projects/counters/sys/powerpc/include/counter.h Wed Apr 3 10:37:26 2013 (r249044) @@ -33,8 +33,13 @@ #if defined(AIM) && defined(__powerpc64__) +#define counter_enter() do {} while (0) +#define counter_exit() do {} while (0) + +#define counter_u64_add_protected(c, i) counter_u64_add(c, i) + static inline void -counter_u64_add(counter_u64_t c, uint64_t inc) +counter_u64_add(counter_u64_t c, int64_t inc) { uint64_t ccpu, old; @@ -50,31 +55,23 @@ counter_u64_add(counter_u64_t c, uint64_ : "cc", "memory"); } -static inline void -counter_u64_subtract(counter_u64_t c, uint64_t dec) -{ - - counter_u64_add(c, -dec); -} - #else /* !AIM || !64bit */ -static inline void -counter_u64_add(counter_u64_t c, uint64_t inc) -{ +#define counter_enter() critical_enter() +#define counter_exit() critical_exit() - critical_enter(); - *(uint64_t *)zpcpu_get(c) += inc; - critical_exit(); -} +#define counter_u64_add_protected(c, inc) do { \ + CRITICAL_ASSERT(td); \ + *(uint64_t *)zpcpu_get(c) += (inc); \ +} while (0) static inline void -counter_u64_subtract(counter_u64_t c, uint64_t dec) +counter_u64_add(counter_u64_t c, int64_t inc) { - critical_enter(); - *(uint64_t *)zpcpu_get(c) -= dec; - critical_exit(); + counter_enter(); + counter_u64_add_protected(c, inc); + counter_exit(); } #endif /* AIM 64bit */ Modified: projects/counters/sys/sparc64/include/counter.h ============================================================================== --- projects/counters/sys/sparc64/include/counter.h Wed Apr 3 10:31:13 2013 (r249043) +++ projects/counters/sys/sparc64/include/counter.h Wed Apr 3 10:37:26 2013 (r249044) @@ -31,22 +31,21 @@ #include -static inline void -counter_u64_add(counter_u64_t c, uint64_t inc) -{ +#define counter_enter() critical_enter() +#define counter_exit() critical_exit() - critical_enter(); - *(uint64_t *)zpcpu_get(c) += inc; - critical_exit(); -} +#define counter_u64_add_protected(c, inc) do { \ + CRITICAL_ASSERT(td); \ + *(uint64_t *)zpcpu_get(c) += (inc); \ +} while (0) static inline void -counter_u64_subtract(counter_u64_t c, uint64_t dec) +counter_u64_add(counter_u64_t c, int64_t inc) { - critical_enter(); - *(uint64_t *)zpcpu_get(c) -= dec; - critical_exit(); + counter_enter(); + counter_u64_add_protected(c, inc); + counter_exit(); } #endif /* ! __MACHINE_COUNTER_H__ */ From owner-svn-src-projects@FreeBSD.ORG Wed Apr 3 10:49:05 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id C0A8416C; Wed, 3 Apr 2013 10:49:05 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 99CFD5E8; Wed, 3 Apr 2013 10:49:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r33An59c093274; Wed, 3 Apr 2013 10:49:05 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r33An54X093273; Wed, 3 Apr 2013 10:49:05 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201304031049.r33An54X093273@svn.freebsd.org> From: Gleb Smirnoff Date: Wed, 3 Apr 2013 10:49:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249045 - projects/counters/share/man/man9 X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Apr 2013 10:49:05 -0000 Author: glebius Date: Wed Apr 3 10:49:05 2013 New Revision: 249045 URL: http://svnweb.freebsd.org/changeset/base/249045 Log: Document recent changes and improve wording[1]. Submitted by: bde [1] Modified: projects/counters/share/man/man9/counter.9 Modified: projects/counters/share/man/man9/counter.9 ============================================================================== --- projects/counters/share/man/man9/counter.9 Wed Apr 3 10:37:26 2013 (r249044) +++ projects/counters/share/man/man9/counter.9 Wed Apr 3 10:49:05 2013 (r249045) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 17, 2013 +.Dd April 3, 2013 .Dt COUNTER 9 .Os .Sh NAME @@ -39,9 +39,13 @@ .Ft void .Fn counter_u64_free "counter_u64_t cnt" .Ft void -.Fn counter_u64_add "counter_u64_t cnt" "uint64_t inc" +.Fn counter_u64_add "counter_u64_t cnt" "int64_t value" .Ft void -.Fn counter_u64_subtract "counter_u64_t cnt" "uint64_t dec" +.Fn counter_enter +.Ft void +.Fn counter_exit +.Ft void +.Fn counter_u64_add_protected "counter_u64_t cnt" "int64_t value" .Ft uint64_t .Fn counter_u64_fetch "counter_u64_t cnt" .Ft void @@ -92,21 +96,28 @@ is specified the operation may fail. Free previously allocated .Nm .Fa cnt . -.It Fn counter_u64_add cnt inc -Add value of -.Fa inc -to -.Nm -.Fa cnt . -.It Fn counter_u64_subtract cnt dec -Subtract value of -.Fa dec -from +.It Fn counter_u64_add cnt value +Add +.Fa value +to the .Nm .Fa cnt . The KPI does not guarantee any protection from underflow. +.It Fn counter_enter +Enter mode that would allow to safely update several counters via +.Fn counter_u64_add_protected . +On some machines this expands to +.Xr critical 9 +section, while on other is a nop. See .Sx IMPLEMENTATION DETAILS . +.It Fn counter_exit +Exit mode for updating several counters. +.It Fn counter_u64_add_protected cnt value +Same as +.Fn counter_u64_add , +but should be preceded by +.Fn counter_enter . .It Fn counter_u64_fetch cnt Obtain current snapshot of the data collected in .Nm @@ -176,7 +187,7 @@ section. .Xr critical 9 , .Xr locking 9 , .Xr malloc 9 , -.Xr sysctl 9, +.Xr sysctl 9 , .Xr uma 9 .Sh HISTORY The From owner-svn-src-projects@FreeBSD.ORG Wed Apr 3 16:55:34 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 5D572556; Wed, 3 Apr 2013 16:55:34 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 4EA97FB8; Wed, 3 Apr 2013 16:55:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r33GtYll002420; Wed, 3 Apr 2013 16:55:34 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r33GtYia002419; Wed, 3 Apr 2013 16:55:34 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201304031655.r33GtYia002419@svn.freebsd.org> From: Konstantin Belousov Date: Wed, 3 Apr 2013 16:55:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249060 - projects/counters/sys/powerpc/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Apr 2013 16:55:34 -0000 Author: kib Date: Wed Apr 3 16:55:33 2013 New Revision: 249060 URL: http://svnweb.freebsd.org/changeset/base/249060 Log: Match reality Modified: projects/counters/sys/powerpc/include/counter.h Modified: projects/counters/sys/powerpc/include/counter.h ============================================================================== --- projects/counters/sys/powerpc/include/counter.h Wed Apr 3 16:31:30 2013 (r249059) +++ projects/counters/sys/powerpc/include/counter.h Wed Apr 3 16:55:33 2013 (r249060) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2012 Konstantin Belousov + * Copyright (c) 2012, 2013 Konstantin Belousov * All rights reserved. * * Redistribution and use in source and binary forms, with or without From owner-svn-src-projects@FreeBSD.ORG Wed Apr 3 17:19:27 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 62AB8A82; Wed, 3 Apr 2013 17:19:27 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 55A6D189; Wed, 3 Apr 2013 17:19:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r33HJRrQ008888; Wed, 3 Apr 2013 17:19:27 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r33HJRKi008887; Wed, 3 Apr 2013 17:19:27 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201304031719.r33HJRKi008887@svn.freebsd.org> From: Gleb Smirnoff Date: Wed, 3 Apr 2013 17:19:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249061 - projects/counters/sys/powerpc/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Apr 2013 17:19:27 -0000 Author: glebius Date: Wed Apr 3 17:19:26 2013 New Revision: 249061 URL: http://svnweb.freebsd.org/changeset/base/249061 Log: Remove zero sized array. Submitted by: kib Modified: projects/counters/sys/powerpc/include/pcpu.h Modified: projects/counters/sys/powerpc/include/pcpu.h ============================================================================== --- projects/counters/sys/powerpc/include/pcpu.h Wed Apr 3 16:55:33 2013 (r249060) +++ projects/counters/sys/powerpc/include/pcpu.h Wed Apr 3 17:19:26 2013 (r249061) @@ -52,7 +52,7 @@ struct pmap; register_t pc_dbsave[CPUSAVE_LEN]; #define PCPU_MD_AIM32_FIELDS \ - char __pad[0] /* no pad for now */ + /* char __pad[0] */ #define PCPU_MD_AIM64_FIELDS \ struct slb pc_slb[64]; \ From owner-svn-src-projects@FreeBSD.ORG Thu Apr 4 16:02:26 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 3E4EDEAE; Thu, 4 Apr 2013 16:02:26 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 2E525D39; Thu, 4 Apr 2013 16:02:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r34G2Q13012344; Thu, 4 Apr 2013 16:02:26 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r34G2MDX012316; Thu, 4 Apr 2013 16:02:22 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304041602.r34G2MDX012316@svn.freebsd.org> From: Alexander Motin Date: Thu, 4 Apr 2013 16:02:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249098 - in projects/camlock: . bin/dd bin/sh contrib/bmake contrib/bmake/mk contrib/bmake/unit-tests etc/defaults etc/periodic/daily lib/libc/stdlib rescue/rescue sbin sbin/atacontrol... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Apr 2013 16:02:26 -0000 Author: mav Date: Thu Apr 4 16:02:21 2013 New Revision: 249098 URL: http://svnweb.freebsd.org/changeset/base/249098 Log: MFC Added: projects/camlock/contrib/bmake/unit-tests/export-env - copied unchanged from r249097, head/contrib/bmake/unit-tests/export-env projects/camlock/etc/periodic/daily/401.status-graid - copied unchanged from r249097, head/etc/periodic/daily/401.status-graid projects/camlock/sys/dev/cfi/cfi_bus_nexus.c - copied unchanged from r249097, head/sys/dev/cfi/cfi_bus_nexus.c Deleted: projects/camlock/etc/periodic/daily/405.status-ata-raid projects/camlock/sbin/atacontrol/ projects/camlock/share/man/man4/atapicam.4 projects/camlock/share/man/man4/ataraid.4 projects/camlock/sys/dev/ata/ata-disk.c projects/camlock/sys/dev/ata/ata-disk.h projects/camlock/sys/dev/ata/ata-raid-ddf.h projects/camlock/sys/dev/ata/ata-raid.c projects/camlock/sys/dev/ata/ata-raid.h projects/camlock/sys/dev/ata/atapi-cam.c projects/camlock/sys/dev/ata/atapi-cd.c projects/camlock/sys/dev/ata/atapi-cd.h projects/camlock/sys/dev/ata/atapi-fd.c projects/camlock/sys/dev/ata/atapi-fd.h projects/camlock/sys/dev/ata/atapi-tape.c projects/camlock/sys/dev/ata/atapi-tape.h projects/camlock/sys/modules/ata/atacam/ projects/camlock/sys/modules/ata/atadisk/ projects/camlock/sys/modules/ata/atapicam/ projects/camlock/sys/modules/ata/atapicd/ projects/camlock/sys/modules/ata/atapifd/ projects/camlock/sys/modules/ata/atapist/ projects/camlock/sys/modules/ata/ataraid/ projects/camlock/usr.sbin/burncd/ Modified: projects/camlock/ObsoleteFiles.inc projects/camlock/bin/dd/dd.c projects/camlock/bin/sh/redir.c projects/camlock/contrib/bmake/ChangeLog projects/camlock/contrib/bmake/FILES projects/camlock/contrib/bmake/Makefile projects/camlock/contrib/bmake/bmake.1 projects/camlock/contrib/bmake/bmake.cat1 projects/camlock/contrib/bmake/boot-strap projects/camlock/contrib/bmake/configure projects/camlock/contrib/bmake/configure.in projects/camlock/contrib/bmake/dir.c projects/camlock/contrib/bmake/job.c projects/camlock/contrib/bmake/job.h projects/camlock/contrib/bmake/main.c projects/camlock/contrib/bmake/make.1 projects/camlock/contrib/bmake/make.h projects/camlock/contrib/bmake/meta.c projects/camlock/contrib/bmake/meta.h projects/camlock/contrib/bmake/mk/ChangeLog projects/camlock/contrib/bmake/mk/dirdeps.mk projects/camlock/contrib/bmake/mk/gendirdeps.mk projects/camlock/contrib/bmake/mk/install-mk projects/camlock/contrib/bmake/mk/meta.stage.mk projects/camlock/contrib/bmake/mk/meta2deps.py projects/camlock/contrib/bmake/mk/meta2deps.sh projects/camlock/contrib/bmake/mk/sys.dependfile.mk projects/camlock/contrib/bmake/parse.c projects/camlock/contrib/bmake/unit-tests/Makefile.in projects/camlock/contrib/bmake/unit-tests/test.exp projects/camlock/contrib/bmake/var.c projects/camlock/etc/defaults/periodic.conf projects/camlock/etc/periodic/daily/Makefile projects/camlock/lib/libc/stdlib/rand.3 projects/camlock/lib/libc/stdlib/rand.c projects/camlock/lib/libc/stdlib/random.3 projects/camlock/lib/libc/stdlib/random.c projects/camlock/rescue/rescue/Makefile projects/camlock/sbin/Makefile projects/camlock/sbin/geom/class/raid/graid.8 projects/camlock/sbin/geom/class/stripe/gstripe.8 projects/camlock/sbin/nvmecontrol/nvmecontrol.c projects/camlock/share/man/man4/Makefile projects/camlock/share/man/man4/ata.4 projects/camlock/share/man/man4/igb.4 projects/camlock/share/man/man5/devfs.conf.5 projects/camlock/share/man/man5/periodic.conf.5 projects/camlock/share/man/man5/rc.conf.5 projects/camlock/share/man/man7/hier.7 projects/camlock/share/mk/sys.mk projects/camlock/sys/amd64/conf/GENERIC projects/camlock/sys/arm/conf/AC100 projects/camlock/sys/arm/conf/ARMADAXP projects/camlock/sys/arm/conf/AVILA projects/camlock/sys/arm/conf/CAMBRIA projects/camlock/sys/arm/conf/CRB projects/camlock/sys/arm/conf/CUBIEBOARD projects/camlock/sys/arm/conf/EFIKA_MX projects/camlock/sys/arm/conf/EP80219 projects/camlock/sys/arm/conf/IQ31244 projects/camlock/sys/arm/conf/TS7800 projects/camlock/sys/cam/ata/ata_da.c projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/ctl/ctl.c projects/camlock/sys/cam/ctl/ctl_backend_block.c projects/camlock/sys/cam/ctl/scsi_ctl.c projects/camlock/sys/cam/scsi/scsi_da.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/camlock/sys/conf/NOTES projects/camlock/sys/conf/files projects/camlock/sys/conf/files.sparc64 projects/camlock/sys/conf/options projects/camlock/sys/dev/ahci/ahciem.c projects/camlock/sys/dev/ata/ata-all.c projects/camlock/sys/dev/ata/ata-all.h projects/camlock/sys/dev/ata/ata-cbus.c projects/camlock/sys/dev/ata/ata-dma.c projects/camlock/sys/dev/ata/ata-lowlevel.c projects/camlock/sys/dev/ata/ata-pci.c projects/camlock/sys/dev/ata/ata-pci.h projects/camlock/sys/dev/ata/ata-queue.c projects/camlock/sys/dev/ata/ata-sata.c projects/camlock/sys/dev/ata/ata_if.m projects/camlock/sys/dev/ata/chipsets/ata-acard.c projects/camlock/sys/dev/ata/chipsets/ata-acerlabs.c projects/camlock/sys/dev/ata/chipsets/ata-intel.c projects/camlock/sys/dev/ata/chipsets/ata-ite.c projects/camlock/sys/dev/ata/chipsets/ata-serverworks.c projects/camlock/sys/dev/ata/chipsets/ata-siliconimage.c projects/camlock/sys/dev/ath/if_ath_rx.c projects/camlock/sys/dev/ath/if_ath_rx.h projects/camlock/sys/dev/ath/if_ath_rx_edma.c projects/camlock/sys/dev/drm2/drm_edid.c projects/camlock/sys/dev/drm2/i915/intel_iic.c projects/camlock/sys/dev/drm2/i915/intel_modes.c projects/camlock/sys/dev/drm2/i915/intel_sdvo.c projects/camlock/sys/dev/e1000/if_em.c projects/camlock/sys/dev/e1000/if_igb.c projects/camlock/sys/dev/e1000/if_lem.c projects/camlock/sys/dev/hwpmc/hwpmc_core.c projects/camlock/sys/dev/hwpmc/hwpmc_intel.c projects/camlock/sys/dev/hwpmc/hwpmc_uncore.c projects/camlock/sys/dev/hwpmc/pmc_events.h projects/camlock/sys/dev/md/md.c projects/camlock/sys/dev/usb/misc/udbp.c projects/camlock/sys/dev/usb/usb_device.c projects/camlock/sys/dev/usb/usbdevs projects/camlock/sys/i386/conf/GENERIC projects/camlock/sys/i386/conf/XBOX projects/camlock/sys/ia64/conf/GENERIC projects/camlock/sys/kern/init_main.c projects/camlock/sys/kern/subr_bus_dma.c projects/camlock/sys/mips/atheros/uart_dev_ar933x.c projects/camlock/sys/mips/conf/AR933X_BASE.hints projects/camlock/sys/mips/conf/OCTEON1 projects/camlock/sys/mips/conf/XLR projects/camlock/sys/mips/conf/XLR64 projects/camlock/sys/mips/conf/XLRN32 projects/camlock/sys/mips/conf/std.SWARM projects/camlock/sys/mips/conf/std.XLP projects/camlock/sys/mips/malta/std.malta projects/camlock/sys/modules/ata/Makefile projects/camlock/sys/modules/ctl/Makefile projects/camlock/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c projects/camlock/sys/pc98/conf/GENERIC projects/camlock/sys/pc98/conf/NOTES projects/camlock/sys/powerpc/conf/GENERIC projects/camlock/sys/powerpc/conf/GENERIC64 projects/camlock/sys/powerpc/conf/MPC85XX projects/camlock/sys/rpc/rpcsec_gss/rpcsec_gss_prot.c projects/camlock/sys/sparc64/conf/GENERIC projects/camlock/sys/sys/bus.h projects/camlock/sys/ufs/ffs/ffs_softdep.c projects/camlock/sys/vm/vm_radix.c projects/camlock/usr.bin/bmake/Makefile projects/camlock/usr.bin/bmake/config.h projects/camlock/usr.bin/bmake/unit-tests/Makefile projects/camlock/usr.sbin/Makefile projects/camlock/usr.sbin/bsdconfig/share/device.subr projects/camlock/usr.sbin/pc-sysinstall/backend-query/disk-list.sh Directory Properties: projects/camlock/ (props changed) projects/camlock/contrib/bmake/ (props changed) projects/camlock/lib/libc/ (props changed) projects/camlock/sbin/ (props changed) projects/camlock/share/man/man4/ (props changed) projects/camlock/sys/ (props changed) projects/camlock/sys/cddl/contrib/opensolaris/ (props changed) projects/camlock/sys/conf/ (props changed) Modified: projects/camlock/ObsoleteFiles.inc ============================================================================== --- projects/camlock/ObsoleteFiles.inc Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/ObsoleteFiles.inc Thu Apr 4 16:02:21 2013 (r249098) @@ -38,6 +38,13 @@ # xargs -n1 | sort | uniq -d; # done +# 20130404: legacy ATA stack removed +OLD_FILES+=sbin/atacontrol +OLD_FILES+=usr/share/man/man8/atacontrol.8.gz +OLD_FILES+=usr/share/man/man4/atapicam.4.gz +OLD_FILES+=usr/share/man/man4/ataraid.4.gz +OLD_FILES+=usr.sbin/burncd +OLD_FILES+=usr/share/man/man8/burncd.8.gz # 20130316: vinum.4 removed OLD_FILES+=usr/share/man/man4/vinum.4.gz # 20130312: fortunes-o removed Modified: projects/camlock/bin/dd/dd.c ============================================================================== --- projects/camlock/bin/dd/dd.c Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/bin/dd/dd.c Thu Apr 4 16:02:21 2013 (r249098) @@ -98,6 +98,13 @@ main(int argc __unused, char *argv[]) dd_in(); dd_close(); + /* + * Some devices such as cfi(4) may perform significant amounts + * of work when a write descriptor is closed. Close the out + * descriptor explicitly so that the summary handler (called + * from an atexit() hook) includes this work. + */ + close(out.fd); exit(0); } Modified: projects/camlock/bin/sh/redir.c ============================================================================== --- projects/camlock/bin/sh/redir.c Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/bin/sh/redir.c Thu Apr 4 16:02:21 2013 (r249098) @@ -64,7 +64,6 @@ __FBSDID("$FreeBSD$"); #define EMPTY -2 /* marks an unused slot in redirtab */ #define CLOSED -1 /* fd was not open before redir */ -#define PIPESIZE 4096 /* amount of buffering in a pipe */ MKINIT @@ -253,7 +252,9 @@ openhere(union node *redir) { char *p; int pip[2]; - int len = 0; + size_t len = 0; + int flags; + ssize_t written = 0; if (pipe(pip) < 0) error("Pipe call failed: %s", strerror(errno)); @@ -263,9 +264,16 @@ openhere(union node *redir) else p = redir->nhere.doc->narg.text; len = strlen(p); - if (len <= PIPESIZE) { - xwrite(pip[1], p, len); + if (len == 0) goto out; + flags = fcntl(pip[1], F_GETFL, 0); + if (flags != -1 && fcntl(pip[1], F_SETFL, flags | O_NONBLOCK) != -1) { + written = write(pip[1], p, len); + if (written < 0) + written = 0; + if ((size_t)written == len) + goto out; + fcntl(pip[1], F_SETFL, flags); } if (forkshell((struct job *)NULL, (union node *)NULL, FORK_NOJOB) == 0) { @@ -275,7 +283,7 @@ openhere(union node *redir) signal(SIGHUP, SIG_IGN); signal(SIGTSTP, SIG_IGN); signal(SIGPIPE, SIG_DFL); - xwrite(pip[1], p, len); + xwrite(pip[1], p + written, len - written); _exit(0); } out: Modified: projects/camlock/contrib/bmake/ChangeLog ============================================================================== --- projects/camlock/contrib/bmake/ChangeLog Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/ChangeLog Thu Apr 4 16:02:21 2013 (r249098) @@ -1,3 +1,47 @@ +2013-03-30 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130330 + Merge with NetBSD make, pick up + o meta.c: refine the handling of .OODATE in commands. + Rather than suppress command comparison for the entire script + as though .NOMETA_CMP had been used, only suppress it for the + one command line. + This allows something like ${.OODATE:M.NOMETA_CMP} to be used to + suppress comparison of a command without otherwise affecting it. + o make.1: document that + +2013-03-22 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130321 + yes, not quite right but its a cooler number. + Merge with NetBSD make, pick up + o parse.c: fix ParseGmakeExport to be portable + and add a unit-test. + * meta.c: call meta_init() before makefiles are read and if built + with filemon support set .MAKE.PATH_FILEMON to _PATH_FILEMON + this let's makefiles test for support. + Call meta_mode_init() to process .MAKE.MODE. + +2013-03-13 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130305 + Merge with NetBSD make, pick up + o run .STALE: target when a dependency from .depend is missing. + o job.c: add Job_RunTarget() for the above and .BEGIN + +2013-03-03 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130303 + Merge with NetBSD make, pick up + o main.c: set .MAKE.OS to utsname.sysname + o job.c: more checks for read and poll errors + o var.c: lose VarChangeCase() saves 4% time + +2013-03-02 Simon J. Gerraty + + * boot-strap: remove MAKEOBJDIRPREFIX from environment since we + want to use MAKEOBJDIR + 2013-01-27 Simon J. Gerraty * Merge with NetBSD make, pick up Modified: projects/camlock/contrib/bmake/FILES ============================================================================== --- projects/camlock/contrib/bmake/FILES Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/FILES Thu Apr 4 16:02:21 2013 (r249098) @@ -102,6 +102,7 @@ unit-tests/dotwait unit-tests/error unit-tests/export unit-tests/export-all +unit-tests/export-env unit-tests/forloop unit-tests/forsubst unit-tests/hash Modified: projects/camlock/contrib/bmake/Makefile ============================================================================== --- projects/camlock/contrib/bmake/Makefile Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/Makefile Thu Apr 4 16:02:21 2013 (r249098) @@ -1,7 +1,7 @@ -# $Id: Makefile,v 1.5 2013/01/28 19:31:58 sjg Exp $ +# $Id: Makefile,v 1.10 2013/03/31 05:57:19 sjg Exp $ # Base version on src date -MAKE_VERSION= 20130123 +MAKE_VERSION= 20130330 PROG= bmake @@ -187,14 +187,14 @@ MANDIR= ${SHAREDIR}/man .if !exists(.depend) ${OBJS}: config.h .endif -.if ${MK_AUTOCONF_MK} == "yes" -.include -.endif # make sure that MAKE_VERSION gets updated. main.o: ${SRCS} ${MAKEFILE} # start-delete2 for bsd.after-import.mk +.if ${MK_AUTOCONF_MK} == "yes" +.include +.endif SHARE_MK?=${SHAREDIR}/mk MKSRC=${srcdir}/mk INSTALL?=${srcdir}/install-sh Modified: projects/camlock/contrib/bmake/bmake.1 ============================================================================== --- projects/camlock/contrib/bmake/bmake.1 Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/bmake.1 Thu Apr 4 16:02:21 2013 (r249098) @@ -1,4 +1,4 @@ -.\" $NetBSD: make.1,v 1.210 2013/01/27 18:52:01 sjg Exp $ +.\" $NetBSD: make.1,v 1.213 2013/03/31 05:49:51 sjg Exp $ .\" .\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\" .\" from: @(#)make.1 8.4 (Berkeley) 3/19/94 .\" -.Dd January 23, 2013 +.Dd March 30, 2013 .Dt MAKE 1 .Os .Sh NAME @@ -874,6 +874,13 @@ by appending their names to is re-exported whenever .Ql Va .MAKEOVERRIDES is modified. +.It Va .MAKE.PATH_FILEMON +If +.Nm +was built with +.Xr filemon 4 +support, this is set to the path of the device node. +This allows makefiles to test for this support. .It Va .MAKE.PID The process-id of .Nm . @@ -1757,6 +1764,20 @@ targets. Ignore differences in commands when deciding if target is out of date. This is useful if the command contains a value which always changes. If the number of commands change, though, the target will still be out of date. +The same effect applies to any command line that uses the variable +.Va .OODATE , +which can be used for that purpose even when not otherwise needed or desired: +.Bd -literal -offset indent + +skip-compare-for-some: + @echo this will be compared + @echo this will not ${.OODATE:M.NOMETA_CMP} + @echo this will also be compared + +.Ed +The +.Cm \&:M +pattern suppresses any expansion of the unwanted variable. .It Ic .NOPATH Do not search for the target in the directories specified by .Ic .PATH . @@ -2008,6 +2029,10 @@ If no sources are specified, the .Ic .SILENT attribute is applied to every command in the file. +.It Ic .STALE +This target gets run when a dependency file contains stale entries, having +.Va .ALLSRC +set to the name of that dependency file. .It Ic .SUFFIXES Each source specifies a suffix to .Nm . Modified: projects/camlock/contrib/bmake/bmake.cat1 ============================================================================== --- projects/camlock/contrib/bmake/bmake.cat1 Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/bmake.cat1 Thu Apr 4 16:02:21 2013 (r249098) @@ -565,6 +565,11 @@ VVAARRIIAABBLLEE AASSSSIIGG `MAKEFLAGS' is re-exported whenever `_._M_A_K_E_O_V_E_R_R_I_D_E_S' is modified. + _._M_A_K_E_._P_A_T_H___F_I_L_E_M_O_N + If bbmmaakkee was built with filemon(4) support, this is set + to the path of the device node. This allows makefiles to + test for this support. + _._M_A_K_E_._P_I_D The process-id of bbmmaakkee. _._M_A_K_E_._P_P_I_D The parent process-id of bbmmaakkee. @@ -1106,7 +1111,19 @@ SSPPEECCIIAALL SSOOUURRCCEE Ignore differences in commands when deciding if target is out of date. This is useful if the command contains a value which always changes. If the number of commands change, though, the - target will still be out of date. + target will still be out of date. The same effect applies to + any command line that uses the variable _._O_O_D_A_T_E, which can be + used for that purpose even when not otherwise needed or + desired: + + + skip-compare-for-some: + @echo this will be compared + @echo this will not ${.OODATE:M.NOMETA_CMP} + @echo this will also be compared + + The ::MM pattern suppresses any expansion of the unwanted vari- + able. ..NNOOPPAATTHH Do not search for the target in the directories specified by ..PPAATTHH. @@ -1278,6 +1295,9 @@ SSPPEECCIIAALL TTAARRGGEETT sources are specified, the ..SSIILLEENNTT attribute is applied to every command in the file. + ..SSTTAALLEE This target gets run when a dependency file contains stale + entries, having _._A_L_L_S_R_C set to the name of that dependency file. + ..SSUUFFFFIIXXEESS Each source specifies a suffix to bbmmaakkee. If no sources are specified, any previously specified suffixes are deleted. It @@ -1340,4 +1360,4 @@ BBUUGGSS There is no way of escaping a space character in a filename. -NetBSD 5.1 January 23, 2013 NetBSD 5.1 +NetBSD 5.1 March 30, 2013 NetBSD 5.1 Modified: projects/camlock/contrib/bmake/boot-strap ============================================================================== --- projects/camlock/contrib/bmake/boot-strap Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/boot-strap Thu Apr 4 16:02:21 2013 (r249098) @@ -111,7 +111,7 @@ # Simon J. Gerraty # RCSid: -# $Id: boot-strap,v 1.42 2013/01/25 20:20:33 sjg Exp $ +# $Id: boot-strap,v 1.43 2013/03/02 18:55:23 sjg Exp $ # # @(#) Copyright (c) 2001 Simon J. Gerraty # @@ -159,6 +159,9 @@ source_rc() { cmd_args="$@" +# clear some things from the environment that we care about +unset MAKEOBJDIR MAKEOBJDIRPREFIX + # --install[-host-target] will set this INSTALL_PREFIX= # other things we pass to install step Modified: projects/camlock/contrib/bmake/configure ============================================================================== Binary file (source and/or target). No diff available. Modified: projects/camlock/contrib/bmake/configure.in ============================================================================== --- projects/camlock/contrib/bmake/configure.in Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/configure.in Thu Apr 4 16:02:21 2013 (r249098) @@ -1,10 +1,10 @@ dnl dnl RCSid: -dnl $Id: configure.in,v 1.46 2012/12/28 21:28:18 sjg Exp $ +dnl $Id: configure.in,v 1.48 2013/03/04 21:25:57 sjg Exp $ dnl dnl Process this file with autoconf to produce a configure script dnl -AC_INIT([bmake], [20121212], [sjg@NetBSD.org]) +AC_INIT([bmake], [20130303], [sjg@NetBSD.org]) AC_CONFIG_HEADER(config.h) dnl make srcdir absolute Modified: projects/camlock/contrib/bmake/dir.c ============================================================================== --- projects/camlock/contrib/bmake/dir.c Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/dir.c Thu Apr 4 16:02:21 2013 (r249098) @@ -1,4 +1,4 @@ -/* $NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $ */ +/* $NetBSD: dir.c,v 1.67 2013/03/05 22:01:43 christos Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -70,14 +70,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $"; +static char rcsid[] = "$NetBSD: dir.c,v 1.67 2013/03/05 22:01:43 christos Exp $"; #else #include #ifndef lint #if 0 static char sccsid[] = "@(#)dir.c 8.2 (Berkeley) 1/2/94"; #else -__RCSID("$NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $"); +__RCSID("$NetBSD: dir.c,v 1.67 2013/03/05 22:01:43 christos Exp $"); #endif #endif /* not lint */ #endif @@ -145,6 +145,7 @@ __RCSID("$NetBSD: dir.c,v 1.65 2012/06/1 #include "make.h" #include "hash.h" #include "dir.h" +#include "job.h" /* * A search path consists of a Lst of Path structures. A Path structure @@ -1463,9 +1464,11 @@ Dir_MTime(GNode *gn, Boolean recheck) * so that we give that to the compiler. */ gn->path = bmake_strdup(fullName); - fprintf(stdout, - "%s: ignoring stale %s for %s, found %s\n", - progname, makeDependfile, gn->name, fullName); + if (!Job_RunTarget(".STALE", gn->fname)) + fprintf(stdout, + "%s: %s, %d: ignoring stale %s for %s, " + "found %s\n", progname, gn->fname, gn->lineno, + makeDependfile, gn->name, fullName); } } } Modified: projects/camlock/contrib/bmake/job.c ============================================================================== --- projects/camlock/contrib/bmake/job.c Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/job.c Thu Apr 4 16:02:21 2013 (r249098) @@ -1,4 +1,4 @@ -/* $NetBSD: job.c,v 1.165 2013/01/26 15:52:59 christos Exp $ */ +/* $NetBSD: job.c,v 1.172 2013/03/05 22:01:43 christos Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -70,14 +70,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: job.c,v 1.165 2013/01/26 15:52:59 christos Exp $"; +static char rcsid[] = "$NetBSD: job.c,v 1.172 2013/03/05 22:01:43 christos Exp $"; #else #include #ifndef lint #if 0 static char sccsid[] = "@(#)job.c 8.2 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: job.c,v 1.165 2013/01/26 15:52:59 christos Exp $"); +__RCSID("$NetBSD: job.c,v 1.172 2013/03/05 22:01:43 christos Exp $"); #endif #endif /* not lint */ #endif @@ -142,6 +142,7 @@ __RCSID("$NetBSD: job.c,v 1.165 2013/01/ #include #include "wait.h" +#include #include #include #if !defined(USE_SELECT) && defined(HAVE_POLL_H) @@ -1245,8 +1246,10 @@ Job_CheckCommands(GNode *gn, void (*abor static const char msg[] = ": don't know how to make"; if (gn->flags & FROM_DEPEND) { - fprintf(stdout, "%s: ignoring stale %s for %s\n", - progname, makeDependfile, gn->name); + if (!Job_RunTarget(".STALE", gn->fname)) + fprintf(stdout, "%s: %s, %d: ignoring stale %s for %s\n", + progname, gn->fname, gn->lineno, makeDependfile, + gn->name); return TRUE; } @@ -2063,32 +2066,45 @@ Job_CatchOutput(void) (void)fflush(stdout); /* The first fd in the list is the job token pipe */ - nready = poll(fds + 1 - wantToken, nfds - 1 + wantToken, POLL_MSEC); + do { + nready = poll(fds + 1 - wantToken, nfds - 1 + wantToken, POLL_MSEC); + } while (nready < 0 && errno == EINTR); - if (nready < 0 || readyfd(&childExitJob)) { + if (nready < 0) + Punt("poll: %s", strerror(errno)); + + if (nready > 0 && readyfd(&childExitJob)) { char token = 0; - nready -= 1; - while (read(childExitJob.inPipe, &token, 1) == -1 && errno == EAGAIN) - continue; - if (token == DO_JOB_RESUME[0]) - /* Complete relay requested from our SIGCONT handler */ - JobRestartJobs(); - Job_CatchChildren(); + ssize_t count; + count = read(childExitJob.inPipe, &token, 1); + switch (count) { + case 0: + Punt("unexpected eof on token pipe"); + case -1: + Punt("token pipe read: %s", strerror(errno)); + case 1: + if (token == DO_JOB_RESUME[0]) + /* Complete relay requested from our SIGCONT handler */ + JobRestartJobs(); + break; + default: + abort(); + } + --nready; } - if (nready <= 0) - return; - - if (wantToken && readyfd(&tokenWaitJob)) - nready--; + Job_CatchChildren(); + if (nready == 0) + return; for (i = 2; i < nfds; i++) { if (!fds[i].revents) continue; job = jobfds[i]; - if (job->job_state != JOB_ST_RUNNING) - continue; - JobDoOutput(job, FALSE); + if (job->job_state == JOB_ST_RUNNING) + JobDoOutput(job, FALSE); + if (--nready == 0) + return; } } @@ -2179,8 +2195,6 @@ Job_SetPrefix(void) void Job_Init(void) { - GNode *begin; /* node for commands to do at the very start */ - /* Allocate space for all the job info */ job_table = bmake_malloc(maxJobs * sizeof *job_table); memset(job_table, 0, maxJobs * sizeof *job_table); @@ -2256,15 +2270,7 @@ Job_Init(void) ADDSIG(SIGCONT, JobContinueSig) #undef ADDSIG - begin = Targ_FindNode(".BEGIN", TARG_NOCREATE); - - if (begin != NULL) { - JobRun(begin); - if (begin->made == ERROR) { - PrintOnError(begin, "\n\nStop."); - exit(1); - } - } + (void)Job_RunTarget(".BEGIN", NULL); postCommands = Targ_FindNode(".END", TARG_CREATE); } @@ -2930,6 +2936,38 @@ Job_TokenWithdraw(void) return TRUE; } +/*- + *----------------------------------------------------------------------- + * Job_RunTarget -- + * Run the named target if found. If a filename is specified, then + * set that to the sources. + * + * Results: + * None + * + * Side Effects: + * exits if the target fails. + * + *----------------------------------------------------------------------- + */ +Boolean +Job_RunTarget(const char *target, const char *fname) { + GNode *gn = Targ_FindNode(target, TARG_NOCREATE); + + if (gn == NULL) + return FALSE; + + if (fname) + Var_Set(ALLSRC, fname, gn, 0); + + JobRun(gn); + if (gn->made == ERROR) { + PrintOnError(gn, "\n\nStop."); + exit(1); + } + return TRUE; +} + #ifdef USE_SELECT int emul_poll(struct pollfd *fd, int nfd, int timeout) Modified: projects/camlock/contrib/bmake/job.h ============================================================================== --- projects/camlock/contrib/bmake/job.h Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/job.h Thu Apr 4 16:02:21 2013 (r249098) @@ -1,4 +1,4 @@ -/* $NetBSD: job.h,v 1.40 2010/09/13 15:36:57 sjg Exp $ */ +/* $NetBSD: job.h,v 1.41 2013/03/05 22:01:44 christos Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -268,5 +268,6 @@ void Job_TokenReturn(void); Boolean Job_TokenWithdraw(void); void Job_ServerStart(int, int, int); void Job_SetPrefix(void); +Boolean Job_RunTarget(const char *, const char *); #endif /* _JOB_H_ */ Modified: projects/camlock/contrib/bmake/main.c ============================================================================== --- projects/camlock/contrib/bmake/main.c Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/main.c Thu Apr 4 16:02:21 2013 (r249098) @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.205 2013/01/26 15:53:00 christos Exp $ */ +/* $NetBSD: main.c,v 1.210 2013/03/23 05:31:29 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,7 +69,7 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: main.c,v 1.205 2013/01/26 15:53:00 christos Exp $"; +static char rcsid[] = "$NetBSD: main.c,v 1.210 2013/03/23 05:31:29 sjg Exp $"; #else #include #ifndef lint @@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: main.c,v 1.205 2013/01/26 15:53:00 christos Exp $"); +__RCSID("$NetBSD: main.c,v 1.210 2013/03/23 05:31:29 sjg Exp $"); #endif #endif /* not lint */ #endif @@ -119,9 +119,7 @@ __RCSID("$NetBSD: main.c,v 1.205 2013/01 #include #include #include -#ifdef MAKE_NATIVE #include -#endif #include "wait.h" #include @@ -768,7 +766,7 @@ MakeMode(const char *mode) } #if USE_META if (strstr(mode, "meta")) - meta_init(mode); + meta_mode_init(mode); #endif } if (mp) @@ -813,9 +811,7 @@ main(int argc, char **argv) static char defsyspath[] = _PATH_DEFSYSPATH; char found_path[MAXPATHLEN + 1]; /* for searching for sys.mk */ struct timeval rightnow; /* to initialize random seed */ -#ifdef MAKE_NATIVE struct utsname utsname; -#endif /* default to writing debug to stderr */ debug_file = stderr; @@ -834,7 +830,7 @@ main(int argc, char **argv) progname++; else progname = argv[0]; -#ifdef RLIMIT_NOFILE +#if defined(MAKE_NATIVE) || (defined(HAVE_SETRLIMIT) && defined(RLIMIT_NOFILE)) /* * get rid of resource limit on file descriptors */ @@ -848,6 +844,12 @@ main(int argc, char **argv) } #endif + if (uname(&utsname) == -1) { + (void)fprintf(stderr, "%s: uname failed (%s).\n", progname, + strerror(errno)); + exit(2); + } + /* * Get the name of this type of MACHINE from utsname * so we can share an executable for similar machines. @@ -858,11 +860,6 @@ main(int argc, char **argv) */ if (!machine) { #ifdef MAKE_NATIVE - if (uname(&utsname) == -1) { - (void)fprintf(stderr, "%s: uname failed (%s).\n", progname, - strerror(errno)); - exit(2); - } machine = utsname.machine; #else #ifdef MAKE_MACHINE @@ -892,6 +889,7 @@ main(int argc, char **argv) */ Var_Init(); /* Initialize the lists of variables for * parsing arguments */ + Var_Set(".MAKE.OS", utsname.sysname, VAR_GLOBAL, 0); Var_Set("MACHINE", machine, VAR_GLOBAL, 0); Var_Set("MACHINE_ARCH", machine_arch, VAR_GLOBAL, 0); #ifdef MAKE_VERSION @@ -987,6 +985,9 @@ main(int argc, char **argv) } Job_SetPrefix(); +#ifdef USE_META + meta_init(); +#endif /* * First snag any flags out of the MAKE environment variable. * (Note this is *not* MAKEFLAGS since /bin/make uses that and it's @@ -1697,7 +1698,7 @@ Finish(int errors) } /* - * enunlink -- + * eunlink -- * Remove a file carefully, avoiding directories. */ int Modified: projects/camlock/contrib/bmake/make.1 ============================================================================== --- projects/camlock/contrib/bmake/make.1 Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/make.1 Thu Apr 4 16:02:21 2013 (r249098) @@ -1,4 +1,4 @@ -.\" $NetBSD: make.1,v 1.210 2013/01/27 18:52:01 sjg Exp $ +.\" $NetBSD: make.1,v 1.213 2013/03/31 05:49:51 sjg Exp $ .\" .\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\" .\" from: @(#)make.1 8.4 (Berkeley) 3/19/94 .\" -.Dd January 23, 2013 +.Dd March 30, 2013 .Dt MAKE 1 .Os .Sh NAME @@ -874,6 +874,13 @@ by appending their names to is re-exported whenever .Ql Va .MAKEOVERRIDES is modified. +.It Va .MAKE.PATH_FILEMON +If +.Nm +was built with +.Xr filemon 4 +support, this is set to the path of the device node. +This allows makefiles to test for this support. .It Va .MAKE.PID The process-id of .Nm . @@ -1757,6 +1764,20 @@ targets. Ignore differences in commands when deciding if target is out of date. This is useful if the command contains a value which always changes. If the number of commands change, though, the target will still be out of date. +The same effect applies to any command line that uses the variable +.Va .OODATE , +which can be used for that purpose even when not otherwise needed or desired: +.Bd -literal -offset indent + +skip-compare-for-some: + @echo this will be compared + @echo this will not ${.OODATE:M.NOMETA_CMP} + @echo this will also be compared + +.Ed +The +.Cm \&:M +pattern suppresses any expansion of the unwanted variable. .It Ic .NOPATH Do not search for the target in the directories specified by .Ic .PATH . @@ -2008,6 +2029,10 @@ If no sources are specified, the .Ic .SILENT attribute is applied to every command in the file. +.It Ic .STALE +This target gets run when a dependency file contains stale entries, having +.Va .ALLSRC +set to the name of that dependency file. .It Ic .SUFFIXES Each source specifies a suffix to .Nm . Modified: projects/camlock/contrib/bmake/make.h ============================================================================== --- projects/camlock/contrib/bmake/make.h Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/make.h Thu Apr 4 16:02:21 2013 (r249098) @@ -1,4 +1,4 @@ -/* $NetBSD: make.h,v 1.89 2012/06/12 19:21:51 joerg Exp $ */ +/* $NetBSD: make.h,v 1.90 2013/02/25 01:57:14 dholland Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -103,7 +103,7 @@ ((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) || \ (__GNUC__ > (x))) #else /* defined(__GNUC__) */ -#define MAKE_GNUC_PREREQx, y) 0 +#define MAKE_GNUC_PREREQ(x, y) 0 #endif /* defined(__GNUC__) */ #if MAKE_GNUC_PREREQ(2, 7) Modified: projects/camlock/contrib/bmake/meta.c ============================================================================== --- projects/camlock/contrib/bmake/meta.c Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/meta.c Thu Apr 4 16:02:21 2013 (r249098) @@ -1,4 +1,4 @@ -/* $NetBSD: meta.c,v 1.26 2013/01/19 04:23:37 sjg Exp $ */ +/* $NetBSD: meta.c,v 1.29 2013/03/31 05:49:51 sjg Exp $ */ /* * Implement 'meta' mode. @@ -539,8 +539,24 @@ boolValue(char *s) return TRUE; } +/* + * Initialization we need before reading makefiles. + */ +void +meta_init() +{ +#ifdef USE_FILEMON + /* this allows makefiles to test if we have filemon support */ + Var_Set(".MAKE.PATH_FILEMON", _PATH_FILEMON, VAR_GLOBAL, 0); +#endif +} + + +/* + * Initialization we need after reading makefiles. + */ void -meta_init(const char *make_mode) +meta_mode_init(const char *make_mode) { static int once = 0; char *cp; @@ -1037,6 +1053,7 @@ meta_oodate(GNode *gn, Boolean oodate) char *tp = Lst_Datum(ln); Lst_Remove(missingFiles, ln); free(tp); + ln = NULL; /* we're done with it */ } } break; @@ -1196,17 +1213,19 @@ meta_oodate(GNode *gn, Boolean oodate) oodate = TRUE; } else { char *cmd = (char *)Lst_Datum(ln); + Boolean hasOODATE = FALSE; - if (!needOODATE) { - if (strstr(cmd, "$?")) - needOODATE = TRUE; - else if ((cp = strstr(cmd, ".OODATE"))) { - /* check for $[{(].OODATE[)}] */ - if (cp > cmd + 2 && cp[-2] == '$') - needOODATE = TRUE; - } - if (needOODATE && DEBUG(META)) - fprintf(debug_file, "%s: %d: cannot compare commands using .OODATE\n", fname, lineno); + if (strstr(cmd, "$?")) + hasOODATE = TRUE; + else if ((cp = strstr(cmd, ".OODATE"))) { + /* check for $[{(].OODATE[:)}] */ + if (cp > cmd + 2 && cp[-2] == '$') + hasOODATE = TRUE; + } + if (hasOODATE) { + needOODATE = TRUE; + if (DEBUG(META)) + fprintf(debug_file, "%s: %d: cannot compare command using .OODATE\n", fname, lineno); } cmd = Var_Subst(NULL, cmd, gn, TRUE); @@ -1235,7 +1254,7 @@ meta_oodate(GNode *gn, Boolean oodate) if (buf[x - 1] == '\n') buf[x - 1] = '\0'; } - if (!needOODATE && + if (!hasOODATE && !(gn->type & OP_NOMETA_CMP) && strcmp(p, cmd) != 0) { if (DEBUG(META)) Modified: projects/camlock/contrib/bmake/meta.h ============================================================================== --- projects/camlock/contrib/bmake/meta.h Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/meta.h Thu Apr 4 16:02:21 2013 (r249098) @@ -1,4 +1,4 @@ -/* $NetBSD: meta.h,v 1.2 2011/03/30 22:03:49 sjg Exp $ */ +/* $NetBSD: meta.h,v 1.3 2013/03/23 05:31:29 sjg Exp $ */ /* * Things needed for 'meta' mode. @@ -41,7 +41,8 @@ typedef struct BuildMon { extern Boolean useMeta; struct Job; /* not defined yet */ -void meta_init(const char *); +void meta_init(void); +void meta_mode_init(const char *); void meta_job_start(struct Job *, GNode *); void meta_job_child(struct Job *); void meta_job_error(struct Job *, GNode *, int, int); Modified: projects/camlock/contrib/bmake/mk/ChangeLog ============================================================================== --- projects/camlock/contrib/bmake/mk/ChangeLog Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/mk/ChangeLog Thu Apr 4 16:02:21 2013 (r249098) @@ -1,3 +1,71 @@ +2013-03-30 Simon J. Gerraty + + * meta2deps.py (MetaFile.__init__): ensure self.cwd is initialized. + * install-mk (MK_VERSION): bump version + +2013-03-21 Simon J. Gerraty + + * install-mk (MK_VERSION): bump version + * gendirdeps.mk: do not apply :tA to DPADD entries, since we lose + any trailing /., rather apply :tA only when needed. + * gendirdeps.mk: better mimic meta2deps handling of .dirdep files. + * meta.stage.mk (LN_CP_SCRIPT): Add LnCp to do the ln||cp dance + consistently. + * dirdeps.mk: better describe the dance in sys.mk for TARGET_SPEC. + +2013-03-18 Simon J. Gerraty + + * gendirdeps.mk: revert the dance around .MAKE.DEPENDFILE_DEFAULT + it is simpler to just not update when say building for "host" + (where we know we apply filters to DIRDEPS), and using a + non-machine qualified dependfile. + +2013-03-16 Simon J. Gerraty + + * dirdeps.mk: improve DIRDEPS filtering by allowing DEP_SKIP_DIR + and DEP_DIRDEPS_FILTER to vary by DEP_MACHINE and DEP_TARGET_SPEC + * gendirdeps.mk: ensure _objroot has trailing / if it needs it. + * meta2deps.py: if machine is "host", then also trim + self.host_target from any OBJROOTS. + + +2013-03-11 Simon J. Gerraty + + * gendirdeps.mk: if .MAKE.DEPENDFILE_DEFAULT is not machine + qualified but _DEPENDFILE is, and .MAKE.DEPENDFILE_DEFAULT exists + but _DEPENDFILE does not, compare the new _DEPENDFILE against + .MAKE.DEPENDFILE_DEFAULT and discard if the same. + +2013-03-08 Simon J. Gerraty + + * meta.stage.mk: use STAGE_TARGETS to control .ORDER + and hook to all: via staging: + +2013-03-07 Simon J. Gerraty + + * sys.dependfile.mk (.MAKE.DEPENDFILE_DEFAULT): + use a separate variable for the default .MAKE.DEPENDFILE value + so that it can be controlled independently of + .MAKE.DEPENDFILE_PREFERENCE + + * meta.stage.mk: throw error if cp fails etc. + Stage*() return early if passed no args. + .ORDER stage_* + +2013-03-03 Simon J. Gerraty + + * install-mk (MK_VERSION): bump version + * gendirdeps.mk: handle multiple M2D_OBJROOTS better. + +2013-02-10 Simon J. Gerraty + + * install-mk (MK_VERSION): bump version to 20130210 + * import latest dirdeps.mk, gendirdeps.mk and meta2deps.py + from Juniper. + o dirdeps.mk now fully supports TARGET_SPEC consisting of more + than just MACHINE. + o no longer use DEP_MACHINE from Makefile.depend* so remove it. + 2013-01-23 Simon J. Gerraty * install-mk (MK_VERSION): bump version to 20130123 Modified: projects/camlock/contrib/bmake/mk/dirdeps.mk ============================================================================== --- projects/camlock/contrib/bmake/mk/dirdeps.mk Thu Apr 4 15:40:19 2013 (r249097) +++ projects/camlock/contrib/bmake/mk/dirdeps.mk Thu Apr 4 16:02:21 2013 (r249098) @@ -1,6 +1,7 @@ -# $Id: dirdeps.mk,v 1.23 2012/11/06 05:44:03 sjg Exp $ +# $Id: dirdeps.mk,v 1.28 2013/03/25 21:11:43 sjg Exp $ -# Copyright (c) 2010-2012, Juniper Networks, Inc. +# Copyright (c) 2010-2013, Juniper Networks, Inc. +# All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -33,21 +34,31 @@ # This is what we do with DIRDEPS # DIRDEPS: -# This is a list of directories - relative to SRCTOP, it is only -# of interest to .MAKE.LEVEL 0. +# This is a list of directories - relative to SRCTOP, it is +# normally only of interest to .MAKE.LEVEL 0. # In some cases the entry may be qualified with a . -# suffix, for example to force building something for the pseudo +# or . suffix (see TARGET_SPEC_VARS below), +# for example to force building something for the pseudo # machines "host" or "common" regardless of current ${MACHINE}. -# All unqualified entries end up being qualified with .${MACHINE} -# and _DIRDEPS_USE below, uses the suffix to set MACHINE +# +# All unqualified entries end up being qualified with .${TARGET_SPEC} +# and partially qualified (if TARGET_SPEC_VARS has multiple +# entries) are also expanded to a full .. +# The _DIRDEPS_USE target uses the suffix to set TARGET_SPEC # correctly when visiting each entry. # -# Each entry is also converted into a set of paths to look for -# Makefile.depend. to learn the dependencies of each. -# Each Makefile.depend. sets DEP_RELDIR to be the +# The fully qualified directory entries are used to construct a +# dependency graph that will drive the build later. +# +# Also, for each fully qualified directory target, we will search +# using ${.MAKE.DEPENDFILE_PREFERENCE} to find additional +# dependencies. We use Makefile.depend (default value for +# .MAKE.DEPENDFILE_PREFIX) to refer to these makefiles to +# distinguish them from others. +# +# Each Makefile.depend file sets DEP_RELDIR to be the # the RELDIR (path relative to SRCTOP) for its directory, and -# DEP_MACHINE to its suffix (), further since -# each Makefile.depend. includes dirdeps.mk, this +# since each Makefile.depend file includes dirdeps.mk, this # processing is recursive and results in .MAKE.LEVEL 0 learning the # dependencies of the tree wrt the initial directory (_DEP_RELDIR). # @@ -55,38 +66,49 @@ # Indicates whether .MAKE.LEVEL 0 builds anything: # if "no" sub-makes are used to build everything, # if "yes" sub-makes are only used to build for other machines. +# It is best to use "no", but this can require fixing some +# makefiles to not do anything at .MAKE.LEVEL 0. # # TARGET_SPEC_VARS -# All the description above (and below) assumes is the -# only data needed to control the build. -# This is not always the case. So in addition to setting -# MACHINE in the build environment we set TARGET_SPEC which is -# composed of the values of TARGET_SPEC_VARS separated by -# commas. The default is just MACHINE. +# The default value is just MACHINE, and for most environments +# this is sufficient. The _DIRDEPS_USE target actually sets +# both MACHINE and TARGET_SPEC to the suffix of the current +# target so that in the general case TARGET_SPEC can be ignored. # *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Apr 4 17:10:45 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 967BA5E6; Thu, 4 Apr 2013 17:10:45 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 7167B1C3; Thu, 4 Apr 2013 17:10:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r34HAjcL031239; Thu, 4 Apr 2013 17:10:45 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r34HAjBT031237; Thu, 4 Apr 2013 17:10:45 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304041710.r34HAjBT031237@svn.freebsd.org> From: Alexander Motin Date: Thu, 4 Apr 2013 17:10:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249101 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Apr 2013 17:10:45 -0000 Author: mav Date: Thu Apr 4 17:10:44 2013 New Revision: 249101 URL: http://svnweb.freebsd.org/changeset/base/249101 Log: MFC Modified: projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/cam_xpt_sim.h Directory Properties: projects/camlock/ (props changed) projects/camlock/sys/ (props changed) Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Thu Apr 4 17:10:36 2013 (r249100) +++ projects/camlock/sys/cam/cam_xpt.c Thu Apr 4 17:10:44 2013 (r249101) @@ -2031,39 +2031,6 @@ xptbustraverse(struct cam_eb *start_bus, return(retval); } -int -xpt_sim_opened(struct cam_sim *sim) -{ - struct cam_eb *bus; - struct cam_et *target; - struct cam_ed *device; - struct cam_periph *periph; - - KASSERT(sim->refcount >= 1, ("sim->refcount >= 1")); - mtx_assert(sim->mtx, MA_OWNED); - - xpt_lock_buses(); - TAILQ_FOREACH(bus, &xsoftc.xpt_busses, links) { - if (bus->sim != sim) - continue; - - TAILQ_FOREACH(target, &bus->et_entries, links) { - TAILQ_FOREACH(device, &target->ed_entries, links) { - SLIST_FOREACH(periph, &device->periphs, - periph_links) { - if (periph->refcount > 0) { - xpt_unlock_buses(); - return (1); - } - } - } - } - } - - xpt_unlock_buses(); - return (0); -} - static int xpttargettraverse(struct cam_eb *bus, struct cam_et *start_target, xpt_targetfunc_t *tr_func, void *arg) Modified: projects/camlock/sys/cam/cam_xpt_sim.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt_sim.h Thu Apr 4 17:10:36 2013 (r249100) +++ projects/camlock/sys/cam/cam_xpt_sim.h Thu Apr 4 17:10:44 2013 (r249101) @@ -45,7 +45,6 @@ void xpt_release_simq(struct cam_sim *s u_int32_t xpt_freeze_devq(struct cam_path *path, u_int count); void xpt_release_devq(struct cam_path *path, u_int count, int run_queue); -int xpt_sim_opened(struct cam_sim *sim); void xpt_done(union ccb *done_ccb); void xpt_batch_start(struct cam_sim *sim); void xpt_batch_done(struct cam_sim *sim); From owner-svn-src-projects@FreeBSD.ORG Thu Apr 4 18:42:24 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 77632820; Thu, 4 Apr 2013 18:42:24 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 68B4E7B2; Thu, 4 Apr 2013 18:42:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r34IgO5J059276; Thu, 4 Apr 2013 18:42:24 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r34IgNMM059270; Thu, 4 Apr 2013 18:42:23 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304041842.r34IgNMM059270@svn.freebsd.org> From: Alexander Motin Date: Thu, 4 Apr 2013 18:42:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249103 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Apr 2013 18:42:24 -0000 Author: mav Date: Thu Apr 4 18:42:23 2013 New Revision: 249103 URL: http://svnweb.freebsd.org/changeset/base/249103 Log: - Add lock assertions to every point where reference counters are modified. - When reference counters are reaching zero, add assertions that there are no children items left. - Add a bit more locking to the xptpdperiphtraverse(). Modified: projects/camlock/sys/cam/cam_periph.c projects/camlock/sys/cam/cam_sim.c projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_periph.c ============================================================================== --- projects/camlock/sys/cam/cam_periph.c Thu Apr 4 18:00:18 2013 (r249102) +++ projects/camlock/sys/cam/cam_periph.c Thu Apr 4 18:42:23 2013 (r249103) @@ -378,13 +378,10 @@ cam_periph_acquire(struct cam_periph *pe void cam_periph_release_locked_buses(struct cam_periph *periph) { - if (periph->refcount != 0) { - periph->refcount--; - } else { - panic("%s: release of %p when refcount is zero\n ", __func__, - periph); - } - if (periph->refcount == 0 + + mtx_assert(periph->sim->mtx, MA_OWNED); + KASSERT(periph->refcount >= 1, ("periph->refcount >= 1")); + if (--periph->refcount == 0 && (periph->flags & CAM_PERIPH_INVALID)) { camperiphfree(periph); } @@ -583,6 +580,7 @@ cam_periph_invalidate(struct cam_periph { CAM_DEBUG(periph->path, CAM_DEBUG_INFO, ("Periph invalidated\n")); + mtx_assert(periph->sim->mtx, MA_OWNED); /* * We only call this routine the first time a peripheral is * invalidated. @@ -605,6 +603,7 @@ camperiphfree(struct cam_periph *periph) { struct periph_driver **p_drv; + mtx_assert(periph->sim->mtx, MA_OWNED); for (p_drv = periph_drivers; *p_drv != NULL; p_drv++) { if (strcmp((*p_drv)->driver_name, periph->periph_name) == 0) break; Modified: projects/camlock/sys/cam/cam_sim.c ============================================================================== --- projects/camlock/sys/cam/cam_sim.c Thu Apr 4 18:00:18 2013 (r249102) +++ projects/camlock/sys/cam/cam_sim.c Thu Apr 4 18:42:23 2013 (r249103) @@ -106,6 +106,7 @@ cam_sim_free(struct cam_sim *sim, int fr { int error; + mtx_assert(sim->mtx, MA_OWNED); sim->refcount--; if (sim->refcount > 0) { error = msleep(sim, sim->mtx, PRIBIO, "simfree", 0); Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Thu Apr 4 18:00:18 2013 (r249102) +++ projects/camlock/sys/cam/cam_xpt.c Thu Apr 4 18:42:23 2013 (r249103) @@ -2038,6 +2038,7 @@ xpttargettraverse(struct cam_eb *bus, st struct cam_et *target, *next_target; int retval; + mtx_assert(bus->sim->mtx, MA_OWNED); retval = 1; for (target = (start_target ? start_target : TAILQ_FIRST(&bus->et_entries)); @@ -2065,6 +2066,7 @@ xptdevicetraverse(struct cam_et *target, struct cam_ed *device, *next_device; int retval; + mtx_assert(target->bus->sim->mtx, MA_OWNED); retval = 1; for (device = (start_device ? start_device : TAILQ_FIRST(&target->ed_entries)); @@ -2103,6 +2105,7 @@ xptperiphtraverse(struct cam_ed *device, retval = 1; + mtx_assert(device->sim->mtx, MA_OWNED); xpt_lock_buses(); for (periph = (start_periph ? start_periph : SLIST_FIRST(&device->periphs)); @@ -2184,6 +2187,7 @@ xptpdperiphtraverse(struct periph_driver xpt_periphfunc_t *tr_func, void *arg) { struct cam_periph *periph, *next_periph; + struct cam_sim *sim; int retval; retval = 1; @@ -2212,7 +2216,10 @@ xptpdperiphtraverse(struct periph_driver * traversal function, so it can't go away. */ periph->refcount++; - + sim = periph->sim; + xpt_unlock_buses(); + CAM_SIM_LOCK(sim); + xpt_lock_buses(); retval = tr_func(periph, arg); /* @@ -2222,6 +2229,7 @@ xptpdperiphtraverse(struct periph_driver next_periph = TAILQ_NEXT(periph, unit_links); cam_periph_release_locked_buses(periph); + CAM_SIM_UNLOCK(sim); if (retval == 0) goto bailout_done; @@ -3461,13 +3469,13 @@ xpt_path_counts(struct cam_path *path, u else *bus_ref = 0; } - xpt_unlock_buses(); if (periph_ref) { if (path->periph) *periph_ref = path->periph->refcount; else *periph_ref = 0; } + xpt_unlock_buses(); if (target_ref) { if (path->target) *target_ref = path->target->refcount; @@ -4300,14 +4308,17 @@ xpt_release_bus(struct cam_eb *bus) xpt_lock_buses(); KASSERT(bus->refcount >= 1, ("bus->refcount >= 1")); - if (--bus->refcount == 0) { - TAILQ_REMOVE(&xsoftc.xpt_busses, bus, links); - xsoftc.bus_generation++; - xpt_unlock_buses(); - cam_sim_release(bus->sim); - free(bus, M_CAMXPT); - } else + if (--bus->refcount > 0) { xpt_unlock_buses(); + return; + } + KASSERT(TAILQ_EMPTY(&bus->et_entries), + ("refcount is zero, but target list is not empty")); + TAILQ_REMOVE(&xsoftc.xpt_busses, bus, links); + xsoftc.bus_generation++; + xpt_unlock_buses(); + cam_sim_release(bus->sim); + free(bus, M_CAMXPT); } static struct cam_et * @@ -4315,6 +4326,7 @@ xpt_alloc_target(struct cam_eb *bus, tar { struct cam_et *cur_target, *target; + mtx_assert(bus->sim->mtx, MA_OWNED); target = (struct cam_et *)malloc(sizeof(*target), M_CAMXPT, M_NOWAIT|M_ZERO); if (target == NULL) @@ -4352,8 +4364,11 @@ static void xpt_release_target(struct cam_et *target) { + mtx_assert(target->bus->sim->mtx, MA_OWNED); if (--target->refcount > 0) return; + KASSERT(TAILQ_EMPTY(&target->ed_entries), + ("refcount is zero, but device list is not empty")); TAILQ_REMOVE(&target->bus->et_entries, target, links); target->bus->generation++; xpt_release_bus(target->bus); @@ -4384,6 +4399,7 @@ xpt_alloc_device(struct cam_eb *bus, str struct cam_devq *devq; cam_status status; + mtx_assert(target->bus->sim->mtx, MA_OWNED); /* Make space for us in the device queue on our bus */ devq = bus->sim->devq; status = cam_devq_resize(devq, devq->send_queue.array_size + 1); @@ -4436,6 +4452,7 @@ void xpt_acquire_device(struct cam_ed *device) { + mtx_assert(device->sim->mtx, MA_OWNED); device->refcount++; } @@ -4444,9 +4461,12 @@ xpt_release_device(struct cam_ed *device { struct cam_devq *devq; + mtx_assert(device->sim->mtx, MA_OWNED); if (--device->refcount > 0) return; + KASSERT(SLIST_EMPTY(&device->periphs), + ("refcount is zero, but periphs list is not empty")); if (device->devq_entry.pinfo.index != CAM_UNQUEUED_INDEX) panic("Removing device while still queued for ccbs"); @@ -4518,6 +4538,7 @@ xpt_find_target(struct cam_eb *bus, targ { struct cam_et *target; + mtx_assert(bus->sim->mtx, MA_OWNED); for (target = TAILQ_FIRST(&bus->et_entries); target != NULL; target = TAILQ_NEXT(target, links)) { @@ -4534,6 +4555,7 @@ xpt_find_device(struct cam_et *target, l { struct cam_ed *device; + mtx_assert(target->bus->sim->mtx, MA_OWNED); for (device = TAILQ_FIRST(&target->ed_entries); device != NULL; device = TAILQ_NEXT(device, links)) { From owner-svn-src-projects@FreeBSD.ORG Fri Apr 5 06:55:20 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id B53C21DD; Fri, 5 Apr 2013 06:55:20 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 97D9B3CB; Fri, 5 Apr 2013 06:55:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r356tKO5075529; Fri, 5 Apr 2013 06:55:20 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r356tKAT075528; Fri, 5 Apr 2013 06:55:20 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201304050655.r356tKAT075528@svn.freebsd.org> From: Neel Natu Date: Fri, 5 Apr 2013 06:55:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249130 - projects/bhyve_svm/sys/amd64/vmm/amd X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 05 Apr 2013 06:55:20 -0000 Author: neel Date: Fri Apr 5 06:55:19 2013 New Revision: 249130 URL: http://svnweb.freebsd.org/changeset/base/249130 Log: Macros, bitmasks and structs that describe the SVM virtual machine control block aka VMCB. Submitted by: Anish Gupta (akgupt3@gmail.com) Added: projects/bhyve_svm/sys/amd64/vmm/amd/vmcb.h (contents, props changed) Added: projects/bhyve_svm/sys/amd64/vmm/amd/vmcb.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/bhyve_svm/sys/amd64/vmm/amd/vmcb.h Fri Apr 5 06:55:19 2013 (r249130) @@ -0,0 +1,270 @@ +/*- + * Copyright (c) 2013 Anish Gupta (akgupt3@gmail.com) + * 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 NETAPP, INC ``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 NETAPP, INC OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _VMCB_H_ +#define _VMCB_H_ + +/* + * Secure Virtual Machine: AMD64 Programmer's Manual Vol2, Chapter 15 + * Layout of VMCB: AMD64 Programmer's Manual Vol2, Appendix B + */ + +/* VMCB Control offset 0xC */ +#define VMCB_INTCPT_INTR BIT(0) +#define VMCB_INTCPT_NMI BIT(1) +#define VMCB_INTCPT_SMI BIT(2) +#define VMCB_INTCPT_INIT BIT(3) +#define VMCB_INTCPT_VINTR BIT(4) +#define VMCB_INTCPT_CR0_WRITE BIT(5) +#define VMCB_INTCPT_IDTR_READ BIT(6) +#define VMCB_INTCPT_GDTR_READ BIT(7) +#define VMCB_INTCPT_LDTR_READ BIT(8) +#define VMCB_INTCPT_TR_READ BIT(9) +#define VMCB_INTCPT_IDTR_WRITE BIT(10) +#define VMCB_INTCPT_GDTR_WRITE BIT(11) +#define VMCB_INTCPT_LDTR_WRITE BIT(12) +#define VMCB_INTCPT_TR_WRITE BIT(13) +#define VMCB_INTCPT_RDTSC BIT(14) +#define VMCB_INTCPT_RDPMC BIT(15) +#define VMCB_INTCPT_PUSHF BIT(16) +#define VMCB_INTCPT_POPF BIT(17) +#define VMCB_INTCPT_CPUID BIT(18) +#define VMCB_INTCPT_RSM BIT(19) +#define VMCB_INTCPT_IRET BIT(20) +#define VMCB_INTCPT_INTn BIT(21) +#define VMCB_INTCPT_INVD BIT(22) +#define VMCB_INTCPT_PAUSE BIT(23) +#define VMCB_INTCPT_HLT BIT(24) +#define VMCB_INTCPT_INVPG BIT(25) +#define VMCB_INTCPT_INVPGA BIT(26) +#define VMCB_INTCPT_IO BIT(27) +#define VMCB_INTCPT_MSR BIT(28) +#define VMCB_INTCPT_TASK_SWITCH BIT(29) +#define VMCB_INTCPT_FERR_FREEZE BIT(30) +#define VMCB_INTCPT_SHUTDOWN BIT(31) + +/* VMCB Control offset 0x10 */ +#define VMCB_INTCPT_VMRUN BIT(0) +#define VMCB_INTCPT_VMMCALL BIT(1) +#define VMCB_INTCPT_VMLOAD BIT(2) +#define VMCB_INTCPT_VMSAVE BIT(3) +#define VMCB_INTCPT_STGI BIT(4) +#define VMCB_INTCPT_CLGI BIT(5) +#define VMCB_INTCPT_SKINIT BIT(6) +#define VMCB_INTCPT_RDTSCP BIT(7) +#define VMCB_INTCPT_ICEBP BIT(8) +#define VMCB_INTCPT_WBINVD BIT(9) +#define VMCB_INTCPT_MONITOR BIT(10) +#define VMCB_INTCPT_MWAIT BIT(11) +#define VMCB_INTCPT_MWAIT_ARMED BIT(12) +#define VMCB_INTCPT_XSETBV BIT(13) + +/* VMCB TLB control */ +#define VMCB_TLB_FLUSH_NOTHING 0 /* Flush nothing */ +#define VMCB_TLB_FLUSH_EVERYTHING 1 /* Flush entire TLB */ +#define VMCB_TLB_FLUSH_GUEST 3 /* Flush all guest entries */ +#define VMCB_TLB_FLUSH_GUEST_NONGLOBAL 7 /* Flush guest non-PG entries */ + +/* VMCB state caching */ +#define VMCB_CACHE_NONE 0 /* No caching */ +#define VMCB_CACHE_I BIT(0) /* Cache vectors, TSC offset */ +#define VMCB_CACHE_IOPM BIT(1) /* I/O and MSR permission */ +#define VMCB_CACHE_ASID BIT(2) /* ASID */ +#define VMCB_CACHE_TPR BIT(3) /* V_TPR to V_INTR_VECTOR */ +#define VMCB_CACHE_NP BIT(4) /* Nested Paging */ +#define VMCB_CACHE_CR BIT(5) /* CR0, CR3, CR4 & EFER */ +#define VMCB_CACHE_DR BIT(6) /* Debug registers */ +#define VMCB_CACHE_DT BIT(7) /* GDT/IDT */ +#define VMCB_CACHE_SEG BIT(8) /* User segments, CPL */ +#define VMCB_CACHE_CR2 BIT(9) /* page fault address */ +#define VMCB_CACHE_LBR BIT(10) /* Last branch */ + + +/* VMCB control event injection */ +#define VMCB_EVENTINJ_EC_VALID BIT(11) /* Error Code valid */ +#define VMCB_EVENTINJ_VALID BIT(31) /* Event valid */ + +#define VMCB_EVENTINJ_VECTOR_MASK 0xFF +#define VMCB_EVENTINJ_INTR_TYPE_SHIFT 8 +#define VMCB_EVENTINJ_ERRCODE_SHIFT 32 + +/* Event types that can be injected */ +#define VMCB_EVENTINJ_TYPE_INTR 0 +#define VMCB_EVENTINJ_TYPE_NMI 2 +#define VMCB_EVENTINJ_TYPE_EXCEPTION 3 +#define VMCB_EVENTINJ_TYPE_INTn 4 + +/* VMCB exit code, APM vol2 Appendix C */ +#define VMCB_EXIT_MC 0x52 +#define VMCB_EXIT_INTR 0x60 +#define VMCB_EXIT_PUSHF 0x70 +#define VMCB_EXIT_POPF 0x71 +#define VMCB_EXIT_CPUID 0x72 +#define VMCB_EXIT_IRET 0x74 +#define VMCB_EXIT_PAUSE 0x77 +#define VMCB_EXIT_HLT 0x78 +#define VMCB_EXIT_IO 0x7B +#define VMCB_EXIT_MSR 0x7C +#define VMCB_EXIT_SHUTDOWN 0x7F +#define VMCB_EXIT_VMSAVE 0x83 +#define VMCB_EXIT_NPF 0x400 +#define VMCB_EXIT_INVALID -1 + +/* + * Nested page fault. + * Bit definitions to decode EXITINFO1. + */ +#define VMCB_NPF_INFO1_P BIT(0) /* Nested page present. */ +#define VMCB_NPF_INFO1_W BIT(1) /* Access was write. */ +#define VMCB_NPF_INFO1_U BIT(2) /* Access was user access. */ +#define VMCB_NPF_INFO1_RSV BIT(3) /* Reserved bits present. */ +#define VMCB_NPF_INFO1_ID BIT(4) /* Code read. */ + +#define VMCB_NPF_INFO1_GPA BIT(32) /* Guest physical address. */ +#define VMCB_NPF_INFO1_GPT BIT(33) /* Guest page table. */ + +/* VMCB save state area segment format */ +struct vmcb_segment { + uint16_t selector; + uint16_t attrib; + uint32_t limit; + uint64_t base; +} __attribute__ ((__packed__)); +CTASSERT(sizeof(struct vmcb_segment) == 16); + +/* + * The VMCB is divided into two areas - the first one contains various + * control bits including the intercept vector and the second one contains + * the guest state. + */ + +/* VMCB control area - padded up to 1024 bytes */ +struct vmcb_ctrl { + uint16_t cr_read; /* Offset 0, CR0-15 read/write */ + uint16_t cr_write; + uint16_t dr_read; /* Offset 4, DR0-DR15 */ + uint16_t dr_write; + uint32_t exception; /* Offset 8, bit mask for exceptions. */ + uint32_t ctrl1; /* Offset 0xC, intercept events1 */ + uint32_t ctrl2; /* Offset 0x10, intercept event2 */ + uint8_t pad1[0x28]; /* Offsets 0x14-0x3B are reserved. */ + uint16_t pause_filthresh; /* Offset 0x3C, PAUSE filter threshold */ + uint16_t pause_filcnt; /* Offset 0x3E, PAUSE filter count */ + uint64_t iopm_base_pa; /* 0x40: IOPM_BASE_PA */ + uint64_t msrpm_base_pa; /* 0x48: MSRPM_BASE_PA */ + uint64_t tsc_offset; /* 0x50: TSC_OFFSET */ + uint32_t asid; /* 0x58: Guest ASID */ + uint8_t tlb_ctrl; /* 0x5C: TLB_CONTROL */ + uint8_t pad2[3]; /* 0x5D-0x5F: Reserved. */ + uint8_t v_tpr; /* 0x60: V_TPR, guest CR8 */ + uint8_t v_irq:1; /* Is virtual interrupt pending? */ + uint8_t :7; /* Padding */ + uint8_t v_intr_prio:4; /* 0x62: Priority for virtual interrupt. */ + uint8_t v_ign_tpr:1; + uint8_t :3; + uint8_t v_intr_masking:1; /* Guest and host sharing of RFLAGS. */ + uint8_t :7; + uint8_t v_intr_vector; /* 0x65: Vector for virtual interrupt. */ + uint8_t pad3[3]; /* Bit64-40 Reserved. */ + uint64_t intr_shadow:1; /* 0x68: Interrupt shadow, section15.2.1 APM2 */ + uint64_t :63; + uint64_t exitcode; /* 0x70, Exitcode */ + uint64_t exitinfo1; /* 0x78, EXITINFO1 */ + uint64_t exitinfo2; /* 0x80, EXITINFO2 */ + uint64_t exitintinfo; /* 0x88, Interrupt exit value. */ + uint64_t np_enable:1; /* 0x90, Nested paging enable. */ + uint64_t :63; + uint8_t pad4[0x10]; /* 0x98-0xA7 reserved. */ + uint64_t eventinj; /* 0xA8, Event injection. */ + uint64_t n_cr3; /* B0, Nested page table. */ + uint64_t lbr_virt_en:1; /* Enable LBR virtualization. */ + uint64_t :63; + uint32_t vmcb_clean; /* 0xC0: VMCB clean bits for caching */ + uint32_t :32; /* 0xC4: Reserved */ + uint64_t nrip; /* 0xC8: Guest next nRIP. */ + uint8_t inst_decode_size; /* 0xD0: Instruction decode */ + uint8_t inst_decode_bytes[15]; + uint8_t padd6[0x320]; +} __attribute__ ((__packed__)); +CTASSERT(sizeof(struct vmcb_ctrl) == 1024); + +struct vmcb_state { + struct vmcb_segment es; + struct vmcb_segment cs; + struct vmcb_segment ss; + struct vmcb_segment ds; + struct vmcb_segment fs; + struct vmcb_segment gs; + struct vmcb_segment gdt; + struct vmcb_segment ldt; + struct vmcb_segment idt; + struct vmcb_segment tr; + uint8_t pad1[0x2b]; /* Reserved: 0xA0-0xCA */ + uint8_t cpl; + uint8_t pad2[4]; + uint64_t efer; + uint8_t pad3[0x70]; /* Reserved: 0xd8-0x147 */ + uint64_t cr4; + uint64_t cr3; /* Guest CR3 */ + uint64_t cr0; + uint64_t dr7; + uint64_t dr6; + uint64_t rflags; + uint64_t rip; + uint8_t pad4[0x58]; /* Reserved: 0x180-0x1D7 */ + uint64_t rsp; + uint8_t pad5[0x18]; /* Reserved 0x1E0-0x1F7 */ + uint64_t rax; + uint64_t star; + uint64_t lstar; + uint64_t cstar; + uint64_t sfmask; + uint64_t kernelgsbase; + uint64_t sysenter_cs; + uint64_t sysenter_esp; + uint64_t sysenter_eip; + uint64_t cr2; + uint8_t pad6[0x20]; + uint64_t g_pat; + uint64_t dbgctl; + uint64_t br_from; + uint64_t br_to; + uint64_t lastexcpfrom; + uint64_t lastexcpto; + uint8_t pad7[0x968]; /* Reserved upto end of VMCB */ +} __attribute__ ((__packed__)); +CTASSERT(sizeof(struct vmcb_state) == 0xC00); + +struct vmcb { + struct vmcb_ctrl ctrl; + struct vmcb_state state; +} __attribute__ ((__packed__)); +CTASSERT(sizeof(struct vmcb) == PAGE_SIZE); +CTASSERT(offsetof(struct vmcb, state) == 0x400); + +#endif /* _VMCB_H_ */ From owner-svn-src-projects@FreeBSD.ORG Fri Apr 5 11:30:32 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 98B9FA2F; Fri, 5 Apr 2013 11:30:32 +0000 (UTC) (envelope-from cherry@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 8B0A0FF4; Fri, 5 Apr 2013 11:30:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r35BUWls059158; Fri, 5 Apr 2013 11:30:32 GMT (envelope-from cherry@svn.freebsd.org) Received: (from cherry@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r35BUWgZ059157; Fri, 5 Apr 2013 11:30:32 GMT (envelope-from cherry@svn.freebsd.org) Message-Id: <201304051130.r35BUWgZ059157@svn.freebsd.org> From: "Cherry G. Mathew" Date: Fri, 5 Apr 2013 11:30:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249151 - projects/amd64_xen_pv/sys/amd64/xen X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 05 Apr 2013 11:30:32 -0000 Author: cherry Date: Fri Apr 5 11:30:31 2013 New Revision: 249151 URL: http://svnweb.freebsd.org/changeset/base/249151 Log: Update Copyright. Make asserts a bit more informative (prints the name of the current function scope) Approved by: gibbs (implicit) Modified: projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c Modified: projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c ============================================================================== --- projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c Fri Apr 5 10:57:02 2013 (r249150) +++ projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c Fri Apr 5 11:30:31 2013 (r249151) @@ -1,6 +1,6 @@ /* $FreeBSD$ */ /*- - * Copyright (c) 2011-2012 Spectra Logic Corporation + * Copyright (c) 2011-2013 Spectra Logic Corporation * All rights reserved. * * This software was developed by Cherry G. Mathew @@ -216,7 +216,7 @@ void mmu_map_t_fini(void *addr) KASSERT(addr != NULL, ("NULL args given!")); struct mmu_map_index *pti = addr; - KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used")); + KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__)); struct mmu_map_mbackend *mb = &pti->ptmb; pti->sanity = 0; @@ -233,7 +233,7 @@ mmu_map_pml4t(void *addr) KASSERT(addr != NULL, ("NULL args given!")); struct mmu_map_index *pti = addr; - KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used")); + KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__)); return pti->pml4t; } @@ -244,7 +244,7 @@ mmu_map_pdpt(void *addr) KASSERT(addr != NULL, ("NULL args given!")); struct mmu_map_index *pti = addr; - KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used")); + KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__)); return pti->pdpt; } @@ -255,7 +255,7 @@ mmu_map_pdt(void *addr) KASSERT(addr != NULL, ("NULL args given!")); struct mmu_map_index *pti = addr; - KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used")); + KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__)); return pti->pdt; } @@ -266,7 +266,7 @@ mmu_map_pt(void *addr) KASSERT(addr != NULL, ("NULL args given!")); struct mmu_map_index *pti = addr; - KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used")); + KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__)); return pti->pt; } @@ -277,7 +277,7 @@ mmu_map_inspect_va(struct pmap *pm, void KASSERT(addr != NULL && pm != NULL, ("NULL arg(s) given")); struct mmu_map_index *pti = addr; - KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used")); + KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__)); vm_paddr_t pt; @@ -316,7 +316,7 @@ mmu_map_hold_va(struct pmap *pm, void *a KASSERT(addr != NULL && pm != NULL, ("NULL arg(s) given")); struct mmu_map_index *pti = addr; - KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used")); + KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__)); bool alloced = false; /* Did we have to alloc backing pages ? */ vm_paddr_t pt; @@ -391,7 +391,7 @@ mmu_map_release_va(struct pmap *pm, void KASSERT(addr != NULL && pm != NULL, ("NULL arg(s) given")); struct mmu_map_index *pti = addr; - KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used")); + KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__)); /* * We're expected to be called after an init-ed pti has either From owner-svn-src-projects@FreeBSD.ORG Fri Apr 5 13:19:31 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 22817B1A; Fri, 5 Apr 2013 13:19:31 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 1315A6CB; Fri, 5 Apr 2013 13:19:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r35DJVvB090363; Fri, 5 Apr 2013 13:19:31 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r35DJUsG090358; Fri, 5 Apr 2013 13:19:30 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304051319.r35DJUsG090358@svn.freebsd.org> From: Alexander Motin Date: Fri, 5 Apr 2013 13:19:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249162 - in projects/camlock: sbin/camcontrol share/misc sys/boot/common sys/cam/ctl sys/conf sys/contrib/dev/acpica sys/contrib/dev/acpica/common sys/contrib/dev/acpica/compiler sys/c... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 05 Apr 2013 13:19:31 -0000 Author: mav Date: Fri Apr 5 13:19:30 2013 New Revision: 249162 URL: http://svnweb.freebsd.org/changeset/base/249162 Log: MFC @ r249161 Added: - copied from r249161, head/contrib/unbound/ projects/camlock/sys/contrib/dev/acpica/compiler/asllistsup.c - copied unchanged from r249161, head/sys/contrib/dev/acpica/compiler/asllistsup.c projects/camlock/sys/contrib/dev/acpica/compiler/asloffset.c - copied unchanged from r249161, head/sys/contrib/dev/acpica/compiler/asloffset.c projects/camlock/sys/contrib/dev/acpica/components/utilities/utpredef.c - copied unchanged from r249161, head/sys/contrib/dev/acpica/components/utilities/utpredef.c Directory Properties: projects/camlock/contrib/unbound/ (props changed) Modified: projects/camlock/sbin/camcontrol/camcontrol.8 projects/camlock/sbin/camcontrol/camcontrol.c projects/camlock/share/misc/committers-ports.dot projects/camlock/sys/boot/common/util.c projects/camlock/sys/cam/ctl/ctl.c projects/camlock/sys/conf/files projects/camlock/sys/contrib/dev/acpica/changes.txt (contents, props changed) projects/camlock/sys/contrib/dev/acpica/common/ahpredef.c projects/camlock/sys/contrib/dev/acpica/compiler/aslcompile.c projects/camlock/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/camlock/sys/contrib/dev/acpica/compiler/asldefine.h projects/camlock/sys/contrib/dev/acpica/compiler/aslerror.c projects/camlock/sys/contrib/dev/acpica/compiler/aslfiles.c projects/camlock/sys/contrib/dev/acpica/compiler/aslglobal.h projects/camlock/sys/contrib/dev/acpica/compiler/asllisting.c projects/camlock/sys/contrib/dev/acpica/compiler/aslmain.c projects/camlock/sys/contrib/dev/acpica/compiler/aslpredef.c projects/camlock/sys/contrib/dev/acpica/compiler/aslprepkg.c projects/camlock/sys/contrib/dev/acpica/compiler/aslresource.c projects/camlock/sys/contrib/dev/acpica/compiler/asltypes.h projects/camlock/sys/contrib/dev/acpica/compiler/aslwalks.c projects/camlock/sys/contrib/dev/acpica/components/debugger/dbmethod.c projects/camlock/sys/contrib/dev/acpica/components/debugger/dbnames.c projects/camlock/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c projects/camlock/sys/contrib/dev/acpica/components/dispatcher/dswexec.c projects/camlock/sys/contrib/dev/acpica/components/events/evevent.c projects/camlock/sys/contrib/dev/acpica/components/executer/exoparg2.c projects/camlock/sys/contrib/dev/acpica/components/namespace/nseval.c projects/camlock/sys/contrib/dev/acpica/components/namespace/nspredef.c projects/camlock/sys/contrib/dev/acpica/components/tables/tbfadt.c projects/camlock/sys/contrib/dev/acpica/components/tables/tbxface.c projects/camlock/sys/contrib/dev/acpica/components/utilities/utdelete.c projects/camlock/sys/contrib/dev/acpica/components/utilities/utmutex.c projects/camlock/sys/contrib/dev/acpica/components/utilities/utosi.c projects/camlock/sys/contrib/dev/acpica/components/utilities/utxface.c projects/camlock/sys/contrib/dev/acpica/include/acglobal.h projects/camlock/sys/contrib/dev/acpica/include/aclocal.h projects/camlock/sys/contrib/dev/acpica/include/acnamesp.h projects/camlock/sys/contrib/dev/acpica/include/acpixf.h projects/camlock/sys/contrib/dev/acpica/include/acpredef.h projects/camlock/sys/contrib/dev/acpica/include/acutils.h projects/camlock/sys/dev/ath/ath_hal/ah.h projects/camlock/sys/dev/ath/ath_hal/ah_debug.h projects/camlock/sys/dev/ath/ath_hal/ah_internal.h projects/camlock/sys/geom/geom_disk.c projects/camlock/sys/mips/atheros/apb.c projects/camlock/sys/mips/atheros/ar71xx_ehci.c projects/camlock/sys/mips/atheros/ar71xx_setup.c projects/camlock/sys/mips/atheros/ar71xx_setup.h projects/camlock/sys/mips/atheros/ar933x_chip.c projects/camlock/sys/mips/atheros/ar933xreg.h projects/camlock/sys/mips/atheros/if_arge.c projects/camlock/sys/mips/atheros/uart_dev_ar933x.c projects/camlock/sys/mips/conf/AP121 projects/camlock/sys/mips/conf/AP121.hints projects/camlock/sys/mips/conf/AR933X_BASE.hints projects/camlock/sys/powerpc/aim/trap.c projects/camlock/sys/sys/ata.h projects/camlock/usr.bin/calendar/calendars/calendar.freebsd projects/camlock/usr.sbin/acpi/acpidb/Makefile projects/camlock/usr.sbin/acpi/iasl/Makefile Directory Properties: projects/camlock/ (props changed) projects/camlock/sbin/ (props changed) projects/camlock/sys/ (props changed) projects/camlock/sys/boot/ (props changed) projects/camlock/sys/conf/ (props changed) projects/camlock/sys/contrib/dev/acpica/ (props changed) projects/camlock/sys/contrib/dev/acpica/common/ (props changed) projects/camlock/sys/contrib/dev/acpica/compiler/ (props changed) projects/camlock/sys/contrib/dev/acpica/components/debugger/ (props changed) projects/camlock/sys/contrib/dev/acpica/components/dispatcher/ (props changed) projects/camlock/sys/contrib/dev/acpica/components/events/ (props changed) projects/camlock/sys/contrib/dev/acpica/components/executer/ (props changed) projects/camlock/sys/contrib/dev/acpica/components/namespace/ (props changed) projects/camlock/sys/contrib/dev/acpica/components/tables/ (props changed) projects/camlock/sys/contrib/dev/acpica/components/utilities/ (props changed) projects/camlock/sys/contrib/dev/acpica/include/ (props changed) projects/camlock/usr.bin/calendar/ (props changed) Modified: projects/camlock/sbin/camcontrol/camcontrol.8 ============================================================================== --- projects/camlock/sbin/camcontrol/camcontrol.8 Fri Apr 5 13:11:28 2013 (r249161) +++ projects/camlock/sbin/camcontrol/camcontrol.8 Fri Apr 5 13:19:30 2013 (r249162) @@ -228,6 +228,21 @@ .Op Fl y .Op Fl s .Nm +.Ic security +.Op device id +.Op generic args +.Op Fl d Ar pwd +.Op Fl e Ar pwd +.Op Fl f +.Op Fl h Ar pwd +.Op Fl k Ar pwd +.Op Fl l Ar high|maximum +.Op Fl q +.Op Fl s Ar pwd +.Op Fl T Ar timeout +.Op Fl U Ar user|master +.Op Fl y +.Nm .Ic help .Sh DESCRIPTION The @@ -1072,6 +1087,123 @@ specifies automatic standby timer value .It Ic sleep Put ATA device into SLEEP state. Note that the only way get device out of this state may be reset. +.It Ic security +Update or report security settings, using an ATA identify command (0xec). +By default, +.Nm +will print out the security support and associated settings of the device. +The +.Ic security +command takes several arguments: +.Bl -tag -width 0n +.It Fl d Ar pwd +.Pp +Disable device security using the given password for the selected user according +to the devices configured security level. +.It Fl e Ar pwd +.Pp +Erase the device using the given password for the selected user. +.Pp +.Em WARNING! WARNING! WARNING! +.Pp +Issuing a secure erase will +.Em ERASE ALL +user data on the device and may take several hours to complete. +.Pp +When this command is used against an SSD drive all its cells will be marked as +empty, restoring it to factory default write performance. For SSD's this action +usually takes just a few seconds. +.It Fl f +.Pp +Freeze the security configuration of the specified device. +.Pp +After command completion any other commands that update the device lock mode +shall be command aborted. Frozen mode is disabled by power-off or hardware reset. +.It Fl h Ar pwd +.Pp +Enhanced erase the device using the given password for the selected user. +.Pp +.Em WARNING! WARNING! WARNING! +.Pp +Issuing an enhanced secure erase will +.Em ERASE ALL +user data on the device and may take several hours to complete. +.Pp +An enhanced erase writes predetermined data patterns to all user data areas, +all previously written user data shall be overwritten, including sectors that +are no longer in use due to reallocation. +.It Fl k Ar pwd +.Pp +Unlock the device using the given password for the selected user according to +the devices configured security level. +.It Fl l Ar high|maximum +.Pp +Specifies which security level to set when issuing a +.Fl s Ar pwd +command. The security level determines device behavior when the master +password is used to unlock the device. When the security level is set to high +the device requires the unlock command and the master password to unlock. +When the security level is set to maximum the device requires a secure erase +with the master password to unlock. +.Pp +This option must be used in conjunction with one of the security action commands. +.Pp +Defaults to +.Em high +.It Fl q +.Pp +Be quiet, do not print any status messages. +This option will not disable the questions, however. +To disable questions, use the +.Fl y +argument, below. +.It Fl s Ar pwd +.Pp +Password the device (enable security) using the given password for the selected +user. This option can be combined with other options such as +.Fl e Em pwd +.Pp +A master password may be set in a addition to the user password. The purpose of +the master password is to allow an administrator to establish a password that +is kept secret from the user, and which may be used to unlock the device if the +user password is lost. +.Pp +.Em Note: +Setting the master password does not enable device security. +.Pp +If the master password is set and the drive supports a Master Revision Code +feature the Master Password Revision Code will be decremented. +.It Fl T Ar timeout +.Pp +Overrides the default timeout, specified in seconds, used for both +.Fl e +and +.Fl h +this is useful if your system has problems processing long timeouts correctly. +.Pp +Usually the timeout is calculated from the information stored on the drive if +present, otherwise it defaults to 2 hours. +.It Fl U Ar user|master +.Pp +Specifies which user to set / use for the running action command, valid values +are user or master and defaults to master if not set. +.Pp +This option must be used in conjunction with one of the security action commands. +.Pp +Defaults to +.Em master +.It Fl y +.Pp +Confirm yes to dangerous options such as +.Fl e +without prompting for confirmation. +.Pp +.El +If the password specified for any action commands doesn't match the configured +password for the specified user the command will fail. +.Pp +The password in all cases is limited to 32 characters, longer passwords will +fail. .It Ic fwdownload Program firmware of the named SCSI device using the image file provided. .Pp @@ -1240,6 +1372,30 @@ camcontrol smpcmd ses0 -v -r 4 "40 0 00 Send the SMP REPORT GENERAL command to ses0, and display the number of PHYs it contains. Display SMP errors if the command fails. +.Bd -literal -offset indent +camcontrol security ada0 +.Ed +.Pp +Report security support and settings for ada0 +.Bd -literal -offset indent +camcontrol security ada0 -u user -s MyPass +.Ed +.Pp +Enable security on device ada0 with the password MyPass +.Bd -literal -offset indent +camcontrol security ada0 -u user -e MyPass +.Ed +.Pp +Secure erase ada0 which has had security enabled with user password MyPass +.Pp +.Em WARNING! WARNING! WARNING! +.Pp +This will +.Em ERASE ALL +data from the device, so backup your data before using! +.Pp +This command can be used used against an SSD drive to restoring it to +factory default write performance. .Sh SEE ALSO .Xr cam 3 , .Xr cam_cdbparse 3 , Modified: projects/camlock/sbin/camcontrol/camcontrol.c ============================================================================== --- projects/camlock/sbin/camcontrol/camcontrol.c Fri Apr 5 13:11:28 2013 (r249161) +++ projects/camlock/sbin/camcontrol/camcontrol.c Fri Apr 5 13:19:30 2013 (r249162) @@ -87,7 +87,8 @@ typedef enum { CAM_CMD_SMP_PC = 0x00000019, CAM_CMD_SMP_PHYLIST = 0x0000001a, CAM_CMD_SMP_MANINFO = 0x0000001b, - CAM_CMD_DOWNLOAD_FW = 0x0000001c + CAM_CMD_DOWNLOAD_FW = 0x0000001c, + CAM_CMD_SECURITY = 0x0000001d } cam_cmdmask; typedef enum { @@ -140,6 +141,7 @@ static const char negotiate_opts[] = "ac static const char smprg_opts[] = "l"; static const char smppc_opts[] = "a:A:d:lm:M:o:p:s:S:T:"; static const char smpphylist_opts[] = "lq"; +static char pwd_opt; #endif static struct camcontrol_opts option_table[] = { @@ -183,6 +185,7 @@ static struct camcontrol_opts option_tab {"standby", CAM_CMD_STANDBY, CAM_ARG_NONE, "t:"}, {"sleep", CAM_CMD_SLEEP, CAM_ARG_NONE, ""}, {"fwdownload", CAM_CMD_DOWNLOAD_FW, CAM_ARG_NONE, "f:ys"}, + {"security", CAM_CMD_SECURITY, CAM_ARG_NONE, "d:e:fh:k:l:qs:T:U:y"}, #endif /* MINIMALISTIC */ {"help", CAM_CMD_USAGE, CAM_ARG_NONE, NULL}, {"-?", CAM_CMD_USAGE, CAM_ARG_NONE, NULL}, @@ -274,7 +277,10 @@ static int scsireportluns(struct cam_dev static int scsireadcapacity(struct cam_device *device, int argc, char **argv, char *combinedopt, int retry_count, int timeout); static int atapm(struct cam_device *device, int argc, char **argv, - char *combinedopt, int retry_count, int timeout); + char *combinedopt, int retry_count, int timeout); +static int atasecurity(struct cam_device *device, int retry_count, int timeout, + int argc, char **argv, char *combinedopt); + #endif /* MINIMALISTIC */ #ifndef min #define min(a,b) (((a)<(b))?(a):(b)) @@ -1328,55 +1334,93 @@ atacapprint(struct ata_params *parm) printf("free-fall %s %s\n", parm->support2 & ATA_SUPPORT_FREEFALL ? "yes" : "no", parm->enabled2 & ATA_SUPPORT_FREEFALL ? "yes" : "no"); - printf("data set management (TRIM) %s\n", - parm->support_dsm & ATA_SUPPORT_DSM_TRIM ? "yes" : "no"); + printf("Data Set Management (DSM/TRIM) "); + if (parm->support_dsm & ATA_SUPPORT_DSM_TRIM) { + printf("yes\n"); + printf("DSM - max 512byte blocks "); + if (parm->max_dsm_blocks == 0x00) + printf("yes not specified\n"); + else + printf("yes %d\n", + parm->max_dsm_blocks); + + printf("DSM - deterministic read "); + if (parm->support3 & ATA_SUPPORT_DRAT) { + if (parm->support3 & ATA_SUPPORT_RZAT) + printf("yes zeroed\n"); + else + printf("yes any value\n"); + } else { + printf("no\n"); + } + } else { + printf("no\n"); + } } static int -ataidentify(struct cam_device *device, int retry_count, int timeout) +scsi_cam_pass_16_send(struct cam_device *device, union ccb *ccb, int quiet) { - union ccb *ccb; - struct ata_params *ident_buf; - struct ccb_getdev cgd; - u_int i, error = 0; - int16_t *ptr; + struct ata_pass_16 *ata_pass_16; + struct ata_cmd ata_cmd; - if (get_cgd(device, &cgd) != 0) { - warnx("couldn't get CGD"); - return(1); - } - ccb = cam_getccb(device); + ata_pass_16 = (struct ata_pass_16 *)ccb->csio.cdb_io.cdb_bytes; + ata_cmd.command = ata_pass_16->command; + ata_cmd.control = ata_pass_16->control; + ata_cmd.features = ata_pass_16->features; - if (ccb == NULL) { - warnx("couldn't allocate CCB"); - return(1); + if (arglist & CAM_ARG_VERBOSE) { + warnx("sending ATA %s via pass_16 with timeout of %u msecs", + ata_op_string(&ata_cmd), + ccb->csio.ccb_h.timeout); } - /* cam_getccb cleans up the header, caller has to zero the payload */ - bzero(&(&ccb->ccb_h)[1], - sizeof(struct ccb_ataio) - sizeof(struct ccb_hdr)); + /* Disable freezing the device queue */ + ccb->ccb_h.flags |= CAM_DEV_QFRZDIS; - ptr = (uint16_t *)malloc(sizeof(struct ata_params)); + if (arglist & CAM_ARG_ERR_RECOVER) + ccb->ccb_h.flags |= CAM_PASS_ERR_RECOVER; - if (ptr == NULL) { - cam_freeccb(ccb); - warnx("can't malloc memory for identify\n"); - return(1); + if (cam_send_ccb(device, ccb) < 0) { + if (quiet != 1 || arglist & CAM_ARG_VERBOSE) { + warn("error sending ATA %s via pass_16", + ata_op_string(&ata_cmd)); + } + + if (arglist & CAM_ARG_VERBOSE) { + cam_error_print(device, ccb, CAM_ESF_ALL, + CAM_EPF_ALL, stderr); + } + + return (1); } - bzero(ptr, sizeof(struct ata_params)); - cam_fill_ataio(&ccb->ataio, - retry_count, - NULL, - /*flags*/CAM_DIR_IN, - MSG_SIMPLE_Q_TAG, - /*data_ptr*/(u_int8_t *)ptr, - /*dxfer_len*/sizeof(struct ata_params), - timeout ? timeout : 30 * 1000); - if (cgd.protocol == PROTO_ATA) - ata_28bit_cmd(&ccb->ataio, ATA_ATA_IDENTIFY, 0, 0, 0); - else - ata_28bit_cmd(&ccb->ataio, ATA_ATAPI_IDENTIFY, 0, 0, 0); + if (!(ata_pass_16->flags & AP_FLAG_CHK_COND) && + (ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { + if (quiet != 1 || arglist & CAM_ARG_VERBOSE) { + warnx("ATA %s via pass_16 failed", + ata_op_string(&ata_cmd)); + } + if (arglist & CAM_ARG_VERBOSE) { + cam_error_print(device, ccb, CAM_ESF_ALL, + CAM_EPF_ALL, stderr); + } + + return (1); + } + + return (0); +} + + +static int +ata_cam_send(struct cam_device *device, union ccb *ccb, int quiet) +{ + if (arglist & CAM_ARG_VERBOSE) { + warnx("sending ATA %s with timeout of %u msecs", + ata_op_string(&(ccb->ataio.cmd)), + ccb->ataio.ccb_h.timeout); + } /* Disable freezing the device queue */ ccb->ccb_h.flags |= CAM_DEV_QFRZDIS; @@ -1385,47 +1429,247 @@ ataidentify(struct cam_device *device, i ccb->ccb_h.flags |= CAM_PASS_ERR_RECOVER; if (cam_send_ccb(device, ccb) < 0) { - perror("error sending ATA identify"); + if (quiet != 1 || arglist & CAM_ARG_VERBOSE) { + warn("error sending ATA %s", + ata_op_string(&(ccb->ataio.cmd))); + } if (arglist & CAM_ARG_VERBOSE) { cam_error_print(device, ccb, CAM_ESF_ALL, CAM_EPF_ALL, stderr); } - free(ptr); - cam_freeccb(ccb); - return(1); + return (1); } if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { - error = 1; + if (quiet != 1 || arglist & CAM_ARG_VERBOSE) { + warnx("ATA %s failed: %d", + ata_op_string(&(ccb->ataio.cmd)), quiet); + } if (arglist & CAM_ARG_VERBOSE) { cam_error_print(device, ccb, CAM_ESF_ALL, CAM_EPF_ALL, stderr); } + + return (1); } - cam_freeccb(ccb); + return (0); +} + +static int +ata_do_pass_16(struct cam_device *device, union ccb *ccb, int retries, + u_int32_t flags, u_int8_t protocol, u_int8_t ata_flags, + u_int8_t tag_action, u_int8_t command, u_int8_t features, + u_int64_t lba, u_int8_t sector_count, u_int8_t *data_ptr, + u_int16_t dxfer_len, int timeout, int quiet) +{ + if (data_ptr != NULL) { + ata_flags |= AP_FLAG_BYT_BLOK_BYTES | + AP_FLAG_TLEN_SECT_CNT; + if (flags & CAM_DIR_OUT) + ata_flags |= AP_FLAG_TDIR_TO_DEV; + else + ata_flags |= AP_FLAG_TDIR_FROM_DEV; + } else { + ata_flags |= AP_FLAG_TLEN_NO_DATA; + } + + bzero(&(&ccb->ccb_h)[1], + sizeof(struct ccb_scsiio) - sizeof(struct ccb_hdr)); + + scsi_ata_pass_16(&ccb->csio, + retries, + NULL, + flags, + tag_action, + protocol, + ata_flags, + features, + sector_count, + lba, + command, + /*control*/0, + data_ptr, + dxfer_len, + /*sense_len*/SSD_FULL_SIZE, + timeout); + + return scsi_cam_pass_16_send(device, ccb, quiet); +} + +static int +ata_try_pass_16(struct cam_device *device) +{ + struct ccb_pathinq cpi; + + if (get_cpi(device, &cpi) != 0) { + warnx("couldn't get CPI"); + return (-1); + } + + if (cpi.protocol == PROTO_SCSI) { + /* possibly compatible with pass_16 */ + return (1); + } + + /* likely not compatible with pass_16 */ + return (0); +} + +static int +ata_do_28bit_cmd(struct cam_device *device, union ccb *ccb, int retries, + u_int32_t flags, u_int8_t protocol, u_int8_t tag_action, + u_int8_t command, u_int8_t features, u_int32_t lba, + u_int8_t sector_count, u_int8_t *data_ptr, u_int16_t dxfer_len, + int timeout, int quiet) +{ + + + switch (ata_try_pass_16(device)) { + case -1: + return (1); + case 1: + /* Try using SCSI Passthrough */ + return ata_do_pass_16(device, ccb, retries, flags, protocol, + 0, tag_action, command, features, lba, + sector_count, data_ptr, dxfer_len, + timeout, quiet); + } + + bzero(&(&ccb->ccb_h)[1], sizeof(struct ccb_ataio) - + sizeof(struct ccb_hdr)); + cam_fill_ataio(&ccb->ataio, + retries, + NULL, + flags, + tag_action, + data_ptr, + dxfer_len, + timeout); + + ata_28bit_cmd(&ccb->ataio, command, features, lba, sector_count); + return ata_cam_send(device, ccb, quiet); +} + +static void +dump_data(uint16_t *ptr, uint32_t len) +{ + u_int i; + + for (i = 0; i < len / 2; i++) { + if ((i % 8) == 0) + printf(" %3d: ", i); + printf("%04hx ", ptr[i]); + if ((i % 8) == 7) + printf("\n"); + } + if ((i % 8) != 7) + printf("\n"); +} + +static int +ata_do_identify(struct cam_device *device, int retry_count, int timeout, + union ccb *ccb, struct ata_params** ident_bufp) +{ + struct ata_params *ident_buf; + struct ccb_pathinq cpi; + struct ccb_getdev cgd; + u_int i, error; + int16_t *ptr; + u_int8_t command, retry_command; + + if (get_cpi(device, &cpi) != 0) { + warnx("couldn't get CPI"); + return (-1); + } + + /* Neither PROTO_ATAPI or PROTO_SATAPM are used in cpi.protocol */ + if (cpi.protocol == PROTO_ATA) { + if (get_cgd(device, &cgd) != 0) { + warnx("couldn't get CGD"); + return (-1); + } + + command = (cgd.protocol == PROTO_ATA) ? + ATA_ATA_IDENTIFY : ATA_ATAPI_IDENTIFY; + retry_command = 0; + } else { + /* We don't know which for sure so try both */ + command = ATA_ATA_IDENTIFY; + retry_command = ATA_ATAPI_IDENTIFY; + } + + ptr = (uint16_t *)calloc(1, sizeof(struct ata_params)); + if (ptr == NULL) { + warnx("can't calloc memory for identify\n"); + return (1); + } + + error = ata_do_28bit_cmd(device, + ccb, + /*retries*/retry_count, + /*flags*/CAM_DIR_IN, + /*protocol*/AP_PROTO_PIO_IN, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/command, + /*features*/0, + /*lba*/0, + /*sector_count*/(u_int8_t)sizeof(struct ata_params), + /*data_ptr*/(u_int8_t *)ptr, + /*dxfer_len*/sizeof(struct ata_params), + /*timeout*/timeout ? timeout : 30 * 1000, + /*quiet*/1); if (error != 0) { - free(ptr); - return(error); + if (retry_command == 0) { + free(ptr); + return (1); + } + error = ata_do_28bit_cmd(device, + ccb, + /*retries*/retry_count, + /*flags*/CAM_DIR_IN, + /*protocol*/AP_PROTO_PIO_IN, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/retry_command, + /*features*/0, + /*lba*/0, + /*sector_count*/(u_int8_t) + sizeof(struct ata_params), + /*data_ptr*/(u_int8_t *)ptr, + /*dxfer_len*/sizeof(struct ata_params), + /*timeout*/timeout ? timeout : 30 * 1000, + /*quiet*/0); + + if (error != 0) { + free(ptr); + return (1); + } } - for (i = 0; i < sizeof(struct ata_params) / 2; i++) + error = 1; + for (i = 0; i < sizeof(struct ata_params) / 2; i++) { ptr[i] = le16toh(ptr[i]); + if (ptr[i] != 0) + error = 0; + } + if (arglist & CAM_ARG_VERBOSE) { fprintf(stdout, "%s%d: Raw identify data:\n", device->device_name, device->dev_unit_num); - for (i = 0; i < sizeof(struct ata_params) / 2; i++) { - if ((i % 8) == 0) - fprintf(stdout, " %3d: ", i); - fprintf(stdout, "%04x ", (uint16_t)ptr[i]); - if ((i % 8) == 7) - fprintf(stdout, "\n"); - } + dump_data(ptr, sizeof(struct ata_params)); } + + /* check for invalid (all zero) response */ + if (error != 0) { + warnx("Invalid identify response detected"); + free(ptr); + return (error); + } + ident_buf = (struct ata_params *)ptr; if (strncmp(ident_buf->model, "FX", 2) && strncmp(ident_buf->model, "NEC", 3) && @@ -1446,15 +1690,636 @@ ataidentify(struct cam_device *device, i ata_bpack(ident_buf->media_serial, ident_buf->media_serial, sizeof(ident_buf->media_serial)); - fprintf(stdout, "%s%d: ", device->device_name, - device->dev_unit_num); + *ident_bufp = ident_buf; + + return (0); +} + + +static int +ataidentify(struct cam_device *device, int retry_count, int timeout) +{ + union ccb *ccb; + struct ata_params *ident_buf; + + if ((ccb = cam_getccb(device)) == NULL) { + warnx("couldn't allocate CCB"); + return (1); + } + + if (ata_do_identify(device, retry_count, timeout, ccb, &ident_buf) != 0) { + cam_freeccb(ccb); + return (1); + } + + printf("%s%d: ", device->device_name, device->dev_unit_num); ata_print_ident(ident_buf); camxferrate(device); atacapprint(ident_buf); free(ident_buf); + cam_freeccb(ccb); - return(0); + return (0); +} +#endif /* MINIMALISTIC */ + + +#ifndef MINIMALISTIC +enum { + ATA_SECURITY_ACTION_PRINT, + ATA_SECURITY_ACTION_FREEZE, + ATA_SECURITY_ACTION_UNLOCK, + ATA_SECURITY_ACTION_DISABLE, + ATA_SECURITY_ACTION_ERASE, + ATA_SECURITY_ACTION_ERASE_ENHANCED, + ATA_SECURITY_ACTION_SET_PASSWORD +} atasecurity_action; + +static void +atasecurity_print_time(u_int16_t tw) +{ + + if (tw == 0) + printf("unspecified"); + else if (tw >= 255) + printf("> 508 min"); + else + printf("%i min", 2 * tw); +} + +static u_int32_t +atasecurity_erase_timeout_msecs(u_int16_t timeout) +{ + + if (timeout == 0) + return 2 * 3600 * 1000; /* default: two hours */ + else if (timeout > 255) + return (508 + 60) * 60 * 1000; /* spec says > 508 minutes */ + + return ((2 * timeout) + 5) * 60 * 1000; /* add a 5min margin */ +} + + +static void +atasecurity_notify(u_int8_t command, struct ata_security_password *pwd) +{ + struct ata_cmd cmd; + + bzero(&cmd, sizeof(cmd)); + cmd.command = command; + printf("Issuing %s", ata_op_string(&cmd)); + + if (pwd != NULL) { + char pass[sizeof(pwd->password)+1]; + + /* pwd->password may not be null terminated */ + pass[sizeof(pwd->password)] = '\0'; + strncpy(pass, pwd->password, sizeof(pwd->password)); + printf(" password='%s', user='%s'", + pass, + (pwd->ctrl & ATA_SECURITY_PASSWORD_MASTER) ? + "master" : "user"); + + if (command == ATA_SECURITY_SET_PASSWORD) { + printf(", mode='%s'", + (pwd->ctrl & ATA_SECURITY_LEVEL_MAXIMUM) ? + "maximum" : "high"); + } + } + + printf("\n"); +} + +static int +atasecurity_freeze(struct cam_device *device, union ccb *ccb, + int retry_count, u_int32_t timeout, int quiet) +{ + + if (quiet == 0) + atasecurity_notify(ATA_SECURITY_FREEZE_LOCK, NULL); + + return ata_do_28bit_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_NONE, + /*protocol*/AP_PROTO_NON_DATA, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_SECURITY_FREEZE_LOCK, + /*features*/0, + /*lba*/0, + /*sector_count*/0, + /*data_ptr*/NULL, + /*dxfer_len*/0, + /*timeout*/timeout, + /*quiet*/0); +} + +static int +atasecurity_unlock(struct cam_device *device, union ccb *ccb, + int retry_count, u_int32_t timeout, + struct ata_security_password *pwd, int quiet) +{ + + if (quiet == 0) + atasecurity_notify(ATA_SECURITY_UNLOCK, pwd); + + return ata_do_28bit_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_OUT, + /*protocol*/AP_PROTO_PIO_OUT, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_SECURITY_UNLOCK, + /*features*/0, + /*lba*/0, + /*sector_count*/0, + /*data_ptr*/(u_int8_t *)pwd, + /*dxfer_len*/sizeof(*pwd), + /*timeout*/timeout, + /*quiet*/0); +} + +static int +atasecurity_disable(struct cam_device *device, union ccb *ccb, + int retry_count, u_int32_t timeout, + struct ata_security_password *pwd, int quiet) +{ + + if (quiet == 0) + atasecurity_notify(ATA_SECURITY_DISABLE_PASSWORD, pwd); + return ata_do_28bit_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_OUT, + /*protocol*/AP_PROTO_PIO_OUT, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_SECURITY_DISABLE_PASSWORD, + /*features*/0, + /*lba*/0, + /*sector_count*/0, + /*data_ptr*/(u_int8_t *)pwd, + /*dxfer_len*/sizeof(*pwd), + /*timeout*/timeout, + /*quiet*/0); +} + + +static int +atasecurity_erase_confirm(struct cam_device *device, + struct ata_params* ident_buf) +{ + + printf("\nYou are about to ERASE ALL DATA from the following" + " device:\n%s%d,%s%d: ", device->device_name, + device->dev_unit_num, device->given_dev_name, + device->given_unit_number); + ata_print_ident(ident_buf); + + for(;;) { + char str[50]; + printf("\nAre you SURE you want to ERASE ALL DATA? (yes/no) "); + + if (fgets(str, sizeof(str), stdin) != NULL) { + if (strncasecmp(str, "yes", 3) == 0) { + return (1); + } else if (strncasecmp(str, "no", 2) == 0) { + return (0); + } else { + printf("Please answer \"yes\" or " + "\"no\"\n"); + } + } + } + + /* NOTREACHED */ + return (0); +} + +static int +atasecurity_erase(struct cam_device *device, union ccb *ccb, + int retry_count, u_int32_t timeout, + u_int32_t erase_timeout, + struct ata_security_password *pwd, int quiet) +{ + int error; + + if (quiet == 0) + atasecurity_notify(ATA_SECURITY_ERASE_PREPARE, NULL); + + error = ata_do_28bit_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_NONE, + /*protocol*/AP_PROTO_NON_DATA, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_SECURITY_ERASE_PREPARE, + /*features*/0, + /*lba*/0, + /*sector_count*/0, + /*data_ptr*/NULL, + /*dxfer_len*/0, + /*timeout*/timeout, + /*quiet*/0); + + if (error != 0) + return error; + + if (quiet == 0) + atasecurity_notify(ATA_SECURITY_ERASE_UNIT, pwd); + + error = ata_do_28bit_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_OUT, + /*protocol*/AP_PROTO_PIO_OUT, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_SECURITY_ERASE_UNIT, + /*features*/0, + /*lba*/0, + /*sector_count*/0, + /*data_ptr*/(u_int8_t *)pwd, + /*dxfer_len*/sizeof(*pwd), + /*timeout*/erase_timeout, + /*quiet*/0); + + if (error == 0 && quiet == 0) + printf("\nErase Complete\n"); + + return error; +} + +static int +atasecurity_set_password(struct cam_device *device, union ccb *ccb, + int retry_count, u_int32_t timeout, + struct ata_security_password *pwd, int quiet) +{ + + if (quiet == 0) + atasecurity_notify(ATA_SECURITY_SET_PASSWORD, pwd); + + return ata_do_28bit_cmd(device, + ccb, + retry_count, + /*flags*/CAM_DIR_OUT, + /*protocol*/AP_PROTO_PIO_OUT, + /*tag_action*/MSG_SIMPLE_Q_TAG, + /*command*/ATA_SECURITY_SET_PASSWORD, + /*features*/0, + /*lba*/0, + /*sector_count*/0, + /*data_ptr*/(u_int8_t *)pwd, + /*dxfer_len*/sizeof(*pwd), + /*timeout*/timeout, + /*quiet*/0); +} + +static void +atasecurity_print(struct ata_params *parm) +{ + + printf("\nSecurity Option Value\n"); + if (arglist & CAM_ARG_VERBOSE) { + printf("status %04x\n", + parm->security_status); + } + printf("supported %s\n", + parm->security_status & ATA_SECURITY_SUPPORTED ? "yes" : "no"); + if (!(parm->security_status & ATA_SECURITY_SUPPORTED)) + return; + printf("enabled %s\n", + parm->security_status & ATA_SECURITY_ENABLED ? "yes" : "no"); + printf("drive locked %s\n", + parm->security_status & ATA_SECURITY_LOCKED ? "yes" : "no"); + printf("security config frozen %s\n", + parm->security_status & ATA_SECURITY_FROZEN ? "yes" : "no"); + printf("count expired %s\n", + parm->security_status & ATA_SECURITY_COUNT_EXP ? "yes" : "no"); + printf("security level %s\n", + parm->security_status & ATA_SECURITY_LEVEL ? "maximum" : "high"); + printf("enhanced erase supported %s\n", + parm->security_status & ATA_SECURITY_ENH_SUPP ? "yes" : "no"); + printf("erase time "); + atasecurity_print_time(parm->erase_time); + printf("\n"); + printf("enhanced erase time "); + atasecurity_print_time(parm->enhanced_erase_time); + printf("\n"); + printf("master password rev %04x%s\n", + parm->master_passwd_revision, + parm->master_passwd_revision == 0x0000 || + parm->master_passwd_revision == 0xFFFF ? " (unsupported)" : ""); +} + +/* + * Validates and copies the password in optarg to the passed buffer. + * If the password in optarg is the same length as the buffer then + * the data will still be copied but no null termination will occur. + */ +static int +ata_getpwd(u_int8_t *passwd, int max, char opt) +{ + int len; + + len = strlen(optarg); + if (len > max) { + warnx("-%c password is too long", opt); + return (1); + } else if (len == 0) { + warnx("-%c password is missing", opt); + return (1); + } else if (optarg[0] == '-'){ + warnx("-%c password starts with '-' (generic arg?)", opt); + return (1); + } else if (strlen(passwd) != 0 && strcmp(passwd, optarg) != 0) { + warnx("-%c password conflicts with existing password from -%c", + opt, pwd_opt); + return (1); + } + + /* Callers pass in a buffer which does NOT need to be terminated */ + strncpy(passwd, optarg, max); + pwd_opt = opt; + + return (0); +} + +static int +atasecurity(struct cam_device *device, int retry_count, int timeout, + int argc, char **argv, char *combinedopt) +{ + union ccb *ccb; + struct ata_params *ident_buf; + int error, confirm, quiet, c, action, actions, setpwd; + int security_enabled, erase_timeout, pwdsize; + struct ata_security_password pwd; + + actions = 0; + setpwd = 0; + erase_timeout = 0; + confirm = 0; + quiet = 0; + + memset(&pwd, 0, sizeof(pwd)); + + /* default action is to print security information */ + action = ATA_SECURITY_ACTION_PRINT; + + /* user is master by default as its safer that way */ + pwd.ctrl |= ATA_SECURITY_PASSWORD_MASTER; + pwdsize = sizeof(pwd.password); + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sat Apr 6 07:10:55 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 6A6512D3; Sat, 6 Apr 2013 07:10:55 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 3F671275; Sat, 6 Apr 2013 07:10:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r367AsIj050157; Sat, 6 Apr 2013 07:10:54 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r367AstY050156; Sat, 6 Apr 2013 07:10:54 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201304060710.r367AstY050156@svn.freebsd.org> From: Gleb Smirnoff Date: Sat, 6 Apr 2013 07:10:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249183 - projects/counters/share/man/man9 X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 06 Apr 2013 07:10:55 -0000 Author: glebius Date: Sat Apr 6 07:10:54 2013 New Revision: 249183 URL: http://svnweb.freebsd.org/changeset/base/249183 Log: Wording. Submitted by: bde Modified: projects/counters/share/man/man9/counter.9 Modified: projects/counters/share/man/man9/counter.9 ============================================================================== --- projects/counters/share/man/man9/counter.9 Sat Apr 6 06:02:55 2013 (r249182) +++ projects/counters/share/man/man9/counter.9 Sat Apr 6 07:10:54 2013 (r249183) @@ -37,19 +37,19 @@ .Ft counter_u64_t .Fn counter_u64_alloc "int wait" .Ft void -.Fn counter_u64_free "counter_u64_t cnt" +.Fn counter_u64_free "counter_u64_t c" .Ft void -.Fn counter_u64_add "counter_u64_t cnt" "int64_t value" +.Fn counter_u64_add "counter_u64_t c" "int64_t v" .Ft void .Fn counter_enter .Ft void .Fn counter_exit .Ft void -.Fn counter_u64_add_protected "counter_u64_t cnt" "int64_t value" +.Fn counter_u64_add_protected "counter_u64_t c" "int64_t v" .Ft uint64_t -.Fn counter_u64_fetch "counter_u64_t cnt" +.Fn counter_u64_fetch "counter_u64_t c" .Ft void -.Fn counter_u64_zero "counter_u64_t cnt" +.Fn counter_u64_zero "counter_u64_t c" .In sys/sysctl.h .Fn SYSCTL_COUNTER_U64 parent nbr name access ptr val descr .Fn SYSCTL_ADD_COUNTER_U64 ctx parent nbr name access ptr descr @@ -92,17 +92,15 @@ or If .Va M_WAITOK is specified the operation may fail. -.It Fn counter_u64_free cnt -Free previously allocated -.Nm -.Fa cnt . -.It Fn counter_u64_add cnt value +.It Fn counter_u64_free c +Free the previously allocated counter +.Fa c . +.It Fn counter_u64_add c v Add -.Fa value -to the -.Nm -.Fa cnt . -The KPI does not guarantee any protection from underflow. +.Fa v +to +.Fa c . +The KPI does not guarantee any protection from wraparound. .It Fn counter_enter Enter mode that would allow to safely update several counters via .Fn counter_u64_add_protected . @@ -113,22 +111,20 @@ See .Sx IMPLEMENTATION DETAILS . .It Fn counter_exit Exit mode for updating several counters. -.It Fn counter_u64_add_protected cnt value +.It Fn counter_u64_add_protected c v Same as .Fn counter_u64_add , but should be preceded by .Fn counter_enter . -.It Fn counter_u64_fetch cnt -Obtain current snapshot of the data collected in -.Nm -.Fa cnt . +.It Fn counter_u64_fetch c +Take a snapshot of counter +.Fa c . The data obtained is not guaranteed to reflect the real cumulative value for any moment. -.It Fn counter_u64_zero cnt -Clear data collected in -.Nm -.Fa cnt -and set its value to zero. +.It Fn counter_u64_zero c +Clear the counter +.Fa c +and set it to zero. .It Fn SYSCTL_COUNTER_U64 parent nbr name access ptr val descr Declare a static .Xr sysctl From owner-svn-src-projects@FreeBSD.ORG Sat Apr 6 07:14:55 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 5C93A419; Sat, 6 Apr 2013 07:14:55 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 4C75728C; Sat, 6 Apr 2013 07:14:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r367Etjf050768; Sat, 6 Apr 2013 07:14:55 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r367EpH0050741; Sat, 6 Apr 2013 07:14:51 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201304060714.r367EpH0050741@svn.freebsd.org> From: Gleb Smirnoff Date: Sat, 6 Apr 2013 07:14:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249184 - in projects/counters: . bin/dd bin/sh contrib/bmake contrib/bmake/mk contrib/bmake/unit-tests crypto/openssh etc/defaults etc/periodic/daily lib/libc/stdlib lib/libc/sys lib/l... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 06 Apr 2013 07:14:55 -0000 Author: glebius Date: Sat Apr 6 07:14:50 2013 New Revision: 249184 URL: http://svnweb.freebsd.org/changeset/base/249184 Log: Merge head r243428 through r249183. Added: projects/counters/contrib/bmake/unit-tests/export-env - copied unchanged from r249183, head/contrib/bmake/unit-tests/export-env - copied from r249183, head/contrib/unbound/ projects/counters/etc/periodic/daily/401.status-graid - copied unchanged from r249183, head/etc/periodic/daily/401.status-graid projects/counters/sys/contrib/dev/acpica/compiler/asllistsup.c - copied unchanged from r249183, head/sys/contrib/dev/acpica/compiler/asllistsup.c projects/counters/sys/contrib/dev/acpica/compiler/asloffset.c - copied unchanged from r249183, head/sys/contrib/dev/acpica/compiler/asloffset.c projects/counters/sys/contrib/dev/acpica/components/utilities/utpredef.c - copied unchanged from r249183, head/sys/contrib/dev/acpica/components/utilities/utpredef.c projects/counters/sys/dev/cfi/cfi_bus_nexus.c - copied unchanged from r249183, head/sys/dev/cfi/cfi_bus_nexus.c Directory Properties: projects/counters/contrib/unbound/ (props changed) Deleted: projects/counters/etc/periodic/daily/405.status-ata-raid projects/counters/sbin/atacontrol/ projects/counters/share/man/man4/atapicam.4 projects/counters/share/man/man4/ataraid.4 projects/counters/sys/dev/ata/ata-disk.c projects/counters/sys/dev/ata/ata-disk.h projects/counters/sys/dev/ata/ata-raid-ddf.h projects/counters/sys/dev/ata/ata-raid.c projects/counters/sys/dev/ata/ata-raid.h projects/counters/sys/dev/ata/atapi-cam.c projects/counters/sys/dev/ata/atapi-cd.c projects/counters/sys/dev/ata/atapi-cd.h projects/counters/sys/dev/ata/atapi-fd.c projects/counters/sys/dev/ata/atapi-fd.h projects/counters/sys/dev/ata/atapi-tape.c projects/counters/sys/dev/ata/atapi-tape.h projects/counters/sys/modules/ata/atacam/ projects/counters/sys/modules/ata/atadisk/ projects/counters/sys/modules/ata/atapicam/ projects/counters/sys/modules/ata/atapicd/ projects/counters/sys/modules/ata/atapifd/ projects/counters/sys/modules/ata/atapist/ projects/counters/sys/modules/ata/ataraid/ projects/counters/usr.sbin/bhyve/uart.c projects/counters/usr.sbin/burncd/ Modified: projects/counters/ObsoleteFiles.inc projects/counters/bin/dd/dd.c projects/counters/bin/sh/redir.c projects/counters/contrib/bmake/ChangeLog projects/counters/contrib/bmake/FILES projects/counters/contrib/bmake/Makefile projects/counters/contrib/bmake/bmake.1 projects/counters/contrib/bmake/bmake.cat1 projects/counters/contrib/bmake/boot-strap projects/counters/contrib/bmake/configure projects/counters/contrib/bmake/configure.in projects/counters/contrib/bmake/dir.c projects/counters/contrib/bmake/job.c projects/counters/contrib/bmake/job.h projects/counters/contrib/bmake/main.c projects/counters/contrib/bmake/make.1 projects/counters/contrib/bmake/make.h projects/counters/contrib/bmake/meta.c projects/counters/contrib/bmake/meta.h projects/counters/contrib/bmake/mk/ChangeLog projects/counters/contrib/bmake/mk/dirdeps.mk projects/counters/contrib/bmake/mk/gendirdeps.mk projects/counters/contrib/bmake/mk/install-mk projects/counters/contrib/bmake/mk/meta.stage.mk projects/counters/contrib/bmake/mk/meta2deps.py projects/counters/contrib/bmake/mk/meta2deps.sh projects/counters/contrib/bmake/mk/sys.dependfile.mk projects/counters/contrib/bmake/parse.c projects/counters/contrib/bmake/unit-tests/Makefile.in projects/counters/contrib/bmake/unit-tests/test.exp projects/counters/contrib/bmake/var.c projects/counters/crypto/openssh/krl.c projects/counters/crypto/openssh/readconf.c projects/counters/crypto/openssh/readconf.h projects/counters/crypto/openssh/ssh.c projects/counters/crypto/openssh/sshconnect2.c projects/counters/etc/defaults/periodic.conf projects/counters/etc/periodic/daily/Makefile projects/counters/lib/libc/stdlib/rand.3 projects/counters/lib/libc/stdlib/rand.c projects/counters/lib/libc/stdlib/random.3 projects/counters/lib/libc/stdlib/random.c projects/counters/lib/libc/sys/getsockopt.2 projects/counters/lib/libpam/modules/pam_unix/pam_unix.c projects/counters/rescue/rescue/Makefile projects/counters/sbin/Makefile projects/counters/sbin/camcontrol/camcontrol.8 projects/counters/sbin/camcontrol/camcontrol.c projects/counters/sbin/geom/class/raid/graid.8 projects/counters/sbin/geom/class/stripe/gstripe.8 projects/counters/sbin/nvmecontrol/nvmecontrol.c projects/counters/share/man/man4/Makefile projects/counters/share/man/man4/ata.4 projects/counters/share/man/man4/igb.4 projects/counters/share/man/man5/devfs.conf.5 projects/counters/share/man/man5/periodic.conf.5 projects/counters/share/man/man5/rc.conf.5 projects/counters/share/man/man7/hier.7 projects/counters/share/misc/committers-ports.dot projects/counters/share/mk/sys.mk projects/counters/sys/amd64/conf/GENERIC projects/counters/sys/amd64/vmm/io/vlapic.c projects/counters/sys/arm/arm/machdep.c projects/counters/sys/arm/arm/vfp.c projects/counters/sys/arm/conf/AC100 projects/counters/sys/arm/conf/ARMADAXP projects/counters/sys/arm/conf/AVILA projects/counters/sys/arm/conf/CAMBRIA projects/counters/sys/arm/conf/CRB projects/counters/sys/arm/conf/CUBIEBOARD projects/counters/sys/arm/conf/EFIKA_MX projects/counters/sys/arm/conf/EP80219 projects/counters/sys/arm/conf/IQ31244 projects/counters/sys/arm/conf/TS7800 projects/counters/sys/arm/include/setjmp.h projects/counters/sys/arm/ti/aintc.c projects/counters/sys/boot/common/util.c projects/counters/sys/cam/ata/ata_da.c projects/counters/sys/cam/ata/ata_xpt.c projects/counters/sys/cam/cam_periph.c projects/counters/sys/cam/cam_sim.c projects/counters/sys/cam/cam_xpt.c projects/counters/sys/cam/cam_xpt_sim.h projects/counters/sys/cam/ctl/ctl.c projects/counters/sys/cam/ctl/ctl_backend_block.c projects/counters/sys/cam/ctl/scsi_ctl.c projects/counters/sys/cam/scsi/scsi_cd.c projects/counters/sys/cam/scsi/scsi_da.c projects/counters/sys/cam/scsi/scsi_pass.c projects/counters/sys/cam/scsi/scsi_xpt.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/counters/sys/conf/NOTES projects/counters/sys/conf/files projects/counters/sys/conf/files.sparc64 projects/counters/sys/conf/options projects/counters/sys/contrib/dev/acpica/changes.txt (contents, props changed) projects/counters/sys/contrib/dev/acpica/common/ahpredef.c projects/counters/sys/contrib/dev/acpica/compiler/aslcompile.c projects/counters/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/counters/sys/contrib/dev/acpica/compiler/asldefine.h projects/counters/sys/contrib/dev/acpica/compiler/aslerror.c projects/counters/sys/contrib/dev/acpica/compiler/aslfiles.c projects/counters/sys/contrib/dev/acpica/compiler/aslglobal.h projects/counters/sys/contrib/dev/acpica/compiler/asllisting.c projects/counters/sys/contrib/dev/acpica/compiler/aslmain.c projects/counters/sys/contrib/dev/acpica/compiler/aslpredef.c projects/counters/sys/contrib/dev/acpica/compiler/aslprepkg.c projects/counters/sys/contrib/dev/acpica/compiler/aslresource.c projects/counters/sys/contrib/dev/acpica/compiler/asltypes.h projects/counters/sys/contrib/dev/acpica/compiler/aslwalks.c projects/counters/sys/contrib/dev/acpica/components/debugger/dbmethod.c projects/counters/sys/contrib/dev/acpica/components/debugger/dbnames.c projects/counters/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c projects/counters/sys/contrib/dev/acpica/components/dispatcher/dswexec.c projects/counters/sys/contrib/dev/acpica/components/events/evevent.c projects/counters/sys/contrib/dev/acpica/components/executer/exoparg2.c projects/counters/sys/contrib/dev/acpica/components/namespace/nseval.c projects/counters/sys/contrib/dev/acpica/components/namespace/nspredef.c projects/counters/sys/contrib/dev/acpica/components/tables/tbfadt.c projects/counters/sys/contrib/dev/acpica/components/tables/tbxface.c projects/counters/sys/contrib/dev/acpica/components/utilities/utdelete.c projects/counters/sys/contrib/dev/acpica/components/utilities/utmutex.c projects/counters/sys/contrib/dev/acpica/components/utilities/utosi.c projects/counters/sys/contrib/dev/acpica/components/utilities/utxface.c projects/counters/sys/contrib/dev/acpica/include/acglobal.h projects/counters/sys/contrib/dev/acpica/include/aclocal.h projects/counters/sys/contrib/dev/acpica/include/acnamesp.h projects/counters/sys/contrib/dev/acpica/include/acpixf.h projects/counters/sys/contrib/dev/acpica/include/acpredef.h projects/counters/sys/contrib/dev/acpica/include/acutils.h projects/counters/sys/dev/ahci/ahciem.c projects/counters/sys/dev/ata/ata-all.c projects/counters/sys/dev/ata/ata-all.h projects/counters/sys/dev/ata/ata-cbus.c projects/counters/sys/dev/ata/ata-dma.c projects/counters/sys/dev/ata/ata-lowlevel.c projects/counters/sys/dev/ata/ata-pci.c projects/counters/sys/dev/ata/ata-pci.h projects/counters/sys/dev/ata/ata-queue.c projects/counters/sys/dev/ata/ata-sata.c projects/counters/sys/dev/ata/ata_if.m projects/counters/sys/dev/ata/chipsets/ata-acard.c projects/counters/sys/dev/ata/chipsets/ata-acerlabs.c projects/counters/sys/dev/ata/chipsets/ata-intel.c projects/counters/sys/dev/ata/chipsets/ata-ite.c projects/counters/sys/dev/ata/chipsets/ata-serverworks.c projects/counters/sys/dev/ata/chipsets/ata-siliconimage.c projects/counters/sys/dev/ath/ath_hal/ah.h projects/counters/sys/dev/ath/ath_hal/ah_debug.h projects/counters/sys/dev/ath/ath_hal/ah_internal.h projects/counters/sys/dev/ath/if_ath_rx.c projects/counters/sys/dev/ath/if_ath_rx.h projects/counters/sys/dev/ath/if_ath_rx_edma.c projects/counters/sys/dev/ciss/ciss.c projects/counters/sys/dev/drm2/drm_edid.c projects/counters/sys/dev/drm2/i915/intel_iic.c projects/counters/sys/dev/drm2/i915/intel_modes.c projects/counters/sys/dev/drm2/i915/intel_sdvo.c projects/counters/sys/dev/e1000/if_em.c projects/counters/sys/dev/e1000/if_igb.c projects/counters/sys/dev/e1000/if_lem.c projects/counters/sys/dev/hwpmc/hwpmc_core.c projects/counters/sys/dev/hwpmc/hwpmc_intel.c projects/counters/sys/dev/hwpmc/hwpmc_uncore.c projects/counters/sys/dev/hwpmc/pmc_events.h projects/counters/sys/dev/md/md.c projects/counters/sys/dev/usb/misc/udbp.c projects/counters/sys/dev/usb/usb_device.c projects/counters/sys/dev/usb/usbdevs projects/counters/sys/geom/geom_disk.c projects/counters/sys/i386/conf/GENERIC projects/counters/sys/i386/conf/XBOX projects/counters/sys/ia64/conf/GENERIC projects/counters/sys/kern/init_main.c projects/counters/sys/kern/kern_intr.c projects/counters/sys/kern/kern_sig.c projects/counters/sys/kern/subr_bus_dma.c projects/counters/sys/mips/atheros/apb.c projects/counters/sys/mips/atheros/ar71xx_ehci.c projects/counters/sys/mips/atheros/ar71xx_setup.c projects/counters/sys/mips/atheros/ar71xx_setup.h projects/counters/sys/mips/atheros/ar933x_chip.c projects/counters/sys/mips/atheros/ar933xreg.h projects/counters/sys/mips/atheros/if_arge.c projects/counters/sys/mips/atheros/uart_dev_ar933x.c projects/counters/sys/mips/conf/AP121 projects/counters/sys/mips/conf/AP121.hints projects/counters/sys/mips/conf/OCTEON1 projects/counters/sys/mips/conf/XLR projects/counters/sys/mips/conf/XLR64 projects/counters/sys/mips/conf/XLRN32 projects/counters/sys/mips/conf/std.SWARM projects/counters/sys/mips/conf/std.XLP projects/counters/sys/mips/malta/std.malta projects/counters/sys/modules/ata/Makefile projects/counters/sys/modules/ctl/Makefile projects/counters/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c projects/counters/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c projects/counters/sys/pc98/conf/GENERIC projects/counters/sys/pc98/conf/NOTES projects/counters/sys/powerpc/aim/trap.c projects/counters/sys/powerpc/conf/GENERIC projects/counters/sys/powerpc/conf/GENERIC64 projects/counters/sys/powerpc/conf/MPC85XX projects/counters/sys/rpc/rpcsec_gss/rpcsec_gss_prot.c projects/counters/sys/sparc64/conf/GENERIC projects/counters/sys/sys/ata.h projects/counters/sys/sys/bus.h projects/counters/sys/ufs/ffs/ffs_softdep.c projects/counters/sys/vm/vm_radix.c projects/counters/usr.bin/bmake/Makefile projects/counters/usr.bin/bmake/config.h projects/counters/usr.bin/bmake/unit-tests/Makefile projects/counters/usr.bin/calendar/calendars/calendar.freebsd projects/counters/usr.sbin/Makefile projects/counters/usr.sbin/acpi/acpidb/Makefile projects/counters/usr.sbin/acpi/iasl/Makefile projects/counters/usr.sbin/bhyve/Makefile projects/counters/usr.sbin/bhyve/mptbl.c projects/counters/usr.sbin/bluetooth/ath3kfw/ath3kfw.c projects/counters/usr.sbin/bsdconfig/share/device.subr projects/counters/usr.sbin/pc-sysinstall/backend-query/disk-list.sh Directory Properties: projects/counters/ (props changed) projects/counters/contrib/bmake/ (props changed) projects/counters/crypto/openssh/ (props changed) projects/counters/lib/libc/ (props changed) projects/counters/sbin/ (props changed) projects/counters/share/man/man4/ (props changed) projects/counters/sys/ (props changed) projects/counters/sys/amd64/vmm/ (props changed) projects/counters/sys/boot/ (props changed) projects/counters/sys/cddl/contrib/opensolaris/ (props changed) projects/counters/sys/conf/ (props changed) projects/counters/sys/contrib/dev/acpica/ (props changed) projects/counters/sys/contrib/dev/acpica/common/ (props changed) projects/counters/sys/contrib/dev/acpica/compiler/ (props changed) projects/counters/sys/contrib/dev/acpica/components/debugger/ (props changed) projects/counters/sys/contrib/dev/acpica/components/dispatcher/ (props changed) projects/counters/sys/contrib/dev/acpica/components/events/ (props changed) projects/counters/sys/contrib/dev/acpica/components/executer/ (props changed) projects/counters/sys/contrib/dev/acpica/components/namespace/ (props changed) projects/counters/sys/contrib/dev/acpica/components/tables/ (props changed) projects/counters/sys/contrib/dev/acpica/components/utilities/ (props changed) projects/counters/sys/contrib/dev/acpica/include/ (props changed) projects/counters/usr.bin/calendar/ (props changed) projects/counters/usr.sbin/bhyve/ (props changed) Modified: projects/counters/ObsoleteFiles.inc ============================================================================== --- projects/counters/ObsoleteFiles.inc Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/ObsoleteFiles.inc Sat Apr 6 07:14:50 2013 (r249184) @@ -38,6 +38,13 @@ # xargs -n1 | sort | uniq -d; # done +# 20130404: legacy ATA stack removed +OLD_FILES+=sbin/atacontrol +OLD_FILES+=usr/share/man/man8/atacontrol.8.gz +OLD_FILES+=usr/share/man/man4/atapicam.4.gz +OLD_FILES+=usr/share/man/man4/ataraid.4.gz +OLD_FILES+=usr/sbin/burncd +OLD_FILES+=usr/share/man/man8/burncd.8.gz # 20130316: vinum.4 removed OLD_FILES+=usr/share/man/man4/vinum.4.gz # 20130312: fortunes-o removed Modified: projects/counters/bin/dd/dd.c ============================================================================== --- projects/counters/bin/dd/dd.c Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/bin/dd/dd.c Sat Apr 6 07:14:50 2013 (r249184) @@ -98,6 +98,13 @@ main(int argc __unused, char *argv[]) dd_in(); dd_close(); + /* + * Some devices such as cfi(4) may perform significant amounts + * of work when a write descriptor is closed. Close the out + * descriptor explicitly so that the summary handler (called + * from an atexit() hook) includes this work. + */ + close(out.fd); exit(0); } Modified: projects/counters/bin/sh/redir.c ============================================================================== --- projects/counters/bin/sh/redir.c Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/bin/sh/redir.c Sat Apr 6 07:14:50 2013 (r249184) @@ -64,7 +64,6 @@ __FBSDID("$FreeBSD$"); #define EMPTY -2 /* marks an unused slot in redirtab */ #define CLOSED -1 /* fd was not open before redir */ -#define PIPESIZE 4096 /* amount of buffering in a pipe */ MKINIT @@ -253,7 +252,9 @@ openhere(union node *redir) { char *p; int pip[2]; - int len = 0; + size_t len = 0; + int flags; + ssize_t written = 0; if (pipe(pip) < 0) error("Pipe call failed: %s", strerror(errno)); @@ -263,9 +264,16 @@ openhere(union node *redir) else p = redir->nhere.doc->narg.text; len = strlen(p); - if (len <= PIPESIZE) { - xwrite(pip[1], p, len); + if (len == 0) goto out; + flags = fcntl(pip[1], F_GETFL, 0); + if (flags != -1 && fcntl(pip[1], F_SETFL, flags | O_NONBLOCK) != -1) { + written = write(pip[1], p, len); + if (written < 0) + written = 0; + if ((size_t)written == len) + goto out; + fcntl(pip[1], F_SETFL, flags); } if (forkshell((struct job *)NULL, (union node *)NULL, FORK_NOJOB) == 0) { @@ -275,7 +283,7 @@ openhere(union node *redir) signal(SIGHUP, SIG_IGN); signal(SIGTSTP, SIG_IGN); signal(SIGPIPE, SIG_DFL); - xwrite(pip[1], p, len); + xwrite(pip[1], p + written, len - written); _exit(0); } out: Modified: projects/counters/contrib/bmake/ChangeLog ============================================================================== --- projects/counters/contrib/bmake/ChangeLog Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/ChangeLog Sat Apr 6 07:14:50 2013 (r249184) @@ -1,3 +1,47 @@ +2013-03-30 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130330 + Merge with NetBSD make, pick up + o meta.c: refine the handling of .OODATE in commands. + Rather than suppress command comparison for the entire script + as though .NOMETA_CMP had been used, only suppress it for the + one command line. + This allows something like ${.OODATE:M.NOMETA_CMP} to be used to + suppress comparison of a command without otherwise affecting it. + o make.1: document that + +2013-03-22 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130321 + yes, not quite right but its a cooler number. + Merge with NetBSD make, pick up + o parse.c: fix ParseGmakeExport to be portable + and add a unit-test. + * meta.c: call meta_init() before makefiles are read and if built + with filemon support set .MAKE.PATH_FILEMON to _PATH_FILEMON + this let's makefiles test for support. + Call meta_mode_init() to process .MAKE.MODE. + +2013-03-13 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130305 + Merge with NetBSD make, pick up + o run .STALE: target when a dependency from .depend is missing. + o job.c: add Job_RunTarget() for the above and .BEGIN + +2013-03-03 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130303 + Merge with NetBSD make, pick up + o main.c: set .MAKE.OS to utsname.sysname + o job.c: more checks for read and poll errors + o var.c: lose VarChangeCase() saves 4% time + +2013-03-02 Simon J. Gerraty + + * boot-strap: remove MAKEOBJDIRPREFIX from environment since we + want to use MAKEOBJDIR + 2013-01-27 Simon J. Gerraty * Merge with NetBSD make, pick up Modified: projects/counters/contrib/bmake/FILES ============================================================================== --- projects/counters/contrib/bmake/FILES Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/FILES Sat Apr 6 07:14:50 2013 (r249184) @@ -102,6 +102,7 @@ unit-tests/dotwait unit-tests/error unit-tests/export unit-tests/export-all +unit-tests/export-env unit-tests/forloop unit-tests/forsubst unit-tests/hash Modified: projects/counters/contrib/bmake/Makefile ============================================================================== --- projects/counters/contrib/bmake/Makefile Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/Makefile Sat Apr 6 07:14:50 2013 (r249184) @@ -1,7 +1,7 @@ -# $Id: Makefile,v 1.5 2013/01/28 19:31:58 sjg Exp $ +# $Id: Makefile,v 1.10 2013/03/31 05:57:19 sjg Exp $ # Base version on src date -MAKE_VERSION= 20130123 +MAKE_VERSION= 20130330 PROG= bmake @@ -187,14 +187,14 @@ MANDIR= ${SHAREDIR}/man .if !exists(.depend) ${OBJS}: config.h .endif -.if ${MK_AUTOCONF_MK} == "yes" -.include -.endif # make sure that MAKE_VERSION gets updated. main.o: ${SRCS} ${MAKEFILE} # start-delete2 for bsd.after-import.mk +.if ${MK_AUTOCONF_MK} == "yes" +.include +.endif SHARE_MK?=${SHAREDIR}/mk MKSRC=${srcdir}/mk INSTALL?=${srcdir}/install-sh Modified: projects/counters/contrib/bmake/bmake.1 ============================================================================== --- projects/counters/contrib/bmake/bmake.1 Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/bmake.1 Sat Apr 6 07:14:50 2013 (r249184) @@ -1,4 +1,4 @@ -.\" $NetBSD: make.1,v 1.210 2013/01/27 18:52:01 sjg Exp $ +.\" $NetBSD: make.1,v 1.213 2013/03/31 05:49:51 sjg Exp $ .\" .\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\" .\" from: @(#)make.1 8.4 (Berkeley) 3/19/94 .\" -.Dd January 23, 2013 +.Dd March 30, 2013 .Dt MAKE 1 .Os .Sh NAME @@ -874,6 +874,13 @@ by appending their names to is re-exported whenever .Ql Va .MAKEOVERRIDES is modified. +.It Va .MAKE.PATH_FILEMON +If +.Nm +was built with +.Xr filemon 4 +support, this is set to the path of the device node. +This allows makefiles to test for this support. .It Va .MAKE.PID The process-id of .Nm . @@ -1757,6 +1764,20 @@ targets. Ignore differences in commands when deciding if target is out of date. This is useful if the command contains a value which always changes. If the number of commands change, though, the target will still be out of date. +The same effect applies to any command line that uses the variable +.Va .OODATE , +which can be used for that purpose even when not otherwise needed or desired: +.Bd -literal -offset indent + +skip-compare-for-some: + @echo this will be compared + @echo this will not ${.OODATE:M.NOMETA_CMP} + @echo this will also be compared + +.Ed +The +.Cm \&:M +pattern suppresses any expansion of the unwanted variable. .It Ic .NOPATH Do not search for the target in the directories specified by .Ic .PATH . @@ -2008,6 +2029,10 @@ If no sources are specified, the .Ic .SILENT attribute is applied to every command in the file. +.It Ic .STALE +This target gets run when a dependency file contains stale entries, having +.Va .ALLSRC +set to the name of that dependency file. .It Ic .SUFFIXES Each source specifies a suffix to .Nm . Modified: projects/counters/contrib/bmake/bmake.cat1 ============================================================================== --- projects/counters/contrib/bmake/bmake.cat1 Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/bmake.cat1 Sat Apr 6 07:14:50 2013 (r249184) @@ -565,6 +565,11 @@ VVAARRIIAABBLLEE AASSSSIIGG `MAKEFLAGS' is re-exported whenever `_._M_A_K_E_O_V_E_R_R_I_D_E_S' is modified. + _._M_A_K_E_._P_A_T_H___F_I_L_E_M_O_N + If bbmmaakkee was built with filemon(4) support, this is set + to the path of the device node. This allows makefiles to + test for this support. + _._M_A_K_E_._P_I_D The process-id of bbmmaakkee. _._M_A_K_E_._P_P_I_D The parent process-id of bbmmaakkee. @@ -1106,7 +1111,19 @@ SSPPEECCIIAALL SSOOUURRCCEE Ignore differences in commands when deciding if target is out of date. This is useful if the command contains a value which always changes. If the number of commands change, though, the - target will still be out of date. + target will still be out of date. The same effect applies to + any command line that uses the variable _._O_O_D_A_T_E, which can be + used for that purpose even when not otherwise needed or + desired: + + + skip-compare-for-some: + @echo this will be compared + @echo this will not ${.OODATE:M.NOMETA_CMP} + @echo this will also be compared + + The ::MM pattern suppresses any expansion of the unwanted vari- + able. ..NNOOPPAATTHH Do not search for the target in the directories specified by ..PPAATTHH. @@ -1278,6 +1295,9 @@ SSPPEECCIIAALL TTAARRGGEETT sources are specified, the ..SSIILLEENNTT attribute is applied to every command in the file. + ..SSTTAALLEE This target gets run when a dependency file contains stale + entries, having _._A_L_L_S_R_C set to the name of that dependency file. + ..SSUUFFFFIIXXEESS Each source specifies a suffix to bbmmaakkee. If no sources are specified, any previously specified suffixes are deleted. It @@ -1340,4 +1360,4 @@ BBUUGGSS There is no way of escaping a space character in a filename. -NetBSD 5.1 January 23, 2013 NetBSD 5.1 +NetBSD 5.1 March 30, 2013 NetBSD 5.1 Modified: projects/counters/contrib/bmake/boot-strap ============================================================================== --- projects/counters/contrib/bmake/boot-strap Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/boot-strap Sat Apr 6 07:14:50 2013 (r249184) @@ -111,7 +111,7 @@ # Simon J. Gerraty # RCSid: -# $Id: boot-strap,v 1.42 2013/01/25 20:20:33 sjg Exp $ +# $Id: boot-strap,v 1.43 2013/03/02 18:55:23 sjg Exp $ # # @(#) Copyright (c) 2001 Simon J. Gerraty # @@ -159,6 +159,9 @@ source_rc() { cmd_args="$@" +# clear some things from the environment that we care about +unset MAKEOBJDIR MAKEOBJDIRPREFIX + # --install[-host-target] will set this INSTALL_PREFIX= # other things we pass to install step Modified: projects/counters/contrib/bmake/configure ============================================================================== Binary file (source and/or target). No diff available. Modified: projects/counters/contrib/bmake/configure.in ============================================================================== --- projects/counters/contrib/bmake/configure.in Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/configure.in Sat Apr 6 07:14:50 2013 (r249184) @@ -1,10 +1,10 @@ dnl dnl RCSid: -dnl $Id: configure.in,v 1.46 2012/12/28 21:28:18 sjg Exp $ +dnl $Id: configure.in,v 1.48 2013/03/04 21:25:57 sjg Exp $ dnl dnl Process this file with autoconf to produce a configure script dnl -AC_INIT([bmake], [20121212], [sjg@NetBSD.org]) +AC_INIT([bmake], [20130303], [sjg@NetBSD.org]) AC_CONFIG_HEADER(config.h) dnl make srcdir absolute Modified: projects/counters/contrib/bmake/dir.c ============================================================================== --- projects/counters/contrib/bmake/dir.c Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/dir.c Sat Apr 6 07:14:50 2013 (r249184) @@ -1,4 +1,4 @@ -/* $NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $ */ +/* $NetBSD: dir.c,v 1.67 2013/03/05 22:01:43 christos Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -70,14 +70,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $"; +static char rcsid[] = "$NetBSD: dir.c,v 1.67 2013/03/05 22:01:43 christos Exp $"; #else #include #ifndef lint #if 0 static char sccsid[] = "@(#)dir.c 8.2 (Berkeley) 1/2/94"; #else -__RCSID("$NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $"); +__RCSID("$NetBSD: dir.c,v 1.67 2013/03/05 22:01:43 christos Exp $"); #endif #endif /* not lint */ #endif @@ -145,6 +145,7 @@ __RCSID("$NetBSD: dir.c,v 1.65 2012/06/1 #include "make.h" #include "hash.h" #include "dir.h" +#include "job.h" /* * A search path consists of a Lst of Path structures. A Path structure @@ -1463,9 +1464,11 @@ Dir_MTime(GNode *gn, Boolean recheck) * so that we give that to the compiler. */ gn->path = bmake_strdup(fullName); - fprintf(stdout, - "%s: ignoring stale %s for %s, found %s\n", - progname, makeDependfile, gn->name, fullName); + if (!Job_RunTarget(".STALE", gn->fname)) + fprintf(stdout, + "%s: %s, %d: ignoring stale %s for %s, " + "found %s\n", progname, gn->fname, gn->lineno, + makeDependfile, gn->name, fullName); } } } Modified: projects/counters/contrib/bmake/job.c ============================================================================== --- projects/counters/contrib/bmake/job.c Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/job.c Sat Apr 6 07:14:50 2013 (r249184) @@ -1,4 +1,4 @@ -/* $NetBSD: job.c,v 1.165 2013/01/26 15:52:59 christos Exp $ */ +/* $NetBSD: job.c,v 1.172 2013/03/05 22:01:43 christos Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -70,14 +70,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: job.c,v 1.165 2013/01/26 15:52:59 christos Exp $"; +static char rcsid[] = "$NetBSD: job.c,v 1.172 2013/03/05 22:01:43 christos Exp $"; #else #include #ifndef lint #if 0 static char sccsid[] = "@(#)job.c 8.2 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: job.c,v 1.165 2013/01/26 15:52:59 christos Exp $"); +__RCSID("$NetBSD: job.c,v 1.172 2013/03/05 22:01:43 christos Exp $"); #endif #endif /* not lint */ #endif @@ -142,6 +142,7 @@ __RCSID("$NetBSD: job.c,v 1.165 2013/01/ #include #include "wait.h" +#include #include #include #if !defined(USE_SELECT) && defined(HAVE_POLL_H) @@ -1245,8 +1246,10 @@ Job_CheckCommands(GNode *gn, void (*abor static const char msg[] = ": don't know how to make"; if (gn->flags & FROM_DEPEND) { - fprintf(stdout, "%s: ignoring stale %s for %s\n", - progname, makeDependfile, gn->name); + if (!Job_RunTarget(".STALE", gn->fname)) + fprintf(stdout, "%s: %s, %d: ignoring stale %s for %s\n", + progname, gn->fname, gn->lineno, makeDependfile, + gn->name); return TRUE; } @@ -2063,32 +2066,45 @@ Job_CatchOutput(void) (void)fflush(stdout); /* The first fd in the list is the job token pipe */ - nready = poll(fds + 1 - wantToken, nfds - 1 + wantToken, POLL_MSEC); + do { + nready = poll(fds + 1 - wantToken, nfds - 1 + wantToken, POLL_MSEC); + } while (nready < 0 && errno == EINTR); - if (nready < 0 || readyfd(&childExitJob)) { + if (nready < 0) + Punt("poll: %s", strerror(errno)); + + if (nready > 0 && readyfd(&childExitJob)) { char token = 0; - nready -= 1; - while (read(childExitJob.inPipe, &token, 1) == -1 && errno == EAGAIN) - continue; - if (token == DO_JOB_RESUME[0]) - /* Complete relay requested from our SIGCONT handler */ - JobRestartJobs(); - Job_CatchChildren(); + ssize_t count; + count = read(childExitJob.inPipe, &token, 1); + switch (count) { + case 0: + Punt("unexpected eof on token pipe"); + case -1: + Punt("token pipe read: %s", strerror(errno)); + case 1: + if (token == DO_JOB_RESUME[0]) + /* Complete relay requested from our SIGCONT handler */ + JobRestartJobs(); + break; + default: + abort(); + } + --nready; } - if (nready <= 0) - return; - - if (wantToken && readyfd(&tokenWaitJob)) - nready--; + Job_CatchChildren(); + if (nready == 0) + return; for (i = 2; i < nfds; i++) { if (!fds[i].revents) continue; job = jobfds[i]; - if (job->job_state != JOB_ST_RUNNING) - continue; - JobDoOutput(job, FALSE); + if (job->job_state == JOB_ST_RUNNING) + JobDoOutput(job, FALSE); + if (--nready == 0) + return; } } @@ -2179,8 +2195,6 @@ Job_SetPrefix(void) void Job_Init(void) { - GNode *begin; /* node for commands to do at the very start */ - /* Allocate space for all the job info */ job_table = bmake_malloc(maxJobs * sizeof *job_table); memset(job_table, 0, maxJobs * sizeof *job_table); @@ -2256,15 +2270,7 @@ Job_Init(void) ADDSIG(SIGCONT, JobContinueSig) #undef ADDSIG - begin = Targ_FindNode(".BEGIN", TARG_NOCREATE); - - if (begin != NULL) { - JobRun(begin); - if (begin->made == ERROR) { - PrintOnError(begin, "\n\nStop."); - exit(1); - } - } + (void)Job_RunTarget(".BEGIN", NULL); postCommands = Targ_FindNode(".END", TARG_CREATE); } @@ -2930,6 +2936,38 @@ Job_TokenWithdraw(void) return TRUE; } +/*- + *----------------------------------------------------------------------- + * Job_RunTarget -- + * Run the named target if found. If a filename is specified, then + * set that to the sources. + * + * Results: + * None + * + * Side Effects: + * exits if the target fails. + * + *----------------------------------------------------------------------- + */ +Boolean +Job_RunTarget(const char *target, const char *fname) { + GNode *gn = Targ_FindNode(target, TARG_NOCREATE); + + if (gn == NULL) + return FALSE; + + if (fname) + Var_Set(ALLSRC, fname, gn, 0); + + JobRun(gn); + if (gn->made == ERROR) { + PrintOnError(gn, "\n\nStop."); + exit(1); + } + return TRUE; +} + #ifdef USE_SELECT int emul_poll(struct pollfd *fd, int nfd, int timeout) Modified: projects/counters/contrib/bmake/job.h ============================================================================== --- projects/counters/contrib/bmake/job.h Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/job.h Sat Apr 6 07:14:50 2013 (r249184) @@ -1,4 +1,4 @@ -/* $NetBSD: job.h,v 1.40 2010/09/13 15:36:57 sjg Exp $ */ +/* $NetBSD: job.h,v 1.41 2013/03/05 22:01:44 christos Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -268,5 +268,6 @@ void Job_TokenReturn(void); Boolean Job_TokenWithdraw(void); void Job_ServerStart(int, int, int); void Job_SetPrefix(void); +Boolean Job_RunTarget(const char *, const char *); #endif /* _JOB_H_ */ Modified: projects/counters/contrib/bmake/main.c ============================================================================== --- projects/counters/contrib/bmake/main.c Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/main.c Sat Apr 6 07:14:50 2013 (r249184) @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.205 2013/01/26 15:53:00 christos Exp $ */ +/* $NetBSD: main.c,v 1.210 2013/03/23 05:31:29 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,7 +69,7 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: main.c,v 1.205 2013/01/26 15:53:00 christos Exp $"; +static char rcsid[] = "$NetBSD: main.c,v 1.210 2013/03/23 05:31:29 sjg Exp $"; #else #include #ifndef lint @@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: main.c,v 1.205 2013/01/26 15:53:00 christos Exp $"); +__RCSID("$NetBSD: main.c,v 1.210 2013/03/23 05:31:29 sjg Exp $"); #endif #endif /* not lint */ #endif @@ -119,9 +119,7 @@ __RCSID("$NetBSD: main.c,v 1.205 2013/01 #include #include #include -#ifdef MAKE_NATIVE #include -#endif #include "wait.h" #include @@ -768,7 +766,7 @@ MakeMode(const char *mode) } #if USE_META if (strstr(mode, "meta")) - meta_init(mode); + meta_mode_init(mode); #endif } if (mp) @@ -813,9 +811,7 @@ main(int argc, char **argv) static char defsyspath[] = _PATH_DEFSYSPATH; char found_path[MAXPATHLEN + 1]; /* for searching for sys.mk */ struct timeval rightnow; /* to initialize random seed */ -#ifdef MAKE_NATIVE struct utsname utsname; -#endif /* default to writing debug to stderr */ debug_file = stderr; @@ -834,7 +830,7 @@ main(int argc, char **argv) progname++; else progname = argv[0]; -#ifdef RLIMIT_NOFILE +#if defined(MAKE_NATIVE) || (defined(HAVE_SETRLIMIT) && defined(RLIMIT_NOFILE)) /* * get rid of resource limit on file descriptors */ @@ -848,6 +844,12 @@ main(int argc, char **argv) } #endif + if (uname(&utsname) == -1) { + (void)fprintf(stderr, "%s: uname failed (%s).\n", progname, + strerror(errno)); + exit(2); + } + /* * Get the name of this type of MACHINE from utsname * so we can share an executable for similar machines. @@ -858,11 +860,6 @@ main(int argc, char **argv) */ if (!machine) { #ifdef MAKE_NATIVE - if (uname(&utsname) == -1) { - (void)fprintf(stderr, "%s: uname failed (%s).\n", progname, - strerror(errno)); - exit(2); - } machine = utsname.machine; #else #ifdef MAKE_MACHINE @@ -892,6 +889,7 @@ main(int argc, char **argv) */ Var_Init(); /* Initialize the lists of variables for * parsing arguments */ + Var_Set(".MAKE.OS", utsname.sysname, VAR_GLOBAL, 0); Var_Set("MACHINE", machine, VAR_GLOBAL, 0); Var_Set("MACHINE_ARCH", machine_arch, VAR_GLOBAL, 0); #ifdef MAKE_VERSION @@ -987,6 +985,9 @@ main(int argc, char **argv) } Job_SetPrefix(); +#ifdef USE_META + meta_init(); +#endif /* * First snag any flags out of the MAKE environment variable. * (Note this is *not* MAKEFLAGS since /bin/make uses that and it's @@ -1697,7 +1698,7 @@ Finish(int errors) } /* - * enunlink -- + * eunlink -- * Remove a file carefully, avoiding directories. */ int Modified: projects/counters/contrib/bmake/make.1 ============================================================================== --- projects/counters/contrib/bmake/make.1 Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/make.1 Sat Apr 6 07:14:50 2013 (r249184) @@ -1,4 +1,4 @@ -.\" $NetBSD: make.1,v 1.210 2013/01/27 18:52:01 sjg Exp $ +.\" $NetBSD: make.1,v 1.213 2013/03/31 05:49:51 sjg Exp $ .\" .\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\" .\" from: @(#)make.1 8.4 (Berkeley) 3/19/94 .\" -.Dd January 23, 2013 +.Dd March 30, 2013 .Dt MAKE 1 .Os .Sh NAME @@ -874,6 +874,13 @@ by appending their names to is re-exported whenever .Ql Va .MAKEOVERRIDES is modified. +.It Va .MAKE.PATH_FILEMON +If +.Nm +was built with +.Xr filemon 4 +support, this is set to the path of the device node. +This allows makefiles to test for this support. .It Va .MAKE.PID The process-id of .Nm . @@ -1757,6 +1764,20 @@ targets. Ignore differences in commands when deciding if target is out of date. This is useful if the command contains a value which always changes. If the number of commands change, though, the target will still be out of date. +The same effect applies to any command line that uses the variable +.Va .OODATE , +which can be used for that purpose even when not otherwise needed or desired: +.Bd -literal -offset indent + +skip-compare-for-some: + @echo this will be compared + @echo this will not ${.OODATE:M.NOMETA_CMP} + @echo this will also be compared + +.Ed +The +.Cm \&:M +pattern suppresses any expansion of the unwanted variable. .It Ic .NOPATH Do not search for the target in the directories specified by .Ic .PATH . @@ -2008,6 +2029,10 @@ If no sources are specified, the .Ic .SILENT attribute is applied to every command in the file. +.It Ic .STALE +This target gets run when a dependency file contains stale entries, having +.Va .ALLSRC +set to the name of that dependency file. .It Ic .SUFFIXES Each source specifies a suffix to .Nm . Modified: projects/counters/contrib/bmake/make.h ============================================================================== --- projects/counters/contrib/bmake/make.h Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/make.h Sat Apr 6 07:14:50 2013 (r249184) @@ -1,4 +1,4 @@ -/* $NetBSD: make.h,v 1.89 2012/06/12 19:21:51 joerg Exp $ */ +/* $NetBSD: make.h,v 1.90 2013/02/25 01:57:14 dholland Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -103,7 +103,7 @@ ((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) || \ (__GNUC__ > (x))) #else /* defined(__GNUC__) */ -#define MAKE_GNUC_PREREQx, y) 0 +#define MAKE_GNUC_PREREQ(x, y) 0 #endif /* defined(__GNUC__) */ #if MAKE_GNUC_PREREQ(2, 7) Modified: projects/counters/contrib/bmake/meta.c ============================================================================== --- projects/counters/contrib/bmake/meta.c Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/meta.c Sat Apr 6 07:14:50 2013 (r249184) @@ -1,4 +1,4 @@ -/* $NetBSD: meta.c,v 1.26 2013/01/19 04:23:37 sjg Exp $ */ +/* $NetBSD: meta.c,v 1.29 2013/03/31 05:49:51 sjg Exp $ */ /* * Implement 'meta' mode. @@ -539,8 +539,24 @@ boolValue(char *s) return TRUE; } +/* + * Initialization we need before reading makefiles. + */ +void +meta_init() +{ +#ifdef USE_FILEMON + /* this allows makefiles to test if we have filemon support */ + Var_Set(".MAKE.PATH_FILEMON", _PATH_FILEMON, VAR_GLOBAL, 0); +#endif +} + + +/* + * Initialization we need after reading makefiles. + */ void -meta_init(const char *make_mode) +meta_mode_init(const char *make_mode) { static int once = 0; char *cp; @@ -1037,6 +1053,7 @@ meta_oodate(GNode *gn, Boolean oodate) char *tp = Lst_Datum(ln); Lst_Remove(missingFiles, ln); free(tp); + ln = NULL; /* we're done with it */ } } break; @@ -1196,17 +1213,19 @@ meta_oodate(GNode *gn, Boolean oodate) oodate = TRUE; } else { char *cmd = (char *)Lst_Datum(ln); + Boolean hasOODATE = FALSE; - if (!needOODATE) { - if (strstr(cmd, "$?")) - needOODATE = TRUE; - else if ((cp = strstr(cmd, ".OODATE"))) { - /* check for $[{(].OODATE[)}] */ - if (cp > cmd + 2 && cp[-2] == '$') - needOODATE = TRUE; - } - if (needOODATE && DEBUG(META)) - fprintf(debug_file, "%s: %d: cannot compare commands using .OODATE\n", fname, lineno); + if (strstr(cmd, "$?")) + hasOODATE = TRUE; + else if ((cp = strstr(cmd, ".OODATE"))) { + /* check for $[{(].OODATE[:)}] */ + if (cp > cmd + 2 && cp[-2] == '$') + hasOODATE = TRUE; + } + if (hasOODATE) { + needOODATE = TRUE; + if (DEBUG(META)) + fprintf(debug_file, "%s: %d: cannot compare command using .OODATE\n", fname, lineno); } cmd = Var_Subst(NULL, cmd, gn, TRUE); @@ -1235,7 +1254,7 @@ meta_oodate(GNode *gn, Boolean oodate) if (buf[x - 1] == '\n') buf[x - 1] = '\0'; } - if (!needOODATE && + if (!hasOODATE && !(gn->type & OP_NOMETA_CMP) && strcmp(p, cmd) != 0) { if (DEBUG(META)) Modified: projects/counters/contrib/bmake/meta.h ============================================================================== --- projects/counters/contrib/bmake/meta.h Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/meta.h Sat Apr 6 07:14:50 2013 (r249184) @@ -1,4 +1,4 @@ -/* $NetBSD: meta.h,v 1.2 2011/03/30 22:03:49 sjg Exp $ */ +/* $NetBSD: meta.h,v 1.3 2013/03/23 05:31:29 sjg Exp $ */ /* * Things needed for 'meta' mode. @@ -41,7 +41,8 @@ typedef struct BuildMon { extern Boolean useMeta; struct Job; /* not defined yet */ -void meta_init(const char *); +void meta_init(void); +void meta_mode_init(const char *); void meta_job_start(struct Job *, GNode *); void meta_job_child(struct Job *); void meta_job_error(struct Job *, GNode *, int, int); Modified: projects/counters/contrib/bmake/mk/ChangeLog ============================================================================== --- projects/counters/contrib/bmake/mk/ChangeLog Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/mk/ChangeLog Sat Apr 6 07:14:50 2013 (r249184) @@ -1,3 +1,71 @@ +2013-03-30 Simon J. Gerraty + + * meta2deps.py (MetaFile.__init__): ensure self.cwd is initialized. + * install-mk (MK_VERSION): bump version + +2013-03-21 Simon J. Gerraty + + * install-mk (MK_VERSION): bump version + * gendirdeps.mk: do not apply :tA to DPADD entries, since we lose + any trailing /., rather apply :tA only when needed. + * gendirdeps.mk: better mimic meta2deps handling of .dirdep files. + * meta.stage.mk (LN_CP_SCRIPT): Add LnCp to do the ln||cp dance + consistently. + * dirdeps.mk: better describe the dance in sys.mk for TARGET_SPEC. + +2013-03-18 Simon J. Gerraty + + * gendirdeps.mk: revert the dance around .MAKE.DEPENDFILE_DEFAULT + it is simpler to just not update when say building for "host" + (where we know we apply filters to DIRDEPS), and using a + non-machine qualified dependfile. + +2013-03-16 Simon J. Gerraty + + * dirdeps.mk: improve DIRDEPS filtering by allowing DEP_SKIP_DIR + and DEP_DIRDEPS_FILTER to vary by DEP_MACHINE and DEP_TARGET_SPEC + * gendirdeps.mk: ensure _objroot has trailing / if it needs it. + * meta2deps.py: if machine is "host", then also trim + self.host_target from any OBJROOTS. + + +2013-03-11 Simon J. Gerraty + + * gendirdeps.mk: if .MAKE.DEPENDFILE_DEFAULT is not machine + qualified but _DEPENDFILE is, and .MAKE.DEPENDFILE_DEFAULT exists + but _DEPENDFILE does not, compare the new _DEPENDFILE against + .MAKE.DEPENDFILE_DEFAULT and discard if the same. + +2013-03-08 Simon J. Gerraty + + * meta.stage.mk: use STAGE_TARGETS to control .ORDER + and hook to all: via staging: + +2013-03-07 Simon J. Gerraty + + * sys.dependfile.mk (.MAKE.DEPENDFILE_DEFAULT): + use a separate variable for the default .MAKE.DEPENDFILE value + so that it can be controlled independently of + .MAKE.DEPENDFILE_PREFERENCE + + * meta.stage.mk: throw error if cp fails etc. + Stage*() return early if passed no args. + .ORDER stage_* + +2013-03-03 Simon J. Gerraty + + * install-mk (MK_VERSION): bump version + * gendirdeps.mk: handle multiple M2D_OBJROOTS better. + +2013-02-10 Simon J. Gerraty + + * install-mk (MK_VERSION): bump version to 20130210 + * import latest dirdeps.mk, gendirdeps.mk and meta2deps.py + from Juniper. + o dirdeps.mk now fully supports TARGET_SPEC consisting of more + than just MACHINE. + o no longer use DEP_MACHINE from Makefile.depend* so remove it. + 2013-01-23 Simon J. Gerraty * install-mk (MK_VERSION): bump version to 20130123 Modified: projects/counters/contrib/bmake/mk/dirdeps.mk ============================================================================== --- projects/counters/contrib/bmake/mk/dirdeps.mk Sat Apr 6 07:10:54 2013 (r249183) +++ projects/counters/contrib/bmake/mk/dirdeps.mk Sat Apr 6 07:14:50 2013 (r249184) @@ -1,6 +1,7 @@ -# $Id: dirdeps.mk,v 1.23 2012/11/06 05:44:03 sjg Exp $ +# $Id: dirdeps.mk,v 1.28 2013/03/25 21:11:43 sjg Exp $ -# Copyright (c) 2010-2012, Juniper Networks, Inc. +# Copyright (c) 2010-2013, Juniper Networks, Inc. +# All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -33,21 +34,31 @@ # This is what we do with DIRDEPS # DIRDEPS: -# This is a list of directories - relative to SRCTOP, it is only -# of interest to .MAKE.LEVEL 0. +# This is a list of directories - relative to SRCTOP, it is +# normally only of interest to .MAKE.LEVEL 0. # In some cases the entry may be qualified with a . -# suffix, for example to force building something for the pseudo +# or . suffix (see TARGET_SPEC_VARS below), +# for example to force building something for the pseudo # machines "host" or "common" regardless of current ${MACHINE}. -# All unqualified entries end up being qualified with .${MACHINE} -# and _DIRDEPS_USE below, uses the suffix to set MACHINE +# +# All unqualified entries end up being qualified with .${TARGET_SPEC} +# and partially qualified (if TARGET_SPEC_VARS has multiple +# entries) are also expanded to a full .. +# The _DIRDEPS_USE target uses the suffix to set TARGET_SPEC # correctly when visiting each entry. # -# Each entry is also converted into a set of paths to look for -# Makefile.depend. to learn the dependencies of each. -# Each Makefile.depend. sets DEP_RELDIR to be the +# The fully qualified directory entries are used to construct a +# dependency graph that will drive the build later. +# +# Also, for each fully qualified directory target, we will search +# using ${.MAKE.DEPENDFILE_PREFERENCE} to find additional +# dependencies. We use Makefile.depend (default value for +# .MAKE.DEPENDFILE_PREFIX) to refer to these makefiles to +# distinguish them from others. +# +# Each Makefile.depend file sets DEP_RELDIR to be the # the RELDIR (path relative to SRCTOP) for its directory, and -# DEP_MACHINE to its suffix (), further since -# each Makefile.depend. includes dirdeps.mk, this +# since each Makefile.depend file includes dirdeps.mk, this # processing is recursive and results in .MAKE.LEVEL 0 learning the # dependencies of the tree wrt the initial directory (_DEP_RELDIR). # @@ -55,38 +66,49 @@ # Indicates whether .MAKE.LEVEL 0 builds anything: # if "no" sub-makes are used to build everything, # if "yes" sub-makes are only used to build for other machines. +# It is best to use "no", but this can require fixing some +# makefiles to not do anything at .MAKE.LEVEL 0. # # TARGET_SPEC_VARS -# All the description above (and below) assumes is the -# only data needed to control the build. -# This is not always the case. So in addition to setting -# MACHINE in the build environment we set TARGET_SPEC which is -# composed of the values of TARGET_SPEC_VARS separated by -# commas. The default is just MACHINE. +# The default value is just MACHINE, and for most environments +# this is sufficient. The _DIRDEPS_USE target actually sets +# both MACHINE and TARGET_SPEC to the suffix of the current +# target so that in the general case TARGET_SPEC can be ignored. # *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sat Apr 6 08:36:27 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 73C991FC; Sat, 6 Apr 2013 08:36:27 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 4BEF4659; Sat, 6 Apr 2013 08:36:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r368aR9t014598; Sat, 6 Apr 2013 08:36:27 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r368aQoJ014592; Sat, 6 Apr 2013 08:36:26 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201304060836.r368aQoJ014592@svn.freebsd.org> From: Gleb Smirnoff Date: Sat, 6 Apr 2013 08:36:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249190 - in projects/counters/sys: cddl/contrib/opensolaris/uts/common/fs/zfs sys X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 06 Apr 2013 08:36:27 -0000 Author: glebius Date: Sat Apr 6 08:36:26 2013 New Revision: 249190 URL: http://svnweb.freebsd.org/changeset/base/249190 Log: Merge head r243428 through r249189. Modified: projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/counters/sys/sys/proc.h projects/counters/sys/sys/systm.h Directory Properties: projects/counters/ (props changed) projects/counters/sys/ (props changed) projects/counters/sys/cddl/contrib/opensolaris/ (props changed) Modified: projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Sat Apr 6 08:23:38 2013 (r249189) +++ projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Sat Apr 6 08:36:26 2013 (r249190) @@ -22,6 +22,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2013 Martin Matuska . All rights reserved. */ @@ -1525,7 +1526,8 @@ spa_check_removed(vdev_t *vd) for (int c = 0; c < vd->vdev_children; c++) spa_check_removed(vd->vdev_child[c]); - if (vd->vdev_ops->vdev_op_leaf && vdev_is_dead(vd)) { + if (vd->vdev_ops->vdev_op_leaf && vdev_is_dead(vd) && + !vd->vdev_ishole) { zfs_post_autoreplace(vd->vdev_spa, vd); spa_event_notify(vd->vdev_spa, vd, ESC_ZFS_VDEV_CHECK); } Modified: projects/counters/sys/sys/proc.h ============================================================================== --- projects/counters/sys/sys/proc.h Sat Apr 6 08:23:38 2013 (r249189) +++ projects/counters/sys/sys/proc.h Sat Apr 6 08:36:26 2013 (r249190) @@ -341,9 +341,6 @@ do { \ #define THREAD_LOCKPTR_ASSERT(td, lock) #endif -#define CRITICAL_ASSERT(td) \ - KASSERT((td)->td_critnest >= 1, ("Not in critical section")); - /* * Flags kept in td_flags: * To change these you MUST have the scheduler lock. Modified: projects/counters/sys/sys/systm.h ============================================================================== --- projects/counters/sys/sys/systm.h Sat Apr 6 08:23:38 2013 (r249189) +++ projects/counters/sys/sys/systm.h Sat Apr 6 08:36:26 2013 (r249190) @@ -112,6 +112,12 @@ void kassert_panic(const char *fmt, ...) ((uintptr_t)&(var) & (sizeof(void *) - 1)) == 0, msg) /* + * Assert that a thread is in critical(9) section. + */ +#define CRITICAL_ASSERT(td) \ + KASSERT((td)->td_critnest >= 1, ("Not in critical section")); + +/* * If we have already panic'd and this is the thread that called * panic(), then don't block on any mutexes but silently succeed. * Otherwise, the kernel will deadlock since the scheduler isn't From owner-svn-src-projects@FreeBSD.ORG Sat Apr 6 08:49:46 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 7190038D; Sat, 6 Apr 2013 08:49:46 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 62994695; Sat, 6 Apr 2013 08:49:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r368nkq3017907; Sat, 6 Apr 2013 08:49:46 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r368njqw017899; Sat, 6 Apr 2013 08:49:45 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201304060849.r368njqw017899@svn.freebsd.org> From: Gleb Smirnoff Date: Sat, 6 Apr 2013 08:49:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249191 - in projects/counters/sys: arm/include i386/include ia64/include mips/include powerpc/include sparc64/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 06 Apr 2013 08:49:46 -0000 Author: glebius Date: Sat Apr 6 08:49:44 2013 New Revision: 249191 URL: http://svnweb.freebsd.org/changeset/base/249191 Log: Pass curthread to CRITICAL_ASSERT(). Modified: projects/counters/sys/arm/include/counter.h projects/counters/sys/i386/include/counter.h projects/counters/sys/ia64/include/counter.h projects/counters/sys/mips/include/counter.h projects/counters/sys/powerpc/include/counter.h projects/counters/sys/sparc64/include/counter.h Modified: projects/counters/sys/arm/include/counter.h ============================================================================== --- projects/counters/sys/arm/include/counter.h Sat Apr 6 08:36:26 2013 (r249190) +++ projects/counters/sys/arm/include/counter.h Sat Apr 6 08:49:44 2013 (r249191) @@ -35,7 +35,7 @@ #define counter_exit() critical_exit() #define counter_u64_add_protected(c, inc) do { \ - CRITICAL_ASSERT(td); \ + CRITICAL_ASSERT(curthread); \ *(uint64_t *)zpcpu_get(c) += (inc); \ } while (0) Modified: projects/counters/sys/i386/include/counter.h ============================================================================== --- projects/counters/sys/i386/include/counter.h Sat Apr 6 08:36:26 2013 (r249190) +++ projects/counters/sys/i386/include/counter.h Sat Apr 6 08:49:44 2013 (r249191) @@ -64,7 +64,7 @@ counter_64_inc_8b(uint64_t *p, int64_t i #define counter_u64_add_protected(c, inc) do { \ if ((cpu_feature & CPUID_CX8) == 0) { \ - CRITICAL_ASSERT(td); \ + CRITICAL_ASSERT(curthread); \ *(uint64_t *)zpcpu_get(c) += (inc); \ } else \ counter_64_inc_8b((c), (inc)); \ Modified: projects/counters/sys/ia64/include/counter.h ============================================================================== --- projects/counters/sys/ia64/include/counter.h Sat Apr 6 08:36:26 2013 (r249190) +++ projects/counters/sys/ia64/include/counter.h Sat Apr 6 08:49:44 2013 (r249191) @@ -35,7 +35,7 @@ #define counter_exit() critical_exit() #define counter_u64_add_protected(c, inc) do { \ - CRITICAL_ASSERT(td); \ + CRITICAL_ASSERT(curthread); \ *(uint64_t *)zpcpu_get(c) += (inc); \ } while (0) Modified: projects/counters/sys/mips/include/counter.h ============================================================================== --- projects/counters/sys/mips/include/counter.h Sat Apr 6 08:36:26 2013 (r249190) +++ projects/counters/sys/mips/include/counter.h Sat Apr 6 08:49:44 2013 (r249191) @@ -35,7 +35,7 @@ #define counter_exit() critical_exit() #define counter_u64_add_protected(c, inc) do { \ - CRITICAL_ASSERT(td); \ + CRITICAL_ASSERT(curthread); \ *(uint64_t *)zpcpu_get(c) += (inc); \ } while (0) Modified: projects/counters/sys/powerpc/include/counter.h ============================================================================== --- projects/counters/sys/powerpc/include/counter.h Sat Apr 6 08:36:26 2013 (r249190) +++ projects/counters/sys/powerpc/include/counter.h Sat Apr 6 08:49:44 2013 (r249191) @@ -61,7 +61,7 @@ counter_u64_add(counter_u64_t c, int64_t #define counter_exit() critical_exit() #define counter_u64_add_protected(c, inc) do { \ - CRITICAL_ASSERT(td); \ + CRITICAL_ASSERT(curthread); \ *(uint64_t *)zpcpu_get(c) += (inc); \ } while (0) Modified: projects/counters/sys/sparc64/include/counter.h ============================================================================== --- projects/counters/sys/sparc64/include/counter.h Sat Apr 6 08:36:26 2013 (r249190) +++ projects/counters/sys/sparc64/include/counter.h Sat Apr 6 08:49:44 2013 (r249191) @@ -35,7 +35,7 @@ #define counter_exit() critical_exit() #define counter_u64_add_protected(c, inc) do { \ - CRITICAL_ASSERT(td); \ + CRITICAL_ASSERT(curthread); \ *(uint64_t *)zpcpu_get(c) += (inc); \ } while (0) From owner-svn-src-projects@FreeBSD.ORG Sat Apr 6 09:57:30 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 0053C99E; Sat, 6 Apr 2013 09:57:29 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id E67AE7ED; Sat, 6 Apr 2013 09:57:29 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r369vTbd037909; Sat, 6 Apr 2013 09:57:29 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r369vS5o037900; Sat, 6 Apr 2013 09:57:28 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201304060957.r369vS5o037900@svn.freebsd.org> From: Gleb Smirnoff Date: Sat, 6 Apr 2013 09:57:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249192 - in projects/counters/sys: arm/include i386/include ia64/include mips/include powerpc/include sparc64/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 06 Apr 2013 09:57:30 -0000 Author: glebius Date: Sat Apr 6 09:57:27 2013 New Revision: 249192 URL: http://svnweb.freebsd.org/changeset/base/249192 Log: Add dirty namespace pollution to make CRITICAL_ASSERT() work. Modified: projects/counters/sys/arm/include/counter.h projects/counters/sys/i386/include/counter.h projects/counters/sys/ia64/include/counter.h projects/counters/sys/mips/include/counter.h projects/counters/sys/powerpc/include/counter.h projects/counters/sys/sparc64/include/counter.h Modified: projects/counters/sys/arm/include/counter.h ============================================================================== --- projects/counters/sys/arm/include/counter.h Sat Apr 6 08:49:44 2013 (r249191) +++ projects/counters/sys/arm/include/counter.h Sat Apr 6 09:57:27 2013 (r249192) @@ -30,6 +30,9 @@ #define __MACHINE_COUNTER_H__ #include +#ifdef INVARIANTS +#include +#endif #define counter_enter() critical_enter() #define counter_exit() critical_exit() Modified: projects/counters/sys/i386/include/counter.h ============================================================================== --- projects/counters/sys/i386/include/counter.h Sat Apr 6 08:49:44 2013 (r249191) +++ projects/counters/sys/i386/include/counter.h Sat Apr 6 09:57:27 2013 (r249192) @@ -30,6 +30,9 @@ #define __MACHINE_COUNTER_H__ #include +#ifdef INVARIANTS +#include +#endif #include #include Modified: projects/counters/sys/ia64/include/counter.h ============================================================================== --- projects/counters/sys/ia64/include/counter.h Sat Apr 6 08:49:44 2013 (r249191) +++ projects/counters/sys/ia64/include/counter.h Sat Apr 6 09:57:27 2013 (r249192) @@ -30,6 +30,9 @@ #define __MACHINE_COUNTER_H__ #include +#ifdef INVARIANTS +#include +#endif #define counter_enter() critical_enter() #define counter_exit() critical_exit() Modified: projects/counters/sys/mips/include/counter.h ============================================================================== --- projects/counters/sys/mips/include/counter.h Sat Apr 6 08:49:44 2013 (r249191) +++ projects/counters/sys/mips/include/counter.h Sat Apr 6 09:57:27 2013 (r249192) @@ -30,6 +30,9 @@ #define __MACHINE_COUNTER_H__ #include +#ifdef INVARIANTS +#include +#endif #define counter_enter() critical_enter() #define counter_exit() critical_exit() Modified: projects/counters/sys/powerpc/include/counter.h ============================================================================== --- projects/counters/sys/powerpc/include/counter.h Sat Apr 6 08:49:44 2013 (r249191) +++ projects/counters/sys/powerpc/include/counter.h Sat Apr 6 09:57:27 2013 (r249192) @@ -30,6 +30,9 @@ #define __MACHINE_COUNTER_H__ #include +#ifdef INVARIANTS +#include +#endif #if defined(AIM) && defined(__powerpc64__) Modified: projects/counters/sys/sparc64/include/counter.h ============================================================================== --- projects/counters/sys/sparc64/include/counter.h Sat Apr 6 08:49:44 2013 (r249191) +++ projects/counters/sys/sparc64/include/counter.h Sat Apr 6 09:57:27 2013 (r249192) @@ -30,6 +30,9 @@ #define __MACHINE_COUNTER_H__ #include +#ifdef INVARIANTS +#include +#endif #define counter_enter() critical_enter() #define counter_exit() critical_exit() From owner-svn-src-projects@FreeBSD.ORG Sat Apr 6 17:20:28 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 71BDE479; Sat, 6 Apr 2013 17:20:28 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 61811807; Sat, 6 Apr 2013 17:20:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r36HKSG6069535; Sat, 6 Apr 2013 17:20:28 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r36HKNtW069501; Sat, 6 Apr 2013 17:20:23 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304061720.r36HKNtW069501@svn.freebsd.org> From: Alexander Motin Date: Sat, 6 Apr 2013 17:20:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249208 - in projects/camlock: . cddl/contrib/opensolaris/lib/libzpool/common cddl/contrib/opensolaris/lib/libzpool/common/sys lib/libc/sys lib/libpam/modules/pam_unix share/misc sys/am... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 06 Apr 2013 17:20:28 -0000 Author: mav Date: Sat Apr 6 17:20:22 2013 New Revision: 249208 URL: http://svnweb.freebsd.org/changeset/base/249208 Log: MFC @ r249206 Added: projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d - copied unchanged from r249206, head/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d Deleted: projects/camlock/sys/dev/ata/ata-queue.c projects/camlock/usr.sbin/bhyve/uart.c Modified: projects/camlock/ObsoleteFiles.inc projects/camlock/UPDATING projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h projects/camlock/lib/libc/sys/getsockopt.2 projects/camlock/lib/libpam/modules/pam_unix/pam_unix.c projects/camlock/share/misc/committers-ports.dot projects/camlock/sys/amd64/vmm/io/vlapic.c projects/camlock/sys/arm/arm/machdep.c projects/camlock/sys/arm/arm/vfp.c projects/camlock/sys/arm/include/setjmp.h projects/camlock/sys/arm/ti/aintc.c projects/camlock/sys/cam/ata/ata_all.h projects/camlock/sys/cam/ata/ata_da.c projects/camlock/sys/cam/ata/ata_xpt.c projects/camlock/sys/cam/cam_ccb.h projects/camlock/sys/cam/ctl/ctl_backend_block.c projects/camlock/sys/cddl/compat/opensolaris/sys/sdt.h projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_errlog.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_root.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfeature.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_onexit.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_checksum.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_compress.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c projects/camlock/sys/conf/files projects/camlock/sys/dev/ata/ata-all.c projects/camlock/sys/dev/ata/ata-all.h projects/camlock/sys/dev/ata/ata-lowlevel.c projects/camlock/sys/dev/ciss/ciss.c projects/camlock/sys/dev/usb/serial/uftdi.c projects/camlock/sys/dev/usb/usbdevs projects/camlock/sys/geom/geom_dev.c projects/camlock/sys/kern/kern_intr.c projects/camlock/sys/kern/kern_sig.c projects/camlock/sys/modules/ata/atacore/Makefile projects/camlock/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c projects/camlock/sys/sys/proc.h projects/camlock/sys/sys/systm.h projects/camlock/sys/vm/vm_radix.c projects/camlock/usr.bin/calendar/calendar.1 projects/camlock/usr.sbin/bhyve/Makefile projects/camlock/usr.sbin/bhyve/mptbl.c projects/camlock/usr.sbin/bluetooth/ath3kfw/ath3kfw.c Directory Properties: projects/camlock/ (props changed) projects/camlock/cddl/ (props changed) projects/camlock/cddl/contrib/opensolaris/ (props changed) projects/camlock/lib/libc/ (props changed) projects/camlock/sys/ (props changed) projects/camlock/sys/amd64/vmm/ (props changed) projects/camlock/sys/cddl/contrib/opensolaris/ (props changed) projects/camlock/sys/conf/ (props changed) projects/camlock/usr.bin/calendar/ (props changed) projects/camlock/usr.sbin/bhyve/ (props changed) Modified: projects/camlock/ObsoleteFiles.inc ============================================================================== --- projects/camlock/ObsoleteFiles.inc Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/ObsoleteFiles.inc Sat Apr 6 17:20:22 2013 (r249208) @@ -43,7 +43,7 @@ OLD_FILES+=sbin/atacontrol OLD_FILES+=usr/share/man/man8/atacontrol.8.gz OLD_FILES+=usr/share/man/man4/atapicam.4.gz OLD_FILES+=usr/share/man/man4/ataraid.4.gz -OLD_FILES+=usr.sbin/burncd +OLD_FILES+=usr/sbin/burncd OLD_FILES+=usr/share/man/man8/burncd.8.gz # 20130316: vinum.4 removed OLD_FILES+=usr/share/man/man4/vinum.4.gz Modified: projects/camlock/UPDATING ============================================================================== --- projects/camlock/UPDATING Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/UPDATING Sat Apr 6 17:20:22 2013 (r249208) @@ -26,6 +26,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20130404: + Legacy ATA stack, disabled and replaced by new CAM-based one since + FreeBSD 9.0, completely removed from the sources. Kernel modules + atadisk and atapi*, user-level tools atacontrol and burncd are + removed. Kernel option `options ATA_CAM` is now permanently enabled + and removed. + 20130308: CTL_DISABLE has also been added to the sparc64 GENERIC (for further information, see the respective 20130304 entry). Modified: projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Sat Apr 6 17:20:22 2013 (r249208) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. */ @@ -86,6 +87,9 @@ extern "C" { #include #include #include +#ifdef illumos +#include "zfs.h" +#endif #define ZFS_EXPORTS_PATH "/etc/zfs/exports" @@ -133,28 +137,64 @@ extern int aok; #ifdef DTRACE_PROBE #undef DTRACE_PROBE -#define DTRACE_PROBE(a) ((void)0) #endif /* DTRACE_PROBE */ +#ifdef illumos +#define DTRACE_PROBE(a) \ + ZFS_PROBE0(#a) +#endif #ifdef DTRACE_PROBE1 #undef DTRACE_PROBE1 -#define DTRACE_PROBE1(a, b, c) ((void)0) #endif /* DTRACE_PROBE1 */ +#ifdef illumos +#define DTRACE_PROBE1(a, b, c) \ + ZFS_PROBE1(#a, (unsigned long)c) +#endif #ifdef DTRACE_PROBE2 #undef DTRACE_PROBE2 -#define DTRACE_PROBE2(a, b, c, d, e) ((void)0) #endif /* DTRACE_PROBE2 */ +#ifdef illumos +#define DTRACE_PROBE2(a, b, c, d, e) \ + ZFS_PROBE2(#a, (unsigned long)c, (unsigned long)e) +#endif #ifdef DTRACE_PROBE3 #undef DTRACE_PROBE3 -#define DTRACE_PROBE3(a, b, c, d, e, f, g) ((void)0) #endif /* DTRACE_PROBE3 */ +#ifdef illumos +#define DTRACE_PROBE3(a, b, c, d, e, f, g) \ + ZFS_PROBE3(#a, (unsigned long)c, (unsigned long)e, (unsigned long)g) +#endif #ifdef DTRACE_PROBE4 #undef DTRACE_PROBE4 -#define DTRACE_PROBE4(a, b, c, d, e, f, g, h, i) ((void)0) #endif /* DTRACE_PROBE4 */ +#ifdef illumos +#define DTRACE_PROBE4(a, b, c, d, e, f, g, h, i) \ + ZFS_PROBE4(#a, (unsigned long)c, (unsigned long)e, (unsigned long)g, \ + (unsigned long)i) +#endif + +#ifdef illumos +/* + * We use the comma operator so that this macro can be used without much + * additional code. For example, "return (EINVAL);" becomes + * "return (SET_ERROR(EINVAL));". Note that the argument will be evaluated + * twice, so it should not have side effects (e.g. something like: + * "return (SET_ERROR(log_error(EINVAL, info)));" would log the error twice). + */ +#define SET_ERROR(err) (ZFS_SET_ERROR(err), err) +#else /* !illumos */ + +#define DTRACE_PROBE(a) ((void)0) +#define DTRACE_PROBE1(a, b, c) ((void)0) +#define DTRACE_PROBE2(a, b, c, d, e) ((void)0) +#define DTRACE_PROBE3(a, b, c, d, e, f, g) ((void)0) +#define DTRACE_PROBE4(a, b, c, d, e, f, g, h, i) ((void)0) + +#define SET_ERROR(err) (err) +#endif /* !illumos */ /* * Threads Copied: projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d (from r249206, head/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d Sat Apr 6 17:20:22 2013 (r249208, copy of r249206, head/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d) @@ -0,0 +1,36 @@ +/* + * CDDL HEADER START + * + * 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. + * + * 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. + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2013 by Delphix. All rights reserved. + */ + +provider zfs { + probe probe0(char *probename); + probe probe1(char *probename, unsigned long arg1); + probe probe2(char *probename, unsigned long arg1, unsigned long arg2); + probe probe3(char *probename, unsigned long arg1, unsigned long arg2, + unsigned long arg3); + probe probe4(char *probename, unsigned long arg1, unsigned long arg2, + unsigned long arg3, unsigned long arg4); + + probe set__error(int err); +}; + +#pragma D attributes Evolving/Evolving/ISA provider zfs provider +#pragma D attributes Private/Private/Unknown provider zfs module +#pragma D attributes Private/Private/Unknown provider zfs function +#pragma D attributes Evolving/Evolving/ISA provider zfs name +#pragma D attributes Evolving/Evolving/ISA provider zfs args Modified: projects/camlock/lib/libc/sys/getsockopt.2 ============================================================================== --- projects/camlock/lib/libc/sys/getsockopt.2 Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/lib/libc/sys/getsockopt.2 Sat Apr 6 17:20:22 2013 (r249208) @@ -28,7 +28,7 @@ .\" @(#)getsockopt.2 8.4 (Berkeley) 5/2/95 .\" $FreeBSD$ .\" -.Dd February 26, 2012 +.Dd April 5, 2013 .Dt GETSOCKOPT 2 .Os .Sh NAME @@ -437,7 +437,7 @@ The .Vt cmsghdr fields have the following values for TIMESTAMP: .Bd -literal - cmsg_len = sizeof(struct timeval); + cmsg_len = CMSG_LEN(sizeof(struct timeval)); cmsg_level = SOL_SOCKET; cmsg_type = SCM_TIMESTAMP; .Ed @@ -445,7 +445,7 @@ fields have the following values for TIM and for .Dv SO_BINTIME : .Bd -literal - cmsg_len = sizeof(struct bintime); + cmsg_len = CMSG_LEN(sizeof(struct bintime)); cmsg_level = SOL_SOCKET; cmsg_type = SCM_BINTIME; .Ed Modified: projects/camlock/lib/libpam/modules/pam_unix/pam_unix.c ============================================================================== --- projects/camlock/lib/libpam/modules/pam_unix/pam_unix.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/lib/libpam/modules/pam_unix/pam_unix.c Sat Apr 6 17:20:22 2013 (r249208) @@ -460,14 +460,14 @@ to64(char *s, long v, int n) } /* Salt suitable for traditional DES and MD5 */ -void -makesalt(char salt[SALTSIZE]) +static void +makesalt(char salt[SALTSIZE + 1]) { int i; /* These are not really random numbers, they are just * numbers that change to thwart construction of a - * dictionary. This is exposed to the public. + * dictionary. */ for (i = 0; i < SALTSIZE; i += 4) to64(&salt[i], arc4random(), 4); Modified: projects/camlock/share/misc/committers-ports.dot ============================================================================== --- projects/camlock/share/misc/committers-ports.dot Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/share/misc/committers-ports.dot Sat Apr 6 17:20:22 2013 (r249208) @@ -51,6 +51,7 @@ alepulver [label="Alejandro Pulver\nalep alexbl [label="Alexander Botero-Lowry\nalexbl@FreeBSD.org\n2006/09/11"] amdmi3 [label="Dmitry Marakasov\namdmi3@FreeBSD.org\n2008/06/19"] anray [label="Andrey Slusar\nanray@FreeBSD.org\n2005/12/11"] +antoine [label="Antoine Brodin\nantoine@FreeBSD.org\n2013/04/03"] araujo [label="Marcelo Araujo\naraujo@FreeBSD.org\n2007/04/26"] arved [label="Tilman Linneweh\narved@FreeBSD.org\n2002/10/15"] ashish [label="Ashish SHUKLA\nashish@FreeBSD.org\n2010/06/10"] @@ -283,6 +284,7 @@ delphij -> rafan demon -> mat eadler -> ak +eadler -> antoine eadler -> dbn eadler -> bdrewery eadler -> gjb @@ -398,6 +400,7 @@ mat -> thierry mezz -> tmclaugh miwi -> amdmi3 +miwi -> antoine miwi -> avilla miwi -> beat miwi -> bf Modified: projects/camlock/sys/amd64/vmm/io/vlapic.c ============================================================================== --- projects/camlock/sys/amd64/vmm/io/vlapic.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/amd64/vmm/io/vlapic.c Sat Apr 6 17:20:22 2013 (r249208) @@ -128,6 +128,8 @@ static int vlapic_timer_divisor(uint32_t dcr) { switch (dcr & 0xB) { + case APIC_TDCR_1: + return (1); case APIC_TDCR_2: return (2); case APIC_TDCR_4: Modified: projects/camlock/sys/arm/arm/machdep.c ============================================================================== --- projects/camlock/sys/arm/arm/machdep.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/arm/arm/machdep.c Sat Apr 6 17:20:22 2013 (r249208) @@ -183,6 +183,10 @@ SYSCTL_UINT(_hw_board, OID_AUTO, revisio SYSCTL_STRING(_hw_board, OID_AUTO, serial, CTLFLAG_RD, board_serial, 0, "Board serial"); +int vfp_exists; +SYSCTL_INT(_hw, HW_FLOATINGPT, floatingpoint, CTLFLAG_RD, + &vfp_exists, 0, "Floating point support enabled"); + void board_set_serial(uint64_t serial) { Modified: projects/camlock/sys/arm/arm/vfp.c ============================================================================== --- projects/camlock/sys/arm/arm/vfp.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/arm/arm/vfp.c Sat Apr 6 17:20:22 2013 (r249208) @@ -47,7 +47,7 @@ void vfp_restore(struct vfp_state *); void vfp_store(struct vfp_state *); void set_coprocessorACR(u_int); -boolean_t vfp_exists; +extern int vfp_exists; static struct undefined_handler vfp10_uh, vfp11_uh; /* The VFMXR command using coprocessor commands */ Modified: projects/camlock/sys/arm/include/setjmp.h ============================================================================== --- projects/camlock/sys/arm/include/setjmp.h Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/arm/include/setjmp.h Sat Apr 6 17:20:22 2013 (r249208) @@ -87,10 +87,13 @@ /* Only valid with the _JB_MAGIC_SETJMP magic */ #define _JB_SIGMASK 25 + +#ifndef __ASSEMBLER__ #if __BSD_VISIBLE || __POSIX_VISIBLE || __XSI_VISIBLE typedef struct _sigjmp_buf { int _sjb[_JBLEN + 1]; } sigjmp_buf[1]; #endif typedef struct _jmp_buf { int _jb[_JBLEN + 1]; } jmp_buf[1]; +#endif #endif /* !_MACHINE_SETJMP_H_ */ Modified: projects/camlock/sys/arm/ti/aintc.c ============================================================================== --- projects/camlock/sys/arm/ti/aintc.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/arm/ti/aintc.c Sat Apr 6 17:20:22 2013 (r249208) @@ -157,6 +157,7 @@ arm_get_next_irq(int last_irq) if ((active_irq & 0xffffff80)) { device_printf(ti_aintc_sc->sc_dev, "Spurious interrupt detected (0x%08x)\n", active_irq); + aintc_write_4(INTC_SIR_IRQ, 0); return -1; } Modified: projects/camlock/sys/cam/ata/ata_all.h ============================================================================== --- projects/camlock/sys/cam/ata/ata_all.h Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/cam/ata/ata_all.h Sat Apr 6 17:20:22 2013 (r249208) @@ -35,8 +35,9 @@ struct ccb_ataio; struct cam_periph; union ccb; -#define SID_AEN 0x04 /* Abuse inq_flags bit to track enabled AEN. */ -#define SID_DMA 0x10 /* Abuse inq_flags bit to track enabled DMA. */ +#define SID_DMA48 0x01 /* Abuse inq_flags bit to track enabled DMA48. */ +#define SID_AEN 0x04 /* Abuse inq_flags bit to track enabled AEN. */ +#define SID_DMA 0x10 /* Abuse inq_flags bit to track enabled DMA. */ struct ata_cmd { u_int8_t flags; /* ATA command flags */ Modified: projects/camlock/sys/cam/ata/ata_da.c ============================================================================== --- projects/camlock/sys/cam/ata/ata_da.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/cam/ata/ata_da.c Sat Apr 6 17:20:22 2013 (r249208) @@ -75,18 +75,19 @@ typedef enum { } ada_state; typedef enum { - ADA_FLAG_PACK_INVALID = 0x001, - ADA_FLAG_CAN_48BIT = 0x002, - ADA_FLAG_CAN_FLUSHCACHE = 0x004, - ADA_FLAG_CAN_NCQ = 0x008, - ADA_FLAG_CAN_DMA = 0x010, - ADA_FLAG_NEED_OTAG = 0x020, - ADA_FLAG_WENT_IDLE = 0x040, - ADA_FLAG_CAN_TRIM = 0x080, - ADA_FLAG_OPEN = 0x100, - ADA_FLAG_SCTX_INIT = 0x200, - ADA_FLAG_CAN_CFA = 0x400, - ADA_FLAG_CAN_POWERMGT = 0x800 + ADA_FLAG_PACK_INVALID = 0x0001, + ADA_FLAG_CAN_48BIT = 0x0002, + ADA_FLAG_CAN_FLUSHCACHE = 0x0004, + ADA_FLAG_CAN_NCQ = 0x0008, + ADA_FLAG_CAN_DMA = 0x0010, + ADA_FLAG_NEED_OTAG = 0x0020, + ADA_FLAG_WENT_IDLE = 0x0040, + ADA_FLAG_CAN_TRIM = 0x0080, + ADA_FLAG_OPEN = 0x0100, + ADA_FLAG_SCTX_INIT = 0x0200, + ADA_FLAG_CAN_CFA = 0x0400, + ADA_FLAG_CAN_POWERMGT = 0x0800, + ADA_FLAG_CAN_DMA48 = 0x1000 } ada_flags; typedef enum { @@ -613,6 +614,9 @@ adaschedule(struct cam_periph *periph) struct ada_softc *softc = (struct ada_softc *)periph->softc; uint32_t prio; + if (softc->state != ADA_STATE_NORMAL) + return; + /* Check if cam_periph_getccb() was called. */ prio = periph->immediate_priority; @@ -899,6 +903,15 @@ adaasync(void *callback_arg, u_int32_t c softc->flags |= ADA_FLAG_CAN_DMA; else softc->flags &= ~ADA_FLAG_CAN_DMA; + if (cgd.ident_data.support.command2 & ATA_SUPPORT_ADDRESS48) { + softc->flags |= ADA_FLAG_CAN_48BIT; + if (cgd.inq_flags & SID_DMA48) + softc->flags |= ADA_FLAG_CAN_DMA48; + else + softc->flags &= ~ADA_FLAG_CAN_DMA48; + } else + softc->flags &= ~(ADA_FLAG_CAN_48BIT | + ADA_FLAG_CAN_DMA48); if ((cgd.ident_data.satacapabilities & ATA_SUPPORT_NCQ) && (cgd.inq_flags & SID_DMA) && (cgd.inq_flags & SID_CmdQue)) softc->flags |= ADA_FLAG_CAN_NCQ; @@ -1065,8 +1078,11 @@ adaregister(struct cam_periph *periph, v if ((cgd->ident_data.capabilities1 & ATA_SUPPORT_DMA) && (cgd->inq_flags & SID_DMA)) softc->flags |= ADA_FLAG_CAN_DMA; - if (cgd->ident_data.support.command2 & ATA_SUPPORT_ADDRESS48) + if (cgd->ident_data.support.command2 & ATA_SUPPORT_ADDRESS48) { softc->flags |= ADA_FLAG_CAN_48BIT; + if (cgd->inq_flags & SID_DMA48) + softc->flags |= ADA_FLAG_CAN_DMA48; + } if (cgd->ident_data.support.command2 & ATA_SUPPORT_FLUSHCACHE) softc->flags |= ADA_FLAG_CAN_FLUSHCACHE; if (cgd->ident_data.support.command1 & ATA_SUPPORT_POWERMGT) @@ -1449,7 +1465,7 @@ adastart(struct cam_periph *periph, unio } else if ((softc->flags & ADA_FLAG_CAN_48BIT) && (lba + count >= ATA_MAX_28BIT_LBA || count > 256)) { - if (softc->flags & ADA_FLAG_CAN_DMA) { + if (softc->flags & ADA_FLAG_CAN_DMA48) { if (bp->bio_cmd == BIO_READ) { ata_48bit_cmd(ataio, ATA_READ_DMA48, 0, lba, count); Modified: projects/camlock/sys/cam/ata/ata_xpt.c ============================================================================== --- projects/camlock/sys/cam/ata/ata_xpt.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/cam/ata/ata_xpt.c Sat Apr 6 17:20:22 2013 (r249208) @@ -963,19 +963,22 @@ noerror: xpt_schedule(periph, priority); goto out; case PROBE_SETMODE: - if (path->device->transport != XPORT_SATA) - goto notsata; /* Set supported bits. */ bzero(&cts, sizeof(cts)); xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE); cts.ccb_h.func_code = XPT_GET_TRAN_SETTINGS; cts.type = CTS_TYPE_CURRENT_SETTINGS; xpt_action((union ccb *)&cts); - if (cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS) + if (path->device->transport == XPORT_SATA && + cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS) caps = cts.xport_specific.sata.caps & CTS_SATA_CAPS_H; + else if (path->device->transport == XPORT_ATA && + cts.xport_specific.ata.valid & CTS_ATA_VALID_CAPS) + caps = cts.xport_specific.ata.caps & CTS_ATA_CAPS_H; else caps = 0; - if (ident_buf->satacapabilities != 0xffff) { + if (path->device->transport == XPORT_SATA && + ident_buf->satacapabilities != 0xffff) { if (ident_buf->satacapabilities & ATA_SUPPORT_IFPWRMNGTRCV) caps |= CTS_SATA_CAPS_D_PMREQ; if (ident_buf->satacapabilities & ATA_SUPPORT_HAPST) @@ -987,19 +990,42 @@ noerror: cts.ccb_h.func_code = XPT_GET_TRAN_SETTINGS; cts.type = CTS_TYPE_USER_SETTINGS; xpt_action((union ccb *)&cts); - if (cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS) + if (path->device->transport == XPORT_SATA && + cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS) caps &= cts.xport_specific.sata.caps; + else if (path->device->transport == XPORT_ATA && + cts.xport_specific.ata.valid & CTS_ATA_VALID_CAPS) + caps &= cts.xport_specific.ata.caps; else caps = 0; + /* + * Remember what transport thinks about 48-bit DMA. If + * capability information is not provided or transport is + * SATA, we take support for granted. + */ + if (!(path->device->inq_flags & SID_DMA) || + (path->device->transport == XPORT_ATA && + (cts.xport_specific.ata.valid & CTS_ATA_VALID_CAPS) && + !(caps & CTS_ATA_CAPS_H_DMA48))) + path->device->inq_flags &= ~SID_DMA48; + else + path->device->inq_flags |= SID_DMA48; /* Store result to SIM. */ bzero(&cts, sizeof(cts)); xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE); cts.ccb_h.func_code = XPT_SET_TRAN_SETTINGS; cts.type = CTS_TYPE_CURRENT_SETTINGS; - cts.xport_specific.sata.caps = caps; - cts.xport_specific.sata.valid = CTS_SATA_VALID_CAPS; + if (path->device->transport == XPORT_SATA) { + cts.xport_specific.sata.caps = caps; + cts.xport_specific.sata.valid = CTS_SATA_VALID_CAPS; + } else { + cts.xport_specific.ata.caps = caps; + cts.xport_specific.ata.valid = CTS_ATA_VALID_CAPS; + } xpt_action((union ccb *)&cts); softc->caps = caps; + if (path->device->transport != XPORT_SATA) + goto notsata; if ((ident_buf->satasupport & ATA_SUPPORT_IFPWRMNGT) && (!(softc->caps & CTS_SATA_CAPS_H_PMREQ)) != (!(ident_buf->sataenabled & ATA_SUPPORT_IFPWRMNGT))) { @@ -1151,6 +1177,11 @@ notsata: caps &= cts.xport_specific.sata.caps; else caps = 0; + /* Remember what transport thinks about AEN. */ + if (caps & CTS_SATA_CAPS_H_AN) + path->device->inq_flags |= SID_AEN; + else + path->device->inq_flags &= ~SID_AEN; /* Store result to SIM. */ bzero(&cts, sizeof(cts)); xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE); @@ -1160,11 +1191,6 @@ notsata: cts.xport_specific.sata.valid = CTS_SATA_VALID_CAPS; xpt_action((union ccb *)&cts); softc->caps = caps; - /* Remember what transport thinks about AEN. */ - if (softc->caps & CTS_SATA_CAPS_H_AN) - path->device->inq_flags |= SID_AEN; - else - path->device->inq_flags &= ~SID_AEN; xpt_async(AC_GETDEV_CHANGED, path, NULL); if (periph->path->device->flags & CAM_DEV_UNCONFIGURED) { path->device->flags &= ~CAM_DEV_UNCONFIGURED; @@ -2067,4 +2093,3 @@ ata_announce_periph(struct cam_periph *p } printf("\n"); } - Modified: projects/camlock/sys/cam/cam_ccb.h ============================================================================== --- projects/camlock/sys/cam/cam_ccb.h Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/cam/cam_ccb.h Sat Apr 6 17:20:22 2013 (r249208) @@ -893,9 +893,14 @@ struct ccb_trans_settings_pata { #define CTS_ATA_VALID_MODE 0x01 #define CTS_ATA_VALID_BYTECOUNT 0x02 #define CTS_ATA_VALID_ATAPI 0x20 +#define CTS_ATA_VALID_CAPS 0x40 int mode; /* Mode */ u_int bytecount; /* Length of PIO transaction */ u_int atapi; /* Length of ATAPI CDB */ + u_int caps; /* Device and host SATA caps. */ +#define CTS_ATA_CAPS_H 0x0000ffff +#define CTS_ATA_CAPS_H_DMA48 0x00000001 /* 48-bit DMA */ +#define CTS_ATA_CAPS_D 0xffff0000 }; struct ccb_trans_settings_sata { Modified: projects/camlock/sys/cam/ctl/ctl_backend_block.c ============================================================================== --- projects/camlock/sys/cam/ctl/ctl_backend_block.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/cam/ctl/ctl_backend_block.c Sat Apr 6 17:20:22 2013 (r249208) @@ -950,6 +950,7 @@ ctl_be_block_cw_dispatch(struct ctl_be_b switch (io->scsiio.cdb[0]) { case SYNCHRONIZE_CACHE: case SYNCHRONIZE_CACHE_16: + beio->bio_cmd = BIO_FLUSH; beio->ds_trans_type = DEVSTAT_NO_DATA; beio->ds_tag_type = DEVSTAT_TAG_ORDERED; beio->io_len = 0; Modified: projects/camlock/sys/cddl/compat/opensolaris/sys/sdt.h ============================================================================== --- projects/camlock/sys/cddl/compat/opensolaris/sys/sdt.h Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/cddl/compat/opensolaris/sys/sdt.h Sat Apr 6 17:20:22 2013 (r249208) @@ -41,6 +41,8 @@ #define DTRACE_PROBE1(name, type1, arg1) #define DTRACE_PROBE2(name, type1, arg1, type2, arg2) #define DTRACE_PROBE3(name, type1, arg1, type2, arg2, type3, arg3) -#define DTRACE_PROBE4(name, type1, arg1, type2, arg2, type3, arg3, type4, arg4) +#define DTRACE_PROBE4(name, type1, arg1, type2, arg2, type3, arg3, type4, arg4) + +#define SET_ERROR(err) (err) #endif /* _OPENSOLARIS_SYS_SDT_H_ */ Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Sat Apr 6 17:20:22 2013 (r249208) @@ -21,7 +21,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. - * Copyright (c) 2011 by Delphix. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ /* @@ -3738,14 +3738,14 @@ arc_memory_throttle(uint64_t reserve, ui */ if (curproc == pageproc) { if (page_load > available_memory / 4) - return (ERESTART); + return (SET_ERROR(ERESTART)); /* Note: reserve is inflated, so we deflate */ page_load += reserve / 8; return (0); } else if (page_load > 0 && arc_reclaim_needed()) { /* memory is low, delay before restarting */ ARCSTAT_INCR(arcstat_memory_throttle_count, 1); - return (EAGAIN); + return (SET_ERROR(EAGAIN)); } page_load = 0; @@ -3760,7 +3760,7 @@ arc_memory_throttle(uint64_t reserve, ui if (inflight_data > available_memory / 4) { ARCSTAT_INCR(arcstat_memory_throttle_count, 1); - return (ERESTART); + return (SET_ERROR(ERESTART)); } #endif return (0); @@ -3785,13 +3785,13 @@ arc_tempreserve_space(uint64_t reserve, */ if (spa_get_random(10000) == 0) { dprintf("forcing random failure\n"); - return (ERESTART); + return (SET_ERROR(ERESTART)); } #endif if (reserve > arc_c/4 && !arc_no_grow) arc_c = MIN(arc_c_max, reserve * 4); if (reserve > arc_c) - return (ENOMEM); + return (SET_ERROR(ENOMEM)); /* * Don't count loaned bufs as in flight dirty data to prevent long @@ -3824,7 +3824,7 @@ arc_tempreserve_space(uint64_t reserve, arc_anon->arcs_lsize[ARC_BUFC_METADATA]>>10, arc_anon->arcs_lsize[ARC_BUFC_DATA]>>10, reserve>>10, arc_c>>10); - return (ERESTART); + return (SET_ERROR(ERESTART)); } atomic_add_64(&arc_tempreserve, reserve); return (0); @@ -4518,7 +4518,7 @@ l2arc_read_done(zio_t *zio) if (zio->io_error != 0) { ARCSTAT_BUMP(arcstat_l2_io_error); } else { - zio->io_error = EIO; + zio->io_error = SET_ERROR(EIO); } if (!equal) ARCSTAT_BUMP(arcstat_l2_cksum_bad); Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c ============================================================================== --- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Sat Apr 6 17:20:22 2013 (r249208) @@ -21,7 +21,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. - * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ #include @@ -598,7 +598,7 @@ dbuf_read(dmu_buf_impl_t *db, zio_t *zio ASSERT(!refcount_is_zero(&db->db_holds)); if (db->db_state == DB_NOFILL) - return (EIO); + return (SET_ERROR(EIO)); DB_DNODE_ENTER(db); dn = DB_DNODE(db); @@ -655,7 +655,7 @@ dbuf_read(dmu_buf_impl_t *db, zio_t *zio cv_wait(&db->db_changed, &db->db_mtx); } if (db->db_state == DB_UNCACHED) - err = EIO; + err = SET_ERROR(EIO); } mutex_exit(&db->db_mtx); } @@ -1593,7 +1593,7 @@ dbuf_findbp(dnode_t *dn, int level, uint if (level >= nlevels || (blkid > (dn->dn_phys->dn_maxblkid >> (level * epbs)))) { /* the buffer has no parent yet */ - return (ENOENT); + return (SET_ERROR(ENOENT)); } else if (level < nlevels-1) { /* this block is referenced from an indirect block */ int err = dbuf_hold_impl(dn, level+1, @@ -1844,7 +1844,7 @@ top: err = dbuf_findbp(dn, level, blkid, fail_sparse, &parent, &bp); if (fail_sparse) { if (err == 0 && bp && BP_IS_HOLE(bp)) - err = ENOENT; + err = SET_ERROR(ENOENT); if (err) { if (parent) dbuf_rele(parent, NULL); @@ -1941,7 +1941,7 @@ dbuf_spill_set_blksz(dmu_buf_t *db_fake, dnode_t *dn; if (db->db_blkid != DMU_SPILL_BLKID) - return (ENOTSUP); + return (SET_ERROR(ENOTSUP)); if (blksz == 0) blksz = SPA_MINBLOCKSIZE; if (blksz > SPA_MAXBLOCKSIZE) Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c ============================================================================== --- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c Sat Apr 6 17:20:22 2013 (r249208) @@ -21,7 +21,7 @@ /* * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ #include @@ -174,7 +174,7 @@ ddt_object_lookup(ddt_t *ddt, enum ddt_t ddt_entry_t *dde) { if (!ddt_object_exists(ddt, type, class)) - return (ENOENT); + return (SET_ERROR(ENOENT)); return (ddt_ops[type]->ddt_op_lookup(ddt->ddt_os, ddt->ddt_object[type][class], dde)); @@ -235,7 +235,7 @@ ddt_object_info(ddt_t *ddt, enum ddt_typ dmu_object_info_t *doi) { if (!ddt_object_exists(ddt, type, class)) - return (ENOENT); + return (SET_ERROR(ENOENT)); return (dmu_object_info(ddt->ddt_os, ddt->ddt_object[type][class], doi)); @@ -1157,5 +1157,5 @@ ddt_walk(spa_t *spa, ddt_bookmark_t *ddb ddb->ddb_type = 0; } while (++ddb->ddb_class < DDT_CLASSES); - return (ENOENT); + return (SET_ERROR(ENOENT)); } Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c ============================================================================== --- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Sat Apr 6 17:20:22 2013 (r249208) @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ #include @@ -146,7 +146,7 @@ dmu_buf_hold(objset_t *os, uint64_t obje db = dbuf_hold(dn, blkid, tag); rw_exit(&dn->dn_struct_rwlock); if (db == NULL) { - err = EIO; + err = SET_ERROR(EIO); } else { err = dbuf_read(db, NULL, db_flags); if (err) { @@ -177,9 +177,9 @@ dmu_set_bonus(dmu_buf_t *db_fake, int ne dn = DB_DNODE(db); if (dn->dn_bonus != db) { - error = EINVAL; + error = SET_ERROR(EINVAL); } else if (newsize < 0 || newsize > db_fake->db_size) { - error = EINVAL; + error = SET_ERROR(EINVAL); } else { dnode_setbonuslen(dn, newsize, tx); error = 0; @@ -200,9 +200,9 @@ dmu_set_bonustype(dmu_buf_t *db_fake, dm dn = DB_DNODE(db); if (!DMU_OT_IS_VALID(type)) { - error = EINVAL; + error = SET_ERROR(EINVAL); } else if (dn->dn_bonus != db) { - error = EINVAL; + error = SET_ERROR(EINVAL); } else { dnode_setbonus_type(dn, type, tx); error = 0; @@ -329,12 +329,12 @@ dmu_spill_hold_existing(dmu_buf_t *bonus dn = DB_DNODE(db); if (spa_version(dn->dn_objset->os_spa) < SPA_VERSION_SA) { - err = EINVAL; + err = SET_ERROR(EINVAL); } else { rw_enter(&dn->dn_struct_rwlock, RW_READER); if (!dn->dn_have_spill) { - err = ENOENT; + err = SET_ERROR(ENOENT); } else { err = dmu_spill_hold_by_dnode(dn, DB_RF_HAVESTRUCT | DB_RF_CANFAIL, tag, dbp); @@ -400,7 +400,7 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn, (longlong_t)dn->dn_object, dn->dn_datablksz, (longlong_t)offset, (longlong_t)length); rw_exit(&dn->dn_struct_rwlock); - return (EIO); + return (SET_ERROR(EIO)); } nblks = 1; } @@ -417,7 +417,7 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn, rw_exit(&dn->dn_struct_rwlock); dmu_buf_rele_array(dbp, nblks, tag); zio_nowait(zio); - return (EIO); + return (SET_ERROR(EIO)); } /* initiate async i/o */ if (read) @@ -449,7 +449,7 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn, db->db_state == DB_FILL) cv_wait(&db->db_changed, &db->db_mtx); if (db->db_state == DB_UNCACHED) - err = EIO; + err = SET_ERROR(EIO); mutex_exit(&db->db_mtx); if (err) { dmu_buf_rele_array(dbp, nblks, tag); @@ -1363,7 +1363,8 @@ dmu_sync_late_arrival(zio_t *pio, objset dmu_tx_hold_space(tx, zgd->zgd_db->db_size); if (dmu_tx_assign(tx, TXG_WAIT) != 0) { dmu_tx_abort(tx); - return (EIO); /* Make zl_get_data do txg_waited_synced() */ + /* Make zl_get_data do txg_waited_synced() */ + return (SET_ERROR(EIO)); } dsa = kmem_alloc(sizeof (dmu_sync_arg_t), KM_SLEEP); @@ -1448,7 +1449,7 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_s * This txg has already synced. There's nothing to do. */ mutex_exit(&db->db_mtx); - return (EEXIST); + return (SET_ERROR(EEXIST)); } if (txg <= spa_syncing_txg(os->os_spa)) { @@ -1470,7 +1471,7 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_s * There's no need to log writes to freed blocks, so we're done. */ mutex_exit(&db->db_mtx); - return (ENOENT); + return (SET_ERROR(ENOENT)); } ASSERT(dr->dr_next == NULL || dr->dr_next->dr_txg < txg); @@ -1499,7 +1500,7 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_s * have been dirtied since, or we would have cleared the state. */ mutex_exit(&db->db_mtx); - return (EALREADY); + return (SET_ERROR(EALREADY)); } ASSERT(dr->dt.dl.dr_override_state == DR_NOT_OVERRIDDEN); Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c ============================================================================== --- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c Sat Apr 6 17:20:22 2013 (r249208) @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ #include @@ -136,7 +136,7 @@ diff_cb(spa_t *spa, zilog_t *zilog, cons int err = 0; if (issig(JUSTLOOKING) && issig(FORREAL)) - return (EINTR); + return (SET_ERROR(EINTR)); if (zb->zb_object != DMU_META_DNODE_OBJECT) return (0); @@ -159,7 +159,7 @@ diff_cb(spa_t *spa, zilog_t *zilog, cons if (arc_read(NULL, spa, bp, arc_getbuf_func, &abuf, ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL, &aflags, zb) != 0) - return (EIO); + return (SET_ERROR(EIO)); blk = abuf->b_data; for (i = 0; i < blksz >> DNODE_SHIFT; i++) { @@ -195,7 +195,7 @@ dmu_diff(const char *tosnap_name, const if (strchr(tosnap_name, '@') == NULL || strchr(fromsnap_name, '@') == NULL) - return (EINVAL); + return (SET_ERROR(EINVAL)); error = dsl_pool_hold(tosnap_name, FTAG, &dp); if (error != 0) @@ -218,7 +218,7 @@ dmu_diff(const char *tosnap_name, const dsl_dataset_rele(fromsnap, FTAG); dsl_dataset_rele(tosnap, FTAG); dsl_pool_rele(dp, FTAG); - return (EXDEV); + return (SET_ERROR(EXDEV)); } fromtxg = fromsnap->ds_phys->ds_creation_txg; Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c ============================================================================== --- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c Sat Apr 6 17:20:22 2013 (r249208) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ #include @@ -90,7 +91,7 @@ dmu_object_claim(objset_t *os, uint64_t int err; if (object == DMU_META_DNODE_OBJECT && !dmu_tx_private_ok(tx)) - return (EBADF); + return (SET_ERROR(EBADF)); err = dnode_hold_impl(os, object, DNODE_MUST_BE_FREE, FTAG, &dn); if (err) @@ -112,7 +113,7 @@ dmu_object_reclaim(objset_t *os, uint64_ int err; if (object == DMU_META_DNODE_OBJECT) - return (EBADF); + return (SET_ERROR(EBADF)); err = dnode_hold_impl(os, object, DNODE_MUST_BE_ALLOCATED, FTAG, &dn); Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c ============================================================================== --- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c Sat Apr 6 17:18:48 2013 (r249207) +++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c Sat Apr 6 17:20:22 2013 (r249208) @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ /* Portions Copyright 2010 Robert Milkowski */ @@ -285,7 +285,7 @@ dmu_objset_open_impl(spa_t *spa, dsl_dat kmem_free(os, sizeof (objset_t)); /* convert checksum errors into IO errors */ if (err == ECKSUM) - err = EIO; + err = SET_ERROR(EIO); return (err); } @@ -498,10 +498,10 @@ dmu_objset_own(const char *name, dmu_obj dsl_dataset_disown(ds, tag); } else if (type != DMU_OST_ANY && type != (*osp)->os_phys->os_type) { dsl_dataset_disown(ds, tag); - return (EINVAL); + return (SET_ERROR(EINVAL)); } else if (!readonly && dsl_dataset_is_snapshot(ds)) { dsl_dataset_disown(ds, tag); - return (EROFS); + return (SET_ERROR(EROFS)); } return (err); } @@ -714,14 +714,14 @@ dmu_objset_create_check(void *arg, dmu_t int error; if (strchr(doca->doca_name, '@') != NULL) - return (EINVAL); + return (SET_ERROR(EINVAL)); error = dsl_dir_hold(dp, doca->doca_name, FTAG, &pdd, &tail); if (error != 0) return (error); if (tail == NULL) { dsl_dir_rele(pdd, FTAG); - return (EEXIST); + return (SET_ERROR(EEXIST)); } dsl_dir_rele(pdd, FTAG); @@ -795,19 +795,19 @@ dmu_objset_clone_check(void *arg, dmu_tx dsl_pool_t *dp = dmu_tx_pool(tx); if (strchr(doca->doca_clone, '@') != NULL) - return (EINVAL); + return (SET_ERROR(EINVAL)); error = dsl_dir_hold(dp, doca->doca_clone, FTAG, &pdd, &tail); if (error != 0) return (error); if (tail == NULL) { dsl_dir_rele(pdd, FTAG); - return (EEXIST); + return (SET_ERROR(EEXIST)); } /* You can't clone across pools. */ if (pdd->dd_pool != dp) { dsl_dir_rele(pdd, FTAG); - return (EXDEV); + return (SET_ERROR(EXDEV)); } dsl_dir_rele(pdd, FTAG); @@ -818,13 +818,13 @@ dmu_objset_clone_check(void *arg, dmu_tx /* You can't clone across pools. */ if (origin->ds_dir->dd_pool != dp) { dsl_dataset_rele(origin, FTAG); - return (EXDEV); + return (SET_ERROR(EXDEV)); } /* You can only clone snapshots, not the head datasets. */ if (!dsl_dataset_is_snapshot(origin)) { dsl_dataset_rele(origin, FTAG); - return (EINVAL); + return (SET_ERROR(EINVAL)); } dsl_dataset_rele(origin, FTAG); @@ -1302,9 +1302,9 @@ dmu_objset_userspace_upgrade(objset_t *o if (dmu_objset_userspace_present(os)) return (0); if (!dmu_objset_userused_enabled(os)) - return (ENOTSUP); + return (SET_ERROR(ENOTSUP)); if (dmu_objset_is_snapshot(os)) - return (EINVAL); + return (SET_ERROR(EINVAL)); /* * We simply need to mark every object dirty, so that it will be @@ -1320,7 +1320,7 @@ dmu_objset_userspace_upgrade(objset_t *o int objerr; if (issig(JUSTLOOKING) && issig(FORREAL)) - return (EINTR); + return (SET_ERROR(EINTR)); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sat Apr 6 19:11:14 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 521EAC5D; Sat, 6 Apr 2013 19:11:14 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 335DACB2; Sat, 6 Apr 2013 19:11:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r36JBDc9002080; Sat, 6 Apr 2013 19:11:13 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r36JBCwU002067; Sat, 6 Apr 2013 19:11:12 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201304061911.r36JBCwU002067@svn.freebsd.org> From: Alexander Motin Date: Sat, 6 Apr 2013 19:11:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r249212 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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, 06 Apr 2013 19:11:14 -0000 Author: mav Date: Sat Apr 6 19:11:12 2013 New Revision: 249212 URL: http://svnweb.freebsd.org/changeset/base/249212 Log: Introduce queue mutex to serialize access to CCB, device and periph queues. That should allow periphs to avoid taking heavily congested SIM lock up to the moment of actually submitting CCB to the SIM. Also as side effect it should allow different SIMs sharing same queue to have separate locks. I am not sure such hardware really exists now, but seems it was planned in existing CAM design. Modified: projects/camlock/sys/cam/cam_periph.c projects/camlock/sys/cam/cam_periph.h projects/camlock/sys/cam/cam_queue.c projects/camlock/sys/cam/cam_queue.h projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/cam_xpt_internal.h Modified: projects/camlock/sys/cam/cam_periph.c ============================================================================== --- projects/camlock/sys/cam/cam_periph.c Sat Apr 6 18:04:35 2013 (r249211) +++ projects/camlock/sys/cam/cam_periph.c Sat Apr 6 19:11:12 2013 (r249212) @@ -205,6 +205,7 @@ cam_periph_alloc(periph_ctor_t *periph_c periph->immediate_priority = CAM_PRIORITY_NONE; periph->refcount = 0; periph->sim = sim; + mtx_init(&periph->periph_mtx, "CAM periph lock", NULL, MTX_DEF); SLIST_INIT(&periph->ccb_list); status = xpt_create_path(&path, periph, path_id, target_id, lun_id); if (status != CAM_REQ_CMP) @@ -680,6 +681,7 @@ camperiphfree(struct cam_periph *periph) periph->path, arg); } xpt_free_path(periph->path); + mtx_destroy(&periph->periph_mtx); free(periph, M_CAMPERIPH); xpt_lock_buses(); } Modified: projects/camlock/sys/cam/cam_periph.h ============================================================================== --- projects/camlock/sys/cam/cam_periph.h Sat Apr 6 18:04:35 2013 (r249211) +++ projects/camlock/sys/cam/cam_periph.h Sat Apr 6 19:11:12 2013 (r249212) @@ -128,6 +128,7 @@ struct cam_periph { TAILQ_ENTRY(cam_periph) unit_links; ac_callback_t *deferred_callback; ac_code deferred_ac; + struct mtx periph_mtx; }; #define CAM_PERIPH_MAXMAPS 2 Modified: projects/camlock/sys/cam/cam_queue.c ============================================================================== --- projects/camlock/sys/cam/cam_queue.c Sat Apr 6 18:04:35 2013 (r249211) +++ projects/camlock/sys/cam/cam_queue.c Sat Apr 6 19:11:12 2013 (r249212) @@ -220,27 +220,30 @@ cam_devq_alloc(int devices, int openings } if (cam_devq_init(devq, devices, openings) != 0) { free(devq, M_CAMDEVQ); - return (NULL); + return (NULL); } - return (devq); } int cam_devq_init(struct cam_devq *devq, int devices, int openings) { + bzero(devq, sizeof(*devq)); + mtx_init(&devq->send_mtx, "CAM queue lock", NULL, MTX_DEF); if (camq_init(&devq->send_queue, devices) != 0) return (1); devq->send_openings = openings; - devq->send_active = 0; - return (0); + devq->send_active = 0; + return (0); } void cam_devq_free(struct cam_devq *devq) { + camq_fini(&devq->send_queue); + mtx_destroy(&devq->send_mtx); free(devq, M_CAMDEVQ); } Modified: projects/camlock/sys/cam/cam_queue.h ============================================================================== --- projects/camlock/sys/cam/cam_queue.h Sat Apr 6 18:04:35 2013 (r249211) +++ projects/camlock/sys/cam/cam_queue.h Sat Apr 6 19:11:12 2013 (r249212) @@ -33,6 +33,8 @@ #ifdef _KERNEL +#include +#include #include #include @@ -67,9 +69,10 @@ struct cam_ccbq { struct cam_ed; struct cam_devq { - struct camq send_queue; - int send_openings; - int send_active; + struct mtx send_mtx; + struct camq send_queue; + int send_openings; + int send_active; }; Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Sat Apr 6 18:04:35 2013 (r249211) +++ projects/camlock/sys/cam/cam_xpt.c Sat Apr 6 19:11:12 2013 (r249212) @@ -228,7 +228,7 @@ static void xpt_run_devq(struct cam_dev static timeout_t xpt_release_devq_timeout; static void xpt_release_simq_timeout(void *arg) __unused; static void xpt_release_bus(struct cam_eb *bus); -static void xpt_release_devq_device(struct cam_ed *dev, u_int count, +static int xpt_release_devq_device(struct cam_ed *dev, u_int count, int run_queue); static struct cam_et* xpt_alloc_target(struct cam_eb *bus, target_id_t target_id); @@ -240,6 +240,8 @@ static struct cam_et* static struct cam_ed* xpt_find_device(struct cam_et *target, lun_id_t lun_id); static void xpt_config(void *arg); +static int xpt_schedule_dev(struct camq *queue, cam_pinfo *dev_pinfo, + u_int32_t new_priority); static xpt_devicefunc_t xptpassannouncefunc; static void xptaction(struct cam_sim *sim, union ccb *work_ccb); static void xptpoll(struct cam_sim *sim); @@ -303,6 +305,7 @@ xpt_schedule_devq(struct cam_devq *devq, { int retval; + mtx_assert(&devq->send_mtx, MA_OWNED); if ((dev->ccbq.queue.entries > 0) && (dev->ccbq.dev_openings > 0) && (dev->ccbq.queue.qfrozen_cnt == 0)) { @@ -2456,10 +2459,19 @@ xpt_action_default(union ccb *start_ccb) case XPT_RESET_DEV: case XPT_ENG_EXEC: case XPT_SMP_IO: + { + struct cam_devq *devq; + int run; + + devq = path->bus->sim->devq; + mtx_lock(&devq->send_mtx); cam_ccbq_insert_ccb(&path->device->ccbq, start_ccb); - if (xpt_schedule_devq(path->bus->sim->devq, path->device)) - xpt_run_devq(path->bus->sim->devq); + run = xpt_schedule_devq(devq, path->device); + mtx_unlock(&devq->send_mtx); + if (run) + xpt_run_devq(devq); break; + } case XPT_CALC_GEOMETRY: { struct cam_sim *sim; @@ -3029,12 +3041,13 @@ void xpt_schedule(struct cam_periph *perph, u_int32_t new_priority) { struct cam_ed *device; + struct cam_devq *devq; int runq = 0; - mtx_assert(perph->sim->mtx, MA_OWNED); - CAM_DEBUG(perph->path, CAM_DEBUG_TRACE, ("xpt_schedule\n")); device = perph->path->device; + devq = device->sim->devq; + mtx_lock(&devq->send_mtx); if (periph_is_queued(perph)) { /* Simply reorder based on new priority */ CAM_DEBUG(perph->path, CAM_DEBUG_SUBTRACE, @@ -3059,6 +3072,7 @@ xpt_schedule(struct cam_periph *perph, u (" calling xpt_run_dev_allocq\n")); xpt_run_dev_allocq(device); } + mtx_unlock(&devq->send_mtx); } @@ -3070,7 +3084,7 @@ xpt_schedule(struct cam_periph *perph, u * started the queue, return 0 so the caller doesn't attempt * to run the queue. */ -int +static int xpt_schedule_dev(struct camq *queue, cam_pinfo *pinfo, u_int32_t new_priority) { @@ -3112,8 +3126,11 @@ xpt_schedule_dev(struct camq *queue, cam static void xpt_run_dev_allocq(struct cam_ed *device) { + struct cam_devq *devq; struct camq *drvq; + devq = device->sim->devq; + mtx_assert(&devq->send_mtx, MA_OWNED); if (device->ccbq.devq_allocating) return; device->ccbq.devq_allocating = 1; @@ -3121,8 +3138,7 @@ xpt_run_dev_allocq(struct cam_ed *device drvq = &device->drvq; while ((drvq->entries > 0) && (device->ccbq.devq_openings > 0 || - CAMQ_GET_PRIO(drvq) <= CAM_PRIORITY_OOB) && - (device->ccbq.queue.qfrozen_cnt == 0)) { + CAMQ_GET_PRIO(drvq) <= CAM_PRIORITY_OOB)) { union ccb *work_ccb; struct cam_periph *drv; @@ -3134,7 +3150,9 @@ xpt_run_dev_allocq(struct cam_ed *device drv->pinfo.priority); CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("calling periph start\n")); + mtx_unlock(&devq->send_mtx); drv->periph_start(drv, work_ccb); + mtx_lock(&devq->send_mtx); } else { /* * Malloc failure in alloc_ccb @@ -3155,9 +3173,11 @@ static void xpt_run_devq(struct cam_devq *devq) { char cdb_str[(SCSI_MAX_CDBLEN * 3) + 1]; + int lock; CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("xpt_run_devq\n")); + mtx_lock(&devq->send_mtx); devq->send_queue.qfrozen_cnt++; while ((devq->send_queue.entries > 0) && (devq->send_openings > 0) @@ -3207,11 +3227,10 @@ xpt_run_devq(struct cam_devq *devq) } cam_ccbq_remove_ccb(&device->ccbq, work_ccb); cam_ccbq_send_ccb(&device->ccbq, work_ccb); - devq->send_openings--; devq->send_active++; - xpt_schedule_devq(devq, device); + mtx_unlock(&devq->send_mtx); if ((work_ccb->ccb_h.flags & CAM_DEV_QFREEZE) != 0) { /* @@ -3261,9 +3280,16 @@ xpt_run_devq(struct cam_devq *devq) * into this function. */ sim = work_ccb->ccb_h.path->bus->sim; + lock = (mtx_owned(sim->mtx) == 0); + if (lock) + CAM_SIM_LOCK(sim); (*(sim->sim_action))(sim, work_ccb); + if (lock) + CAM_SIM_UNLOCK(sim); + mtx_lock(&devq->send_mtx); } devq->send_queue.qfrozen_cnt--; + mtx_unlock(&devq->send_mtx); } /* @@ -3700,27 +3726,23 @@ xpt_path_legacy_ata_id(struct cam_path * void xpt_release_ccb(union ccb *free_ccb) { - struct cam_path *path; struct cam_ed *device; - struct cam_eb *bus; - struct cam_sim *sim; + struct cam_devq *devq; CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("xpt_release_ccb\n")); - path = free_ccb->ccb_h.path; - device = path->device; - bus = path->bus; - sim = bus->sim; - - mtx_assert(sim->mtx, MA_OWNED); + device = free_ccb->ccb_h.path->device; + devq = device->sim->devq; + mtx_lock(&devq->send_mtx); cam_ccbq_release_opening(&device->ccbq); if (device->flags & CAM_DEV_RESIZE_QUEUE_NEEDED) { device->flags &= ~CAM_DEV_RESIZE_QUEUE_NEEDED; cam_ccbq_resize(&device->ccbq, device->ccbq.dev_openings + device->ccbq.dev_active); } - xpt_free_ccb(free_ccb); xpt_run_dev_allocq(device); + mtx_unlock(&devq->send_mtx); + xpt_free_ccb(free_ccb); } /* Functions accessed by SIM drivers */ @@ -4069,48 +4091,69 @@ xpt_dev_async_default(u_int32_t async_co u_int32_t xpt_freeze_devq(struct cam_path *path, u_int count) { - struct cam_ed *dev = path->device; + struct cam_ed *dev = path->device; + struct cam_devq *devq; + uint32_t freeze; - mtx_assert(path->bus->sim->mtx, MA_OWNED); - dev->ccbq.queue.qfrozen_cnt += count; + devq = dev->sim->devq; + mtx_lock(&devq->send_mtx); + freeze = (dev->ccbq.queue.qfrozen_cnt += count); /* Remove frozen device from sendq. */ - if (device_is_queued(dev)) { - camq_remove(&dev->sim->devq->send_queue, - dev->devq_entry.pinfo.index); - } - return (dev->ccbq.queue.qfrozen_cnt); + if (device_is_queued(dev)) + camq_remove(&devq->send_queue, dev->devq_entry.pinfo.index); + mtx_unlock(&devq->send_mtx); + return (freeze); } u_int32_t xpt_freeze_simq(struct cam_sim *sim, u_int count) { + struct cam_devq *devq; + uint32_t freeze; - mtx_assert(sim->mtx, MA_OWNED); - sim->devq->send_queue.qfrozen_cnt += count; - return (sim->devq->send_queue.qfrozen_cnt); + devq = sim->devq; + mtx_lock(&devq->send_mtx); + freeze = (devq->send_queue.qfrozen_cnt += count); + mtx_unlock(&devq->send_mtx); + return (freeze); } static void xpt_release_devq_timeout(void *arg) { - struct cam_ed *device; + struct cam_ed *dev; + struct cam_devq *devq; + int run; - device = (struct cam_ed *)arg; - xpt_release_devq_device(device, /*count*/1, /*run_queue*/TRUE); + dev = (struct cam_ed *)arg; + devq = dev->sim->devq; + mtx_lock(&devq->send_mtx); + run = xpt_release_devq_device(dev, /*count*/1, /*run_queue*/TRUE); + mtx_unlock(&devq->send_mtx); + if (run) + xpt_run_devq(dev->sim->devq); } void xpt_release_devq(struct cam_path *path, u_int count, int run_queue) { + struct cam_ed *dev; + struct cam_devq *devq; - mtx_assert(path->bus->sim->mtx, MA_OWNED); - xpt_release_devq_device(path->device, count, run_queue); + dev = path->device; + devq = dev->sim->devq; + mtx_lock(&devq->send_mtx); + run_queue = xpt_release_devq_device(dev, count, run_queue); + mtx_unlock(&devq->send_mtx); + if (run_queue) + xpt_run_devq(dev->sim->devq); } -void +static int xpt_release_devq_device(struct cam_ed *dev, u_int count, int run_queue) { + mtx_assert(&dev->sim->devq->send_mtx, MA_OWNED); if (count > dev->ccbq.queue.qfrozen_cnt) { #ifdef INVARIANTS printf("xpt_release_devq(): requested %u > present %u\n", @@ -4133,34 +4176,35 @@ xpt_release_devq_device(struct cam_ed *d callout_stop(&dev->callout); dev->flags &= ~CAM_DEV_REL_TIMEOUT_PENDING; } - xpt_run_dev_allocq(dev); - if (run_queue == 0) - return; /* * Now that we are unfrozen schedule the * device so any pending transactions are * run. */ - if (xpt_schedule_devq(dev->sim->devq, dev)) - xpt_run_devq(dev->sim->devq); - } + xpt_schedule_devq(dev->sim->devq, dev); + } else + run_queue = 0; + return (run_queue); } void xpt_release_simq(struct cam_sim *sim, int run_queue) { - struct camq *sendq; + struct cam_devq *devq; + uint32_t freeze; - mtx_assert(sim->mtx, MA_OWNED); - sendq = &(sim->devq->send_queue); - if (sendq->qfrozen_cnt <= 0) { + devq = sim->devq; + mtx_lock(&devq->send_mtx); + if (devq->send_queue.qfrozen_cnt <= 0) { #ifdef INVARIANTS printf("xpt_release_simq: requested 1 > present %u\n", - sendq->qfrozen_cnt); + devq->send_queue.qfrozen_cnt); #endif } else - sendq->qfrozen_cnt--; - if (sendq->qfrozen_cnt == 0) { + devq->send_queue.qfrozen_cnt--; + freeze = devq->send_queue.qfrozen_cnt; + mtx_unlock(&devq->send_mtx); + if (freeze == 0) { /* * If there is a timeout scheduled to release this * sim queue, remove it. The queue frozen count is @@ -4402,7 +4446,9 @@ xpt_alloc_device(struct cam_eb *bus, str mtx_assert(target->bus->sim->mtx, MA_OWNED); /* Make space for us in the device queue on our bus */ devq = bus->sim->devq; + mtx_lock(&devq->send_mtx); status = cam_devq_resize(devq, devq->send_queue.array_size + 1); + mtx_unlock(&devq->send_mtx); if (status != CAM_REQ_CMP) return (NULL); @@ -4477,7 +4523,9 @@ xpt_release_device(struct cam_ed *device device->target->generation++; /* Release our slot in the devq */ devq = device->target->bus->sim->devq; + mtx_lock(&devq->send_mtx); cam_devq_resize(devq, devq->send_queue.array_size - 1); + mtx_unlock(&devq->send_mtx); camq_fini(&device->drvq); cam_ccbq_fini(&device->ccbq); /* @@ -4870,20 +4918,16 @@ static void camisr_runqueue(struct cam_sim *sim) { struct ccb_hdr *ccb_h; - int runq; mtx_lock(&sim->sim_doneq_mtx); while ((ccb_h = TAILQ_FIRST(&sim->sim_doneq)) != NULL) { TAILQ_REMOVE(&sim->sim_doneq, ccb_h, sim_links.tqe); mtx_unlock(&sim->sim_doneq_mtx); - CAM_SIM_LOCK(sim); ccb_h->pinfo.index = CAM_UNQUEUED_INDEX; CAM_DEBUG(ccb_h->path, CAM_DEBUG_TRACE, ("camisr\n")); - runq = FALSE; - if (ccb_h->flags & CAM_HIGH_POWER) { struct highpowerlist *hphead; union ccb *send_ccb; @@ -4915,55 +4959,58 @@ camisr_runqueue(struct cam_sim *sim) if ((ccb_h->func_code & XPT_FC_USER_CCB) == 0) { struct cam_ed *dev; - dev = ccb_h->path->device; - - cam_ccbq_ccb_done(&dev->ccbq, (union ccb *)ccb_h); + mtx_lock(&sim->devq->send_mtx); sim->devq->send_active--; sim->devq->send_openings++; - runq = TRUE; + + dev = ccb_h->path->device; + cam_ccbq_ccb_done(&dev->ccbq, (union ccb *)ccb_h); if (((dev->flags & CAM_DEV_REL_ON_QUEUE_EMPTY) != 0 && (dev->ccbq.dev_active == 0))) { dev->flags &= ~CAM_DEV_REL_ON_QUEUE_EMPTY; - xpt_release_devq(ccb_h->path, /*count*/1, + xpt_release_devq_device(dev, /*count*/1, /*run_queue*/FALSE); } if (((dev->flags & CAM_DEV_REL_ON_COMPLETE) != 0 && (ccb_h->status&CAM_STATUS_MASK) != CAM_REQUEUE_REQ)) { dev->flags &= ~CAM_DEV_REL_ON_COMPLETE; - xpt_release_devq(ccb_h->path, /*count*/1, + xpt_release_devq_device(dev, /*count*/1, /*run_queue*/FALSE); } + if (!device_is_queued(dev)) + (void)xpt_schedule_devq(sim->devq, dev); + mtx_unlock(&sim->devq->send_mtx); + if ((dev->flags & CAM_DEV_TAG_AFTER_COUNT) != 0 - && (--dev->tag_delay_count == 0)) + && (--dev->tag_delay_count == 0)) { + CAM_SIM_LOCK(sim); xpt_start_tags(ccb_h->path); - if (!device_is_queued(dev)) { - (void)xpt_schedule_devq(sim->devq, dev); + CAM_SIM_UNLOCK(sim); } } if (ccb_h->status & CAM_RELEASE_SIMQ) { - xpt_release_simq(sim, /*run_queue*/TRUE); + xpt_release_simq(sim, /*run_queue*/FALSE); ccb_h->status &= ~CAM_RELEASE_SIMQ; - runq = FALSE; } if ((ccb_h->flags & CAM_DEV_QFRZDIS) && (ccb_h->status & CAM_DEV_QFRZN)) { xpt_release_devq(ccb_h->path, /*count*/1, - /*run_queue*/TRUE); + /*run_queue*/FALSE); ccb_h->status &= ~CAM_DEV_QFRZN; - } else if (runq) { - xpt_run_devq(sim->devq); } /* Call the peripheral driver's callback */ + CAM_SIM_LOCK(sim); (*ccb_h->cbfcnp)(ccb_h->path->periph, (union ccb *)ccb_h); CAM_SIM_UNLOCK(sim); mtx_lock(&sim->sim_doneq_mtx); } sim->sim_doneq_flags &= ~CAM_SIM_DQ_ONQ; mtx_unlock(&sim->sim_doneq_mtx); + xpt_run_devq(sim->devq); } Modified: projects/camlock/sys/cam/cam_xpt_internal.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt_internal.h Sat Apr 6 18:04:35 2013 (r249211) +++ projects/camlock/sys/cam/cam_xpt_internal.h Sat Apr 6 19:11:12 2013 (r249212) @@ -75,7 +75,6 @@ struct cam_ed { struct cam_et *target; struct cam_sim *sim; lun_id_t lun_id; - struct mtx mtx; struct camq drvq; /* * Queue of type drivers wanting to do * work on this device. @@ -180,8 +179,6 @@ struct cam_ed * xpt_alloc_device(struct lun_id_t lun_id); void xpt_acquire_device(struct cam_ed *device); void xpt_release_device(struct cam_ed *device); -int xpt_schedule_dev(struct camq *queue, cam_pinfo *dev_pinfo, - u_int32_t new_priority); u_int32_t xpt_dev_ccbq_resize(struct cam_path *path, int newopenings); void xpt_start_tags(struct cam_path *path); void xpt_stop_tags(struct cam_path *path);