From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 11:44:28 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C4826BF9; Sun, 12 Jan 2014 11:44:28 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A363B1A5D; Sun, 12 Jan 2014 11:44:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CBiSt0087283; Sun, 12 Jan 2014 11:44:28 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CBiS8B087282; Sun, 12 Jan 2014 11:44:28 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401121144.s0CBiS8B087282@svn.freebsd.org> From: Hans Petter Selasky Date: Sun, 12 Jan 2014 11:44:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260559 - head/sys/dev/usb/serial X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 11:44:28 -0000 Author: hselasky Date: Sun Jan 12 11:44:28 2014 New Revision: 260559 URL: http://svnweb.freebsd.org/changeset/base/260559 Log: Don't do synchronous USB requests inside USB transfer callbacks. It is technically OK, but not recommended. MFC after: 1 weeks Modified: head/sys/dev/usb/serial/umcs.c Modified: head/sys/dev/usb/serial/umcs.c ============================================================================== --- head/sys/dev/usb/serial/umcs.c Sat Jan 11 23:10:59 2014 (r260558) +++ head/sys/dev/usb/serial/umcs.c Sun Jan 12 11:44:28 2014 (r260559) @@ -121,8 +121,6 @@ struct umcs7840_softc_oneport { uint8_t sc_lcr; /* local line control register */ uint8_t sc_mcr; /* local modem control register */ - uint8_t sc_lsr; /* local line status register */ - uint8_t sc_msr; /* local modem status register */ }; struct umcs7840_softc { @@ -535,12 +533,7 @@ umcs7840_cfg_open(struct ucom_softc *uco if (umcs7840_set_reg_sync(sc, umcs7840_port_registers[pn].reg_control, data)) return; - /* Read LSR & MSR */ - if (umcs7840_get_UART_reg_sync(sc, pn, MCS7840_UART_REG_LSR, &sc->sc_ports[pn].sc_lsr)) - return; - if (umcs7840_get_UART_reg_sync(sc, pn, MCS7840_UART_REG_MSR, &sc->sc_ports[pn].sc_msr)) - return; - DPRINTF("Port %d has been opened, LSR=%02x MSR=%02x\n", pn, sc->sc_ports[pn].sc_lsr, sc->sc_ports[pn].sc_msr); + DPRINTF("Port %d has been opened\n", pn); } static void @@ -748,9 +741,17 @@ static void umcs7840_cfg_get_status(struct ucom_softc *ucom, uint8_t *lsr, uint8_t *msr) { struct umcs7840_softc *sc = ucom->sc_parent; + uint8_t pn = ucom->sc_portno; + uint8_t hw_lsr = 0; /* local line status register */ + uint8_t hw_msr = 0; /* local modem status register */ + + /* Read LSR & MSR */ + umcs7840_get_UART_reg_sync(sc, pn, MCS7840_UART_REG_LSR, &hw_lsr); + umcs7840_get_UART_reg_sync(sc, pn, MCS7840_UART_REG_MSR, &hw_msr); + + *lsr = hw_lsr; + *msr = hw_msr; - *lsr = sc->sc_ports[ucom->sc_portno].sc_lsr; - *msr = sc->sc_ports[ucom->sc_portno].sc_msr; DPRINTF("Port %d status: LSR=%02x MSR=%02x\n", ucom->sc_portno, *lsr, *msr); } @@ -781,21 +782,11 @@ umcs7840_intr_callback(struct usb_xfer * case MCS7840_UART_ISR_RXERR: case MCS7840_UART_ISR_RXHASDATA: case MCS7840_UART_ISR_RXTIMEOUT: - /* Read new LSR */ - if (umcs7840_get_UART_reg_sync(sc, pn, MCS7840_UART_REG_LSR, &sc->sc_ports[pn].sc_lsr)) - break; /* Inner switch */ + case MCS7840_UART_ISR_MSCHANGE: ucom_status_change(&sc->sc_ucom[subunit]); - /* Inner switch */ break; - case MCS7840_UART_ISR_TXEMPTY: + default: /* Do nothing */ - break; /* Inner switch */ - case MCS7840_UART_ISR_MSCHANGE: - /* Read new MSR */ - if (umcs7840_get_UART_reg_sync(sc, pn, MCS7840_UART_REG_MSR, &sc->sc_ports[pn].sc_msr)) - break; /* Inner switch */ - DPRINTF("Port %d: new MSR %02x\n", pn, sc->sc_ports[pn].sc_msr); - ucom_status_change(&sc->sc_ucom[subunit]); break; } } From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 13:16:26 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 86D2E50B; Sun, 12 Jan 2014 13:16:26 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 72F8E10F3; Sun, 12 Jan 2014 13:16:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CDGQwD022272; Sun, 12 Jan 2014 13:16:26 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CDGQSf022271; Sun, 12 Jan 2014 13:16:26 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401121316.s0CDGQSf022271@svn.freebsd.org> From: Hans Petter Selasky Date: Sun, 12 Jan 2014 13:16:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260563 - head/sys/dev/usb/controller X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 13:16:26 -0000 Author: hselasky Date: Sun Jan 12 13:16:25 2014 New Revision: 260563 URL: http://svnweb.freebsd.org/changeset/base/260563 Log: Make sure reserved fields of the EHCI DMA descriptors are not dirty after previous transfers. MFC after: 1 week Modified: head/sys/dev/usb/controller/ehci.c Modified: head/sys/dev/usb/controller/ehci.c ============================================================================== --- head/sys/dev/usb/controller/ehci.c Sun Jan 12 12:48:50 2014 (r260562) +++ head/sys/dev/usb/controller/ehci.c Sun Jan 12 13:16:25 2014 (r260563) @@ -1654,12 +1654,17 @@ restart: } td->len = 0; + /* properly reset reserved fields */ td->qtd_buffer[0] = 0; - td->qtd_buffer_hi[0] = 0; - td->qtd_buffer[1] = 0; + td->qtd_buffer[2] = 0; + td->qtd_buffer[3] = 0; + td->qtd_buffer[4] = 0; + td->qtd_buffer_hi[0] = 0; td->qtd_buffer_hi[1] = 0; - + td->qtd_buffer_hi[2] = 0; + td->qtd_buffer_hi[3] = 0; + td->qtd_buffer_hi[4] = 0; } else { uint8_t x; @@ -1714,6 +1719,12 @@ restart: htohc32(temp->sc, buf_res.physaddr & (~0xFFF)); td->qtd_buffer_hi[x] = 0; + + /* properly reset reserved fields */ + while (++x < EHCI_QTD_NBUFFERS) { + td->qtd_buffer[x] = 0; + td->qtd_buffer_hi[x] = 0; + } } if (td_next) { @@ -2001,6 +2012,18 @@ ehci_setup_standard_chain(struct usb_xfe qh->qh_qtd.qtd_altnext = htohc32(temp.sc, EHCI_LINK_TERMINATE); + /* properly reset reserved fields */ + qh->qh_qtd.qtd_buffer[0] = 0; + qh->qh_qtd.qtd_buffer[1] = 0; + qh->qh_qtd.qtd_buffer[2] = 0; + qh->qh_qtd.qtd_buffer[3] = 0; + qh->qh_qtd.qtd_buffer[4] = 0; + qh->qh_qtd.qtd_buffer_hi[0] = 0; + qh->qh_qtd.qtd_buffer_hi[1] = 0; + qh->qh_qtd.qtd_buffer_hi[2] = 0; + qh->qh_qtd.qtd_buffer_hi[3] = 0; + qh->qh_qtd.qtd_buffer_hi[4] = 0; + usb_pc_cpu_flush(qh->page_cache); if (xfer->xroot->udev->flags.self_suspended == 0) { From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 14:37:40 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3C8EE4AF; Sun, 12 Jan 2014 14:37:40 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2793C161C; Sun, 12 Jan 2014 14:37:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CEbeHK052330; Sun, 12 Jan 2014 14:37:40 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CEbePe052329; Sun, 12 Jan 2014 14:37:40 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201401121437.s0CEbePe052329@svn.freebsd.org> From: Dimitry Andric Date: Sun, 12 Jan 2014 14:37:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260564 - stable/10/sys/conf X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 14:37:40 -0000 Author: dim Date: Sun Jan 12 14:37:39 2014 New Revision: 260564 URL: http://svnweb.freebsd.org/changeset/base/260564 Log: MFC r260494: Fix a braino with r259730: we cannot currently use CFLAGS.gcc or CFLAGS.clang in sys/conf/Makefile.arm, since the main kernel build does not use . So revert that particular change for now. Pointy hat to: me Noticed by: zbb Modified: stable/10/sys/conf/Makefile.arm Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/conf/Makefile.arm ============================================================================== --- stable/10/sys/conf/Makefile.arm Sun Jan 12 13:16:25 2014 (r260563) +++ stable/10/sys/conf/Makefile.arm Sun Jan 12 14:37:39 2014 (r260564) @@ -39,16 +39,20 @@ SYSTEM_DEP:= ${SYSTEM_DEP:$S/conf/ldscri STRIP_FLAGS = -S .endif -CFLAGS.gcc += -mno-thumb-interwork +.if ${COMPILER_TYPE} != "clang" +CFLAGS += -mno-thumb-interwork +.endif .if empty(DDB_ENABLED) -.if defined(WITHOUT_ARM_EABI) -CFLAGS.gcc += -mno-apcs-frame +.if defined(WITHOUT_ARM_EABI) && ${COMPILER_TYPE} != "clang" +CFLAGS += -mno-apcs-frame .endif .elif !defined(WITHOUT_ARM_EABI) CFLAGS += -funwind-tables +.if ${COMPILER_TYPE} == "clang" # clang requires us to tell it to emit assembly with unwind information -CFLAGS.clang += -mllvm -arm-enable-ehabi +CFLAGS += -mllvm -arm-enable-ehabi +.endif .endif SYSTEM_LD_ = ${LD} -Bdynamic -T ldscript.$M.noheader ${LDFLAGS} \ From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 15:35:04 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7DADD527; Sun, 12 Jan 2014 15:35:04 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6A3D91A10; Sun, 12 Jan 2014 15:35:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CFZ4RH077054; Sun, 12 Jan 2014 15:35:04 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CFZ4Hd077053; Sun, 12 Jan 2014 15:35:04 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201401121535.s0CFZ4Hd077053@svn.freebsd.org> From: Andrew Turner Date: Sun, 12 Jan 2014 15:35:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260565 - head/contrib/gcc/config/arm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 15:35:04 -0000 Author: andrew Date: Sun Jan 12 15:35:03 2014 New Revision: 260565 URL: http://svnweb.freebsd.org/changeset/base/260565 Log: Fix gcc with EABI on big-endian ARM by setting the endian correctly. Without this gcc would generate byte loads for a little-endian core. MFC after: 1 week Modified: head/contrib/gcc/config/arm/freebsd.h Modified: head/contrib/gcc/config/arm/freebsd.h ============================================================================== --- head/contrib/gcc/config/arm/freebsd.h Sun Jan 12 14:37:39 2014 (r260564) +++ head/contrib/gcc/config/arm/freebsd.h Sun Jan 12 15:35:03 2014 (r260565) @@ -72,6 +72,9 @@ #undef TARGET_DEFAULT_FLOAT_ABI #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT +#undef TARGET_DEFAULT +#define TARGET_DEFAULT (MASK_INTERWORK | TARGET_ENDIAN_DEFAULT) + #undef ARM_DEFAULT_ABI #define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 15:45:45 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A97798ED; Sun, 12 Jan 2014 15:45:45 +0000 (UTC) Received: from mail-qc0-x232.google.com (mail-qc0-x232.google.com [IPv6:2607:f8b0:400d:c01::232]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3316F1AC8; Sun, 12 Jan 2014 15:45:45 +0000 (UTC) Received: by mail-qc0-f178.google.com with SMTP id m20so850951qcx.9 for ; Sun, 12 Jan 2014 07:45:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=O67OZtW0Hng/4FzNEjgdMdzf9H68xrRDKTmPcl6MFOE=; b=ShXOCwumOqQabCmQgyuyDe1zoTcia4Ek+GEDWRlI7rRbBAMAmSerbvhOkLFSUS3VLJ AYrvs+dnTzrLiIaF0gdgaajMArYcAXb9TL4oU03WVsdw39lEQDdqVJCJlAW5IhGPd+zu T95zd0EW0qfk8wRvdSdV3liv1FJ75gQmvL2AIBuaIc+nq124/U/Vvkdz3nEuzRibzY50 1Dvxr9rkJQYd6bK5dZpEOWytBbO8ssZFl6zPyZSplJ2s9iRq+HAL1JeCnAPj9406Ryb3 tqtW0i6l/uFxYETARY0NVqYp4dlZHzlagfSf2PufEdLojknXIcmmclxEfuFvjf3jbzlu sPsQ== MIME-Version: 1.0 X-Received: by 10.49.24.211 with SMTP id w19mr30857750qef.9.1389541544344; Sun, 12 Jan 2014 07:45:44 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.224.52.8 with HTTP; Sun, 12 Jan 2014 07:45:44 -0800 (PST) In-Reply-To: <201401121535.s0CFZ4Hd077053@svn.freebsd.org> References: <201401121535.s0CFZ4Hd077053@svn.freebsd.org> Date: Sun, 12 Jan 2014 07:45:44 -0800 X-Google-Sender-Auth: 9entjHJoVbzxnzCsk9QCMNYquIA Message-ID: Subject: Re: svn commit: r260565 - head/contrib/gcc/config/arm From: Adrian Chadd To: Andrew Turner Content-Type: text/plain; charset=ISO-8859-1 Cc: "svn-src-head@freebsd.org" , "svn-src-all@freebsd.org" , "src-committers@freebsd.org" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 15:45:45 -0000 Woo! -a On 12 January 2014 07:35, Andrew Turner wrote: > Author: andrew > Date: Sun Jan 12 15:35:03 2014 > New Revision: 260565 > URL: http://svnweb.freebsd.org/changeset/base/260565 > > Log: > Fix gcc with EABI on big-endian ARM by setting the endian correctly. > Without this gcc would generate byte loads for a little-endian core. > > MFC after: 1 week > > Modified: > head/contrib/gcc/config/arm/freebsd.h > > Modified: head/contrib/gcc/config/arm/freebsd.h > ============================================================================== > --- head/contrib/gcc/config/arm/freebsd.h Sun Jan 12 14:37:39 2014 (r260564) > +++ head/contrib/gcc/config/arm/freebsd.h Sun Jan 12 15:35:03 2014 (r260565) > @@ -72,6 +72,9 @@ > #undef TARGET_DEFAULT_FLOAT_ABI > #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT > > +#undef TARGET_DEFAULT > +#define TARGET_DEFAULT (MASK_INTERWORK | TARGET_ENDIAN_DEFAULT) > + > #undef ARM_DEFAULT_ABI > #define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX > From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 17:40:47 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C25E7D37; Sun, 12 Jan 2014 17:40:47 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AD5E91260; Sun, 12 Jan 2014 17:40:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CHelB4032374; Sun, 12 Jan 2014 17:40:47 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CHelGk032373; Sun, 12 Jan 2014 17:40:47 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201401121740.s0CHelGk032373@svn.freebsd.org> From: Bryan Venteicher Date: Sun, 12 Jan 2014 17:40:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260566 - head/sys/dev/virtio/scsi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 17:40:47 -0000 Author: bryanv Date: Sun Jan 12 17:40:47 2014 New Revision: 260566 URL: http://svnweb.freebsd.org/changeset/base/260566 Log: Remove incorrect bit shift when assigning the LUN request field This caused duplicate targets appearing on Google Compute Engine instances. PR: kern/185626 Submitted by: Venkatesh Srinivas MFC after: 3 days Modified: head/sys/dev/virtio/scsi/virtio_scsi.c Modified: head/sys/dev/virtio/scsi/virtio_scsi.c ============================================================================== --- head/sys/dev/virtio/scsi/virtio_scsi.c Sun Jan 12 15:35:03 2014 (r260565) +++ head/sys/dev/virtio/scsi/virtio_scsi.c Sun Jan 12 17:40:47 2014 (r260566) @@ -1539,7 +1539,7 @@ vtscsi_set_request_lun(struct ccb_hdr *c lun[0] = 1; lun[1] = ccbh->target_id; lun[2] = 0x40 | ((ccbh->target_lun >> 8) & 0x3F); - lun[3] = (ccbh->target_lun >> 8) & 0xFF; + lun[3] = ccbh->target_lun & 0xFF; } static void From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 19:04:21 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 64CEC47F; Sun, 12 Jan 2014 19:04:21 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 509EA18C1; Sun, 12 Jan 2014 19:04:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CJ4Lae063571; Sun, 12 Jan 2014 19:04:21 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CJ4LnM063570; Sun, 12 Jan 2014 19:04:21 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201401121904.s0CJ4LnM063570@svn.freebsd.org> From: Alan Cox Date: Sun, 12 Jan 2014 19:04:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260567 - head/sys/vm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 19:04:21 -0000 Author: alc Date: Sun Jan 12 19:04:20 2014 New Revision: 260567 URL: http://svnweb.freebsd.org/changeset/base/260567 Log: Correctly update the count of stuck pages, "addl_page_shortage", in vm_pageout_scan(). There were missing increments in two less common cases. Don't conflate the count of stuck pages and the pageout deficit provided by vm_page_alloc{,_contig}(). (A proposed fix to the OOM code depends on this.) Handle held pages consistently in the inactive queue scan. In the more common case, we did not move the page to the tail of the queue. Whereas, in the less common case, we did. There's no particular reason to move the page in the less common case, so remove it. Perform the calculation of the page shortage for the active queue scan a little earlier, before the active queue lock is acquired. The correctness of this calculation doesn't depend on the active queue lock being held. Eliminate a redundant variable, "pcount". Use the more descriptive variable, "maxscan", in its place. Apply a few nearby style fixes, e.g., eliminate stray whitespace and excess parentheses. Reviewed by: kib Sponsored by: EMC / Isilon Storage Division Modified: head/sys/vm/vm_pageout.c Modified: head/sys/vm/vm_pageout.c ============================================================================== --- head/sys/vm/vm_pageout.c Sun Jan 12 17:40:47 2014 (r260566) +++ head/sys/vm/vm_pageout.c Sun Jan 12 19:04:20 2014 (r260567) @@ -909,10 +909,8 @@ vm_pageout_scan(struct vm_domain *vmd, i { vm_page_t m, next; struct vm_pagequeue *pq; - int page_shortage, maxscan, pcount; - int addl_page_shortage; vm_object_t object; - int act_delta; + int act_delta, addl_page_shortage, deficit, maxscan, page_shortage; int vnodes_skipped = 0; int maxlaunder; int lockmode; @@ -942,13 +940,15 @@ vm_pageout_scan(struct vm_domain *vmd, i * number of pages from the inactive count that should be * discounted in setting the target for the active queue scan. */ - addl_page_shortage = atomic_readandclear_int(&vm_pageout_deficit); + addl_page_shortage = 0; + + deficit = atomic_readandclear_int(&vm_pageout_deficit); /* * Calculate the number of pages we want to either free or move * to the cache. */ - page_shortage = vm_paging_target() + addl_page_shortage; + page_shortage = vm_paging_target() + deficit; /* * maxlaunder limits the number of dirty pages we flush per scan. @@ -1245,6 +1245,7 @@ vm_pageout_scan(struct vm_domain *vmd, i */ if (vm_page_busied(m)) { vm_page_unlock(m); + addl_page_shortage++; goto unlock_and_continue; } @@ -1252,9 +1253,9 @@ vm_pageout_scan(struct vm_domain *vmd, i * If the page has become held it might * be undergoing I/O, so skip it */ - if (m->hold_count) { + if (m->hold_count != 0) { vm_page_unlock(m); - vm_page_requeue_locked(m); + addl_page_shortage++; if (object->flags & OBJ_MIGHTBEDIRTY) vnodes_skipped++; goto unlock_and_continue; @@ -1309,19 +1310,20 @@ relock_queues: * Compute the number of pages we want to try to move from the * active queue to the inactive queue. */ + page_shortage = cnt.v_inactive_target - cnt.v_inactive_count + + vm_paging_target() + deficit + addl_page_shortage; + pq = &vmd->vmd_pagequeues[PQ_ACTIVE]; vm_pagequeue_lock(pq); - pcount = pq->pq_cnt; - page_shortage = vm_paging_target() + - cnt.v_inactive_target - cnt.v_inactive_count; - page_shortage += addl_page_shortage; + maxscan = pq->pq_cnt; + /* * If we're just idle polling attempt to visit every * active page within 'update_period' seconds. */ - if (pass == 0 && vm_pageout_update_period != 0) { - pcount /= vm_pageout_update_period; - page_shortage = pcount; + if (pass == 0 && vm_pageout_update_period != 0) { + maxscan /= vm_pageout_update_period; + page_shortage = maxscan; } /* @@ -1330,7 +1332,7 @@ relock_queues: * deactivation candidates. */ m = TAILQ_FIRST(&pq->pq_pl); - while ((m != NULL) && (pcount-- > 0) && (page_shortage > 0)) { + while (m != NULL && maxscan-- > 0 && page_shortage > 0) { KASSERT(m->queue == PQ_ACTIVE, ("vm_pageout_scan: page %p isn't active", m)); From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 20:09:18 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 767B265A; Sun, 12 Jan 2014 20:09:18 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5686A1D7F; Sun, 12 Jan 2014 20:09:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CK9IUH088738; Sun, 12 Jan 2014 20:09:18 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CK9H2r088733; Sun, 12 Jan 2014 20:09:17 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401122009.s0CK9H2r088733@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Sun, 12 Jan 2014 20:09:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260568 - in stable/10/contrib/gcc: . doc X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 20:09:18 -0000 Author: pfg Date: Sun Jan 12 20:09:17 2014 New Revision: 260568 URL: http://svnweb.freebsd.org/changeset/base/260568 Log: MFC r259920: gcc: Implement -Wmost for compatibility with clang. This is equivalent to -Wall -Wno-parentheses. Obtained from: Apple GCC 4.2 - 5531 Modified: stable/10/contrib/gcc/c-opts.c stable/10/contrib/gcc/c.opt stable/10/contrib/gcc/doc/invoke.texi Directory Properties: stable/10/ (props changed) Modified: stable/10/contrib/gcc/c-opts.c ============================================================================== --- stable/10/contrib/gcc/c-opts.c Sun Jan 12 19:04:20 2014 (r260567) +++ stable/10/contrib/gcc/c-opts.c Sun Jan 12 20:09:17 2014 (r260568) @@ -385,12 +385,17 @@ c_common_handle_option (size_t scode, co break; case OPT_Wall: + /* APPLE LOCAL -Wmost */ + case OPT_Wmost: set_Wunused (value); set_Wformat (value); set_Wimplicit (value); warn_char_subscripts = value; warn_missing_braces = value; - warn_parentheses = value; + /* APPLE LOCAL begin -Wmost --dpatel */ + if (code != OPT_Wmost) + warn_parentheses = value; + /* APPLE LOCAL end -Wmost --dpatel */ warn_return_type = value; warn_sequence_point = value; /* Was C only. */ if (c_dialect_cxx ()) Modified: stable/10/contrib/gcc/c.opt ============================================================================== --- stable/10/contrib/gcc/c.opt Sun Jan 12 19:04:20 2014 (r260567) +++ stable/10/contrib/gcc/c.opt Sun Jan 12 20:09:17 2014 (r260568) @@ -284,6 +284,12 @@ Wmissing-prototypes C ObjC Var(warn_missing_prototypes) Warn about global functions without prototypes +; APPLE LOCAL begin -Wmost +Wmost +C ObjC C++ ObjC++ +Like -Wall but without -Wparentheses +; APPLE LOCAL end -Wmost + Wmultichar C ObjC C++ ObjC++ Warn about use of multi-character character constants Modified: stable/10/contrib/gcc/doc/invoke.texi ============================================================================== --- stable/10/contrib/gcc/doc/invoke.texi Sun Jan 12 19:04:20 2014 (r260567) +++ stable/10/contrib/gcc/doc/invoke.texi Sun Jan 12 20:09:17 2014 (r260568) @@ -222,6 +222,8 @@ in the following sections. -Wmain -Wmissing-braces -Wmissing-field-initializers @gol -Wmissing-format-attribute -Wmissing-include-dirs @gol -Wmissing-noreturn @gol +@c APPLE LOCAL -Wmost +-Wmost (APPLE ONLY) @gol -Wno-multichar -Wnonnull -Wno-overflow @gol -Woverlength-strings -Wpacked -Wpadded @gol -Wparentheses -Wpointer-arith -Wno-pointer-to-int-cast @gol @@ -2652,7 +2654,12 @@ warnings about constructions that some u that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. This also enables some language-specific warnings described in @ref{C++ Dialect Options}. +@c APPLE LOCAL begin -Wmost +@item -Wmost +@opindex Wmost +This is equivalent to -Wall -Wno-parentheses. (Apple compatible) @end table +@c APPLE LOCAL end -Wmost The following @option{-W@dots{}} options are not implied by @option{-Wall}. Some of them warn about constructions that users generally do not From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 20:10:14 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3926878D; Sun, 12 Jan 2014 20:10:14 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 243A01DD6; Sun, 12 Jan 2014 20:10:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CKAEHi089245; Sun, 12 Jan 2014 20:10:14 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CKADJZ089240; Sun, 12 Jan 2014 20:10:13 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401122010.s0CKADJZ089240@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Sun, 12 Jan 2014 20:10:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260569 - in stable/9: contrib/gcc contrib/gcc/doc sys/fs/ext2fs X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 20:10:14 -0000 Author: pfg Date: Sun Jan 12 20:10:12 2014 New Revision: 260569 URL: http://svnweb.freebsd.org/changeset/base/260569 Log: MFC r259920: gcc: Implement -Wmost for compatibility with clang. This is equivalent to -Wall -Wno-parentheses. Obtained from: Apple GCC 4.2 - 5531 Modified: stable/9/contrib/gcc/c-opts.c stable/9/contrib/gcc/c.opt stable/9/contrib/gcc/doc/invoke.texi stable/9/sys/fs/ext2fs/ext2_inode_cnv.c Directory Properties: stable/9/ (props changed) stable/9/contrib/gcc/ (props changed) Modified: stable/9/contrib/gcc/c-opts.c ============================================================================== --- stable/9/contrib/gcc/c-opts.c Sun Jan 12 20:09:17 2014 (r260568) +++ stable/9/contrib/gcc/c-opts.c Sun Jan 12 20:10:12 2014 (r260569) @@ -385,12 +385,17 @@ c_common_handle_option (size_t scode, co break; case OPT_Wall: + /* APPLE LOCAL -Wmost */ + case OPT_Wmost: set_Wunused (value); set_Wformat (value); set_Wimplicit (value); warn_char_subscripts = value; warn_missing_braces = value; - warn_parentheses = value; + /* APPLE LOCAL begin -Wmost --dpatel */ + if (code != OPT_Wmost) + warn_parentheses = value; + /* APPLE LOCAL end -Wmost --dpatel */ warn_return_type = value; warn_sequence_point = value; /* Was C only. */ if (c_dialect_cxx ()) Modified: stable/9/contrib/gcc/c.opt ============================================================================== --- stable/9/contrib/gcc/c.opt Sun Jan 12 20:09:17 2014 (r260568) +++ stable/9/contrib/gcc/c.opt Sun Jan 12 20:10:12 2014 (r260569) @@ -284,6 +284,12 @@ Wmissing-prototypes C ObjC Var(warn_missing_prototypes) Warn about global functions without prototypes +; APPLE LOCAL begin -Wmost +Wmost +C ObjC C++ ObjC++ +Like -Wall but without -Wparentheses +; APPLE LOCAL end -Wmost + Wmultichar C ObjC C++ ObjC++ Warn about use of multi-character character constants Modified: stable/9/contrib/gcc/doc/invoke.texi ============================================================================== --- stable/9/contrib/gcc/doc/invoke.texi Sun Jan 12 20:09:17 2014 (r260568) +++ stable/9/contrib/gcc/doc/invoke.texi Sun Jan 12 20:10:12 2014 (r260569) @@ -222,6 +222,8 @@ in the following sections. -Wmain -Wmissing-braces -Wmissing-field-initializers @gol -Wmissing-format-attribute -Wmissing-include-dirs @gol -Wmissing-noreturn @gol +@c APPLE LOCAL -Wmost +-Wmost (APPLE ONLY) @gol -Wno-multichar -Wnonnull -Wno-overflow @gol -Woverlength-strings -Wpacked -Wpadded @gol -Wparentheses -Wpointer-arith -Wno-pointer-to-int-cast @gol @@ -2652,7 +2654,12 @@ warnings about constructions that some u that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. This also enables some language-specific warnings described in @ref{C++ Dialect Options}. +@c APPLE LOCAL begin -Wmost +@item -Wmost +@opindex Wmost +This is equivalent to -Wall -Wno-parentheses. (Apple compatible) @end table +@c APPLE LOCAL end -Wmost The following @option{-W@dots{}} options are not implied by @option{-Wall}. Some of them warn about constructions that users generally do not Modified: stable/9/sys/fs/ext2fs/ext2_inode_cnv.c ============================================================================== --- stable/9/sys/fs/ext2fs/ext2_inode_cnv.c Sun Jan 12 20:09:17 2014 (r260568) +++ stable/9/sys/fs/ext2fs/ext2_inode_cnv.c Sun Jan 12 20:10:12 2014 (r260569) @@ -104,7 +104,7 @@ ext2_ei2i(struct ext2fs_dinode *ei, stru ip->i_birthtime = ei->e2di_crtime; ip->i_birthnsec = XTIME_TO_NSEC(ei->e2di_crtime_extra); } - ip->i_flags = ei->e2di_flags; + ip->i_flags = 0; ip->i_flags |= (ei->e2di_flags & EXT2_APPEND) ? SF_APPEND : 0; ip->i_flags |= (ei->e2di_flags & EXT2_IMMUTABLE) ? SF_IMMUTABLE : 0; ip->i_flags |= (ei->e2di_flags & EXT2_NODUMP) ? UF_NODUMP : 0; @@ -152,7 +152,7 @@ ext2_i2ei(struct inode *ip, struct ext2f ei->e2di_crtime = ip->i_birthtime; ei->e2di_crtime_extra = NSEC_TO_XTIME(ip->i_birthnsec); } - ei->e2di_flags = ip->i_flags; + ei->e2di_flags = 0; ei->e2di_flags |= (ip->i_flags & SF_APPEND) ? EXT2_APPEND: 0; ei->e2di_flags |= (ip->i_flags & SF_IMMUTABLE) ? EXT2_IMMUTABLE: 0; ei->e2di_flags |= (ip->i_flags & UF_NODUMP) ? EXT2_NODUMP: 0; From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 20:18:13 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 167E9BB4; Sun, 12 Jan 2014 20:18:13 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 02BF31E10; Sun, 12 Jan 2014 20:18:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CKICqX092884; Sun, 12 Jan 2014 20:18:12 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CKICQ2092883; Sun, 12 Jan 2014 20:18:12 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401122018.s0CKICQ2092883@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Sun, 12 Jan 2014 20:18:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260570 - stable/9/sys/fs/ext2fs X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 20:18:13 -0000 Author: pfg Date: Sun Jan 12 20:18:12 2014 New Revision: 260570 URL: http://svnweb.freebsd.org/changeset/base/260570 Log: Revert unrelated fix that went into r260569. The fix is good but the minimum MFC period for this change has not elapsed yet. Modified: stable/9/sys/fs/ext2fs/ext2_inode_cnv.c Modified: stable/9/sys/fs/ext2fs/ext2_inode_cnv.c ============================================================================== --- stable/9/sys/fs/ext2fs/ext2_inode_cnv.c Sun Jan 12 20:10:12 2014 (r260569) +++ stable/9/sys/fs/ext2fs/ext2_inode_cnv.c Sun Jan 12 20:18:12 2014 (r260570) @@ -104,7 +104,7 @@ ext2_ei2i(struct ext2fs_dinode *ei, stru ip->i_birthtime = ei->e2di_crtime; ip->i_birthnsec = XTIME_TO_NSEC(ei->e2di_crtime_extra); } - ip->i_flags = 0; + ip->i_flags = ei->e2di_flags; ip->i_flags |= (ei->e2di_flags & EXT2_APPEND) ? SF_APPEND : 0; ip->i_flags |= (ei->e2di_flags & EXT2_IMMUTABLE) ? SF_IMMUTABLE : 0; ip->i_flags |= (ei->e2di_flags & EXT2_NODUMP) ? UF_NODUMP : 0; @@ -152,7 +152,7 @@ ext2_i2ei(struct inode *ip, struct ext2f ei->e2di_crtime = ip->i_birthtime; ei->e2di_crtime_extra = NSEC_TO_XTIME(ip->i_birthnsec); } - ei->e2di_flags = 0; + ei->e2di_flags = ip->i_flags; ei->e2di_flags |= (ip->i_flags & SF_APPEND) ? EXT2_APPEND: 0; ei->e2di_flags |= (ip->i_flags & SF_IMMUTABLE) ? EXT2_IMMUTABLE: 0; ei->e2di_flags |= (ip->i_flags & UF_NODUMP) ? EXT2_NODUMP: 0; From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 20:30:56 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4AE93FD3; Sun, 12 Jan 2014 20:30:56 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 083131F02; Sun, 12 Jan 2014 20:30:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CKUtuY099522; Sun, 12 Jan 2014 20:30:55 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CKUtTi099521; Sun, 12 Jan 2014 20:30:55 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201401122030.s0CKUtTi099521@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 12 Jan 2014 20:30:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260571 - head/lib/libc/gen X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 20:30:56 -0000 Author: jilles Date: Sun Jan 12 20:30:55 2014 New Revision: 260571 URL: http://svnweb.freebsd.org/changeset/base/260571 Log: fts: Stat things relative to the directory fd, if possible. As a result, the kernel needs to process shorter pathnames if fts is not changing directories (if fts follows symlinks (-L option to utilities), fts cannot open "." or FTS_NOCHDIR was specified). Side effect: If pathnames exceed PATH_MAX, [ENAMETOOLONG] is not hit at the stat stage but later (opendir or application fts_accpath) or not at all. Modified: head/lib/libc/gen/fts.c Modified: head/lib/libc/gen/fts.c ============================================================================== --- head/lib/libc/gen/fts.c Sun Jan 12 20:18:12 2014 (r260570) +++ head/lib/libc/gen/fts.c Sun Jan 12 20:30:55 2014 (r260571) @@ -62,7 +62,7 @@ static size_t fts_maxarglen(char * cons static void fts_padjust(FTS *, FTSENT *); static int fts_palloc(FTS *, size_t); static FTSENT *fts_sort(FTS *, FTSENT *, size_t); -static int fts_stat(FTS *, FTSENT *, int); +static int fts_stat(FTS *, FTSENT *, int, int); static int fts_safe_changedir(FTS *, FTSENT *, int, char *); static int fts_ufslinks(FTS *, const FTSENT *); @@ -171,7 +171,7 @@ fts_open(argv, options, compar) p->fts_level = FTS_ROOTLEVEL; p->fts_parent = parent; p->fts_accpath = p->fts_name; - p->fts_info = fts_stat(sp, p, ISSET(FTS_COMFOLLOW)); + p->fts_info = fts_stat(sp, p, ISSET(FTS_COMFOLLOW), -1); /* Command-line "." and ".." are real directories. */ if (p->fts_info == FTS_DOT) @@ -326,7 +326,7 @@ fts_read(FTS *sp) /* Any type of file may be re-visited; re-stat and re-turn. */ if (instr == FTS_AGAIN) { - p->fts_info = fts_stat(sp, p, 0); + p->fts_info = fts_stat(sp, p, 0, -1); return (p); } @@ -338,7 +338,7 @@ fts_read(FTS *sp) */ if (instr == FTS_FOLLOW && (p->fts_info == FTS_SL || p->fts_info == FTS_SLNONE)) { - p->fts_info = fts_stat(sp, p, 1); + p->fts_info = fts_stat(sp, p, 1, -1); if (p->fts_info == FTS_D && !ISSET(FTS_NOCHDIR)) { if ((p->fts_symfd = _open(".", O_RDONLY | O_CLOEXEC, 0)) < 0) { @@ -429,7 +429,7 @@ next: tmp = p; if (p->fts_instr == FTS_SKIP) goto next; if (p->fts_instr == FTS_FOLLOW) { - p->fts_info = fts_stat(sp, p, 1); + p->fts_info = fts_stat(sp, p, 1, -1); if (p->fts_info == FTS_D && !ISSET(FTS_NOCHDIR)) { if ((p->fts_symfd = _open(".", O_RDONLY | O_CLOEXEC, 0)) < 0) { @@ -800,10 +800,11 @@ mem1: saved_errno = errno; if (ISSET(FTS_NOCHDIR)) { p->fts_accpath = p->fts_path; memmove(cp, p->fts_name, p->fts_namelen + 1); - } else + p->fts_info = fts_stat(sp, p, 0, _dirfd(dirp)); + } else { p->fts_accpath = p->fts_name; - /* Stat it. */ - p->fts_info = fts_stat(sp, p, 0); + p->fts_info = fts_stat(sp, p, 0, -1); + } /* Decrement link count if applicable. */ if (nlinks > 0 && (p->fts_info == FTS_D || @@ -868,13 +869,19 @@ mem1: saved_errno = errno; } static int -fts_stat(FTS *sp, FTSENT *p, int follow) +fts_stat(FTS *sp, FTSENT *p, int follow, int dfd) { FTSENT *t; dev_t dev; ino_t ino; struct stat *sbp, sb; int saved_errno; + const char *path; + + if (dfd == -1) + path = p->fts_accpath, dfd = AT_FDCWD; + else + path = p->fts_name; /* If user needs stat info, stat buffer already allocated. */ sbp = ISSET(FTS_NOSTAT) ? &sb : p->fts_statp; @@ -896,16 +903,16 @@ fts_stat(FTS *sp, FTSENT *p, int follow) * fail, set the errno from the stat call. */ if (ISSET(FTS_LOGICAL) || follow) { - if (stat(p->fts_accpath, sbp)) { + if (fstatat(dfd, path, sbp, 0)) { saved_errno = errno; - if (!lstat(p->fts_accpath, sbp)) { + if (!fstatat(dfd, path, sbp, AT_SYMLINK_NOFOLLOW)) { errno = 0; return (FTS_SLNONE); } p->fts_errno = saved_errno; goto err; } - } else if (lstat(p->fts_accpath, sbp)) { + } else if (fstatat(dfd, path, sbp, AT_SYMLINK_NOFOLLOW)) { p->fts_errno = errno; err: memset(sbp, 0, sizeof(struct stat)); return (FTS_NS); From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 20:47:08 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EECA7516; Sun, 12 Jan 2014 20:47:08 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DAFCA1FAB; Sun, 12 Jan 2014 20:47:08 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CKl8bq004416; Sun, 12 Jan 2014 20:47:08 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CKl85B004415; Sun, 12 Jan 2014 20:47:08 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201401122047.s0CKl85B004415@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 12 Jan 2014 20:47:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260572 - head/lib/libc/gen X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 20:47:09 -0000 Author: jilles Date: Sun Jan 12 20:47:08 2014 New Revision: 260572 URL: http://svnweb.freebsd.org/changeset/base/260572 Log: fts(3): Remove stray mentions of the obsolete fts_bignum. Modified: head/lib/libc/gen/fts.3 Modified: head/lib/libc/gen/fts.3 ============================================================================== --- head/lib/libc/gen/fts.3 Sun Jan 12 20:30:55 2014 (r260571) +++ head/lib/libc/gen/fts.3 Sun Jan 12 20:47:08 2014 (r260572) @@ -28,7 +28,7 @@ .\" @(#)fts.3 8.5 (Berkeley) 4/16/94 .\" $FreeBSD$ .\" -.Dd May 21, 2013 +.Dd January 12, 2014 .Dt FTS 3 .Os .Sh NAME @@ -304,7 +304,6 @@ file is a member. A parent structure for the initial entry point is provided as well, however, only the .Fa fts_level , -.Fa fts_bignum , .Fa fts_number and .Fa fts_pointer @@ -366,13 +365,6 @@ The .Fa fts_name field is always .Dv NUL Ns -terminated . -.Pp -Note that the use of -.Fa fts_bignum -is mutually exclusive with the use of -.Fa fts_number -or -.Fa fts_pointer . .Sh FTS_OPEN The .Fn fts_open From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 21:16:28 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2C3BAE29; Sun, 12 Jan 2014 21:16:28 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0CB2F11CC; Sun, 12 Jan 2014 21:16:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CLGRwf016344; Sun, 12 Jan 2014 21:16:27 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CLGQIj016333; Sun, 12 Jan 2014 21:16:26 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401122116.s0CLGQIj016333@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Sun, 12 Jan 2014 21:16:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260573 - in stable/10/contrib: gcc/config gcclibs/libcpp X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 21:16:28 -0000 Author: pfg Date: Sun Jan 12 21:16:26 2014 New Revision: 260573 URL: http://svnweb.freebsd.org/changeset/base/260573 Log: MFC r260310: libcpp: misc fixes from Apple's GCC. Fixes some bugs detected by Apple: #error with unmatched quotes pragma mark Obtained from: Apple GCC 4.2 - 5553 Modified: stable/10/contrib/gcc/config/darwin.h stable/10/contrib/gcclibs/libcpp/ChangeLog.apple stable/10/contrib/gcclibs/libcpp/charset.c stable/10/contrib/gcclibs/libcpp/directives.c stable/10/contrib/gcclibs/libcpp/internal.h stable/10/contrib/gcclibs/libcpp/lex.c Directory Properties: stable/10/ (props changed) Modified: stable/10/contrib/gcc/config/darwin.h ============================================================================== --- stable/10/contrib/gcc/config/darwin.h Sun Jan 12 20:47:08 2014 (r260572) +++ stable/10/contrib/gcc/config/darwin.h Sun Jan 12 21:16:26 2014 (r260573) @@ -873,7 +873,9 @@ enum machopic_addr_class { #define DARWIN_REGISTER_TARGET_PRAGMAS() \ do { \ - c_register_pragma (0, "mark", darwin_pragma_ignore); \ + /* APPLE LOCAL begin pragma mark 5614511 */ \ + /* Removed mark. */ \ + /* APPLE LOCAL end pragma mark 5614511 */ \ c_register_pragma (0, "options", darwin_pragma_options); \ c_register_pragma (0, "segment", darwin_pragma_ignore); \ c_register_pragma (0, "unused", darwin_pragma_unused); \ Modified: stable/10/contrib/gcclibs/libcpp/ChangeLog.apple ============================================================================== --- stable/10/contrib/gcclibs/libcpp/ChangeLog.apple Sun Jan 12 20:47:08 2014 (r260572) +++ stable/10/contrib/gcclibs/libcpp/ChangeLog.apple Sun Jan 12 21:16:26 2014 (r260573) @@ -3,6 +3,11 @@ Radar 6121572 * charset.c (_cpp_convert_input): Don't read to.text[-1]. +2008-05-01 Mike Stump + + Radar 5774975 + * charset.c (_cpp_convert_input): Eat UTF-8 BOM. + 2005-02-17 Devang Patel Radar 3958387 Modified: stable/10/contrib/gcclibs/libcpp/charset.c ============================================================================== --- stable/10/contrib/gcclibs/libcpp/charset.c Sun Jan 12 20:47:08 2014 (r260572) +++ stable/10/contrib/gcclibs/libcpp/charset.c Sun Jan 12 21:16:26 2014 (r260573) @@ -1597,6 +1597,17 @@ _cpp_convert_input (cpp_reader *pfile, c input_cset = init_iconv_desc (pfile, SOURCE_CHARSET, input_charset); if (input_cset.func == convert_no_conversion) { + /* APPLE LOCAL begin UTF-8 BOM 5774975 */ + /* Eat the UTF-8 BOM. */ + if (len >= 3 + && input[0] == 0xef + && input[1] == 0xbb + && input[2] == 0xbf) + { + memmove (&input[0], &input[3], size-3); + len -= 3; + } + /* APPLE LOCAL end UTF-8 BOM 5774975 */ to.text = input; to.asize = size; to.len = len; Modified: stable/10/contrib/gcclibs/libcpp/directives.c ============================================================================== --- stable/10/contrib/gcclibs/libcpp/directives.c Sun Jan 12 20:47:08 2014 (r260572) +++ stable/10/contrib/gcclibs/libcpp/directives.c Sun Jan 12 21:16:26 2014 (r260573) @@ -991,7 +991,11 @@ do_diagnostic (cpp_reader *pfile, int co if (print_dir) fprintf (stderr, "#%s ", pfile->directive->name); pfile->state.prevent_expansion++; + /* APPLE LOCAL #error with unmatched quotes 5607574 */ + pfile->state.in_diagnostic++; cpp_output_line (pfile, stderr); + /* APPLE LOCAL #error with unmatched quotes 5607574 */ + pfile->state.in_diagnostic--; pfile->state.prevent_expansion--; } } @@ -1173,12 +1177,25 @@ cpp_register_deferred_pragma (cpp_reader } } +/* APPLE LOCAL begin pragma mark 5614511 */ +/* Handle #pragma mark. */ +static void +do_pragma_mark (cpp_reader *pfile) +{ + ++pfile->state.skipping; + skip_rest_of_line (pfile); + --pfile->state.skipping; +} +/* APPLE LOCAL end pragma mark 5614511 */ + /* Register the pragmas the preprocessor itself handles. */ void _cpp_init_internal_pragmas (cpp_reader *pfile) { /* Pragmas in the global namespace. */ register_pragma_internal (pfile, 0, "once", do_pragma_once); + /* APPLE LOCAL pragma mark 5614511 */ + register_pragma_internal (pfile, 0, "mark", do_pragma_mark); /* New GCC-specific pragmas should be put in the GCC namespace. */ register_pragma_internal (pfile, "GCC", "poison", do_pragma_poison); Modified: stable/10/contrib/gcclibs/libcpp/internal.h ============================================================================== --- stable/10/contrib/gcclibs/libcpp/internal.h Sun Jan 12 20:47:08 2014 (r260572) +++ stable/10/contrib/gcclibs/libcpp/internal.h Sun Jan 12 21:16:26 2014 (r260573) @@ -220,6 +220,11 @@ struct lexer_state /* Nonzero if the deferred pragma being handled allows macro expansion. */ unsigned char pragma_allow_expansion; + + /* APPLE LOCAL begin #error with unmatched quotes 5607574 */ + /* Nonzero when handling #error and #warning to allow unmatched quotes. */ + unsigned char in_diagnostic; + /* APPLE LOCAL end #error with unmatched quotes 5607574 */ }; /* Special nodes - identifiers with predefined significance. */ Modified: stable/10/contrib/gcclibs/libcpp/lex.c ============================================================================== --- stable/10/contrib/gcclibs/libcpp/lex.c Sun Jan 12 20:47:08 2014 (r260572) +++ stable/10/contrib/gcclibs/libcpp/lex.c Sun Jan 12 21:16:26 2014 (r260573) @@ -658,7 +658,12 @@ lex_string (cpp_reader *pfile, cpp_token cpp_error (pfile, CPP_DL_WARNING, "null character(s) preserved in literal"); - if (type == CPP_OTHER && CPP_OPTION (pfile, lang) != CLK_ASM) + /* APPLE LOCAL begin #error with unmatched quotes 5607574 */ + if (type == CPP_OTHER + && CPP_OPTION (pfile, lang) != CLK_ASM + && !pfile->state.in_diagnostic + && !pfile->state.skipping) + /* APPLE LOCAL end #error with unmatched quotes 5607574 */ cpp_error (pfile, CPP_DL_PEDWARN, "missing terminating %c character", (int) terminator); From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 21:19:51 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 25AC8F74; Sun, 12 Jan 2014 21:19:51 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1083C11DD; Sun, 12 Jan 2014 21:19:51 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CLJo3T016740; Sun, 12 Jan 2014 21:19:50 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CLJnM2016727; Sun, 12 Jan 2014 21:19:49 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401122119.s0CLJnM2016727@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Sun, 12 Jan 2014 21:19:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260574 - in stable/9/contrib: gcc/config gcclibs/libcpp X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 21:19:51 -0000 Author: pfg Date: Sun Jan 12 21:19:49 2014 New Revision: 260574 URL: http://svnweb.freebsd.org/changeset/base/260574 Log: MFC r260310: libcpp: misc fixes from Apple's GCC. Fixes some bugs detected by Apple: #error with unmatched quotes pragma mark Obtained from: Apple GCC 4.2 - 5553 Modified: stable/9/contrib/gcc/config/darwin.h stable/9/contrib/gcclibs/libcpp/ChangeLog.apple stable/9/contrib/gcclibs/libcpp/charset.c stable/9/contrib/gcclibs/libcpp/directives.c stable/9/contrib/gcclibs/libcpp/internal.h stable/9/contrib/gcclibs/libcpp/lex.c Directory Properties: stable/9/ (props changed) stable/9/contrib/gcc/ (props changed) stable/9/contrib/gcclibs/ (props changed) Modified: stable/9/contrib/gcc/config/darwin.h ============================================================================== --- stable/9/contrib/gcc/config/darwin.h Sun Jan 12 21:16:26 2014 (r260573) +++ stable/9/contrib/gcc/config/darwin.h Sun Jan 12 21:19:49 2014 (r260574) @@ -873,7 +873,9 @@ enum machopic_addr_class { #define DARWIN_REGISTER_TARGET_PRAGMAS() \ do { \ - c_register_pragma (0, "mark", darwin_pragma_ignore); \ + /* APPLE LOCAL begin pragma mark 5614511 */ \ + /* Removed mark. */ \ + /* APPLE LOCAL end pragma mark 5614511 */ \ c_register_pragma (0, "options", darwin_pragma_options); \ c_register_pragma (0, "segment", darwin_pragma_ignore); \ c_register_pragma (0, "unused", darwin_pragma_unused); \ Modified: stable/9/contrib/gcclibs/libcpp/ChangeLog.apple ============================================================================== --- stable/9/contrib/gcclibs/libcpp/ChangeLog.apple Sun Jan 12 21:16:26 2014 (r260573) +++ stable/9/contrib/gcclibs/libcpp/ChangeLog.apple Sun Jan 12 21:19:49 2014 (r260574) @@ -3,6 +3,11 @@ Radar 6121572 * charset.c (_cpp_convert_input): Don't read to.text[-1]. +2008-05-01 Mike Stump + + Radar 5774975 + * charset.c (_cpp_convert_input): Eat UTF-8 BOM. + 2005-02-17 Devang Patel Radar 3958387 Modified: stable/9/contrib/gcclibs/libcpp/charset.c ============================================================================== --- stable/9/contrib/gcclibs/libcpp/charset.c Sun Jan 12 21:16:26 2014 (r260573) +++ stable/9/contrib/gcclibs/libcpp/charset.c Sun Jan 12 21:19:49 2014 (r260574) @@ -1597,6 +1597,17 @@ _cpp_convert_input (cpp_reader *pfile, c input_cset = init_iconv_desc (pfile, SOURCE_CHARSET, input_charset); if (input_cset.func == convert_no_conversion) { + /* APPLE LOCAL begin UTF-8 BOM 5774975 */ + /* Eat the UTF-8 BOM. */ + if (len >= 3 + && input[0] == 0xef + && input[1] == 0xbb + && input[2] == 0xbf) + { + memmove (&input[0], &input[3], size-3); + len -= 3; + } + /* APPLE LOCAL end UTF-8 BOM 5774975 */ to.text = input; to.asize = size; to.len = len; Modified: stable/9/contrib/gcclibs/libcpp/directives.c ============================================================================== --- stable/9/contrib/gcclibs/libcpp/directives.c Sun Jan 12 21:16:26 2014 (r260573) +++ stable/9/contrib/gcclibs/libcpp/directives.c Sun Jan 12 21:19:49 2014 (r260574) @@ -991,7 +991,11 @@ do_diagnostic (cpp_reader *pfile, int co if (print_dir) fprintf (stderr, "#%s ", pfile->directive->name); pfile->state.prevent_expansion++; + /* APPLE LOCAL #error with unmatched quotes 5607574 */ + pfile->state.in_diagnostic++; cpp_output_line (pfile, stderr); + /* APPLE LOCAL #error with unmatched quotes 5607574 */ + pfile->state.in_diagnostic--; pfile->state.prevent_expansion--; } } @@ -1173,12 +1177,25 @@ cpp_register_deferred_pragma (cpp_reader } } +/* APPLE LOCAL begin pragma mark 5614511 */ +/* Handle #pragma mark. */ +static void +do_pragma_mark (cpp_reader *pfile) +{ + ++pfile->state.skipping; + skip_rest_of_line (pfile); + --pfile->state.skipping; +} +/* APPLE LOCAL end pragma mark 5614511 */ + /* Register the pragmas the preprocessor itself handles. */ void _cpp_init_internal_pragmas (cpp_reader *pfile) { /* Pragmas in the global namespace. */ register_pragma_internal (pfile, 0, "once", do_pragma_once); + /* APPLE LOCAL pragma mark 5614511 */ + register_pragma_internal (pfile, 0, "mark", do_pragma_mark); /* New GCC-specific pragmas should be put in the GCC namespace. */ register_pragma_internal (pfile, "GCC", "poison", do_pragma_poison); Modified: stable/9/contrib/gcclibs/libcpp/internal.h ============================================================================== --- stable/9/contrib/gcclibs/libcpp/internal.h Sun Jan 12 21:16:26 2014 (r260573) +++ stable/9/contrib/gcclibs/libcpp/internal.h Sun Jan 12 21:19:49 2014 (r260574) @@ -220,6 +220,11 @@ struct lexer_state /* Nonzero if the deferred pragma being handled allows macro expansion. */ unsigned char pragma_allow_expansion; + + /* APPLE LOCAL begin #error with unmatched quotes 5607574 */ + /* Nonzero when handling #error and #warning to allow unmatched quotes. */ + unsigned char in_diagnostic; + /* APPLE LOCAL end #error with unmatched quotes 5607574 */ }; /* Special nodes - identifiers with predefined significance. */ Modified: stable/9/contrib/gcclibs/libcpp/lex.c ============================================================================== --- stable/9/contrib/gcclibs/libcpp/lex.c Sun Jan 12 21:16:26 2014 (r260573) +++ stable/9/contrib/gcclibs/libcpp/lex.c Sun Jan 12 21:19:49 2014 (r260574) @@ -658,7 +658,12 @@ lex_string (cpp_reader *pfile, cpp_token cpp_error (pfile, CPP_DL_WARNING, "null character(s) preserved in literal"); - if (type == CPP_OTHER && CPP_OPTION (pfile, lang) != CLK_ASM) + /* APPLE LOCAL begin #error with unmatched quotes 5607574 */ + if (type == CPP_OTHER + && CPP_OPTION (pfile, lang) != CLK_ASM + && !pfile->state.in_diagnostic + && !pfile->state.skipping) + /* APPLE LOCAL end #error with unmatched quotes 5607574 */ cpp_error (pfile, CPP_DL_PEDWARN, "missing terminating %c character", (int) terminator); From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 21:21:20 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8AC7F187; Sun, 12 Jan 2014 21:21:20 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6BD37123D; Sun, 12 Jan 2014 21:21:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CLLK3K017926; Sun, 12 Jan 2014 21:21:20 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CLLJWc017922; Sun, 12 Jan 2014 21:21:19 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401122121.s0CLLJWc017922@svn.freebsd.org> From: Hans Petter Selasky Date: Sun, 12 Jan 2014 21:21:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260575 - in stable/9/sys/dev/usb: . storage wlan X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 21:21:20 -0000 Author: hselasky Date: Sun Jan 12 21:21:19 2014 New Revision: 260575 URL: http://svnweb.freebsd.org/changeset/base/260575 Log: MFC r244607 and r244650: Fix regression issues after r244503. PR: usb/185628 Modified: stable/9/sys/dev/usb/storage/ustorage_fs.c stable/9/sys/dev/usb/usb_msctest.c stable/9/sys/dev/usb/wlan/if_urtw.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/usb/storage/ustorage_fs.c ============================================================================== --- stable/9/sys/dev/usb/storage/ustorage_fs.c Sun Jan 12 21:19:49 2014 (r260574) +++ stable/9/sys/dev/usb/storage/ustorage_fs.c Sun Jan 12 21:21:19 2014 (r260575) @@ -603,6 +603,8 @@ tr_setup: usbd_xfer_set_stall(xfer); DPRINTF("stall pipe\n"); } + usbd_xfer_set_frame_len(xfer, 0, + sizeof(ustorage_fs_bbb_cbw_t)); usbd_transfer_submit(xfer); break; @@ -827,6 +829,8 @@ tr_setup: sc->sc_transfer.data_error = 0; usbd_xfer_set_stall(xfer); } + usbd_xfer_set_frame_len(xfer, 0, + sizeof(ustorage_fs_bbb_csw_t)); usbd_transfer_submit(xfer); break; Modified: stable/9/sys/dev/usb/usb_msctest.c ============================================================================== --- stable/9/sys/dev/usb/usb_msctest.c Sun Jan 12 21:19:49 2014 (r260574) +++ stable/9/sys/dev/usb/usb_msctest.c Sun Jan 12 21:21:19 2014 (r260575) @@ -83,7 +83,7 @@ enum { DIR_NONE, }; -#define SCSI_MAX_LEN 0x100 +#define SCSI_MAX_LEN MAX(0x100, BULK_SIZE) #define SCSI_INQ_LEN 0x24 #define SCSI_SENSE_LEN 0xFF @@ -150,6 +150,7 @@ struct bbb_transfer { usb_size_t data_rem; /* bytes */ usb_timeout_t data_timeout; /* ms */ usb_frlength_t actlen; /* bytes */ + usb_frlength_t buffer_size; /* bytes */ uint8_t cmd_len; /* bytes */ uint8_t dir; @@ -192,7 +193,7 @@ static const struct usb_config bbb_confi .type = UE_BULK, .endpoint = UE_ADDR_ANY, .direction = UE_DIR_IN, - .bufsize = MAX(SCSI_MAX_LEN, BULK_SIZE), + .bufsize = SCSI_MAX_LEN, .flags = {.proxy_buffer = 1,.short_xfer_ok = 1,}, .callback = &bbb_data_read_callback, .timeout = 4 * USB_MS_HZ, /* 4 seconds */ @@ -211,7 +212,7 @@ static const struct usb_config bbb_confi .type = UE_BULK, .endpoint = UE_ADDR_ANY, .direction = UE_DIR_OUT, - .bufsize = BULK_SIZE, + .bufsize = SCSI_MAX_LEN, .flags = {.ext_buffer = 1,.proxy_buffer = 1,}, .callback = &bbb_data_write_callback, .timeout = 4 * USB_MS_HZ, /* 4 seconds */ @@ -299,6 +300,8 @@ bbb_command_callback(struct usb_xfer *xf sc->cbw->bCDBLength = sizeof(sc->cbw->CBWCDB); DPRINTFN(0, "Truncating long command\n"); } + usbd_xfer_set_frame_len(xfer, 0, + sizeof(struct bbb_cbw)); usbd_transfer_submit(xfer); break; @@ -385,7 +388,7 @@ bbb_data_write_callback(struct usb_xfer if (sc->data_rem == 0) { bbb_transfer_start(sc, ST_STATUS); - return; + break; } if (max_bulk > sc->data_rem) { max_bulk = sc->data_rem; @@ -393,7 +396,7 @@ bbb_data_write_callback(struct usb_xfer usbd_xfer_set_timeout(xfer, sc->data_timeout); usbd_xfer_set_frame_data(xfer, 0, sc->data_ptr, max_bulk); usbd_transfer_submit(xfer); - return; + break; default: /* Error */ if (error == USB_ERR_CANCELLED) { @@ -401,8 +404,7 @@ bbb_data_write_callback(struct usb_xfer } else { bbb_transfer_start(sc, ST_DATA_WR_CS); } - return; - + break; } } @@ -437,6 +439,8 @@ bbb_status_callback(struct usb_xfer *xfe break; case USB_ST_SETUP: + usbd_xfer_set_frame_len(xfer, 0, + sizeof(struct bbb_csw)); usbd_transfer_submit(xfer); break; @@ -548,6 +552,8 @@ bbb_attach(struct usb_device *udev, uint /* store pointer to DMA buffers */ sc->buffer = usbd_xfer_get_frame_buffer( sc->xfer[ST_DATA_RD], 0); + sc->buffer_size = + usbd_xfer_max_len(sc->xfer[ST_DATA_RD]); sc->cbw = usbd_xfer_get_frame_buffer( sc->xfer[ST_COMMAND], 0); sc->csw = usbd_xfer_get_frame_buffer( @@ -828,8 +834,8 @@ usb_msc_eject(struct usb_device *udev, u * TCTMobile needs DIR_IN flag. To get it, we * supply a dummy data with the command. */ - err = bbb_command_start(sc, DIR_IN, 0, &sc->buffer, - sizeof(sc->buffer), &scsi_tct_eject, + err = bbb_command_start(sc, DIR_IN, 0, sc->buffer, + sc->buffer_size, &scsi_tct_eject, sizeof(scsi_tct_eject), USB_MS_HZ); break; default: Modified: stable/9/sys/dev/usb/wlan/if_urtw.c ============================================================================== --- stable/9/sys/dev/usb/wlan/if_urtw.c Sun Jan 12 21:19:49 2014 (r260574) +++ stable/9/sys/dev/usb/wlan/if_urtw.c Sun Jan 12 21:21:19 2014 (r260575) @@ -4179,6 +4179,7 @@ urtw_bulk_tx_status_callback(struct usb_ case USB_ST_SETUP: setup: memcpy(dma_buf, &sc->sc_txstatus, sizeof(uint64_t)); + usbd_xfer_set_frame_len(xfer, 0, sizeof(uint64_t)); usbd_transfer_submit(xfer); break; default: From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 21:56:27 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B6667A89; Sun, 12 Jan 2014 21:56:27 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9FF241477; Sun, 12 Jan 2014 21:56:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CLuRkx031628; Sun, 12 Jan 2014 21:56:27 GMT (envelope-from jmmv@svn.freebsd.org) Received: (from jmmv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CLuQR7031624; Sun, 12 Jan 2014 21:56:26 GMT (envelope-from jmmv@svn.freebsd.org) Message-Id: <201401122156.s0CLuQR7031624@svn.freebsd.org> From: Julio Merino Date: Sun, 12 Jan 2014 21:56:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260576 - in head: lib/atf lib/atf/libatf-c lib/atf/libatf-c++ usr.bin/atf/atf-sh X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 21:56:27 -0000 Author: jmmv Date: Sun Jan 12 21:56:26 2014 New Revision: 260576 URL: http://svnweb.freebsd.org/changeset/base/260576 Log: Generate and install pkg-config files for atf. These files are required to get packages in ports to build against atf and also to get a couple of currently-failing tests to pass. I'm following the approach already used by the libusb pkg-config files installed by the system regarding the location and the install rules. MFC after: 5 days Added: head/lib/atf/common.mk (contents, props changed) Modified: head/lib/atf/libatf-c++/Makefile head/lib/atf/libatf-c/Makefile head/usr.bin/atf/atf-sh/Makefile Added: head/lib/atf/common.mk ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/atf/common.mk Sun Jan 12 21:56:26 2014 (r260576) @@ -0,0 +1,19 @@ +# $FreeBSD$ +# +# Common Makefile code for all components of ATF. +# + +.if !defined(ATF) +.error "ATF must be defined and point to the contrib/atf directory" +.endif + +# Depend on the atf-version target to generate a file that contains the +# version number of the currently imported ATF release and that only +# changes on new imports. +atf-version: atf-version-real + @cmp -s atf-version atf-version-real \ + || cp atf-version-real atf-version +atf-version-real: .PHONY + @grep 'define VERSION' ${ATF}/bconfig.h \ + | cut -d '"' -f 2 >atf-version-real +CLEANFILES+= atf-version atf-version-real Modified: head/lib/atf/libatf-c++/Makefile ============================================================================== --- head/lib/atf/libatf-c++/Makefile Sun Jan 12 21:21:19 2014 (r260575) +++ head/lib/atf/libatf-c++/Makefile Sun Jan 12 21:56:26 2014 (r260576) @@ -76,8 +76,21 @@ INCSDIR_atf-c++.hpp= ${INCLUDEDIR} MAN= atf-c++-api.3 +all: atf-c++.pc +atf-c++.pc: atf-c++.pc.in atf-version + sed -e 's,__CXX__,${CXX},g' \ + -e 's,__INCLUDEDIR__,${INCLUDEDIR},g' \ + -e 's,__LIBDIR__,${LIBDIR},g' \ + -e "s,__ATF_VERSION__,$$(cat atf-version),g" \ + <${ATF}/atf-c++/atf-c++.pc.in >atf-c++.pc + +beforeinstall: + ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + atf-c++.pc ${DESTDIR}${LIBDATADIR}/pkgconfig + .if ${MK_TESTS} != "no" SUBDIR= tests .endif +.include "../common.mk" .include Modified: head/lib/atf/libatf-c/Makefile ============================================================================== --- head/lib/atf/libatf-c/Makefile Sun Jan 12 21:21:19 2014 (r260575) +++ head/lib/atf/libatf-c/Makefile Sun Jan 12 21:56:26 2014 (r260576) @@ -74,8 +74,21 @@ INCSDIR_atf-c.h= ${INCLUDEDIR} MAN= atf-c-api.3 +all: atf-c.pc +atf-c.pc: atf-c.pc.in atf-version + sed -e 's,__CC__,${CC},g' \ + -e 's,__INCLUDEDIR__,${INCLUDEDIR},g' \ + -e 's,__LIBDIR__,${LIBDIR},g' \ + -e "s,__ATF_VERSION__,$$(cat atf-version),g" \ + <${ATF}/atf-c/atf-c.pc.in >atf-c.pc + +beforeinstall: + ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + atf-c.pc ${DESTDIR}${LIBDATADIR}/pkgconfig + .if ${MK_TESTS} != "no" SUBDIR= tests .endif +.include "../common.mk" .include Modified: head/usr.bin/atf/atf-sh/Makefile ============================================================================== --- head/usr.bin/atf/atf-sh/Makefile Sun Jan 12 21:21:19 2014 (r260575) +++ head/usr.bin/atf/atf-sh/Makefile Sun Jan 12 21:56:26 2014 (r260576) @@ -45,8 +45,19 @@ FILESGROUPS= SUBR SUBRDIR= ${SHAREDIR}/atf SUBR= libatf-sh.subr +all: atf-sh.pc +atf-sh.pc: atf-sh.pc.in atf-version + sed -e 's,__EXEC_PREFIX__,/usr,g' \ + -e "s,__ATF_VERSION__,$$(cat atf-version),g" \ + <${ATF}/atf-sh/atf-sh.pc.in >atf-sh.pc + +beforeinstall: + ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + atf-sh.pc ${DESTDIR}${LIBDATADIR}/pkgconfig + .if ${MK_TESTS} != "no" SUBDIR+= tests .endif +.include "../../../lib/atf/common.mk" .include From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 22:15:18 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9B9AD1F2; Sun, 12 Jan 2014 22:15:18 +0000 (UTC) Received: from smtpauth3.wiscmail.wisc.edu (wmauth3.doit.wisc.edu [144.92.197.226]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 687E415E1; Sun, 12 Jan 2014 22:15:17 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII Received: from avs-daemon.smtpauth3.wiscmail.wisc.edu by smtpauth3.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) id <0MZB00C006ENE900@smtpauth3.wiscmail.wisc.edu>; Sun, 12 Jan 2014 16:15:16 -0600 (CST) X-Spam-PmxInfo: Server=avs-3, Version=6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.1.12.220616, SenderIP=0.0.0.0 X-Spam-Report: AuthenticatedSender=yes, SenderIP=0.0.0.0 Received: from wanderer.tachypleus.net (pool-72-66-107-173.washdc.fios.verizon.net [72.66.107.173]) by smtpauth3.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) with ESMTPSA id <0MZB00K4G75D9E20@smtpauth3.wiscmail.wisc.edu>; Sun, 12 Jan 2014 16:15:16 -0600 (CST) Message-id: <52D313F1.9010005@freebsd.org> Date: Sun, 12 Jan 2014 17:15:13 -0500 From: Nathan Whitehorn User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 To: Bryan Venteicher , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r260566 - head/sys/dev/virtio/scsi References: <201401121740.s0CHelGk032373@svn.freebsd.org> In-reply-to: <201401121740.s0CHelGk032373@svn.freebsd.org> X-Enigmail-Version: 1.6 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 22:15:18 -0000 This looks like it is uses a two-level set of hierarchical LUNs. Does REPORT_LUNS not work? The new extended LUN support in CAM should be able to handle this kind of thing now without virtio knowing anything about it. -Nathan On 01/12/14 12:40, Bryan Venteicher wrote: > Author: bryanv > Date: Sun Jan 12 17:40:47 2014 > New Revision: 260566 > URL: http://svnweb.freebsd.org/changeset/base/260566 > > Log: > Remove incorrect bit shift when assigning the LUN request field > > This caused duplicate targets appearing on Google Compute Engine > instances. > > PR: kern/185626 > Submitted by: Venkatesh Srinivas > MFC after: 3 days > > Modified: > head/sys/dev/virtio/scsi/virtio_scsi.c > > Modified: head/sys/dev/virtio/scsi/virtio_scsi.c > ============================================================================== > --- head/sys/dev/virtio/scsi/virtio_scsi.c Sun Jan 12 15:35:03 2014 (r260565) > +++ head/sys/dev/virtio/scsi/virtio_scsi.c Sun Jan 12 17:40:47 2014 (r260566) > @@ -1539,7 +1539,7 @@ vtscsi_set_request_lun(struct ccb_hdr *c > lun[0] = 1; > lun[1] = ccbh->target_id; > lun[2] = 0x40 | ((ccbh->target_lun >> 8) & 0x3F); > - lun[3] = (ccbh->target_lun >> 8) & 0xFF; > + lun[3] = ccbh->target_lun & 0xFF; > } > > static void From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 22:17:11 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 663BF42C; Sun, 12 Jan 2014 22:17:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 45E5A162C; Sun, 12 Jan 2014 22:17:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CMHBrl039823; Sun, 12 Jan 2014 22:17:11 GMT (envelope-from jmmv@svn.freebsd.org) Received: (from jmmv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CMHAXJ039818; Sun, 12 Jan 2014 22:17:10 GMT (envelope-from jmmv@svn.freebsd.org) Message-Id: <201401122217.s0CMHAXJ039818@svn.freebsd.org> From: Julio Merino Date: Sun, 12 Jan 2014 22:17:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260577 - in head/contrib/atf: . atf-c atf-c++ atf-sh X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 22:17:11 -0000 Author: jmmv Date: Sun Jan 12 22:17:10 2014 New Revision: 260577 URL: http://svnweb.freebsd.org/changeset/base/260577 Log: Add atf pkg-config files from the vendor branch. These were originally deleted by mistake (because they were not yet being installed) and are actually necessary. This should have been part of r260576 but I missed committing this directory. MFC after: 5 days Added: head/contrib/atf/atf-c++/atf-c++.pc.in - copied unchanged from r260517, vendor/atf/dist/atf-c++/atf-c++.pc.in head/contrib/atf/atf-c/atf-c.pc.in - copied unchanged from r260517, vendor/atf/dist/atf-c/atf-c.pc.in head/contrib/atf/atf-sh/atf-sh.pc.in - copied unchanged from r260517, vendor/atf/dist/atf-sh/atf-sh.pc.in Modified: head/contrib/atf/FREEBSD-Xlist Modified: head/contrib/atf/FREEBSD-Xlist ============================================================================== --- head/contrib/atf/FREEBSD-Xlist Sun Jan 12 21:56:26 2014 (r260576) +++ head/contrib/atf/FREEBSD-Xlist Sun Jan 12 22:17:10 2014 (r260577) @@ -8,7 +8,6 @@ Makefile* aclocal.m4 admin/ atf-*/atf-*.m4 -atf-*/atf-*.pc.in atf-config/ atf-report/ atf-run/ Copied: head/contrib/atf/atf-c++/atf-c++.pc.in (from r260517, vendor/atf/dist/atf-c++/atf-c++.pc.in) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/atf/atf-c++/atf-c++.pc.in Sun Jan 12 22:17:10 2014 (r260577, copy of r260517, vendor/atf/dist/atf-c++/atf-c++.pc.in) @@ -0,0 +1,11 @@ +# ATF pkg-config file + +cxx=__CXX__ +includedir=__INCLUDEDIR__ +libdir=__LIBDIR__ + +Name: atf-c++ +Description: Automated Testing Framework (C++ binding) +Version: __ATF_VERSION__ +Cflags: -I${includedir} +Libs: -L${libdir} -latf-c++ -latf-c Copied: head/contrib/atf/atf-c/atf-c.pc.in (from r260517, vendor/atf/dist/atf-c/atf-c.pc.in) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/atf/atf-c/atf-c.pc.in Sun Jan 12 22:17:10 2014 (r260577, copy of r260517, vendor/atf/dist/atf-c/atf-c.pc.in) @@ -0,0 +1,11 @@ +# ATF pkg-config file + +cc=__CC__ +includedir=__INCLUDEDIR__ +libdir=__LIBDIR__ + +Name: atf-c +Description: Automated Testing Framework (C binding) +Version: __ATF_VERSION__ +Cflags: -I${includedir} +Libs: -L${libdir} -latf-c Copied: head/contrib/atf/atf-sh/atf-sh.pc.in (from r260517, vendor/atf/dist/atf-sh/atf-sh.pc.in) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/atf/atf-sh/atf-sh.pc.in Sun Jan 12 22:17:10 2014 (r260577, copy of r260517, vendor/atf/dist/atf-sh/atf-sh.pc.in) @@ -0,0 +1,8 @@ +# ATF pkg-config file + +exec_prefix=__EXEC_PREFIX__ +interpreter=${exec_prefix}/bin/atf-sh + +Name: atf-sh +Description: Automated Testing Framework (POSIX shell binding) +Version: __ATF_VERSION__ From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 22:17:57 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 236BF56A; Sun, 12 Jan 2014 22:17:57 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0F51B1633; Sun, 12 Jan 2014 22:17:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CMHuDn039991; Sun, 12 Jan 2014 22:17:56 GMT (envelope-from jmmv@svn.freebsd.org) Received: (from jmmv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CMHucD039990; Sun, 12 Jan 2014 22:17:56 GMT (envelope-from jmmv@svn.freebsd.org) Message-Id: <201401122217.s0CMHucD039990@svn.freebsd.org> From: Julio Merino Date: Sun, 12 Jan 2014 22:17:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260578 - stable/10/contrib/atf/atf-c++/detail X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 22:17:57 -0000 Author: jmmv Date: Sun Jan 12 22:17:56 2014 New Revision: 260578 URL: http://svnweb.freebsd.org/changeset/base/260578 Log: MFC r260491: Use .cpp as the extension for temporary C++ files. Modified: stable/10/contrib/atf/atf-c++/detail/test_helpers.cpp Directory Properties: stable/10/ (props changed) Modified: stable/10/contrib/atf/atf-c++/detail/test_helpers.cpp ============================================================================== --- stable/10/contrib/atf/atf-c++/detail/test_helpers.cpp Sun Jan 12 22:17:10 2014 (r260577) +++ stable/10/contrib/atf/atf-c++/detail/test_helpers.cpp Sun Jan 12 22:17:56 2014 (r260578) @@ -67,14 +67,14 @@ build_check_cxx_o(const atf::tests::tc& void header_check(const char *hdrname) { - std::ofstream srcfile("test.c"); + std::ofstream srcfile("test.cpp"); ATF_REQUIRE(srcfile); srcfile << "#include <" << hdrname << ">\n"; srcfile.close(); const std::string failmsg = std::string("Header check failed; ") + hdrname + " is not self-contained"; - build_check_cxx_o_aux(atf::fs::path("test.c"), failmsg.c_str(), true); + build_check_cxx_o_aux(atf::fs::path("test.cpp"), failmsg.c_str(), true); } atf::fs::path From owner-svn-src-all@FreeBSD.ORG Sun Jan 12 23:17:57 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 16D93203; Sun, 12 Jan 2014 23:17:57 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DCE9619F8; Sun, 12 Jan 2014 23:17:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0CNHulA063329; Sun, 12 Jan 2014 23:17:56 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0CNHufM063327; Sun, 12 Jan 2014 23:17:56 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201401122317.s0CNHufM063327@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 12 Jan 2014 23:17:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260579 - stable/10/usr.bin/find X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 23:17:57 -0000 Author: jilles Date: Sun Jan 12 23:17:56 2014 New Revision: 260579 URL: http://svnweb.freebsd.org/changeset/base/260579 Log: MFC r260336,r260355: find: Fix -lname and -ilname: * Take into account that readlink() does not add a terminating '\0'. * Do not match symlinks that are followed because of -H or -L. This is explicitly documented in GNU find's info file and is like -type l. * Fix matching symlinks in subdirectories when fts changes directories. As before, symlinks of length PATH_MAX or more are not handled correctly. (These can only be created on other operating systems.) Also, avoid some readlink() calls on files that are obviously not symlinks (because of fts(3) restrictions, not all of them). PR: bin/185393 Submitted by: Ben Reser (parts, original version) Modified: stable/10/usr.bin/find/find.1 stable/10/usr.bin/find/function.c Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.bin/find/find.1 ============================================================================== --- stable/10/usr.bin/find/find.1 Sun Jan 12 22:17:56 2014 (r260578) +++ stable/10/usr.bin/find/find.1 Sun Jan 12 23:17:56 2014 (r260579) @@ -31,7 +31,7 @@ .\" @(#)find.1 8.7 (Berkeley) 5/9/95 .\" $FreeBSD$ .\" -.Dd November 18, 2012 +.Dd January 5, 2014 .Dt FIND 1 .Os .Sh NAME @@ -520,6 +520,8 @@ Like .Ic -name , but the contents of the symbolic link are matched instead of the file name. +Note that this only matches broken symbolic links +if symbolic links are being followed. This is a GNU find extension. .It Ic -ls This primary always evaluates to true. Modified: stable/10/usr.bin/find/function.c ============================================================================== --- stable/10/usr.bin/find/function.c Sun Jan 12 22:17:56 2014 (r260578) +++ stable/10/usr.bin/find/function.c Sun Jan 12 23:17:56 2014 (r260579) @@ -1122,11 +1122,24 @@ f_name(PLAN *plan, FTSENT *entry) { char fn[PATH_MAX]; const char *name; + ssize_t len; if (plan->flags & F_LINK) { - name = fn; - if (readlink(entry->fts_path, fn, sizeof(fn)) == -1) + /* + * The below test both avoids obviously useless readlink() + * calls and ensures that symlinks with existent target do + * not match if symlinks are being followed. + * Assumption: fts will stat all symlinks that are to be + * followed and will return the stat information. + */ + if (entry->fts_info != FTS_NSOK && entry->fts_info != FTS_SL && + entry->fts_info != FTS_SLNONE) + return 0; + len = readlink(entry->fts_accpath, fn, sizeof(fn) - 1); + if (len == -1) return 0; + fn[len] = '\0'; + name = fn; } else name = entry->fts_name; return !fnmatch(plan->c_data, name, From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 00:22:38 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 47AE0D99; Mon, 13 Jan 2014 00:22:38 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1A6761EFF; Mon, 13 Jan 2014 00:22:38 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0D0MbSY090000; Mon, 13 Jan 2014 00:22:37 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0D0MbaR089999; Mon, 13 Jan 2014 00:22:37 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401130022.s0D0MbaR089999@svn.freebsd.org> From: Peter Wemm Date: Mon, 13 Jan 2014 00:22:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org Subject: svn commit: r260580 - cvs2svn X-SVN-Group: defaults MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 00:22:38 -0000 Author: peter Date: Mon Jan 13 00:22:37 2014 New Revision: 260580 URL: http://svnweb.freebsd.org/changeset/base/260580 Log: Remove these conversion relics. Most of the real import branches were remapped to the vendor/ area and this is mostly noise or relics from easy-import.pl. Prodded by: rpaulo Deleted: cvs2svn/ From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 01:03:20 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DBCBA3B4; Mon, 13 Jan 2014 01:03:19 +0000 (UTC) Received: from mail-ig0-x22a.google.com (mail-ig0-x22a.google.com [IPv6:2607:f8b0:4001:c05::22a]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 805FB1164; Mon, 13 Jan 2014 01:03:19 +0000 (UTC) Received: by mail-ig0-f170.google.com with SMTP id m12so3177430iga.1 for ; Sun, 12 Jan 2014 17:03:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; bh=gSOSTt3WeE+FSwuH+GJE5CmkiXzH8Z/7juITgc8q2Rc=; b=zFpxkgGSc5IpuOg2p4+HNt3qEkln0u5mn7uAi1vHNZYarJzv/1efgkWxVaopyFY8M3 iJPLD4Dc1gqrJUYgDk5Br9YU94UQWPFuc8crL9Zna8UhhQVpt1VUPsudANN5yTjF9OBq MFrD0LULll0TPm6HN2RXMZQKxBYzKu8F66M/JweBPoZ6dBpWQ5vZqUhK3UuRtqLXirqZ aCc4dtFNL69s4t6HUZylxtINh32xKOMnfIkI8nNZ9bA34kj1wxrOTU/g1UdaBBX7eXoK 1GOrO8kHpHBc5jlVar0oRAAr7COVJSHos27oGt68qmFWPEuqZyWBan+LM/tq6d+3PsWj 1RDw== X-Received: by 10.43.158.72 with SMTP id lt8mr18632908icc.33.1389574998867; Sun, 12 Jan 2014 17:03:18 -0800 (PST) MIME-Version: 1.0 Sender: mr.kodiak@gmail.com Received: by 10.64.6.134 with HTTP; Sun, 12 Jan 2014 17:02:48 -0800 (PST) In-Reply-To: <52D313F1.9010005@freebsd.org> References: <201401121740.s0CHelGk032373@svn.freebsd.org> <52D313F1.9010005@freebsd.org> From: Bryan Venteicher Date: Sun, 12 Jan 2014 19:02:48 -0600 X-Google-Sender-Auth: k0xBZyVysuStXagQngNOb1b2uJ4 Message-ID: Subject: Re: svn commit: r260566 - head/sys/dev/virtio/scsi To: Nathan Whitehorn Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.17 Cc: svn-src-head@freebsd.org, Bryan Venteicher , svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 01:03:20 -0000 On Sun, Jan 12, 2014 at 4:15 PM, Nathan Whitehorn wrote: > This looks like it is uses a two-level set of hierarchical LUNs. Does > REPORT_LUNS not work? The new extended LUN support in CAM should be able > to handle this kind of thing now without virtio knowing anything about it. > Details from the PR seem to suggest the Google Compute Engine hypervisor (I'd guess it is some QEMU fork) doesn't support REPORT_LUNS. -Nathan > > On 01/12/14 12:40, Bryan Venteicher wrote: > > Author: bryanv > > Date: Sun Jan 12 17:40:47 2014 > > New Revision: 260566 > > URL: http://svnweb.freebsd.org/changeset/base/260566 > > > > Log: > > Remove incorrect bit shift when assigning the LUN request field > > > > This caused duplicate targets appearing on Google Compute Engine > > instances. > > > > PR: kern/185626 > > Submitted by: Venkatesh Srinivas > > MFC after: 3 days > > > > Modified: > > head/sys/dev/virtio/scsi/virtio_scsi.c > > > > Modified: head/sys/dev/virtio/scsi/virtio_scsi.c > > > ============================================================================== > > --- head/sys/dev/virtio/scsi/virtio_scsi.c Sun Jan 12 15:35:03 2014 > (r260565) > > +++ head/sys/dev/virtio/scsi/virtio_scsi.c Sun Jan 12 17:40:47 2014 > (r260566) > > @@ -1539,7 +1539,7 @@ vtscsi_set_request_lun(struct ccb_hdr *c > > lun[0] = 1; > > lun[1] = ccbh->target_id; > > lun[2] = 0x40 | ((ccbh->target_lun >> 8) & 0x3F); > > - lun[3] = (ccbh->target_lun >> 8) & 0xFF; > > + lun[3] = ccbh->target_lun & 0xFF; > > } > > > > static void > > From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 03:27:20 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E043E8DD; Mon, 13 Jan 2014 03:27:20 +0000 (UTC) Received: from felyko.com (felyko.com [IPv6:2607:f2f8:a528::3:1337:ca7]) by mx1.freebsd.org (Postfix) with ESMTP id C8B211CBF; Mon, 13 Jan 2014 03:27:20 +0000 (UTC) Received: from [10.0.1.3] (c-24-6-115-18.hsd1.ca.comcast.net [24.6.115.18]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by felyko.com (Postfix) with ESMTPSA id 022523983B; Sun, 12 Jan 2014 19:27:19 -0800 (PST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 7.1 \(1827\)) Subject: Re: svn commit: r260463 - head/sys/dev/usb/wlan From: Rui Paulo In-Reply-To: <201401090148.s091mYZx073572@svn.freebsd.org> Date: Sun, 12 Jan 2014 19:27:18 -0800 Content-Transfer-Encoding: 7bit Message-Id: References: <201401090148.s091mYZx073572@svn.freebsd.org> To: Kevin Lo X-Mailer: Apple Mail (2.1827) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 03:27:21 -0000 On 8 Jan 2014, at 17:48, Kevin Lo wrote: > Replace deprecated M_DONTWAIT with M_NOWAIT. Argh, just remove M_DONTWAIT already! -- Rui Paulo From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 03:47:30 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1772DB2C; Mon, 13 Jan 2014 03:47:30 +0000 (UTC) Received: from smtpauth3.wiscmail.wisc.edu (wmauth3.doit.wisc.edu [144.92.197.226]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D66141E0E; Mon, 13 Jan 2014 03:47:29 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII Received: from avs-daemon.smtpauth3.wiscmail.wisc.edu by smtpauth3.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) id <0MZB00G00LKZU400@smtpauth3.wiscmail.wisc.edu>; Sun, 12 Jan 2014 21:47:22 -0600 (CST) X-Spam-PmxInfo: Server=avs-3, Version=6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.1.13.33915, SenderIP=0.0.0.0 X-Spam-Report: AuthenticatedSender=yes, SenderIP=0.0.0.0 Received: from wanderer.tachypleus.net (pool-72-66-107-173.washdc.fios.verizon.net [72.66.107.173]) by smtpauth3.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) with ESMTPSA id <0MZB008QJMIUO120@smtpauth3.wiscmail.wisc.edu>; Sun, 12 Jan 2014 21:47:22 -0600 (CST) Message-id: <52D361C5.2030507@freebsd.org> Date: Sun, 12 Jan 2014 22:47:17 -0500 From: Nathan Whitehorn User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 To: Bryan Venteicher Subject: Re: svn commit: r260566 - head/sys/dev/virtio/scsi References: <201401121740.s0CHelGk032373@svn.freebsd.org> <52D313F1.9010005@freebsd.org> In-reply-to: X-Enigmail-Version: 1.6 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 03:47:30 -0000 On 01/12/14 20:02, Bryan Venteicher wrote: > > > On Sun, Jan 12, 2014 at 4:15 PM, Nathan Whitehorn > > wrote: > > This looks like it is uses a two-level set of hierarchical LUNs. Does > REPORT_LUNS not work? The new extended LUN support in CAM should > be able > to handle this kind of thing now without virtio knowing anything > about it. > > > > Details from the PR seem to suggest the Google Compute Engine > hypervisor (I'd guess it is some QEMU fork) doesn't support REPORT_LUNS. > Indeed. It's unfortunate their implementation is broken, but I guess we have to work around it. -Nathan From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 04:41:09 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E5F74161; Mon, 13 Jan 2014 04:41:09 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D1A711156; Mon, 13 Jan 2014 04:41:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0D4f9jh087738; Mon, 13 Jan 2014 04:41:09 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0D4f9Tb087732; Mon, 13 Jan 2014 04:41:09 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201401130441.s0D4f9Tb087732@svn.freebsd.org> From: Bryan Venteicher Date: Mon, 13 Jan 2014 04:41:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260581 - in head: share/man/man9 sys/kern sys/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 04:41:10 -0000 Author: bryanv Date: Mon Jan 13 04:41:08 2014 New Revision: 260581 URL: http://svnweb.freebsd.org/changeset/base/260581 Log: Add sglist_append_bio(9) to append a struct bio's data to a sglist Reviewed by: jhb, kib (long ago) Modified: head/share/man/man9/Makefile head/share/man/man9/sglist.9 head/sys/kern/subr_sglist.c head/sys/sys/sglist.h Modified: head/share/man/man9/Makefile ============================================================================== --- head/share/man/man9/Makefile Mon Jan 13 00:22:37 2014 (r260580) +++ head/share/man/man9/Makefile Mon Jan 13 04:41:08 2014 (r260581) @@ -1185,6 +1185,7 @@ MLINKS+=sf_buf.9 sf_buf_alloc.9 \ sf_buf.9 sf_buf_page.9 MLINKS+=sglist.9 sglist_alloc.9 \ sglist.9 sglist_append.9 \ + sglist.9 sglist_append_bio.9 \ sglist.9 sglist_append_mbuf.9 \ sglist.9 sglist_append_phys.9 \ sglist.9 sglist_append_uio.9 \ Modified: head/share/man/man9/sglist.9 ============================================================================== --- head/share/man/man9/sglist.9 Mon Jan 13 00:22:37 2014 (r260580) +++ head/share/man/man9/sglist.9 Mon Jan 13 04:41:08 2014 (r260581) @@ -26,13 +26,14 @@ .\" .\" $FreeBSD$ .\" -.Dd May 15, 2009 +.Dd January 12, 2014 .Dt SGLIST 9 .Os .Sh NAME .Nm sglist , .Nm sglist_alloc , .Nm sglist_append , +.Nm sglist_append_bio , .Nm sglist_append_mbuf , .Nm sglist_append_phys , .Nm sglist_append_uio , @@ -58,6 +59,8 @@ .Ft int .Fn sglist_append "struct sglist *sg" "void *buf" "size_t len" .Ft int +.Fn sglist_append_bio "struct sglist *sg" "struct bio *bp" +.Ft int .Fn sglist_append_mbuf "struct sglist *sg" "struct mbuf *m" .Ft int .Fn sglist_append_phys "struct sglist *sg" "vm_paddr_t paddr" "size_t len" @@ -206,6 +209,13 @@ and is bytes long. .Pp The +.Nm sglist_append_bio +function appends the physical address ranges described by a single bio +.Fa bp +to the scatter/gather list +.Fa sg . +.Pp +The .Nm sglist_append_mbuf function appends the physical address ranges described by an entire mbuf chain @@ -499,6 +509,7 @@ list in to describe the requested physical address ranges. .El .Sh SEE ALSO +.Xr g_bio 9 , .Xr malloc 9 , .Xr mbuf 9 , .Xr uio 9 Modified: head/sys/kern/subr_sglist.c ============================================================================== --- head/sys/kern/subr_sglist.c Mon Jan 13 00:22:37 2014 (r260580) +++ head/sys/kern/subr_sglist.c Mon Jan 13 04:41:08 2014 (r260581) @@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -40,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include @@ -239,6 +241,44 @@ sglist_append(struct sglist *sg, void *b } /* + * Append the segments to describe a bio's data to a scatter/gather list. + * If there are insufficient segments, then this fails with EFBIG. + * + * NOTE: This function expects bio_bcount to be initialized. + */ +int +sglist_append_bio(struct sglist *sg, struct bio *bp) +{ + struct sgsave save; + vm_paddr_t paddr; + size_t len, tlen; + int error, i, ma_offs; + + if ((bp->bio_flags & BIO_UNMAPPED) == 0) { + error = sglist_append(sg, bp->bio_data, bp->bio_bcount); + return (error); + } + + if (sg->sg_maxseg == 0) + return (EINVAL); + + SGLIST_SAVE(sg, save); + tlen = bp->bio_bcount; + ma_offs = bp->bio_ma_offset; + for (i = 0; tlen > 0; i++, tlen -= len) { + len = min(PAGE_SIZE - ma_offs, tlen); + paddr = VM_PAGE_TO_PHYS(bp->bio_ma[i]) + ma_offs; + error = sglist_append_phys(sg, paddr, len); + if (error) { + SGLIST_RESTORE(sg, save); + return (error); + } + ma_offs = 0; + } + return (0); +} + +/* * Append a single physical address range to a scatter/gather list. * If there are insufficient segments, then this fails with EFBIG. */ Modified: head/sys/sys/sglist.h ============================================================================== --- head/sys/sys/sglist.h Mon Jan 13 00:22:37 2014 (r260580) +++ head/sys/sys/sglist.h Mon Jan 13 04:41:08 2014 (r260581) @@ -53,6 +53,7 @@ struct sglist { u_short sg_maxseg; }; +struct bio; struct mbuf; struct uio; @@ -83,6 +84,7 @@ sglist_hold(struct sglist *sg) struct sglist *sglist_alloc(int nsegs, int mflags); int sglist_append(struct sglist *sg, void *buf, size_t len); +int sglist_append_bio(struct sglist *sg, struct bio *bp); int sglist_append_mbuf(struct sglist *sg, struct mbuf *m0); int sglist_append_phys(struct sglist *sg, vm_paddr_t paddr, size_t len); From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 04:43:02 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2F0952B0; Mon, 13 Jan 2014 04:43:02 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1BA971161; Mon, 13 Jan 2014 04:43:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0D4h1Mx090096; Mon, 13 Jan 2014 04:43:01 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0D4h1nS090095; Mon, 13 Jan 2014 04:43:01 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201401130443.s0D4h1nS090095@svn.freebsd.org> From: Bryan Venteicher Date: Mon, 13 Jan 2014 04:43:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260582 - head/sys/dev/virtio/block X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 04:43:02 -0000 Author: bryanv Date: Mon Jan 13 04:43:01 2014 New Revision: 260582 URL: http://svnweb.freebsd.org/changeset/base/260582 Log: Add unmapped IO support to virtio_blk(4) Modified: head/sys/dev/virtio/block/virtio_blk.c Modified: head/sys/dev/virtio/block/virtio_blk.c ============================================================================== --- head/sys/dev/virtio/block/virtio_blk.c Mon Jan 13 04:41:08 2014 (r260581) +++ head/sys/dev/virtio/block/virtio_blk.c Mon Jan 13 04:43:01 2014 (r260582) @@ -726,7 +726,7 @@ vtblk_alloc_disk(struct vtblk_softc *sc, dp->d_name = VTBLK_DISK_NAME; dp->d_unit = device_get_unit(dev); dp->d_drv1 = sc; - dp->d_flags = DISKFLAG_CANFLUSHCACHE; + dp->d_flags = DISKFLAG_CANFLUSHCACHE | DISKFLAG_UNMAPPED_BIO; dp->d_hba_vendor = virtio_get_vendor(dev); dp->d_hba_device = virtio_get_device(dev); dp->d_hba_subvendor = virtio_get_subvendor(dev); @@ -931,10 +931,11 @@ vtblk_execute_request(struct vtblk_softc sglist_append(sg, &req->vbr_hdr, sizeof(struct virtio_blk_outhdr)); if (bp->bio_cmd == BIO_READ || bp->bio_cmd == BIO_WRITE) { - error = sglist_append(sg, bp->bio_data, bp->bio_bcount); - if (error || sg->sg_nseg == sg->sg_maxseg) + error = sglist_append_bio(sg, bp); + if (error || sg->sg_nseg == sg->sg_maxseg) { panic("%s: data buffer too big bio:%p error:%d", __func__, bp, error); + } /* BIO_READ means the host writes into our buffer. */ if (bp->bio_cmd == BIO_READ) From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 04:46:49 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 42F7940D; Mon, 13 Jan 2014 04:46:49 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2EF131170; Mon, 13 Jan 2014 04:46:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0D4knbx090577; Mon, 13 Jan 2014 04:46:49 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0D4knGQ090576; Mon, 13 Jan 2014 04:46:49 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201401130446.s0D4knGQ090576@svn.freebsd.org> From: Bryan Venteicher Date: Mon, 13 Jan 2014 04:46:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260583 - head/sys/dev/virtio/scsi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 04:46:49 -0000 Author: bryanv Date: Mon Jan 13 04:46:48 2014 New Revision: 260583 URL: http://svnweb.freebsd.org/changeset/base/260583 Log: Add unmapped IO support to virtio_scsi(4) Modified: head/sys/dev/virtio/scsi/virtio_scsi.c Modified: head/sys/dev/virtio/scsi/virtio_scsi.c ============================================================================== --- head/sys/dev/virtio/scsi/virtio_scsi.c Mon Jan 13 04:43:01 2014 (r260582) +++ head/sys/dev/virtio/scsi/virtio_scsi.c Mon Jan 13 04:46:48 2014 (r260583) @@ -878,7 +878,7 @@ vtscsi_cam_path_inquiry(struct vtscsi_so cpi->version_num = 1; cpi->hba_inquiry = PI_TAG_ABLE; cpi->target_sprt = 0; - cpi->hba_misc = PIM_SEQSCAN; + cpi->hba_misc = PIM_SEQSCAN | PIM_UNMAPPED; if (vtscsi_bus_reset_disable != 0) cpi->hba_misc |= PIM_NOBUSRESET; cpi->hba_eng_cnt = 0; @@ -946,6 +946,9 @@ vtscsi_sg_append_scsi_buf(struct vtscsi_ (vm_paddr_t) dseg->ds_addr, dseg->ds_len); } break; + case CAM_DATA_BIO: + error = sglist_append_bio(sg, (struct bio *) csio->data_ptr); + break; default: error = EINVAL; break; From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 08:03:49 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 49B906A9; Mon, 13 Jan 2014 08:03:49 +0000 (UTC) Received: from cell.glebius.int.ru (glebius.int.ru [81.19.69.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C19841EEC; Mon, 13 Jan 2014 08:03:47 +0000 (UTC) Received: from cell.glebius.int.ru (localhost [127.0.0.1]) by cell.glebius.int.ru (8.14.7/8.14.7) with ESMTP id s0D83ekD017488 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Mon, 13 Jan 2014 12:03:40 +0400 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.7/8.14.7/Submit) id s0D83edf017487; Mon, 13 Jan 2014 12:03:40 +0400 (MSK) (envelope-from glebius@FreeBSD.org) X-Authentication-Warning: cell.glebius.int.ru: glebius set sender to glebius@FreeBSD.org using -f Date: Mon, 13 Jan 2014 12:03:40 +0400 From: Gleb Smirnoff To: Rui Paulo Subject: Re: svn commit: r260463 - head/sys/dev/usb/wlan Message-ID: <20140113080340.GG8472@FreeBSD.org> References: <201401090148.s091mYZx073572@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.22 (2013-10-16) Cc: svn-src-head@freebsd.org, Kevin Lo , svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 08:03:49 -0000 On Sun, Jan 12, 2014 at 07:27:18PM -0800, Rui Paulo wrote: R> > Replace deprecated M_DONTWAIT with M_NOWAIT. R> R> Argh, just remove M_DONTWAIT already! Yes, I'd like to do that in head, if no objections arise during a week. -- Totus tuus, Glebius. From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 10:47:27 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 09B5BF6B; Mon, 13 Jan 2014 10:47:27 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E9BCC1F53; Mon, 13 Jan 2014 10:47:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DAlQFu025359; Mon, 13 Jan 2014 10:47:26 GMT (envelope-from jmmv@svn.freebsd.org) Received: (from jmmv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DAlQXF025358; Mon, 13 Jan 2014 10:47:26 GMT (envelope-from jmmv@svn.freebsd.org) Message-Id: <201401131047.s0DAlQXF025358@svn.freebsd.org> From: Julio Merino Date: Mon, 13 Jan 2014 10:47:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260584 - head/usr.bin/atf/atf-sh/tests X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 10:47:27 -0000 Author: jmmv Date: Mon Jan 13 10:47:26 2014 New Revision: 260584 URL: http://svnweb.freebsd.org/changeset/base/260584 Log: Prevent misc_helpers from running as a test. Do this by generating misc_helpers explicitly, without using the ATF_TESTS_SH functionality. While this script is technically an atf-sh test program, it is not intended to be run as a test and therefore it mustn't end up in the Kyuafile. Using ATF_TESTS_SH means that misc_helpers ended up registered in the Kyuafile and then failed to run as a test. The alternative would be to supply an explicit Kyuafile from this directory that lists the known test files, but doing it the way described above will be easier to maintain. MFC after: 3 days Modified: head/usr.bin/atf/atf-sh/tests/Makefile Modified: head/usr.bin/atf/atf-sh/tests/Makefile ============================================================================== --- head/usr.bin/atf/atf-sh/tests/Makefile Mon Jan 13 04:46:48 2014 (r260583) +++ head/usr.bin/atf/atf-sh/tests/Makefile Mon Jan 13 10:47:26 2014 (r260584) @@ -10,9 +10,17 @@ ATF= ${.CURDIR:H:H:H:H}/contrib/atf ATF_TESTS_SH+= atf_check_test ATF_TESTS_SH+= config_test ATF_TESTS_SH+= integration_test -ATF_TESTS_SH+= misc_helpers ATF_TESTS_SH+= normalize_test ATF_TESTS_SH+= tc_test ATF_TESTS_SH+= tp_test +SCRIPTS+= misc_helpers +SCRIPTSDIR_misc_helpers=${TESTSDIR} +CLEANFILES+= misc_helpers misc_helpers.tmp +misc_helpers: misc_helpers.sh + echo '#! /usr/bin/atf-sh' >${.TARGET}.tmp + cat ${.ALLSRC} >>${.TARGET}.tmp + chmod +x ${.TARGET}.tmp + mv ${.TARGET}.tmp ${.TARGET} + .include From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 12:17:42 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2197070; Mon, 13 Jan 2014 12:17:42 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0D6E6181D; Mon, 13 Jan 2014 12:17:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DCHfw5060496; Mon, 13 Jan 2014 12:17:41 GMT (envelope-from jmmv@svn.freebsd.org) Received: (from jmmv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DCHflD060494; Mon, 13 Jan 2014 12:17:41 GMT (envelope-from jmmv@svn.freebsd.org) Message-Id: <201401131217.s0DCHflD060494@svn.freebsd.org> From: Julio Merino Date: Mon, 13 Jan 2014 12:17:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260586 - head/bin/pax/tests X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 12:17:42 -0000 Author: jmmv Date: Mon Jan 13 12:17:41 2014 New Revision: 260586 URL: http://svnweb.freebsd.org/changeset/base/260586 Log: Mark the bin/pax tests as requiring perl. The effect of this is that the test program is marked as skipped when perl is missing, instead of marking it as broken due to an execution failure. MFC after: 3 days Added: head/bin/pax/tests/Kyuafile (contents, props changed) Modified: head/bin/pax/tests/Makefile Added: head/bin/pax/tests/Kyuafile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/bin/pax/tests/Kyuafile Mon Jan 13 12:17:41 2014 (r260586) @@ -0,0 +1,7 @@ +-- $FreeBSD$ + +syntax(2) + +test_suite("FreeBSD") + +tap_test_program{name="legacy_test", required_programs="/usr/bin/perl"} Modified: head/bin/pax/tests/Makefile ============================================================================== --- head/bin/pax/tests/Makefile Mon Jan 13 11:51:12 2014 (r260585) +++ head/bin/pax/tests/Makefile Mon Jan 13 12:17:41 2014 (r260586) @@ -3,6 +3,7 @@ .include TESTSDIR= ${TESTSBASE}/bin/pax +KYUAFILE= yes TAP_TESTS_SH= legacy_test From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 13:27:01 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6987BF61; Mon, 13 Jan 2014 13:27:01 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 49A5D1F87; Mon, 13 Jan 2014 13:27:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DDR1Yk086746; Mon, 13 Jan 2014 13:27:01 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DDR0Nn086741; Mon, 13 Jan 2014 13:27:00 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401131327.s0DDR0Nn086741@svn.freebsd.org> From: Hans Petter Selasky Date: Mon, 13 Jan 2014 13:27:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260587 - head/tools/tools/usbtest X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 13:27:01 -0000 Author: hselasky Date: Mon Jan 13 13:27:00 2014 New Revision: 260587 URL: http://svnweb.freebsd.org/changeset/base/260587 Log: Add new testcase for USB mass storage. Modified: head/tools/tools/usbtest/usb_msc_test.c head/tools/tools/usbtest/usb_msc_test.h Modified: head/tools/tools/usbtest/usb_msc_test.c ============================================================================== --- head/tools/tools/usbtest/usb_msc_test.c Mon Jan 13 12:17:41 2014 (r260586) +++ head/tools/tools/usbtest/usb_msc_test.c Mon Jan 13 13:27:00 2014 (r260587) @@ -255,6 +255,35 @@ do_msc_cmd(uint8_t *pcmd, uint8_t cmdlen } } +static void +do_msc_shorter_cmd(uint8_t lun) +{ + uint8_t buffer[sizeof(umass_bbb_cbw_t)]; + int actlen; + int error; + int x; + + memset(buffer, 0, sizeof(buffer)); + + for (x = 0; x != (sizeof(buffer) - 1); x++) { + error = libusb20_tr_bulk_intr_sync(xfer_out, + buffer, x, &actlen, 250); + + printf("Sent short %d of %d bytes wrapper block, " + "status = %d\n", x, (int)(sizeof(buffer) - 1), + error); + + do_msc_reset(lun); + + if (error != 0) { + printf("ERROR: Too short command wrapper " + "was not accepted\n"); + stats.xfer_error++; + break; + } + } +} + static uint8_t do_read_10(uint32_t lba, uint32_t len, void *buf, uint8_t lun) { @@ -564,6 +593,11 @@ usb_msc_test(struct usb_msc_params *p) if (capacity_bs != 512) printf("INFO: Blocksize is not 512 bytes\n"); + if (p->try_shorter_wrapper_block) { + printf("Trying too short command wrapper:\n"); + do_msc_shorter_cmd(lun); + } + if (p->try_invalid_scsi_command) { int status; @@ -1195,6 +1229,7 @@ show_host_msc_test(uint8_t level, uint16 "14) Toggle try aborted write transfer: <%s>\n" "15) Toggle request sense on error: <%s>\n" "16) Toggle try all LUN: <%s>\n" + "17) Toggle try too short wrapper block: <%s>\n" "20) Reset parameters\n" "30) Start test (VID=0x%04x, PID=0x%04x)\n" "40) Select another device\n" @@ -1215,6 +1250,7 @@ show_host_msc_test(uint8_t level, uint16 (params.try_abort_data_write ? "YES" : "NO"), (params.try_sense_on_error ? "YES" : "NO"), (params.try_all_lun ? "YES" : "NO"), + (params.try_shorter_wrapper_block ? "YES" : "NO"), vid, pid); switch (retval) { case 0: @@ -1274,6 +1310,9 @@ show_host_msc_test(uint8_t level, uint16 case 16: params.try_all_lun ^= 1; break; + case 17: + params.try_shorter_wrapper_block ^= 1; + break; case 20: set_defaults(¶ms); break; Modified: head/tools/tools/usbtest/usb_msc_test.h ============================================================================== --- head/tools/tools/usbtest/usb_msc_test.h Mon Jan 13 12:17:41 2014 (r260586) +++ head/tools/tools/usbtest/usb_msc_test.h Mon Jan 13 13:27:00 2014 (r260587) @@ -109,6 +109,7 @@ struct usb_msc_params { uint8_t try_invalid_scsi_command; uint8_t try_invalid_wrapper_block; uint8_t try_invalid_max_packet_size; + uint8_t try_shorter_wrapper_block; uint8_t try_last_lba; uint8_t try_abort_data_write; uint8_t try_sense_on_error; From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 13:59:35 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AE2394BA; Mon, 13 Jan 2014 13:59:35 +0000 (UTC) Received: from mail-wi0-x22a.google.com (mail-wi0-x22a.google.com [IPv6:2a00:1450:400c:c05::22a]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C709211AA; Mon, 13 Jan 2014 13:59:34 +0000 (UTC) Received: by mail-wi0-f170.google.com with SMTP id hq4so3062243wib.5 for ; Mon, 13 Jan 2014 05:59:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=0SdArSLie1nYYVnO1d71xTy9Lu4a8oZwIUhRYv4KPS0=; b=nXBbFfgYt7kx3VSSOcYI/S4yoMY3FdWnFnIjzZF0xJKQ0cJ4+qG/YAo+tGhRp1Hi66 O8hLztgHy5YOCYkGsSs99PclediYKzzrqu+Dcp4Py5fQzMCD+Js6pXsSImKatUtYiYFu 5w5G73Eaz7G7VmjSGfDypqy5PjZgbcdnHoErSf7iA0sOVP6oOlDnYZa/EdSU4yx2/PQg Mgilzdt4JGVi6lr4mfwbOTTRtP9FP3I0Hkhe+l2a1SBEq3X5M1sJMpQa6Iw/eDmh9end 8kkUoysqEcxoxsEet0ZUyTjk/hVK3nHwdwOqqDBfmP4/iTZPRl/pnq+PIp3tt9Idq05Z tOPQ== X-Received: by 10.180.212.98 with SMTP id nj2mr15660930wic.52.1389621573032; Mon, 13 Jan 2014 05:59:33 -0800 (PST) Received: from ithaqua.etoilebsd.net (ithaqua.etoilebsd.net. [37.59.37.188]) by mx.google.com with ESMTPSA id cy10sm11548795wjb.6.2014.01.13.05.59.31 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Mon, 13 Jan 2014 05:59:32 -0800 (PST) Sender: Baptiste Daroussin Date: Mon, 13 Jan 2014 14:59:30 +0100 From: Baptiste Daroussin To: Julio Merino Subject: Re: svn commit: r260586 - head/bin/pax/tests Message-ID: <20140113135930.GR97375@ithaqua.etoilebsd.net> References: <201401131217.s0DCHflD060494@svn.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="CPn8Wy5ME997YUMW" Content-Disposition: inline In-Reply-To: <201401131217.s0DCHflD060494@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 13:59:35 -0000 --CPn8Wy5ME997YUMW Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Jan 13, 2014 at 12:17:41PM +0000, Julio Merino wrote: > Author: jmmv > Date: Mon Jan 13 12:17:41 2014 > New Revision: 260586 > URL: http://svnweb.freebsd.org/changeset/base/260586 >=20 > Log: > Mark the bin/pax tests as requiring perl. > =20 > The effect of this is that the test program is marked as skipped when p= erl > is missing, instead of marking it as broken due to an execution failure. > =20 > MFC after: 3 days >=20 > Added: > head/bin/pax/tests/Kyuafile (contents, props changed) > Modified: > head/bin/pax/tests/Makefile >=20 > Added: head/bin/pax/tests/Kyuafile > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/bin/pax/tests/Kyuafile Mon Jan 13 12:17:41 2014 (r260586) > @@ -0,0 +1,7 @@ > +-- $FreeBSD$ > + > +syntax(2) > + > +test_suite("FreeBSD") > + > +tap_test_program{name=3D"legacy_test", required_programs=3D"/usr/bin/per= l"} Shouldn't that be /usr/local/bin/perl or ${LOCALBASE}/bin/perl, we are tryi= ng hard on ports to remove by default /usr/bin/perl which is a legacy from the removal of perl from base. regards, Bapt --CPn8Wy5ME997YUMW Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.15 (FreeBSD) iEYEARECAAYFAlLT8UIACgkQ8kTtMUmk6Ew9oQCdHwNufQ93ocKq/LPh6tnRBdkf GZkAnjeW8OITn1LUCKjYeN/MQjXdvvPM =eVta -----END PGP SIGNATURE----- --CPn8Wy5ME997YUMW-- From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 14:23:48 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 1033) id 03F73DF6; Mon, 13 Jan 2014 14:23:48 +0000 (UTC) Date: Mon, 13 Jan 2014 14:23:48 +0000 From: Alexey Dokuchaev To: Alexander Motin Subject: Re: svn commit: r260474 - stable/9/sys/x86/cpufreq Message-ID: <20140113142347.GA96299@FreeBSD.org> References: <201401091045.s09AjcFi083701@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201401091045.s09AjcFi083701@svn.freebsd.org> User-Agent: Mutt/1.5.22 (2013-10-16) Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-9@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 14:23:48 -0000 On Thu, Jan 09, 2014 at 10:45:38AM +0000, Alexander Motin wrote: > New Revision: 260474 > URL: http://svnweb.freebsd.org/changeset/base/260474 > > Log: > MFC r259197: > Do not DELAY() for P-state transition unless we want to see the result. > > Intel manual says: "If a transition is already in progress, transition to > a new value will subsequently take effect. Reads of IA32_PERF_CTL determine > the last targeted operating point." So seems it should be fine to just > trigger wanted transition and go. Linux does the same. > > Modified: > stable/9/sys/x86/cpufreq/est.c It looks like stable/8 can also benefit from this commit. Mind making one? ./danfe From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 14:59:47 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0D8786FA for ; Mon, 13 Jan 2014 14:59:47 +0000 (UTC) Received: from mail-wg0-f47.google.com (mail-wg0-f47.google.com [74.125.82.47]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8CEC31696 for ; Mon, 13 Jan 2014 14:59:46 +0000 (UTC) Received: by mail-wg0-f47.google.com with SMTP id m15so3723245wgh.2 for ; Mon, 13 Jan 2014 06:59:44 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:content-type:mime-version:subject:from :in-reply-to:date:cc:content-transfer-encoding:message-id:references :to; bh=gWgRAoyE2qWfSRteMbVtgWYa7WN7Osec6yN8Z8dma+I=; b=aCaQ4C2x6MS3iETjX0MqEsRwTePzPvRAOF8XdumYwpwMKpKvACLiD0HrdGbragVGRZ +zPC6lxxeov0YhU87BOJBtJEthHB/HpcTvkLHYUORngHgvUYHuyUctEmbFl8oQh1q97k 3ABrV5BDviP316ednlHHDZx6TXBvLLDcRAuYVurOjPS8Gkno0CD4IOb9cuNZ/R0KMPZk S+45vaIGTm8N+G9ch6XTI4vsa++oOMWk8p8sY6K3P1YDoD493LpnjHIuPOjRFho7G9qr /fy06NlOxIYnoZdQ6K3wJtZtj5NhRZ2hvChppY1O7SKyQhG3YUDlTkwSGAtxeFdWERbQ +cVA== X-Gm-Message-State: ALoCoQnh7e+RpLEpEKx56/GUpfXd4cY3SNpj68ZFr7AOSs7FWnErKmtmQ+3DWJwgpoWvNiRq6tys X-Received: by 10.194.133.34 with SMTP id oz2mr22284090wjb.14.1389623677278; Mon, 13 Jan 2014 06:34:37 -0800 (PST) Received: from [192.168.1.118] (62.57.0.127.dyn.user.ono.com. [62.57.0.127]) by mx.google.com with ESMTPSA id 5sm3464684wjw.17.2014.01.13.06.34.32 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 13 Jan 2014 06:34:33 -0800 (PST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 7.1 \(1827\)) Subject: Re: svn commit: r260586 - head/bin/pax/tests From: Julio Merino In-Reply-To: <20140113135930.GR97375@ithaqua.etoilebsd.net> Date: Mon, 13 Jan 2014 15:34:31 +0100 Content-Transfer-Encoding: quoted-printable Message-Id: <01D805C2-AB9D-48F5-A972-FC7E801DC21E@meroh.net> References: <201401131217.s0DCHflD060494@svn.freebsd.org> <20140113135930.GR97375@ithaqua.etoilebsd.net> To: Baptiste Daroussin X-Mailer: Apple Mail (2.1827) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, Julio Merino , src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 14:59:47 -0000 On Jan 13, 2014, at 14:59, Baptiste Daroussin wrote: > On Mon, Jan 13, 2014 at 12:17:41PM +0000, Julio Merino wrote: >> +tap_test_program{name=3D"legacy_test", = required_programs=3D"/usr/bin/perl"} >=20 > Shouldn't that be /usr/local/bin/perl or ${LOCALBASE}/bin/perl, we are = trying > hard on ports to remove by default /usr/bin/perl which is a legacy = from the > removal of perl from base. Only if legacy_test.sh is also modified to use /usr/local/bin/perl. (I = don't think using LOCALBASE is possible given that it's not accessible = from share/mk/.) If it's the right thing to do, I can change it.= From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 15:06:04 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 53EF78A5; Mon, 13 Jan 2014 15:06:04 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3F4841781; Mon, 13 Jan 2014 15:06:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DF64IA024948; Mon, 13 Jan 2014 15:06:04 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DF633w024946; Mon, 13 Jan 2014 15:06:03 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401131506.s0DF633w024946@svn.freebsd.org> From: Hans Petter Selasky Date: Mon, 13 Jan 2014 15:06:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260588 - head/sys/dev/usb/controller X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 15:06:04 -0000 Author: hselasky Date: Mon Jan 13 15:06:03 2014 New Revision: 260588 URL: http://svnweb.freebsd.org/changeset/base/260588 Log: Separate I/O errors from reception of STALL PID. MFC after: 1 week Modified: head/sys/dev/usb/controller/ehci.c head/sys/dev/usb/controller/uhci.c Modified: head/sys/dev/usb/controller/ehci.c ============================================================================== --- head/sys/dev/usb/controller/ehci.c Mon Jan 13 13:27:00 2014 (r260587) +++ head/sys/dev/usb/controller/ehci.c Mon Jan 13 15:06:03 2014 (r260588) @@ -1198,9 +1198,16 @@ ehci_non_isoc_done_sub(struct usb_xfer * (status & EHCI_QTD_PINGSTATE) ? "[PING]" : ""); } #endif - - return ((status & EHCI_QTD_HALTED) ? - USB_ERR_STALLED : USB_ERR_NORMAL_COMPLETION); + if (status & EHCI_QTD_HALTED) { + if ((xfer->xroot->udev->parent_hs_hub != NULL) || + (xfer->xroot->udev->address != 0)) { + /* try to separate I/O errors from STALL */ + if (EHCI_QTD_GET_CERR(status) == 0) + return (USB_ERR_IOERROR); + } + return (USB_ERR_STALLED); + } + return (USB_ERR_NORMAL_COMPLETION); } static void Modified: head/sys/dev/usb/controller/uhci.c ============================================================================== --- head/sys/dev/usb/controller/uhci.c Mon Jan 13 13:27:00 2014 (r260587) +++ head/sys/dev/usb/controller/uhci.c Mon Jan 13 15:06:03 2014 (r260588) @@ -1179,8 +1179,13 @@ uhci_non_isoc_done_sub(struct usb_xfer * (status & UHCI_TD_SPD) ? "[SPD]" : ""); } #endif - return (status & UHCI_TD_STALLED) ? - USB_ERR_STALLED : USB_ERR_NORMAL_COMPLETION; + if (status & UHCI_TD_STALLED) { + /* try to separate I/O errors from STALL */ + if (UHCI_TD_GET_ERRCNT(status) == 0) + return (USB_ERR_IOERROR); + return (USB_ERR_STALLED); + } + return (USB_ERR_NORMAL_COMPLETION); } static void From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 15:21:13 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 267ABC97; Mon, 13 Jan 2014 15:21:13 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1170318D9; Mon, 13 Jan 2014 15:21:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DFLD5c031747; Mon, 13 Jan 2014 15:21:13 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DFLBcO031738; Mon, 13 Jan 2014 15:21:11 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401131521.s0DFLBcO031738@svn.freebsd.org> From: Hans Petter Selasky Date: Mon, 13 Jan 2014 15:21:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260589 - head/sys/dev/usb X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 15:21:13 -0000 Author: hselasky Date: Mon Jan 13 15:21:11 2014 New Revision: 260589 URL: http://svnweb.freebsd.org/changeset/base/260589 Log: Implement better error recovery for Transaction Translators, TTs, found in High Speed USB HUBs which translate from High Speed USB into FULL or LOW speed USB. In some rare cases SPLIT transactions might get lost, which might leave the TT in an unknown state. Whenever we detect such an error try to issue either a clear TT buffer request, or if that is not possible reset the whole TT. MFC after: 1 week Modified: head/sys/dev/usb/usb_device.c head/sys/dev/usb/usb_device.h head/sys/dev/usb/usb_hub.c head/sys/dev/usb/usb_hub.h head/sys/dev/usb/usb_request.c head/sys/dev/usb/usb_transfer.c Modified: head/sys/dev/usb/usb_device.c ============================================================================== --- head/sys/dev/usb/usb_device.c Mon Jan 13 15:06:03 2014 (r260588) +++ head/sys/dev/usb/usb_device.c Mon Jan 13 15:21:11 2014 (r260589) @@ -98,7 +98,7 @@ static void usb_init_attach_arg(struct u struct usb_attach_arg *); static void usb_suspend_resume_sub(struct usb_device *, device_t, uint8_t); -static void usbd_clear_stall_proc(struct usb_proc_msg *_pm); +static usb_proc_callback_t usbd_clear_stall_proc; static usb_error_t usb_config_parse(struct usb_device *, uint8_t, uint8_t); static void usbd_set_device_strings(struct usb_device *); #if USB_HAVE_DEVCTL @@ -1474,7 +1474,7 @@ usb_suspend_resume(struct usb_device *ud static void usbd_clear_stall_proc(struct usb_proc_msg *_pm) { - struct usb_clear_stall_msg *pm = (void *)_pm; + struct usb_udev_msg *pm = (void *)_pm; struct usb_device *udev = pm->udev; /* Change lock */ Modified: head/sys/dev/usb/usb_device.h ============================================================================== --- head/sys/dev/usb/usb_device.h Mon Jan 13 15:06:03 2014 (r260588) +++ head/sys/dev/usb/usb_device.h Mon Jan 13 15:21:11 2014 (r260589) @@ -53,7 +53,7 @@ struct usb_symlink; /* UGEN */ #define USB_UNCFG_FLAG_NONE 0x00 #define USB_UNCFG_FLAG_FREE_EP0 0x02 /* endpoint zero is freed */ -struct usb_clear_stall_msg { +struct usb_udev_msg { struct usb_proc_msg hdr; struct usb_device *udev; }; @@ -179,8 +179,8 @@ union usb_device_scratch { * these structures for every USB device. */ struct usb_device { - struct usb_clear_stall_msg cs_msg[2]; /* generic clear stall - * messages */ + /* generic clear stall message */ + struct usb_udev_msg cs_msg[2]; struct sx enum_sx; struct sx sr_sx; struct mtx device_mtx; @@ -316,4 +316,10 @@ void usbd_sr_lock(struct usb_device *); void usbd_sr_unlock(struct usb_device *); uint8_t usbd_enum_is_locked(struct usb_device *); +#if USB_HAVE_TT_SUPPORT +void uhub_tt_buffer_reset_async_locked(struct usb_device *, struct usb_endpoint *); +#endif + +uint8_t uhub_count_active_host_ports(struct usb_device *, enum usb_dev_speed); + #endif /* _USB_DEVICE_H_ */ Modified: head/sys/dev/usb/usb_hub.c ============================================================================== --- head/sys/dev/usb/usb_hub.c Mon Jan 13 15:06:03 2014 (r260588) +++ head/sys/dev/usb/usb_hub.c Mon Jan 13 15:21:11 2014 (r260589) @@ -74,7 +74,13 @@ #endif /* USB_GLOBAL_INCLUDE_FILE */ #define UHUB_INTR_INTERVAL 250 /* ms */ -#define UHUB_N_TRANSFER 1 +enum { + UHUB_INTR_TRANSFER, +#if USB_HAVE_TT_SUPPORT + UHUB_RESET_TT_TRANSFER, +#endif + UHUB_N_TRANSFER, +}; #ifdef USB_DEBUG static int uhub_debug = 0; @@ -129,6 +135,9 @@ static bus_child_location_str_t uhub_chi static bus_child_pnpinfo_str_t uhub_child_pnpinfo_string; static usb_callback_t uhub_intr_callback; +#if USB_HAVE_TT_SUPPORT +static usb_callback_t uhub_reset_tt_callback; +#endif static void usb_dev_resume_peer(struct usb_device *udev); static void usb_dev_suspend_peer(struct usb_device *udev); @@ -136,7 +145,7 @@ static uint8_t usb_peer_should_wakeup(st static const struct usb_config uhub_config[UHUB_N_TRANSFER] = { - [0] = { + [UHUB_INTR_TRANSFER] = { .type = UE_INTERRUPT, .endpoint = UE_ADDR_ANY, .direction = UE_DIR_ANY, @@ -146,6 +155,17 @@ static const struct usb_config uhub_conf .callback = &uhub_intr_callback, .interval = UHUB_INTR_INTERVAL, }, +#if USB_HAVE_TT_SUPPORT + [UHUB_RESET_TT_TRANSFER] = { + .type = UE_CONTROL, + .endpoint = 0x00, /* Control pipe */ + .direction = UE_DIR_ANY, + .bufsize = sizeof(struct usb_device_request), + .callback = &uhub_reset_tt_callback, + .timeout = 1000, /* 1 second */ + .usb_mode = USB_MODE_HOST, + }, +#endif }; /* @@ -215,6 +235,199 @@ uhub_intr_callback(struct usb_xfer *xfer } /*------------------------------------------------------------------------* + * uhub_reset_tt_proc + * + * This function starts the TT reset USB request + *------------------------------------------------------------------------*/ +#if USB_HAVE_TT_SUPPORT +static void +uhub_reset_tt_proc(struct usb_proc_msg *_pm) +{ + struct usb_udev_msg *pm = (void *)_pm; + struct usb_device *udev = pm->udev; + struct usb_hub *hub; + struct uhub_softc *sc; + + hub = udev->hub; + if (hub == NULL) + return; + sc = hub->hubsoftc; + if (sc == NULL) + return; + + /* Change lock */ + USB_BUS_UNLOCK(udev->bus); + mtx_lock(&sc->sc_mtx); + /* Start transfer */ + usbd_transfer_start(sc->sc_xfer[UHUB_RESET_TT_TRANSFER]); + /* Change lock */ + mtx_unlock(&sc->sc_mtx); + USB_BUS_LOCK(udev->bus); +} +#endif + +/*------------------------------------------------------------------------* + * uhub_tt_buffer_reset_async_locked + * + * This function queues a TT reset for the given USB device and endpoint. + *------------------------------------------------------------------------*/ +#if USB_HAVE_TT_SUPPORT +void +uhub_tt_buffer_reset_async_locked(struct usb_device *child, struct usb_endpoint *ep) +{ + struct usb_device_request req; + struct usb_device *udev; + struct usb_hub *hub; + struct usb_port *up; + uint16_t wValue; + uint8_t port; + + if (child == NULL || ep == NULL) + return; + + udev = child->parent_hs_hub; + port = child->hs_port_no; + + if (udev == NULL) + return; + + hub = udev->hub; + if ((hub == NULL) || + (udev->speed != USB_SPEED_HIGH) || + (child->speed != USB_SPEED_LOW && + child->speed != USB_SPEED_FULL) || + (child->flags.usb_mode != USB_MODE_HOST) || + (port == 0) || (ep->edesc == NULL)) { + /* not applicable */ + return; + } + + USB_BUS_LOCK_ASSERT(udev->bus, MA_OWNED); + + up = hub->ports + port - 1; + + if (udev->ddesc.bDeviceClass == UDCLASS_HUB && + udev->ddesc.bDeviceProtocol == UDPROTO_HSHUBSTT) + port = 1; + + /* if we already received a clear buffer request, reset the whole TT */ + if (up->req_reset_tt.bRequest != 0) { + req.bmRequestType = UT_WRITE_CLASS_OTHER; + req.bRequest = UR_RESET_TT; + USETW(req.wValue, 0); + req.wIndex[0] = port; + req.wIndex[1] = 0; + USETW(req.wLength, 0); + } else { + wValue = (ep->edesc->bEndpointAddress & 0xF) | + ((child->address & 0x7F) << 4) | + ((ep->edesc->bEndpointAddress & 0x80) << 8) | + ((ep->edesc->bmAttributes & 3) << 12); + + req.bmRequestType = UT_WRITE_CLASS_OTHER; + req.bRequest = UR_CLEAR_TT_BUFFER; + USETW(req.wValue, wValue); + req.wIndex[0] = port; + req.wIndex[1] = 0; + USETW(req.wLength, 0); + } + up->req_reset_tt = req; + /* get reset transfer started */ + usb_proc_msignal(USB_BUS_NON_GIANT_PROC(udev->bus), + &hub->tt_msg[0], &hub->tt_msg[1]); +} +#endif + +#if USB_HAVE_TT_SUPPORT +static void +uhub_reset_tt_callback(struct usb_xfer *xfer, usb_error_t error) +{ + struct uhub_softc *sc; + struct usb_device *udev; + struct usb_port *up; + uint8_t x; + + DPRINTF("TT buffer reset\n"); + + sc = usbd_xfer_softc(xfer); + udev = sc->sc_udev; + + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: + case USB_ST_SETUP: +tr_setup: + USB_BUS_LOCK(udev->bus); + /* find first port which needs a TT reset */ + for (x = 0; x != udev->hub->nports; x++) { + up = udev->hub->ports + x; + + if (up->req_reset_tt.bRequest == 0) + continue; + + /* copy in the transfer */ + usbd_copy_in(xfer->frbuffers, 0, &up->req_reset_tt, + sizeof(up->req_reset_tt)); + /* reset buffer */ + memset(&up->req_reset_tt, 0, sizeof(up->req_reset_tt)); + + /* set length */ + usbd_xfer_set_frame_len(xfer, 0, sizeof(up->req_reset_tt)); + xfer->nframes = 1; + USB_BUS_UNLOCK(udev->bus); + + usbd_transfer_submit(xfer); + return; + } + USB_BUS_UNLOCK(udev->bus); + break; + + default: + if (error == USB_ERR_CANCELLED) + break; + + DPRINTF("TT buffer reset failed (%s)\n", usbd_errstr(error)); + goto tr_setup; + } +} +#endif + +/*------------------------------------------------------------------------* + * uhub_count_active_host_ports + * + * This function counts the number of active ports at the given speed. + *------------------------------------------------------------------------*/ +uint8_t +uhub_count_active_host_ports(struct usb_device *udev, enum usb_dev_speed speed) +{ + struct uhub_softc *sc; + struct usb_device *child; + struct usb_hub *hub; + struct usb_port *up; + uint8_t retval = 0; + uint8_t x; + + if (udev == NULL) + goto done; + hub = udev->hub; + if (hub == NULL) + goto done; + sc = hub->hubsoftc; + if (sc == NULL) + goto done; + + for (x = 0; x != hub->nports; x++) { + up = hub->ports + x; + child = usb_bus_port_get_device(udev->bus, up); + if (child != NULL && + child->flags.usb_mode == USB_MODE_HOST && + child->speed == speed) + retval++; + } +done: + return (retval); +} + +/*------------------------------------------------------------------------* * uhub_explore_sub - subroutine * * Return values: @@ -1114,7 +1327,12 @@ uhub_attach(device_t dev) hub->explore = &uhub_explore; hub->nports = nports; hub->hubudev = udev; - +#if USB_HAVE_TT_SUPPORT + hub->tt_msg[0].hdr.pm_callback = &uhub_reset_tt_proc; + hub->tt_msg[0].udev = udev; + hub->tt_msg[1].hdr.pm_callback = &uhub_reset_tt_proc; + hub->tt_msg[1].udev = udev; +#endif /* if self powered hub, give ports maximum current */ if (udev->flags.self_powered) { hub->portpower = USB_MAX_POWER; @@ -1216,11 +1434,9 @@ uhub_attach(device_t dev) /* Start the interrupt endpoint, if any */ - if (sc->sc_xfer[0] != NULL) { - mtx_lock(&sc->sc_mtx); - usbd_transfer_start(sc->sc_xfer[0]); - mtx_unlock(&sc->sc_mtx); - } + mtx_lock(&sc->sc_mtx); + usbd_transfer_start(sc->sc_xfer[UHUB_INTR_TRANSFER]); + mtx_unlock(&sc->sc_mtx); /* Enable automatic power save on all USB HUBs */ @@ -1250,6 +1466,7 @@ uhub_detach(device_t dev) { struct uhub_softc *sc = device_get_softc(dev); struct usb_hub *hub = sc->sc_udev->hub; + struct usb_bus *bus = sc->sc_udev->bus; struct usb_device *child; uint8_t x; @@ -1262,7 +1479,7 @@ uhub_detach(device_t dev) /* Detach all ports */ for (x = 0; x != hub->nports; x++) { - child = usb_bus_port_get_device(sc->sc_udev->bus, hub->ports + x); + child = usb_bus_port_get_device(bus, hub->ports + x); if (child == NULL) { continue; @@ -1274,6 +1491,14 @@ uhub_detach(device_t dev) usb_free_device(child, 0); } +#if USB_HAVE_TT_SUPPORT + /* Make sure our TT messages are not queued anywhere */ + USB_BUS_LOCK(bus); + usb_proc_mwait(USB_BUS_NON_GIANT_PROC(bus), + &hub->tt_msg[0], &hub->tt_msg[1]); + USB_BUS_UNLOCK(bus); +#endif + #if (USB_HAVE_FIXED_PORT == 0) free(hub, M_USBDEV); #endif Modified: head/sys/dev/usb/usb_hub.h ============================================================================== --- head/sys/dev/usb/usb_hub.h Mon Jan 13 15:06:03 2014 (r260588) +++ head/sys/dev/usb/usb_hub.h Mon Jan 13 15:21:11 2014 (r260589) @@ -35,6 +35,9 @@ struct usb_port { #define USB_RESTART_MAX 5 uint8_t device_index; /* zero means not valid */ enum usb_hc_mode usb_mode; /* host or device mode */ +#if USB_HAVE_TT_SUPPORT + struct usb_device_request req_reset_tt __aligned(4); +#endif }; /* @@ -44,6 +47,9 @@ struct usb_hub { struct usb_device *hubudev; /* the HUB device */ usb_error_t (*explore) (struct usb_device *hub); void *hubsoftc; +#if USB_HAVE_TT_SUPPORT + struct usb_udev_msg tt_msg[2]; +#endif usb_size_t uframe_usage[USB_HS_MICRO_FRAMES_MAX]; uint16_t portpower; /* mA per USB port */ uint8_t isoc_last_time; Modified: head/sys/dev/usb/usb_request.c ============================================================================== --- head/sys/dev/usb/usb_request.c Mon Jan 13 15:06:03 2014 (r260588) +++ head/sys/dev/usb/usb_request.c Mon Jan 13 15:21:11 2014 (r260589) @@ -721,6 +721,17 @@ done: if ((mtx != NULL) && (mtx != &Giant)) mtx_lock(mtx); + switch (err) { + case USB_ERR_NORMAL_COMPLETION: + case USB_ERR_SHORT_XFER: + case USB_ERR_STALLED: + case USB_ERR_CANCELLED: + break; + default: + DPRINTF("I/O error - waiting a bit for TT cleanup\n"); + usb_pause_mtx(mtx, hz / 16); + break; + } return ((usb_error_t)err); } @@ -2010,6 +2021,7 @@ usbd_req_re_enumerate(struct usb_device return (USB_ERR_INVAL); } retry: +#if USB_HAVE_TT_SUPPORT /* * Try to reset the High Speed parent HUB of a LOW- or FULL- * speed device, if any. @@ -2017,15 +2029,24 @@ retry: if (udev->parent_hs_hub != NULL && udev->speed != USB_SPEED_HIGH) { DPRINTF("Trying to reset parent High Speed TT.\n"); - err = usbd_req_reset_tt(udev->parent_hs_hub, NULL, - udev->hs_port_no); + if (udev->parent_hs_hub == parent_hub && + (uhub_count_active_host_ports(parent_hub, USB_SPEED_LOW) + + uhub_count_active_host_ports(parent_hub, USB_SPEED_FULL)) == 1) { + /* we can reset the whole TT */ + err = usbd_req_reset_tt(parent_hub, NULL, + udev->hs_port_no); + } else { + /* only reset a particular device and endpoint */ + err = usbd_req_clear_tt_buffer(udev->parent_hs_hub, NULL, + udev->hs_port_no, old_addr, UE_CONTROL, 0); + } if (err) { DPRINTF("Resetting parent High " "Speed TT failed (%s).\n", usbd_errstr(err)); } } - +#endif /* Try to warm reset first */ if (parent_hub->speed == USB_SPEED_SUPER) usbd_req_warm_reset_port(parent_hub, mtx, udev->port_no); Modified: head/sys/dev/usb/usb_transfer.c ============================================================================== --- head/sys/dev/usb/usb_transfer.c Mon Jan 13 15:06:03 2014 (r260588) +++ head/sys/dev/usb/usb_transfer.c Mon Jan 13 15:21:11 2014 (r260589) @@ -2432,7 +2432,9 @@ usbd_transfer_enqueue(struct usb_xfer_qu void usbd_transfer_done(struct usb_xfer *xfer, usb_error_t error) { - USB_BUS_LOCK_ASSERT(xfer->xroot->bus, MA_OWNED); + struct usb_xfer_root *info = xfer->xroot; + + USB_BUS_LOCK_ASSERT(info->bus, MA_OWNED); DPRINTF("err=%s\n", usbd_errstr(error)); @@ -2446,10 +2448,10 @@ usbd_transfer_done(struct usb_xfer *xfer xfer->flags_int.control_act = 0; return; } - /* only set transfer error if not already set */ - if (!xfer->error) { + /* only set transfer error, if not already set */ + if (xfer->error == USB_ERR_NORMAL_COMPLETION) xfer->error = error; - } + /* stop any callouts */ usb_callout_stop(&xfer->timeout_handle); @@ -2461,14 +2463,14 @@ usbd_transfer_done(struct usb_xfer *xfer usbd_transfer_dequeue(xfer); #if USB_HAVE_BUSDMA - if (mtx_owned(xfer->xroot->xfer_mtx)) { + if (mtx_owned(info->xfer_mtx)) { struct usb_xfer_queue *pq; /* * If the private USB lock is not locked, then we assume * that the BUS-DMA load stage has been passed: */ - pq = &xfer->xroot->dma_q; + pq = &info->dma_q; if (pq->curr == xfer) { /* start the next BUS-DMA load, if any */ @@ -2478,10 +2480,10 @@ usbd_transfer_done(struct usb_xfer *xfer #endif /* keep some statistics */ if (xfer->error) { - xfer->xroot->bus->stats_err.uds_requests + info->bus->stats_err.uds_requests [xfer->endpoint->edesc->bmAttributes & UE_XFERTYPE]++; } else { - xfer->xroot->bus->stats_ok.uds_requests + info->bus->stats_ok.uds_requests [xfer->endpoint->edesc->bmAttributes & UE_XFERTYPE]++; } @@ -2847,6 +2849,22 @@ usbd_callback_wrapper_sub(struct usb_xfe /* end of control transfer, if any */ xfer->flags_int.control_act = 0; +#if USB_HAVE_TT_SUPPORT + switch (xfer->error) { + case USB_ERR_NORMAL_COMPLETION: + case USB_ERR_SHORT_XFER: + case USB_ERR_STALLED: + case USB_ERR_CANCELLED: + /* nothing to do */ + break; + default: + /* try to reset the TT, if any */ + USB_BUS_LOCK(bus); + uhub_tt_buffer_reset_async_locked(xfer->xroot->udev, xfer->endpoint); + USB_BUS_UNLOCK(bus); + break; + } +#endif /* check if we should block the execution queue */ if ((xfer->error != USB_ERR_CANCELLED) && (xfer->flags.pipe_bof)) { From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 15:22:41 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id ED9B4E1D; Mon, 13 Jan 2014 15:22:41 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D682218F0; Mon, 13 Jan 2014 15:22:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DFMfaP032512; Mon, 13 Jan 2014 15:22:41 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DFMc3r032490; Mon, 13 Jan 2014 15:22:38 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401131522.s0DFMc3r032490@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Mon, 13 Jan 2014 15:22:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260590 - in stable/8/contrib: gcc gcc/config/rs6000 gcc/cp gcc/doc gcclibs/libcpp X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 15:22:42 -0000 Author: pfg Date: Mon Jan 13 15:22:37 2014 New Revision: 260590 URL: http://svnweb.freebsd.org/changeset/base/260590 Log: MFC r258081, r258138, r258143, r258179, r258157, r258204, r258205, r258206, r258207, r258321 This is a series of commits inspired on Google's gcc-4.2.1 for Android that were taken from the gcc pre-4.3 under the GPLv2. gcc: Backport fixes for -W parentheses in C++ This fixes GCC 19564. gcc: merge rs6000 change from FSF pre-gcc43 Don't set MASK_PPC_GFXOPT for 8540 or 8548. Merge vrp-tree fix from gcc-4.3 Fix missed conversion from / to >> (GCC PR32521) Merge in GCCr120505 to include definition of TREE_OVERFLOW_P gcc: warn about integer overflow in constant expressions in the C++ frontend. gcc: Add a new option -Wvla to warn variable length array. libcpp: preprocessor speedup patches from upstream gcc. gcc: add femit-struct-debug support to reduce Reduce dwarf debug size gcc: Fix postreload-gcse treatment of call-clobbered registers. gcc: Record some previous commits in the ChangeLog.gcc43 file. Tested by: danfe Modified: stable/8/contrib/gcc/ChangeLog.gcc43 stable/8/contrib/gcc/c-common.c stable/8/contrib/gcc/c-common.h stable/8/contrib/gcc/c-decl.c stable/8/contrib/gcc/c-opts.c stable/8/contrib/gcc/c-typeck.c stable/8/contrib/gcc/c.opt stable/8/contrib/gcc/config/rs6000/rs6000.c stable/8/contrib/gcc/cp/cp-lang.c stable/8/contrib/gcc/cp/cp-tree.h stable/8/contrib/gcc/cp/decl.c stable/8/contrib/gcc/cp/parser.c stable/8/contrib/gcc/cp/pt.c stable/8/contrib/gcc/cp/semantics.c stable/8/contrib/gcc/cp/tree.c stable/8/contrib/gcc/cp/typeck.c stable/8/contrib/gcc/doc/invoke.texi stable/8/contrib/gcc/dwarf2out.c stable/8/contrib/gcc/flags.h stable/8/contrib/gcc/langhooks-def.h stable/8/contrib/gcc/langhooks.h stable/8/contrib/gcc/opts.c stable/8/contrib/gcc/postreload-gcse.c stable/8/contrib/gcc/regs.h stable/8/contrib/gcc/rtlanal.c stable/8/contrib/gcc/tree-vrp.c stable/8/contrib/gcc/tree.h stable/8/contrib/gcclibs/libcpp/files.c stable/8/contrib/gcclibs/libcpp/internal.h stable/8/contrib/gcclibs/libcpp/lex.c Directory Properties: stable/8/ (props changed) stable/8/contrib/ (props changed) stable/8/contrib/gcc/ (props changed) stable/8/contrib/gcclibs/ (props changed) Modified: stable/8/contrib/gcc/ChangeLog.gcc43 ============================================================================== --- stable/8/contrib/gcc/ChangeLog.gcc43 Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/ChangeLog.gcc43 Mon Jan 13 15:22:37 2014 (r260590) @@ -11,6 +11,57 @@ with SSE3 instruction set support. * doc/invoke.texi: Likewise. +2007-04-16 Lawrence Crowl + + * doc/invoke.texi (Debugging Options): Add documentation for the + -femit-struct-debug options -femit-struct-debug-baseonly, + -femit-struct-debug-reduced, and + -femit-struct-debug-detailed[=...]. + + * c-opts.c (c_common_handle_option): Add + OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced, + and OPT_femit_struct_debug_detailed_. + * c.opt: Add specifications for + -femit-struct-debug-baseonly, -femit-struct-debug-reduced, + and -femit-struct-debug-detailed[=...]. + * opts.c (set_struct_debug_option): Parse the + -femit-struct-debug-... options. + * opts.c (matches_main_base, main_input_basename, + main_input_baselength, base_of_path, matches_main_base): Add + variables and functions to compare header base name to compilation + unit base name. + * opts.c (should_emit_struct_debug): Add to determine to emit a + structure based on the option. + (dump_struct_debug) Also disabled function to debug this + function. + * opts.c (handle_options): Save the base name of the + compilation unit. + + * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define. + (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add. + This hook indicates if a type is generic. Set it by default + to "never generic". + * langhooks.h (struct lang_hooks_for_types): Add a new hook + to determine if a struct type is generic or not. + * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook. + * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook. + * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook + with live C++ hook. + + * flags.h (enum debug_info_usage): Add an enumeration to describe + a program's use of a structure type. + * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter + to indicate the program's usage of the type. Filter structs based + on the -femit-struct-debug-... specification. + (gen_type_die): Split into two routines, gen_type_die and + gen_type_die_with_usage. gen_type_die is now a wrapper + that assumes direct usage. + (gen_type_die_with_usage): Replace calls to gen_type_die + with gen_type_die_with_usage adding the program usage of + the referenced type. + (dwarf2out_imported_module_or_decl): Suppress struct debug + information using should_emit_struct_debug when appropriate. + 2007-04-12 Richard Guenther (r123736) PR tree-optimization/24689 @@ -48,6 +99,17 @@ * config.gcc: Support core2 processor. +2006-12-13 Ian Lance Taylor (r119855) + + PR c++/19564 + PR c++/19756 + * c-typeck.c (parser_build_binary_op): Move parentheses warnings + to warn_about_parentheses in c-common.c. + * c-common.c (warn_about_parentheses): New function. + * c-common.h (warn_about_parentheses): Declare. + * doc/invoke.texi (Warning Options): Update -Wparentheses + description. + 2006-12-02 H.J. Lu (r119454 - partial) PR target/30040 @@ -81,6 +143,35 @@ (override_options): Add entries for Core2. (ix86_issue_rate): Add case for Core2. +2006-10-31 Geoffrey Keating (r118356) + + * c-decl.c (grokdeclarator): Don't set DECL_EXTERNAL on + inline static functions in c99 mode. + + PR 16622 + * doc/extend.texi (Inline): Update. + * c-tree.h (struct language_function): Remove field 'extern_inline'. + * c-decl.c (current_extern_inline): Delete. + (pop_scope): Adjust test for an undefined nested function. + Add warning about undeclared inline function. + (diagnose_mismatched_decls): Update comments. Disallow overriding + of inline functions in a translation unit in C99. Allow inline + declarations in C99 at any time. + (merge_decls): Boolize variables. Handle C99 'extern inline' + semantics. + (grokdeclarator): Set DECL_EXTERNAL here for functions. Handle + C99 inline semantics. + (start_function): Don't clear current_extern_inline. Don't set + DECL_EXTERNAL. + (c_push_function_context): Don't push current_extern_inline. + (c_pop_function_context): Don't restore current_extern_inline. + + PR 11377 + * c-typeck.c (build_external_ref): Warn about static variables + used in extern inline functions. + * c-decl.c (start_decl): Warn about static variables declared + in extern inline functions. + 2006-10-27 Vladimir Makarov (r118090) * config/i386/i386.h (TARGET_GEODE): Modified: stable/8/contrib/gcc/c-common.c ============================================================================== --- stable/8/contrib/gcc/c-common.c Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/c-common.c Mon Jan 13 15:22:37 2014 (r260590) @@ -2585,9 +2585,13 @@ c_common_truthvalue_conversion (tree exp break; case MODIFY_EXPR: - if (!TREE_NO_WARNING (expr)) - warning (OPT_Wparentheses, - "suggest parentheses around assignment used as truth value"); + if (!TREE_NO_WARNING (expr) + && warn_parentheses) + { + warning (OPT_Wparentheses, + "suggest parentheses around assignment used as truth value"); + TREE_NO_WARNING (expr) = 1; + } break; default: @@ -6471,5 +6475,87 @@ warn_array_subscript_with_type_char (tre warning (OPT_Wchar_subscripts, "array subscript has type %"); } +/* Implement -Wparentheses for the unexpected C precedence rules, to + cover cases like x + y << z which readers are likely to + misinterpret. We have seen an expression in which CODE is a binary + operator used to combine expressions headed by CODE_LEFT and + CODE_RIGHT. CODE_LEFT and CODE_RIGHT may be ERROR_MARK, which + means that that side of the expression was not formed using a + binary operator, or it was enclosed in parentheses. */ + +void +warn_about_parentheses (enum tree_code code, enum tree_code code_left, + enum tree_code code_right) +{ + if (!warn_parentheses) + return; + + if (code == LSHIFT_EXPR || code == RSHIFT_EXPR) + { + if (code_left == PLUS_EXPR || code_left == MINUS_EXPR + || code_right == PLUS_EXPR || code_right == MINUS_EXPR) + warning (OPT_Wparentheses, + "suggest parentheses around + or - inside shift"); + } + + if (code == TRUTH_ORIF_EXPR) + { + if (code_left == TRUTH_ANDIF_EXPR + || code_right == TRUTH_ANDIF_EXPR) + warning (OPT_Wparentheses, + "suggest parentheses around && within ||"); + } + + if (code == BIT_IOR_EXPR) + { + if (code_left == BIT_AND_EXPR || code_left == BIT_XOR_EXPR + || code_left == PLUS_EXPR || code_left == MINUS_EXPR + || code_right == BIT_AND_EXPR || code_right == BIT_XOR_EXPR + || code_right == PLUS_EXPR || code_right == MINUS_EXPR) + warning (OPT_Wparentheses, + "suggest parentheses around arithmetic in operand of |"); + /* Check cases like x|y==z */ + if (TREE_CODE_CLASS (code_left) == tcc_comparison + || TREE_CODE_CLASS (code_right) == tcc_comparison) + warning (OPT_Wparentheses, + "suggest parentheses around comparison in operand of |"); + } + + if (code == BIT_XOR_EXPR) + { + if (code_left == BIT_AND_EXPR + || code_left == PLUS_EXPR || code_left == MINUS_EXPR + || code_right == BIT_AND_EXPR + || code_right == PLUS_EXPR || code_right == MINUS_EXPR) + warning (OPT_Wparentheses, + "suggest parentheses around arithmetic in operand of ^"); + /* Check cases like x^y==z */ + if (TREE_CODE_CLASS (code_left) == tcc_comparison + || TREE_CODE_CLASS (code_right) == tcc_comparison) + warning (OPT_Wparentheses, + "suggest parentheses around comparison in operand of ^"); + } + + if (code == BIT_AND_EXPR) + { + if (code_left == PLUS_EXPR || code_left == MINUS_EXPR + || code_right == PLUS_EXPR || code_right == MINUS_EXPR) + warning (OPT_Wparentheses, + "suggest parentheses around + or - in operand of &"); + /* Check cases like x&y==z */ + if (TREE_CODE_CLASS (code_left) == tcc_comparison + || TREE_CODE_CLASS (code_right) == tcc_comparison) + warning (OPT_Wparentheses, + "suggest parentheses around comparison in operand of &"); + } + + /* Similarly, check for cases like 1<=i<=10 that are probably errors. */ + if (TREE_CODE_CLASS (code) == tcc_comparison + && (TREE_CODE_CLASS (code_left) == tcc_comparison + || TREE_CODE_CLASS (code_right) == tcc_comparison)) + warning (OPT_Wparentheses, "comparisons like X<=Y<=Z do not " + "have their mathematical meaning"); +} + #include "gt-c-common.h" Modified: stable/8/contrib/gcc/c-common.h ============================================================================== --- stable/8/contrib/gcc/c-common.h Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/c-common.h Mon Jan 13 15:22:37 2014 (r260590) @@ -850,6 +850,9 @@ extern int complete_array_type (tree *, extern tree builtin_type_for_size (int, bool); extern void warn_array_subscript_with_type_char (tree); +extern void warn_about_parentheses (enum tree_code, enum tree_code, + enum tree_code); + /* In c-gimplify.c */ extern void c_genericize (tree); Modified: stable/8/contrib/gcc/c-decl.c ============================================================================== --- stable/8/contrib/gcc/c-decl.c Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/c-decl.c Mon Jan 13 15:22:37 2014 (r260590) @@ -3931,6 +3931,61 @@ check_bitfield_type_and_width (tree *typ } + +/* Print warning about variable length array if necessary. */ + +static void +warn_variable_length_array (const char *name, tree size) +{ + int ped = !flag_isoc99 && pedantic && warn_vla != 0; + int const_size = TREE_CONSTANT (size); + + if (ped) + { + if (const_size) + { + if (name) + pedwarn ("ISO C90 forbids array %qs whose size " + "can%'t be evaluated", + name); + else + pedwarn ("ISO C90 forbids array whose size " + "can%'t be evaluated"); + } + else + { + if (name) + pedwarn ("ISO C90 forbids variable length array %qs", + name); + else + pedwarn ("ISO C90 forbids variable length array"); + } + } + else if (warn_vla > 0) + { + if (const_size) + { + if (name) + warning (OPT_Wvla, + "the size of array %qs can" + "%'t be evaluated", name); + else + warning (OPT_Wvla, + "the size of array can %'t be evaluated"); + } + else + { + if (name) + warning (OPT_Wvla, + "variable length array %qs is used", + name); + else + warning (OPT_Wvla, + "variable length array is used"); + } + } +} + /* Given declspecs and a declarator, determine the name and type of the object declared and construct a ..._DECL node for it. @@ -4329,17 +4384,7 @@ grokdeclarator (const struct c_declarato nonconstant even if it is (eg) a const variable with known value. */ size_varies = 1; - - if (!flag_isoc99 && pedantic) - { - if (TREE_CONSTANT (size)) - pedwarn ("ISO C90 forbids array %qs whose size " - "can%'t be evaluated", - name); - else - pedwarn ("ISO C90 forbids variable-size array %qs", - name); - } + warn_variable_length_array (orig_name, size); if (warn_variable_decl) warning (0, "variable-sized array %qs", name); } Modified: stable/8/contrib/gcc/c-opts.c ============================================================================== --- stable/8/contrib/gcc/c-opts.c Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/c-opts.c Mon Jan 13 15:22:37 2014 (r260590) @@ -818,6 +818,18 @@ c_common_handle_option (size_t scode, co flag_gen_declaration = 1; break; + case OPT_femit_struct_debug_baseonly: + set_struct_debug_option ("base"); + break; + + case OPT_femit_struct_debug_reduced: + set_struct_debug_option ("dir:ord:sys,dir:gen:any,ind:base"); + break; + + case OPT_femit_struct_debug_detailed_: + set_struct_debug_option (arg); + break; + case OPT_idirafter: add_path (xstrdup (arg), AFTER, 0, true); break; Modified: stable/8/contrib/gcc/c-typeck.c ============================================================================== --- stable/8/contrib/gcc/c-typeck.c Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/c-typeck.c Mon Jan 13 15:22:37 2014 (r260590) @@ -2631,73 +2631,7 @@ parser_build_binary_op (enum tree_code c /* Check for cases such as x+y< Detailed reduced debug info for structs + idirafter C ObjC C++ ObjC++ Joined Separate -idirafter Add to the end of the system include path Modified: stable/8/contrib/gcc/config/rs6000/rs6000.c ============================================================================== --- stable/8/contrib/gcc/config/rs6000/rs6000.c Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/config/rs6000/rs6000.c Mon Jan 13 15:22:37 2014 (r260590) @@ -1171,11 +1171,9 @@ rs6000_override_options (const char *def {"801", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT}, {"821", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT}, {"823", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT}, - {"8540", PROCESSOR_PPC8540, - POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_STRICT_ALIGN}, + {"8540", PROCESSOR_PPC8540, POWERPC_BASE_MASK | MASK_STRICT_ALIGN}, /* 8548 has a dummy entry for now. */ - {"8548", PROCESSOR_PPC8540, - POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_STRICT_ALIGN}, + {"8548", PROCESSOR_PPC8540, POWERPC_BASE_MASK | MASK_STRICT_ALIGN}, {"860", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT}, {"970", PROCESSOR_POWER4, POWERPC_7400_MASK | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64}, Modified: stable/8/contrib/gcc/cp/cp-lang.c ============================================================================== --- stable/8/contrib/gcc/cp/cp-lang.c Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/cp/cp-lang.c Mon Jan 13 15:22:37 2014 (r260590) @@ -44,6 +44,8 @@ static void cp_init_ts (void); #define LANG_HOOKS_NAME "GNU C++" #undef LANG_HOOKS_INIT #define LANG_HOOKS_INIT cxx_init +#undef LANG_HOOKS_GENERIC_TYPE_P +#define LANG_HOOKS_GENERIC_TYPE_P class_tmpl_impl_spec_p #undef LANG_HOOKS_DECL_PRINTABLE_NAME #define LANG_HOOKS_DECL_PRINTABLE_NAME cxx_printable_name #undef LANG_HOOKS_FOLD_OBJ_TYPE_REF Modified: stable/8/contrib/gcc/cp/cp-tree.h ============================================================================== --- stable/8/contrib/gcc/cp/cp-tree.h Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/cp/cp-tree.h Mon Jan 13 15:22:37 2014 (r260590) @@ -4373,6 +4373,7 @@ extern tree add_stmt_to_compound (tree, extern tree cxx_maybe_build_cleanup (tree); extern void init_tree (void); extern int pod_type_p (tree); +extern bool class_tmpl_impl_spec_p (tree); extern int zero_init_p (tree); extern tree canonical_type_variant (tree); extern tree copy_binfo (tree, tree, tree, @@ -4460,8 +4461,9 @@ extern tree build_x_indirect_ref (tree, extern tree build_indirect_ref (tree, const char *); extern tree build_array_ref (tree, tree); extern tree get_member_function_from_ptrfunc (tree *, tree); -extern tree build_x_binary_op (enum tree_code, tree, tree, - bool *); +extern tree build_x_binary_op (enum tree_code, tree, + enum tree_code, tree, + enum tree_code, bool *); extern tree build_x_unary_op (enum tree_code, tree); extern tree unary_complex_lvalue (enum tree_code, tree); extern tree build_x_conditional_expr (tree, tree, tree); Modified: stable/8/contrib/gcc/cp/decl.c ============================================================================== --- stable/8/contrib/gcc/cp/decl.c Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/cp/decl.c Mon Jan 13 15:22:37 2014 (r260590) @@ -6702,12 +6702,21 @@ compute_array_index_type (tree name, tre error ("size of array is not an integral constant-expression"); size = integer_one_node; } - else if (pedantic) + else if (pedantic && warn_vla != 0) { if (name) - pedwarn ("ISO C++ forbids variable-size array %qD", name); + pedwarn ("ISO C++ forbids variable length array %qD", name); else - pedwarn ("ISO C++ forbids variable-size array"); + pedwarn ("ISO C++ forbids variable length array"); + } + else if (warn_vla > 0) + { + if (name) + warning (OPT_Wvla, + "variable length array %qD is used", name); + else + warning (OPT_Wvla, + "variable length array is used"); } if (processing_template_decl && !TREE_CONSTANT (size)) Modified: stable/8/contrib/gcc/cp/parser.c ============================================================================== --- stable/8/contrib/gcc/cp/parser.c Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/cp/parser.c Mon Jan 13 15:22:37 2014 (r260590) @@ -1177,8 +1177,15 @@ typedef enum cp_parser_status_kind typedef struct cp_parser_expression_stack_entry { + /* Left hand side of the binary operation we are currently + parsing. */ tree lhs; + /* Original tree code for left hand side, if it was a binary + expression itself (used for -Wparentheses). */ + enum tree_code lhs_type; + /* Tree code for the binary operation we are parsing. */ enum tree_code tree_type; + /* Precedence of the binary operation we are parsing. */ int prec; } cp_parser_expression_stack_entry; @@ -1536,7 +1543,7 @@ static tree cp_parser_builtin_offsetof /* Statements [gram.stmt.stmt] */ static void cp_parser_statement - (cp_parser *, tree, bool); + (cp_parser *, tree, bool, bool *); static void cp_parser_label_for_labeled_statement (cp_parser *); static tree cp_parser_expression_statement @@ -1546,7 +1553,7 @@ static tree cp_parser_compound_statement static void cp_parser_statement_seq_opt (cp_parser *, tree); static tree cp_parser_selection_statement - (cp_parser *); + (cp_parser *, bool *); static tree cp_parser_condition (cp_parser *); static tree cp_parser_iteration_statement @@ -1559,7 +1566,7 @@ static void cp_parser_declaration_statem (cp_parser *); static tree cp_parser_implicitly_scoped_statement - (cp_parser *); + (cp_parser *, bool *); static void cp_parser_already_scoped_statement (cp_parser *); @@ -5730,12 +5737,13 @@ cp_parser_binary_expression (cp_parser* cp_parser_expression_stack_entry *sp = &stack[0]; tree lhs, rhs; cp_token *token; - enum tree_code tree_type; + enum tree_code tree_type, lhs_type, rhs_type; enum cp_parser_prec prec = PREC_NOT_OPERATOR, new_prec, lookahead_prec; bool overloaded_p; /* Parse the first expression. */ lhs = cp_parser_cast_expression (parser, /*address_p=*/false, cast_p); + lhs_type = ERROR_MARK; for (;;) { @@ -5768,6 +5776,7 @@ cp_parser_binary_expression (cp_parser* /* Extract another operand. It may be the RHS of this expression or the LHS of a new, higher priority expression. */ rhs = cp_parser_simple_cast_expression (parser); + rhs_type = ERROR_MARK; /* Get another operator token. Look up its precedence to avoid building a useless (immediately popped) stack entry for common @@ -5783,8 +5792,10 @@ cp_parser_binary_expression (cp_parser* sp->prec = prec; sp->tree_type = tree_type; sp->lhs = lhs; + sp->lhs_type = lhs_type; sp++; lhs = rhs; + lhs_type = rhs_type; prec = new_prec; new_prec = lookahead_prec; goto get_rhs; @@ -5801,11 +5812,15 @@ cp_parser_binary_expression (cp_parser* prec = sp->prec; tree_type = sp->tree_type; rhs = lhs; + rhs_type = lhs_type; lhs = sp->lhs; + lhs_type = sp->lhs_type; } overloaded_p = false; - lhs = build_x_binary_op (tree_type, lhs, rhs, &overloaded_p); + lhs = build_x_binary_op (tree_type, lhs, lhs_type, rhs, rhs_type, + &overloaded_p); + lhs_type = tree_type; /* If the binary operator required the use of an overloaded operator, then this expression cannot be an integral constant-expression. @@ -6222,17 +6237,23 @@ cp_parser_builtin_offsetof (cp_parser *p try-block IN_COMPOUND is true when the statement is nested inside a - cp_parser_compound_statement; this matters for certain pragmas. */ + cp_parser_compound_statement; this matters for certain pragmas. + + If IF_P is not NULL, *IF_P is set to indicate whether the statement + is a (possibly labeled) if statement which is not enclosed in braces + and has an else clause. This is used to implement -Wparentheses. */ static void cp_parser_statement (cp_parser* parser, tree in_statement_expr, - bool in_compound) + bool in_compound, bool *if_p) { tree statement; cp_token *token; location_t statement_location; restart: + if (if_p != NULL) + *if_p = false; /* There is no statement yet. */ statement = NULL_TREE; /* Peek at the next token. */ @@ -6257,7 +6278,7 @@ cp_parser_statement (cp_parser* parser, case RID_IF: case RID_SWITCH: - statement = cp_parser_selection_statement (parser); + statement = cp_parser_selection_statement (parser, if_p); break; case RID_WHILE: @@ -6522,7 +6543,7 @@ cp_parser_statement_seq_opt (cp_parser* break; /* Parse the statement. */ - cp_parser_statement (parser, in_statement_expr, true); + cp_parser_statement (parser, in_statement_expr, true, NULL); } } @@ -6533,14 +6554,22 @@ cp_parser_statement_seq_opt (cp_parser* if ( condition ) statement else statement switch ( condition ) statement - Returns the new IF_STMT or SWITCH_STMT. */ + Returns the new IF_STMT or SWITCH_STMT. + + If IF_P is not NULL, *IF_P is set to indicate whether the statement + is a (possibly labeled) if statement which is not enclosed in + braces and has an else clause. This is used to implement + -Wparentheses. */ static tree -cp_parser_selection_statement (cp_parser* parser) +cp_parser_selection_statement (cp_parser* parser, bool *if_p) { cp_token *token; enum rid keyword; + if (if_p != NULL) + *if_p = false; + /* Peek at the next token. */ token = cp_parser_require (parser, CPP_KEYWORD, "selection-statement"); @@ -6576,11 +6605,13 @@ cp_parser_selection_statement (cp_parser if (keyword == RID_IF) { + bool nested_if; + /* Add the condition. */ finish_if_stmt_cond (condition, statement); /* Parse the then-clause. */ - cp_parser_implicitly_scoped_statement (parser); + cp_parser_implicitly_scoped_statement (parser, &nested_if); finish_then_clause (statement); /* If the next token is `else', parse the else-clause. */ @@ -6591,8 +6622,28 @@ cp_parser_selection_statement (cp_parser cp_lexer_consume_token (parser->lexer); begin_else_clause (statement); /* Parse the else-clause. */ - cp_parser_implicitly_scoped_statement (parser); + cp_parser_implicitly_scoped_statement (parser, NULL); finish_else_clause (statement); + + /* If we are currently parsing a then-clause, then + IF_P will not be NULL. We set it to true to + indicate that this if statement has an else clause. + This may trigger the Wparentheses warning below + when we get back up to the parent if statement. */ + if (if_p != NULL) + *if_p = true; + } + else + { + /* This if statement does not have an else clause. If + NESTED_IF is true, then the then-clause is an if + statement which does have an else clause. We warn + about the potential ambiguity. */ + if (nested_if) + warning (OPT_Wparentheses, + ("%Hsuggest explicit braces " + "to avoid ambiguous %"), + EXPR_LOCUS (statement)); } /* Now we're all done with the if-statement. */ @@ -6611,7 +6662,7 @@ cp_parser_selection_statement (cp_parser in_statement = parser->in_statement; parser->in_switch_statement_p = true; parser->in_statement |= IN_SWITCH_STMT; - cp_parser_implicitly_scoped_statement (parser); + cp_parser_implicitly_scoped_statement (parser, NULL); parser->in_switch_statement_p = in_switch_statement_p; parser->in_statement = in_statement; @@ -6789,7 +6840,7 @@ cp_parser_iteration_statement (cp_parser statement = begin_do_stmt (); /* Parse the body of the do-statement. */ parser->in_statement = IN_ITERATION_STMT; - cp_parser_implicitly_scoped_statement (parser); + cp_parser_implicitly_scoped_statement (parser, NULL); parser->in_statement = in_statement; finish_do_body (statement); /* Look for the `while' keyword. */ @@ -7031,13 +7082,21 @@ cp_parser_declaration_statement (cp_pars but ensures that is in its own scope, even if it is not a compound-statement. + If IF_P is not NULL, *IF_P is set to indicate whether the statement + is a (possibly labeled) if statement which is not enclosed in + braces and has an else clause. This is used to implement + -Wparentheses. + Returns the new statement. */ static tree -cp_parser_implicitly_scoped_statement (cp_parser* parser) +cp_parser_implicitly_scoped_statement (cp_parser* parser, bool *if_p) { tree statement; + if (if_p != NULL) + *if_p = false; + /* Mark if () ; with a special NOP_EXPR. */ if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) { @@ -7053,7 +7112,7 @@ cp_parser_implicitly_scoped_statement (c /* Create a compound-statement. */ statement = begin_compound_stmt (0); /* Parse the dependent-statement. */ - cp_parser_statement (parser, NULL_TREE, false); + cp_parser_statement (parser, NULL_TREE, false, if_p); /* Finish the dummy compound-statement. */ finish_compound_stmt (statement); } @@ -7072,7 +7131,7 @@ cp_parser_already_scoped_statement (cp_p { /* If the token is a `{', then we must take special action. */ if (cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_BRACE)) - cp_parser_statement (parser, NULL_TREE, false); + cp_parser_statement (parser, NULL_TREE, false, NULL); else { /* Avoid calling cp_parser_compound_statement, so that we @@ -18645,7 +18704,7 @@ cp_parser_omp_structured_block (cp_parse tree stmt = begin_omp_structured_block (); unsigned int save = cp_parser_begin_omp_structured_block (parser); - cp_parser_statement (parser, NULL_TREE, false); + cp_parser_statement (parser, NULL_TREE, false, NULL); cp_parser_end_omp_structured_block (parser, save); return finish_omp_structured_block (stmt); @@ -18890,7 +18949,7 @@ cp_parser_omp_for_loop (cp_parser *parse /* Note that the grammar doesn't call for a structured block here, though the loop as a whole is a structured block. */ body = push_stmt_list (); - cp_parser_statement (parser, NULL_TREE, false); + cp_parser_statement (parser, NULL_TREE, false, NULL); body = pop_stmt_list (body); return finish_omp_for (loc, decl, init, cond, incr, body, pre_body); @@ -18983,7 +19042,7 @@ cp_parser_omp_sections_scope (cp_parser while (1) { - cp_parser_statement (parser, NULL_TREE, false); + cp_parser_statement (parser, NULL_TREE, false, NULL); tok = cp_lexer_peek_token (parser->lexer); if (tok->pragma_kind == PRAGMA_OMP_SECTION) Modified: stable/8/contrib/gcc/cp/pt.c ============================================================================== --- stable/8/contrib/gcc/cp/pt.c Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/cp/pt.c Mon Jan 13 15:22:37 2014 (r260590) @@ -9078,7 +9078,13 @@ tsubst_copy_and_build (tree t, return build_x_binary_op (TREE_CODE (t), RECUR (TREE_OPERAND (t, 0)), + (TREE_NO_WARNING (TREE_OPERAND (t, 0)) + ? ERROR_MARK + : TREE_CODE (TREE_OPERAND (t, 0))), RECUR (TREE_OPERAND (t, 1)), + (TREE_NO_WARNING (TREE_OPERAND (t, 1)) + ? ERROR_MARK + : TREE_CODE (TREE_OPERAND (t, 1))), /*overloaded_p=*/NULL); case SCOPE_REF: @@ -9087,7 +9093,14 @@ tsubst_copy_and_build (tree t, case ARRAY_REF: op1 = tsubst_non_call_postfix_expression (TREE_OPERAND (t, 0), args, complain, in_decl); - return build_x_binary_op (ARRAY_REF, op1, RECUR (TREE_OPERAND (t, 1)), + return build_x_binary_op (ARRAY_REF, op1, + (TREE_NO_WARNING (TREE_OPERAND (t, 0)) + ? ERROR_MARK + : TREE_CODE (TREE_OPERAND (t, 0))), + RECUR (TREE_OPERAND (t, 1)), + (TREE_NO_WARNING (TREE_OPERAND (t, 1)) + ? ERROR_MARK + : TREE_CODE (TREE_OPERAND (t, 1))), /*overloaded_p=*/NULL); case SIZEOF_EXPR: Modified: stable/8/contrib/gcc/cp/semantics.c ============================================================================== --- stable/8/contrib/gcc/cp/semantics.c Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/cp/semantics.c Mon Jan 13 15:22:37 2014 (r260590) @@ -587,6 +587,16 @@ maybe_convert_cond (tree cond) /* Do the conversion. */ cond = convert_from_reference (cond); + + if (TREE_CODE (cond) == MODIFY_EXPR + && !TREE_NO_WARNING (cond) + && warn_parentheses) + { + warning (OPT_Wparentheses, + "suggest parentheses around assignment used as truth value"); + TREE_NO_WARNING (cond) = 1; + } + return condition_conversion (cond); } Modified: stable/8/contrib/gcc/cp/tree.c ============================================================================== --- stable/8/contrib/gcc/cp/tree.c Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/cp/tree.c Mon Jan 13 15:22:37 2014 (r260590) @@ -1762,6 +1762,14 @@ pod_type_p (tree t) return 1; } +/* Nonzero iff type T is a class template implicit specialization. */ + +bool +class_tmpl_impl_spec_p (tree t) +{ + return CLASS_TYPE_P (t) && CLASSTYPE_TEMPLATE_INSTANTIATION (t); +} + /* Returns 1 iff zero initialization of type T means actually storing zeros in it. */ Modified: stable/8/contrib/gcc/cp/typeck.c ============================================================================== --- stable/8/contrib/gcc/cp/typeck.c Mon Jan 13 15:21:11 2014 (r260589) +++ stable/8/contrib/gcc/cp/typeck.c Mon Jan 13 15:22:37 2014 (r260590) @@ -1690,17 +1690,20 @@ rationalize_conditional_expr (enum tree_ are equal, so we know what conditional expression this used to be. */ if (TREE_CODE (t) == MIN_EXPR || TREE_CODE (t) == MAX_EXPR) { + tree op0 = TREE_OPERAND (t, 0); + tree op1 = TREE_OPERAND (t, 1); + /* The following code is incorrect if either operand side-effects. */ - gcc_assert (!TREE_SIDE_EFFECTS (TREE_OPERAND (t, 0)) - && !TREE_SIDE_EFFECTS (TREE_OPERAND (t, 1))); + gcc_assert (!TREE_SIDE_EFFECTS (op0) + && !TREE_SIDE_EFFECTS (op1)); return build_conditional_expr (build_x_binary_op ((TREE_CODE (t) == MIN_EXPR ? LE_EXPR : GE_EXPR), - TREE_OPERAND (t, 0), - TREE_OPERAND (t, 1), + op0, TREE_CODE (op0), + op1, TREE_CODE (op1), /*overloaded_p=*/NULL), - build_unary_op (code, TREE_OPERAND (t, 0), 0), - build_unary_op (code, TREE_OPERAND (t, 1), 0)); + build_unary_op (code, op0, 0), + build_unary_op (code, op1, 0)); } return @@ -2908,8 +2911,8 @@ convert_arguments (tree typelist, tree v conversions on the operands. CODE is the kind of expression to build. */ tree -build_x_binary_op (enum tree_code code, tree arg1, tree arg2, - bool *overloaded_p) +build_x_binary_op (enum tree_code code, tree arg1, enum tree_code arg1_code, + tree arg2, enum tree_code arg2_code, bool *overloaded_p) { tree orig_arg1; tree orig_arg2; @@ -2933,6 +2936,17 @@ build_x_binary_op (enum tree_code code, expr = build_new_op (code, LOOKUP_NORMAL, arg1, arg2, NULL_TREE, overloaded_p); + /* Check for cases such as x+y< Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 22A0DFC9; Mon, 13 Jan 2014 15:28:40 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E7929192B; Mon, 13 Jan 2014 15:28:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DFSdJM033142; Mon, 13 Jan 2014 15:28:39 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DFSdSJ033141; Mon, 13 Jan 2014 15:28:39 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401131528.s0DFSdSJ033141@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Mon, 13 Jan 2014 15:28:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260591 - stable/8/contrib/tcpdump X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 15:28:40 -0000 Author: pfg Date: Mon Jan 13 15:28:39 2014 New Revision: 260591 URL: http://svnweb.freebsd.org/changeset/base/260591 Log: MFC r258573: Removes strict-aliasing warnings from newer GCC in tcpdump. Modified: stable/8/contrib/tcpdump/extract.h Directory Properties: stable/8/contrib/ (props changed) stable/8/contrib/tcpdump/ (props changed) Modified: stable/8/contrib/tcpdump/extract.h ============================================================================== --- stable/8/contrib/tcpdump/extract.h Mon Jan 13 15:22:37 2014 (r260590) +++ stable/8/contrib/tcpdump/extract.h Mon Jan 13 15:28:39 2014 (r260591) @@ -51,13 +51,25 @@ typedef struct { u_int32_t val; } __attribute__((packed)) unaligned_u_int32_t; -#define EXTRACT_16BITS(p) \ - ((u_int16_t)ntohs(((const unaligned_u_int16_t *)(p))->val)) -#define EXTRACT_32BITS(p) \ - ((u_int32_t)ntohl(((const unaligned_u_int32_t *)(p))->val)) -#define EXTRACT_64BITS(p) \ - ((u_int64_t)(((u_int64_t)ntohl(((const unaligned_u_int32_t *)(p) + 0)->val)) << 32 | \ - ((u_int64_t)ntohl(((const unaligned_u_int32_t *)(p) + 1)->val)) << 0)) +static inline u_int16_t +EXTRACT_16BITS(const void *p) +{ + return ((u_int16_t)ntohs(((const unaligned_u_int16_t *)(p))->val)); +} + +static inline u_int32_t +EXTRACT_32BITS(const void *p) +{ + return ((u_int32_t)ntohl(((const unaligned_u_int32_t *)(p))->val)); +} + +static inline u_int64_t +EXTRACT_64BITS(const void *p) +{ + return ((u_int64_t)(((u_int64_t)ntohl(((const unaligned_u_int32_t *)(p) + 0)->val)) << 32 | \ + ((u_int64_t)ntohl(((const unaligned_u_int32_t *)(p) + 1)->val)) << 0)); + +} #else /* HAVE___ATTRIBUTE__ */ /* @@ -88,13 +100,26 @@ typedef struct { * The processor natively handles unaligned loads, so we can just * cast the pointer and fetch through it. */ -#define EXTRACT_16BITS(p) \ - ((u_int16_t)ntohs(*(const u_int16_t *)(p))) -#define EXTRACT_32BITS(p) \ - ((u_int32_t)ntohl(*(const u_int32_t *)(p))) -#define EXTRACT_64BITS(p) \ - ((u_int64_t)(((u_int64_t)ntohl(*((const u_int32_t *)(p) + 0))) << 32 | \ - ((u_int64_t)ntohl(*((const u_int32_t *)(p) + 1))) << 0)) +static inline u_int16_t +EXTRACT_16BITS(const void *p) +{ + return ((u_int16_t)ntohs(*(const u_int16_t *)(p))); +} + +static inline u_int32_t +EXTRACT_32BITS(const void *p) +{ + return ((u_int32_t)ntohl(*(const u_int32_t *)(p))); +} + +static inline u_int64_t +EXTRACT_64BITS(const void *p) +{ + return ((u_int64_t)(((u_int64_t)ntohl(*((const u_int32_t *)(p) + 0))) << 32 | \ + ((u_int64_t)ntohl(*((const u_int32_t *)(p) + 1))) << 0)); + +} + #endif /* LBL_ALIGN */ #define EXTRACT_24BITS(p) \ From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 15:32:38 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 87E2520E; Mon, 13 Jan 2014 15:32:38 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 67EA719B3; Mon, 13 Jan 2014 15:32:38 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DFWcSj036196; Mon, 13 Jan 2014 15:32:38 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DFWbwh036193; Mon, 13 Jan 2014 15:32:37 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401131532.s0DFWbwh036193@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Mon, 13 Jan 2014 15:32:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260592 - in stable/8/contrib/gcc: . doc X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 15:32:38 -0000 Author: pfg Date: Mon Jan 13 15:32:37 2014 New Revision: 260592 URL: http://svnweb.freebsd.org/changeset/base/260592 Log: MFC r259920: gcc: Implement -Wmost for compatibility with clang. This is equivalent to -Wall -Wno-parentheses. Obtained from: Apple GCC 4.2 - 5531 Modified: stable/8/contrib/gcc/c-opts.c stable/8/contrib/gcc/c.opt stable/8/contrib/gcc/doc/invoke.texi Directory Properties: stable/8/ (props changed) stable/8/contrib/ (props changed) stable/8/contrib/gcc/ (props changed) Modified: stable/8/contrib/gcc/c-opts.c ============================================================================== --- stable/8/contrib/gcc/c-opts.c Mon Jan 13 15:28:39 2014 (r260591) +++ stable/8/contrib/gcc/c-opts.c Mon Jan 13 15:32:37 2014 (r260592) @@ -385,12 +385,17 @@ c_common_handle_option (size_t scode, co break; case OPT_Wall: + /* APPLE LOCAL -Wmost */ + case OPT_Wmost: set_Wunused (value); set_Wformat (value); set_Wimplicit (value); warn_char_subscripts = value; warn_missing_braces = value; - warn_parentheses = value; + /* APPLE LOCAL begin -Wmost --dpatel */ + if (code != OPT_Wmost) + warn_parentheses = value; + /* APPLE LOCAL end -Wmost --dpatel */ warn_return_type = value; warn_sequence_point = value; /* Was C only. */ if (c_dialect_cxx ()) Modified: stable/8/contrib/gcc/c.opt ============================================================================== --- stable/8/contrib/gcc/c.opt Mon Jan 13 15:28:39 2014 (r260591) +++ stable/8/contrib/gcc/c.opt Mon Jan 13 15:32:37 2014 (r260592) @@ -284,6 +284,12 @@ Wmissing-prototypes C ObjC Var(warn_missing_prototypes) Warn about global functions without prototypes +; APPLE LOCAL begin -Wmost +Wmost +C ObjC C++ ObjC++ +Like -Wall but without -Wparentheses +; APPLE LOCAL end -Wmost + Wmultichar C ObjC C++ ObjC++ Warn about use of multi-character character constants Modified: stable/8/contrib/gcc/doc/invoke.texi ============================================================================== --- stable/8/contrib/gcc/doc/invoke.texi Mon Jan 13 15:28:39 2014 (r260591) +++ stable/8/contrib/gcc/doc/invoke.texi Mon Jan 13 15:32:37 2014 (r260592) @@ -238,6 +238,8 @@ Objective-C and Objective-C++ Dialects}. -Wmain -Wmissing-braces -Wmissing-field-initializers @gol -Wmissing-format-attribute -Wmissing-include-dirs @gol -Wmissing-noreturn @gol +@c APPLE LOCAL -Wmost +-Wmost (APPLE ONLY) @gol -Wno-multichar -Wnonnull -Wno-overflow @gol -Woverlength-strings -Wpacked -Wpadded @gol -Wparentheses -Wpointer-arith -Wno-pointer-to-int-cast @gol @@ -2897,7 +2899,12 @@ that are easy to avoid (or modify to pre conjunction with macros. This also enables some language-specific warnings described in @ref{C++ Dialect Options} and @ref{Objective-C and Objective-C++ Dialect Options}. +@c APPLE LOCAL begin -Wmost +@item -Wmost +@opindex Wmost +This is equivalent to -Wall -Wno-parentheses. (Apple compatible) @end table +@c APPLE LOCAL end -Wmost The following @option{-W@dots{}} options are not implied by @option{-Wall}. Some of them warn about constructions that users generally do not From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 16:05:22 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2DF46903; Mon, 13 Jan 2014 16:05:22 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 17D811D4B; Mon, 13 Jan 2014 16:05:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DG5LMh047802; Mon, 13 Jan 2014 16:05:21 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DG5Jlu047784; Mon, 13 Jan 2014 16:05:19 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401131605.s0DG5Jlu047784@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Mon, 13 Jan 2014 16:05:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260593 - in stable/8/contrib/gcc: . cp X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 16:05:22 -0000 Author: pfg Date: Mon Jan 13 16:05:18 2014 New Revision: 260593 URL: http://svnweb.freebsd.org/changeset/base/260593 Log: MFC r259666, r259696: gcc: warnings from -Wformat-security Obtained from: Apple GCC 4.2 - 5646 (Radar 5764921) Modified: stable/8/contrib/gcc/c-common.c stable/8/contrib/gcc/c-convert.c stable/8/contrib/gcc/c-incpath.c stable/8/contrib/gcc/c-typeck.c stable/8/contrib/gcc/cfg.c stable/8/contrib/gcc/collect2.c stable/8/contrib/gcc/cp/cvt.c stable/8/contrib/gcc/cp/pt.c stable/8/contrib/gcc/cp/typeck.c stable/8/contrib/gcc/fold-const.c stable/8/contrib/gcc/gcc.c stable/8/contrib/gcc/gcov.c stable/8/contrib/gcc/tlink.c Directory Properties: stable/8/ (props changed) stable/8/contrib/ (props changed) stable/8/contrib/gcc/ (props changed) Modified: stable/8/contrib/gcc/c-common.c ============================================================================== --- stable/8/contrib/gcc/c-common.c Mon Jan 13 15:32:37 2014 (r260592) +++ stable/8/contrib/gcc/c-common.c Mon Jan 13 16:05:18 2014 (r260593) @@ -5922,11 +5922,11 @@ c_parse_error (const char *gmsgid, enum message = NULL; } else - error (gmsgid); + error (gmsgid, ""); if (message) { - error (message); + error (message, ""); free (message); } #undef catenate_messages Modified: stable/8/contrib/gcc/c-convert.c ============================================================================== --- stable/8/contrib/gcc/c-convert.c Mon Jan 13 15:32:37 2014 (r260592) +++ stable/8/contrib/gcc/c-convert.c Mon Jan 13 16:05:18 2014 (r260593) @@ -80,7 +80,7 @@ convert (tree type, tree expr) if ((invalid_conv_diag = targetm.invalid_conversion (TREE_TYPE (expr), type))) { - error (invalid_conv_diag); + error (invalid_conv_diag, ""); return error_mark_node; } Modified: stable/8/contrib/gcc/c-incpath.c ============================================================================== --- stable/8/contrib/gcc/c-incpath.c Mon Jan 13 15:32:37 2014 (r260592) +++ stable/8/contrib/gcc/c-incpath.c Mon Jan 13 16:05:18 2014 (r260593) @@ -72,7 +72,7 @@ free_path (struct cpp_dir *path, int rea case REASON_DUP_SYS: fprintf (stderr, _("ignoring duplicate directory \"%s\"\n"), path->name); if (reason == REASON_DUP_SYS) - fprintf (stderr, + fprintf (stderr, "%s", _(" as it is a non-system directory that duplicates a system directory\n")); break; @@ -292,16 +292,16 @@ merge_include_chains (cpp_reader *pfile, { struct cpp_dir *p; - fprintf (stderr, _("#include \"...\" search starts here:\n")); + fprintf (stderr, "%s", _("#include \"...\" search starts here:\n")); for (p = heads[QUOTE];; p = p->next) { if (p == heads[BRACKET]) - fprintf (stderr, _("#include <...> search starts here:\n")); + fprintf (stderr, "%s", _("#include <...> search starts here:\n")); if (!p) break; fprintf (stderr, " %s\n", p->name); } - fprintf (stderr, _("End of search list.\n")); + fprintf (stderr, "%s", _("End of search list.\n")); } } Modified: stable/8/contrib/gcc/c-typeck.c ============================================================================== --- stable/8/contrib/gcc/c-typeck.c Mon Jan 13 15:32:37 2014 (r260592) +++ stable/8/contrib/gcc/c-typeck.c Mon Jan 13 16:05:18 2014 (r260593) @@ -2571,7 +2571,7 @@ convert_arguments (tree typelist, tree v else if ((invalid_func_diag = targetm.calls.invalid_arg_for_unprototyped_fn (typelist, fundecl, val))) { - error (invalid_func_diag); + error (invalid_func_diag, ""); return error_mark_node; } else @@ -2762,7 +2762,7 @@ build_unary_op (enum tree_code code, tre if ((invalid_op_diag = targetm.invalid_unary_op (code, TREE_TYPE (xarg)))) { - error (invalid_op_diag); + error (invalid_op_diag, ""); return error_mark_node; } @@ -7802,7 +7802,7 @@ build_binary_op (enum tree_code code, tr if ((invalid_op_diag = targetm.invalid_binary_op (code, type0, type1))) { - error (invalid_op_diag); + error (invalid_op_diag, ""); return error_mark_node; } Modified: stable/8/contrib/gcc/cfg.c ============================================================================== --- stable/8/contrib/gcc/cfg.c Mon Jan 13 15:32:37 2014 (r260592) +++ stable/8/contrib/gcc/cfg.c Mon Jan 13 16:05:18 2014 (r260593) @@ -830,7 +830,7 @@ dump_cfg_bb_info (FILE *file, basic_bloc else fprintf (file, ", "); first = false; - fprintf (file, bb_bitnames[i]); + fprintf (file, "%s", bb_bitnames[i]); } if (!first) fprintf (file, ")"); Modified: stable/8/contrib/gcc/collect2.c ============================================================================== --- stable/8/contrib/gcc/collect2.c Mon Jan 13 15:32:37 2014 (r260592) +++ stable/8/contrib/gcc/collect2.c Mon Jan 13 16:05:18 2014 (r260593) @@ -1562,10 +1562,10 @@ collect_execute (const char *prog, char if (err != 0) { errno = err; - fatal_perror (errmsg); + fatal_perror ("%s", errmsg); } else - fatal (errmsg); + fatal ("%s", errmsg); } return pex; @@ -2050,10 +2050,10 @@ scan_prog_file (const char *prog_name, e if (err != 0) { errno = err; - fatal_perror (errmsg); + fatal_perror ("%s", errmsg); } else - fatal (errmsg); + fatal ("%s", errmsg); } int_handler = (void (*) (int)) signal (SIGINT, SIG_IGN); Modified: stable/8/contrib/gcc/cp/cvt.c ============================================================================== --- stable/8/contrib/gcc/cp/cvt.c Mon Jan 13 15:32:37 2014 (r260592) +++ stable/8/contrib/gcc/cp/cvt.c Mon Jan 13 16:05:18 2014 (r260593) @@ -615,7 +615,7 @@ ocp_convert (tree type, tree expr, int c if ((invalid_conv_diag = targetm.invalid_conversion (TREE_TYPE (expr), type))) { - error (invalid_conv_diag); + error (invalid_conv_diag, ""); return error_mark_node; } Modified: stable/8/contrib/gcc/cp/pt.c ============================================================================== --- stable/8/contrib/gcc/cp/pt.c Mon Jan 13 15:32:37 2014 (r260592) +++ stable/8/contrib/gcc/cp/pt.c Mon Jan 13 16:05:18 2014 (r260593) @@ -8925,7 +8925,7 @@ tsubst_copy_and_build (tree t, /*template_arg_p=*/false, &error_msg); if (error_msg) - error (error_msg); + error ("%s", error_msg); if (!function_p && TREE_CODE (decl) == IDENTIFIER_NODE) decl = unqualified_name_lookup_error (decl); return decl; Modified: stable/8/contrib/gcc/cp/typeck.c ============================================================================== --- stable/8/contrib/gcc/cp/typeck.c Mon Jan 13 15:32:37 2014 (r260592) +++ stable/8/contrib/gcc/cp/typeck.c Mon Jan 13 16:05:18 2014 (r260593) @@ -3091,7 +3091,7 @@ build_binary_op (enum tree_code code, tr if ((invalid_op_diag = targetm.invalid_binary_op (code, type0, type1))) { - error (invalid_op_diag); + error (invalid_op_diag, ""); return error_mark_node; } @@ -4018,7 +4018,7 @@ build_unary_op (enum tree_code code, tre : code), TREE_TYPE (xarg)))) { - error (invalid_op_diag); + error (invalid_op_diag, ""); return error_mark_node; } Modified: stable/8/contrib/gcc/fold-const.c ============================================================================== --- stable/8/contrib/gcc/fold-const.c Mon Jan 13 15:32:37 2014 (r260592) +++ stable/8/contrib/gcc/fold-const.c Mon Jan 13 16:05:18 2014 (r260593) @@ -992,7 +992,7 @@ fold_overflow_warning (const char* gmsgi } } else if (issue_strict_overflow_warning (wc)) - warning (OPT_Wstrict_overflow, gmsgid); + warning (OPT_Wstrict_overflow, "%s", gmsgid); } /* Return true if the built-in mathematical function specified by CODE Modified: stable/8/contrib/gcc/gcc.c ============================================================================== --- stable/8/contrib/gcc/gcc.c Mon Jan 13 15:32:37 2014 (r260592) +++ stable/8/contrib/gcc/gcc.c Mon Jan 13 16:05:18 2014 (r260593) @@ -2963,7 +2963,7 @@ execute (void) if (errmsg != NULL) { if (err == 0) - fatal (errmsg); + fatal ("%s", errmsg); else { errno = err; @@ -6514,7 +6514,7 @@ main (int argc, char **argv) if (! verbose_flag) { - printf (_("\nFor bug reporting instructions, please see:\n")); + printf ("%s", _("\nFor bug reporting instructions, please see:\n")); printf ("%s.\n", bug_report_url); return (0); Modified: stable/8/contrib/gcc/gcov.c ============================================================================== --- stable/8/contrib/gcc/gcov.c Mon Jan 13 15:32:37 2014 (r260592) +++ stable/8/contrib/gcc/gcov.c Mon Jan 13 16:05:18 2014 (r260593) @@ -417,7 +417,7 @@ print_version (void) fnotice (stdout, "gcov (GCC) %s\n", version_string); fprintf (stdout, "Copyright %s 2006 Free Software Foundation, Inc.\n", _("(C)")); - fnotice (stdout, + fnotice (stdout, "%s", _("This is free software; see the source for copying conditions.\n" "There is NO warranty; not even for MERCHANTABILITY or \n" "FITNESS FOR A PARTICULAR PURPOSE.\n\n")); Modified: stable/8/contrib/gcc/tlink.c ============================================================================== --- stable/8/contrib/gcc/tlink.c Mon Jan 13 15:32:37 2014 (r260592) +++ stable/8/contrib/gcc/tlink.c Mon Jan 13 16:05:18 2014 (r260593) @@ -381,7 +381,7 @@ read_repo_file (file *f) FILE *stream = fopen (f->key, "r"); if (tlink_verbose >= 2) - fprintf (stderr, _("collect: reading %s\n"), f->key); + fprintf (stderr, "%s", _("collect: reading %s\n"), f->key); while (fscanf (stream, "%c ", &c) == 1) { From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 16:23:10 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 007C6198; Mon, 13 Jan 2014 16:23:09 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E06701EF3; Mon, 13 Jan 2014 16:23:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DGN9xE055829; Mon, 13 Jan 2014 16:23:09 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DGN9Cv055828; Mon, 13 Jan 2014 16:23:09 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201401131623.s0DGN9Cv055828@svn.freebsd.org> From: Baptiste Daroussin Date: Mon, 13 Jan 2014 16:23:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260594 - head/sbin/kldload X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 16:23:10 -0000 Author: bapt Date: Mon Jan 13 16:23:09 2014 New Revision: 260594 URL: http://svnweb.freebsd.org/changeset/base/260594 Log: Point the user to dmesg(1) to get informations about why loading a module did fail instead of printing the cryptic "Exec format error" MFC after: 1 week Modified: head/sbin/kldload/kldload.c Modified: head/sbin/kldload/kldload.c ============================================================================== --- head/sbin/kldload/kldload.c Mon Jan 13 16:05:18 2014 (r260593) +++ head/sbin/kldload/kldload.c Mon Jan 13 16:23:09 2014 (r260594) @@ -181,12 +181,22 @@ main(int argc, char** argv) printf("%s is already " "loaded\n", argv[0]); } else { - if (errno == EEXIST) + switch (errno) { + case EEXIST: warnx("can't load %s: module " "already loaded or " "in kernel", argv[0]); - else + break; + case ENOEXEC: + warnx("an error occured while " + "loading the module. " + "Please check dmesg(1) for " + "more details."); + break; + default: warn("can't load %s", argv[0]); + break; + } errors++; } } else { From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 16:45:44 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 73C76614; Mon, 13 Jan 2014 16:45:44 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5F90910BC; Mon, 13 Jan 2014 16:45:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DGjiGn063480; Mon, 13 Jan 2014 16:45:44 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DGjiDH063479; Mon, 13 Jan 2014 16:45:44 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201401131645.s0DGjiDH063479@svn.freebsd.org> From: Baptiste Daroussin Date: Mon, 13 Jan 2014 16:45:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260595 - head/share/man/man4 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 16:45:44 -0000 Author: bapt Date: Mon Jan 13 16:45:43 2014 New Revision: 260595 URL: http://svnweb.freebsd.org/changeset/base/260595 Log: Update the BUGS section according the recent changes in kldload(8) Reviewed by: bdrewery MFC after: 1 week Modified: head/share/man/man4/kld.4 Modified: head/share/man/man4/kld.4 ============================================================================== --- head/share/man/man4/kld.4 Mon Jan 13 16:23:09 2014 (r260594) +++ head/share/man/man4/kld.4 Mon Jan 13 16:45:43 2014 (r260595) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 8, 1998 +.Dd January 13, 2014 .Dt KLD 4 .Os .Sh NAME @@ -166,8 +166,8 @@ binary, then fails to execute the entry point. .Pp .Xr kldload 8 -returns the cryptic message -.Sq Li "ENOEXEC (Exec format error)" +points the user to read +.Xr dmesg 1 for any error encountered while loading a module. .Pp When system internal interfaces change, old modules often cannot From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 16:47:25 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D424476E; Mon, 13 Jan 2014 16:47:25 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C018410CC; Mon, 13 Jan 2014 16:47:25 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DGlPBv063713; Mon, 13 Jan 2014 16:47:25 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DGlPCM063712; Mon, 13 Jan 2014 16:47:25 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201401131647.s0DGlPCM063712@svn.freebsd.org> From: Baptiste Daroussin Date: Mon, 13 Jan 2014 16:47:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260596 - head/sbin/kldload X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 16:47:25 -0000 Author: bapt Date: Mon Jan 13 16:47:25 2014 New Revision: 260596 URL: http://svnweb.freebsd.org/changeset/base/260596 Log: Fix typo Reported by: dumbbell Modified: head/sbin/kldload/kldload.c Modified: head/sbin/kldload/kldload.c ============================================================================== --- head/sbin/kldload/kldload.c Mon Jan 13 16:45:43 2014 (r260595) +++ head/sbin/kldload/kldload.c Mon Jan 13 16:47:25 2014 (r260596) @@ -188,7 +188,7 @@ main(int argc, char** argv) "in kernel", argv[0]); break; case ENOEXEC: - warnx("an error occured while " + warnx("an error occurred while " "loading the module. " "Please check dmesg(1) for " "more details."); From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 17:14:11 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 24D4BFEF; Mon, 13 Jan 2014 17:14:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 105E31330; Mon, 13 Jan 2014 17:14:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DHEAf4075661; Mon, 13 Jan 2014 17:14:10 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DHEA4o075656; Mon, 13 Jan 2014 17:14:10 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201401131714.s0DHEA4o075656@svn.freebsd.org> From: Baptiste Daroussin Date: Mon, 13 Jan 2014 17:14:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260597 - in head: sbin/kldload share/man/man4 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 17:14:11 -0000 Author: bapt Date: Mon Jan 13 17:14:10 2014 New Revision: 260597 URL: http://svnweb.freebsd.org/changeset/base/260597 Log: Fix dmesg(1) -> dmesg(8) Reported by: trasz Modified: head/sbin/kldload/kldload.c head/share/man/man4/kld.4 Modified: head/sbin/kldload/kldload.c ============================================================================== --- head/sbin/kldload/kldload.c Mon Jan 13 16:47:25 2014 (r260596) +++ head/sbin/kldload/kldload.c Mon Jan 13 17:14:10 2014 (r260597) @@ -190,7 +190,7 @@ main(int argc, char** argv) case ENOEXEC: warnx("an error occurred while " "loading the module. " - "Please check dmesg(1) for " + "Please check dmesg(8) for " "more details."); break; default: Modified: head/share/man/man4/kld.4 ============================================================================== --- head/share/man/man4/kld.4 Mon Jan 13 16:47:25 2014 (r260596) +++ head/share/man/man4/kld.4 Mon Jan 13 17:14:10 2014 (r260597) @@ -167,7 +167,7 @@ fails to execute the entry point. .Pp .Xr kldload 8 points the user to read -.Xr dmesg 1 +.Xr dmesg 8 for any error encountered while loading a module. .Pp When system internal interfaces change, old modules often cannot From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 18:57:31 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7B36F8A4; Mon, 13 Jan 2014 18:57:31 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 673DA1C96; Mon, 13 Jan 2014 18:57:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DIvV2T016787; Mon, 13 Jan 2014 18:57:31 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DIvVhH016786; Mon, 13 Jan 2014 18:57:31 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201401131857.s0DIvVhH016786@svn.freebsd.org> From: John Baldwin Date: Mon, 13 Jan 2014 18:57:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260598 - stable/9/sys/kern X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 18:57:31 -0000 Author: jhb Date: Mon Jan 13 18:57:30 2014 New Revision: 260598 URL: http://svnweb.freebsd.org/changeset/base/260598 Log: MFC 243152,255478: Two SOCK_SEQPACKET fixes: - Update comment. - Provide pr_ctloutput method for AF_LOCAL/SOCK_SEQPACKET sockets. Modified: stable/9/sys/kern/uipc_usrreq.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/kern/uipc_usrreq.c ============================================================================== --- stable/9/sys/kern/uipc_usrreq.c Mon Jan 13 17:14:10 2014 (r260597) +++ stable/9/sys/kern/uipc_usrreq.c Mon Jan 13 18:57:30 2014 (r260598) @@ -320,6 +320,7 @@ static struct protosw localsw[] = { */ .pr_flags = PR_ADDR|PR_ATOMIC|PR_CONNREQUIRED|PR_WANTRCVD| PR_RIGHTS, + .pr_ctloutput = &uipc_ctloutput, .pr_usrreqs = &uipc_usrreqs_seqpacket, }, }; @@ -936,7 +937,8 @@ uipc_send(struct socket *so, int flags, SOCKBUF_LOCK(&so2->so_rcv); if (unp2->unp_flags & UNP_WANTCRED) { /* - * Credentials are passed only once on SOCK_STREAM. + * Credentials are passed only once on SOCK_STREAM + * and SOCK_SEQPACKET. */ unp2->unp_flags &= ~UNP_WANTCRED; control = unp_addsockcred(td, control); From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 19:01:15 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 62E8DA21; Mon, 13 Jan 2014 19:01:15 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 369EC1D1E; Mon, 13 Jan 2014 19:01:15 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DJ1FUw020127; Mon, 13 Jan 2014 19:01:15 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DJ1F6g020125; Mon, 13 Jan 2014 19:01:15 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201401131901.s0DJ1F6g020125@svn.freebsd.org> From: Marcel Moolenaar Date: Mon, 13 Jan 2014 19:01:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260599 - head/lib/libkvm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 19:01:15 -0000 Author: marcel Date: Mon Jan 13 19:01:14 2014 New Revision: 260599 URL: http://svnweb.freebsd.org/changeset/base/260599 Log: Re-apply the part of r260022 that was reverted by r260030 with one significant difference: for LIB32 builds both TARGET_ARCH and MACHINE_ARCH are defined. TARGET_ARCH confusingly holds the architecture of the host (e.g. amd64), while MACHINE_ARCH holds the architecture were trying to build (e.g. i386). With both set and different, r260022 changed the behaviour to interpret the condition as building a cross-amd64 libkvm on i386, when obviously we're trying to build an i386 version on amd64. When COMPAT_32BIT is defined, we're building LIB32 and ignore the value of TARGET_ARCH as we did before. Modified: head/lib/libkvm/Makefile Modified: head/lib/libkvm/Makefile ============================================================================== --- head/lib/libkvm/Makefile Mon Jan 13 18:57:30 2014 (r260598) +++ head/lib/libkvm/Makefile Mon Jan 13 19:01:14 2014 (r260599) @@ -1,23 +1,36 @@ # @(#)Makefile 8.1 (Berkeley) 6/4/93 # $FreeBSD$ +.if defined(TARGET_ARCH) && !defined(COMPAT_32BIT) +KVM_XARCH=${TARGET_ARCH} +KVM_XCPUARCH=${KVM_XARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/} +.else +KVM_XARCH=${MACHINE_ARCH} +KVM_XCPUARCH=${MACHINE_CPUARCH} +.endif + +.if ${KVM_XARCH} != ${MACHINE_ARCH} +LIB= kvm-${KVM_XARCH} +CFLAGS+=-DCROSS_LIBKVM +.else LIB= kvm +.endif + SHLIBDIR?= /lib SHLIB_MAJOR= 6 CFLAGS+=-DLIBC_SCCS -I${.CURDIR} -.if exists(${.CURDIR}/kvm_${MACHINE_ARCH}.c) -KVM_ARCH=${MACHINE_ARCH} +.if exists(${.CURDIR}/kvm_${KVM_XARCH}.c) +KVM_ARCH=${KVM_XARCH} .else -KVM_ARCH=${MACHINE_CPUARCH} +KVM_ARCH=${KVM_XCPUARCH} .endif WARNS?= 3 SRCS= kvm.c kvm_${KVM_ARCH}.c kvm_cptime.c kvm_file.c kvm_getloadavg.c \ kvm_getswapinfo.c kvm_pcpu.c kvm_proc.c kvm_vnet.c -.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" || \ - ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "mips" +.if exists(${.CURDIR}/kvm_minidump_${KVM_ARCH}.c) SRCS+= kvm_minidump_${KVM_ARCH}.c .endif INCS= kvm.h From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 19:02:31 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E0FEAB71; Mon, 13 Jan 2014 19:02:31 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CD5071D2C; Mon, 13 Jan 2014 19:02:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DJ2VCa020394; Mon, 13 Jan 2014 19:02:31 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DJ2VZa020393; Mon, 13 Jan 2014 19:02:31 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201401131902.s0DJ2VZa020393@svn.freebsd.org> From: Marcel Moolenaar Date: Mon, 13 Jan 2014 19:02:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260600 - head/lib/libkvm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 19:02:32 -0000 Author: marcel Date: Mon Jan 13 19:02:31 2014 New Revision: 260600 URL: http://svnweb.freebsd.org/changeset/base/260600 Log: We don't have to worry about page sizes when working on virtual cores (i.e. minidumps). Every segment is virtually contiguous. Modified: head/lib/libkvm/kvm_ia64.c Modified: head/lib/libkvm/kvm_ia64.c ============================================================================== --- head/lib/libkvm/kvm_ia64.c Mon Jan 13 19:01:14 2014 (r260599) +++ head/lib/libkvm/kvm_ia64.c Mon Jan 13 19:02:31 2014 (r260600) @@ -245,7 +245,7 @@ static size_t virt_kvatop(kvm_t *kd, uint64_t va, off_t *ofs) { - return (virt_addr2off(kd, va, ofs, kd->vmst->pagesize)); + return (virt_addr2off(kd, va, ofs, 0)); } /* From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 19:08:26 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 20EE4DD8; Mon, 13 Jan 2014 19:08:26 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0CAEF1D5C; Mon, 13 Jan 2014 19:08:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DJ8PoK021499; Mon, 13 Jan 2014 19:08:25 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DJ8P6B021498; Mon, 13 Jan 2014 19:08:25 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201401131908.s0DJ8P6B021498@svn.freebsd.org> From: Marcel Moolenaar Date: Mon, 13 Jan 2014 19:08:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260601 - head/gnu/usr.bin/gdb/kgdb X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 19:08:26 -0000 Author: marcel Date: Mon Jan 13 19:08:25 2014 New Revision: 260601 URL: http://svnweb.freebsd.org/changeset/base/260601 Log: When building a cross-kgdb, suppress the registration of the standard core target by declaring coreops_suppress_target with initializer. This is also happening for non-cross kgdb, by virtue of having fbsd-threads.c in libgdb and having it do the exact same thing. Since fbsd-threads.c is not included in in libgdb when building a cross debugger, we ended up with more than 1 core file targets (the standard gdb core file target and kgdb's libkvm based core file target) and this behaves the same as not having a core target at all. Modified: head/gnu/usr.bin/gdb/kgdb/trgt.c Modified: head/gnu/usr.bin/gdb/kgdb/trgt.c ============================================================================== --- head/gnu/usr.bin/gdb/kgdb/trgt.c Mon Jan 13 19:02:31 2014 (r260600) +++ head/gnu/usr.bin/gdb/kgdb/trgt.c Mon Jan 13 19:08:25 2014 (r260601) @@ -53,6 +53,18 @@ __FBSDID("$FreeBSD$"); #include "kgdb.h" +#ifdef CROSS_DEBUGGER +/* + * We suppress the call to add_target() of core_ops in corelow.c because if + * there are multiple core_stratum targets, the find_core_target() function + * won't know which one to return and returns none. We need it to return + * our target. We only have to do that when we're building a cross-debugger + * because fbsd-threads.c is part of a native debugger and it too defines + * coreops_suppress_target with 1 as the initializer. + */ +int coreops_suppress_target = 1; +#endif + static CORE_ADDR stoppcbs; static void kgdb_core_cleanup(void *); From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 19:14:30 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4139AD9; Mon, 13 Jan 2014 19:14:30 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2CBEB1DFC; Mon, 13 Jan 2014 19:14:30 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DJEURD025178; Mon, 13 Jan 2014 19:14:30 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DJEUHl025177; Mon, 13 Jan 2014 19:14:30 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401131914.s0DJEUHl025177@svn.freebsd.org> From: Alexander Motin Date: Mon, 13 Jan 2014 19:14:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260602 - stable/8/sys/x86/cpufreq X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 19:14:30 -0000 Author: mav Date: Mon Jan 13 19:14:29 2014 New Revision: 260602 URL: http://svnweb.freebsd.org/changeset/base/260602 Log: MFC r259197: Do not DELAY() for P-state transition unless we want to see the result. Intel manual says: "If a transition is already in progress, transition to a new value will subsequently take effect. Reads of IA32_PERF_CTL determine the last targeted operating point." So seems it should be fine to just trigger wanted transition and go. Linux does the same. Modified: stable/8/sys/x86/cpufreq/est.c Directory Properties: stable/8/ (props changed) stable/8/sys/ (props changed) stable/8/sys/x86/ (props changed) Modified: stable/8/sys/x86/cpufreq/est.c ============================================================================== --- stable/8/sys/x86/cpufreq/est.c Mon Jan 13 19:08:25 2014 (r260601) +++ stable/8/sys/x86/cpufreq/est.c Mon Jan 13 19:14:29 2014 (r260602) @@ -1288,10 +1288,9 @@ est_set_id16(device_t dev, uint16_t id16 msr = (msr & ~0xffff) | id16; wrmsr(MSR_PERF_CTL, msr); - /* Wait a short while for the new setting. XXX Is this necessary? */ - DELAY(EST_TRANS_LAT); - if (need_check) { + /* Wait a short while and read the new status. */ + DELAY(EST_TRANS_LAT); est_get_id16(&new_id16); if (new_id16 != id16) { if (bootverbose) From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 19:15:13 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A0F6F20D; Mon, 13 Jan 2014 19:15:13 +0000 (UTC) Received: from mail-ee0-x235.google.com (mail-ee0-x235.google.com [IPv6:2a00:1450:4013:c00::235]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 758A51E02; Mon, 13 Jan 2014 19:15:12 +0000 (UTC) Received: by mail-ee0-f53.google.com with SMTP id t10so390863eei.40 for ; Mon, 13 Jan 2014 11:15:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=WgybGeXpgpqekQhann3vZAXTJy61DmCU6KpMzCw+Gnk=; b=XF5OHJvQF5puffvdRvqB+9QHTjPM7DaTxoETlgxIZxByXTtHRFhweoPuqavL6cO7hg NDKnBqZ/uuBZ+8oixAphPFyPHeOkwja8I4P0MbDe48HpBnRc1Rz6gnYjteD0f7czxg2b 4847PrH+SAQyh0+4wof0VMUU4QvMW+ojrIsENHXp2M9YtjWyz9bpzkXHzt27xt8RATJw ckcMJyI3jCwsMShJsyGY6jgm3l+cCOGfbZ2bfUg5STBtoWSaASkQCB6idFLkcRp4yb4W gsEclUiloUokkUF6YxHcWyKU49m7Csbs9Jlemka4pyQsF6D9rrp4AqKl2rTuA8VWaQm1 z4Uw== X-Received: by 10.14.172.69 with SMTP id s45mr29775421eel.9.1389640510854; Mon, 13 Jan 2014 11:15:10 -0800 (PST) Received: from mavbook.mavhome.dp.ua ([134.249.139.101]) by mx.google.com with ESMTPSA id m47sm5496990eey.7.2014.01.13.11.15.08 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 13 Jan 2014 11:15:09 -0800 (PST) Sender: Alexander Motin Message-ID: <52D43B3A.9090808@FreeBSD.org> Date: Mon, 13 Jan 2014 21:15:06 +0200 From: Alexander Motin User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Alexey Dokuchaev Subject: Re: svn commit: r260474 - stable/9/sys/x86/cpufreq References: <201401091045.s09AjcFi083701@svn.freebsd.org> <20140113142347.GA96299@FreeBSD.org> In-Reply-To: <20140113142347.GA96299@FreeBSD.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-9@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 19:15:13 -0000 On 13.01.2014 16:23, Alexey Dokuchaev wrote: > On Thu, Jan 09, 2014 at 10:45:38AM +0000, Alexander Motin wrote: >> New Revision: 260474 >> URL: http://svnweb.freebsd.org/changeset/base/260474 >> >> Log: >> MFC r259197: >> Do not DELAY() for P-state transition unless we want to see the result. >> >> Intel manual says: "If a transition is already in progress, transition to >> a new value will subsequently take effect. Reads of IA32_PERF_CTL determine >> the last targeted operating point." So seems it should be fine to just >> trigger wanted transition and go. Linux does the same. >> >> Modified: >> stable/9/sys/x86/cpufreq/est.c > > It looks like stable/8 can also benefit from this commit. Mind making one? Done. -- Alexander Motin From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 19:34:24 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 325B18EA; Mon, 13 Jan 2014 19:34:24 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1DEEB1F85; Mon, 13 Jan 2014 19:34:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DJYNwA033399; Mon, 13 Jan 2014 19:34:23 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DJYNKL033398; Mon, 13 Jan 2014 19:34:23 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201401131934.s0DJYNKL033398@svn.freebsd.org> From: Xin LI Date: Mon, 13 Jan 2014 19:34:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260603 - stable/10/sys/dev/oce X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 19:34:24 -0000 Author: delphij Date: Mon Jan 13 19:34:23 2014 New Revision: 260603 URL: http://svnweb.freebsd.org/changeset/base/260603 Log: MFC r260110: Eliminate unused drbr_stats_update implementation in oce(4) driver. Noticed by: dim Modified: stable/10/sys/dev/oce/oce_if.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/oce/oce_if.c ============================================================================== --- stable/10/sys/dev/oce/oce_if.c Mon Jan 13 19:14:29 2014 (r260602) +++ stable/10/sys/dev/oce/oce_if.c Mon Jan 13 19:34:23 2014 (r260603) @@ -1233,18 +1233,6 @@ oce_wq_handler(void *arg) } -#if __FreeBSD_version >= 1000000 -static __inline void -drbr_stats_update(struct ifnet *ifp, int len, int mflags) -{ -#ifndef NO_SLOW_STATS - ifp->if_obytes += len; - if (mflags & M_MCAST) - ifp->if_omcasts++; -#endif -} -#endif - static int oce_multiq_transmit(struct ifnet *ifp, struct mbuf *m, struct oce_wq *wq) { From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 19:42:38 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 528B6BAE; Mon, 13 Jan 2014 19:42:38 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3E1D81081; Mon, 13 Jan 2014 19:42:38 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DJgcBf037045; Mon, 13 Jan 2014 19:42:38 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DJgcXq037044; Mon, 13 Jan 2014 19:42:38 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201401131942.s0DJgcXq037044@svn.freebsd.org> From: Xin LI Date: Mon, 13 Jan 2014 19:42:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260604 - stable/9/sys/dev/oce X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 19:42:38 -0000 Author: delphij Date: Mon Jan 13 19:42:37 2014 New Revision: 260604 URL: http://svnweb.freebsd.org/changeset/base/260604 Log: MFC r260110: Eliminate unused drbr_stats_update implementation in oce(4) driver. Noticed by: dim Modified: stable/9/sys/dev/oce/oce_if.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/oce/oce_if.c ============================================================================== --- stable/9/sys/dev/oce/oce_if.c Mon Jan 13 19:34:23 2014 (r260603) +++ stable/9/sys/dev/oce/oce_if.c Mon Jan 13 19:42:37 2014 (r260604) @@ -1228,18 +1228,6 @@ oce_wq_handler(void *arg) } -#if __FreeBSD_version >= 1000000 -static __inline void -drbr_stats_update(struct ifnet *ifp, int len, int mflags) -{ -#ifndef NO_SLOW_STATS - ifp->if_obytes += len; - if (mflags & M_MCAST) - ifp->if_omcasts++; -#endif -} -#endif - static int oce_multiq_transmit(struct ifnet *ifp, struct mbuf *m, struct oce_wq *wq) { From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 20:55:16 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 49CAD67E; Mon, 13 Jan 2014 20:55:16 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 359801719; Mon, 13 Jan 2014 20:55:16 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DKtG9R064765; Mon, 13 Jan 2014 20:55:16 GMT (envelope-from bdrewery@svn.freebsd.org) Received: (from bdrewery@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DKtGBO064764; Mon, 13 Jan 2014 20:55:16 GMT (envelope-from bdrewery@svn.freebsd.org) Message-Id: <201401132055.s0DKtGBO064764@svn.freebsd.org> From: Bryan Drewery Date: Mon, 13 Jan 2014 20:55:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260605 - head/share/keys/pkg/trusted X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 20:55:16 -0000 Author: bdrewery Date: Mon Jan 13 20:55:15 2014 New Revision: 260605 URL: http://svnweb.freebsd.org/changeset/base/260605 Log: Remove scary comment about this being a test key. There has been no need to regenerate the signing key. Reported by: mat Approved by: bapt (mentor) MFC after: 3 days Modified: head/share/keys/pkg/trusted/pkg.freebsd.org.2013102301 Modified: head/share/keys/pkg/trusted/pkg.freebsd.org.2013102301 ============================================================================== --- head/share/keys/pkg/trusted/pkg.freebsd.org.2013102301 Mon Jan 13 19:42:37 2014 (r260604) +++ head/share/keys/pkg/trusted/pkg.freebsd.org.2013102301 Mon Jan 13 20:55:15 2014 (r260605) @@ -1,5 +1,4 @@ # $FreeBSD$ -# This key is for testing purposes only and will be revoked before 10.0-RELEASE function: "sha256" fingerprint: "b0170035af3acc5f3f3ae1859dc717101b4e6c1d0a794ad554928ca0cbb2f438" From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 21:29:36 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5C3C8670; Mon, 13 Jan 2014 21:29:36 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 428A719C1; Mon, 13 Jan 2014 21:29:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DLTaPE095209; Mon, 13 Jan 2014 21:29:36 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DLTZ5e095202; Mon, 13 Jan 2014 21:29:35 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201401132129.s0DLTZ5e095202@svn.freebsd.org> From: John Baldwin Date: Mon, 13 Jan 2014 21:29:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260606 - in stable/8: share/man/man4 sys/kern tools/regression/sockets/unix_seqpacket tools/regression/sockets/unix_seqpacket_exercise usr.bin/netstat X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 21:29:36 -0000 Author: jhb Date: Mon Jan 13 21:29:34 2014 New Revision: 260606 URL: http://svnweb.freebsd.org/changeset/base/260606 Log: MFC 197775,197777-197779,197781,197794,243152,243313,255478: First cut at implementing SOCK_SEQPACKET support for UNIX (local) domain sockets. This allows for reliable bi-directional datagram communication over UNIX domain sockets, in contrast to SOCK_DGRAM (M:N, unreliable) or SOCK_STERAM (bi-directional bytestream). Largely, this reuses existing UNIX domain socket code. This allows applications requiring record- oriented semantics to do so reliably via local IPC. Added: stable/8/tools/regression/sockets/unix_seqpacket/ - copied from r197781, head/tools/regression/sockets/unix_seqpacket/ - copied from r197781, head/tools/regression/sockets/unix_seqpacket_exercise/ Directory Properties: stable/8/tools/regression/sockets/unix_seqpacket_exercise/ (props changed) Modified: stable/8/share/man/man4/unix.4 stable/8/sys/kern/uipc_usrreq.c stable/8/tools/regression/sockets/unix_seqpacket_exercise/unix_seqpacket_exercise.c stable/8/usr.bin/netstat/main.c (contents, props changed) stable/8/usr.bin/netstat/netstat.h (contents, props changed) stable/8/usr.bin/netstat/unix.c (contents, props changed) Directory Properties: stable/8/share/man/man4/ (props changed) stable/8/sys/ (props changed) stable/8/sys/kern/ (props changed) stable/8/tools/regression/sockets/ (props changed) stable/8/usr.bin/netstat/ (props changed) Modified: stable/8/share/man/man4/unix.4 ============================================================================== --- stable/8/share/man/man4/unix.4 Mon Jan 13 20:55:15 2014 (r260605) +++ stable/8/share/man/man4/unix.4 Mon Jan 13 21:29:34 2014 (r260606) @@ -32,7 +32,7 @@ .\" @(#)unix.4 8.1 (Berkeley) 6/9/93 .\" $FreeBSD$ .\" -.Dd July 15, 2001 +.Dd October 5, 2009 .Dt UNIX 4 .Os .Sh NAME @@ -52,7 +52,8 @@ mechanisms. The .Ux Ns -domain family supports the -.Dv SOCK_STREAM +.Dv SOCK_STREAM , +.Dv SOCK_SEQPACKET , and .Dv SOCK_DGRAM socket types and uses @@ -127,11 +128,14 @@ The .Ux Ns -domain protocol family is comprised of simple transport protocols that support the -.Dv SOCK_STREAM +.Dv SOCK_STREAM , +.Dv SOCK_SEQPACKET , and .Dv SOCK_DGRAM abstractions. .Dv SOCK_STREAM +and +.Dv SOCK_SEQPACKET sockets also support the communication of .Ux file descriptors through the use of the @@ -206,8 +210,9 @@ and tested with .Xr getsockopt 2 : .Bl -tag -width ".Dv LOCAL_CONNWAIT" .It Dv LOCAL_CREDS -This option may be enabled on a -.Dv SOCK_DGRAM +This option may be enabled on +.Dv SOCK_DGRAM , +.Dv SOCK_SEQPACKET , or a .Dv SOCK_STREAM socket. Modified: stable/8/sys/kern/uipc_usrreq.c ============================================================================== --- stable/8/sys/kern/uipc_usrreq.c Mon Jan 13 20:55:15 2014 (r260605) +++ stable/8/sys/kern/uipc_usrreq.c Mon Jan 13 21:29:34 2014 (r260606) @@ -50,7 +50,8 @@ * garbage collector to find and tear down cycles of disconnected sockets. * * TODO: - * SEQPACKET, RDM + * RDM + * distinguish datagram size limits from flow control limits in SEQPACKET * rethink name space problems * need a proper out-of-band */ @@ -113,6 +114,7 @@ static ino_t unp_ino; /* Prototype for static int unp_rights; /* (g) File descriptors in flight. */ static struct unp_head unp_shead; /* (l) List of stream sockets. */ static struct unp_head unp_dhead; /* (l) List of datagram sockets. */ +static struct unp_head unp_sphead; /* (l) List of seqpacket sockets. */ struct unp_defer { SLIST_ENTRY(unp_defer) ud_link; @@ -154,10 +156,14 @@ static u_long unpst_sendspace = PIPSIZ; static u_long unpst_recvspace = PIPSIZ; static u_long unpdg_sendspace = 2*1024; /* really max datagram size */ static u_long unpdg_recvspace = 4*1024; +static u_long unpsp_sendspace = PIPSIZ; /* really max datagram size */ +static u_long unpsp_recvspace = PIPSIZ; SYSCTL_NODE(_net, PF_LOCAL, local, CTLFLAG_RW, 0, "Local domain"); SYSCTL_NODE(_net_local, SOCK_STREAM, stream, CTLFLAG_RW, 0, "SOCK_STREAM"); SYSCTL_NODE(_net_local, SOCK_DGRAM, dgram, CTLFLAG_RW, 0, "SOCK_DGRAM"); +SYSCTL_NODE(_net_local, SOCK_SEQPACKET, seqpacket, CTLFLAG_RW, 0, + "SOCK_SEQPACKET"); SYSCTL_ULONG(_net_local_stream, OID_AUTO, sendspace, CTLFLAG_RW, &unpst_sendspace, 0, "Default stream send space."); @@ -167,6 +173,10 @@ SYSCTL_ULONG(_net_local_dgram, OID_AUTO, &unpdg_sendspace, 0, "Default datagram send space."); SYSCTL_ULONG(_net_local_dgram, OID_AUTO, recvspace, CTLFLAG_RW, &unpdg_recvspace, 0, "Default datagram receive space."); +SYSCTL_ULONG(_net_local_seqpacket, OID_AUTO, maxseqpacket, CTLFLAG_RW, + &unpsp_sendspace, 0, "Default seqpacket send space."); +SYSCTL_ULONG(_net_local_seqpacket, OID_AUTO, recvspace, CTLFLAG_RW, + &unpsp_recvspace, 0, "Default seqpacket receive space."); SYSCTL_INT(_net_local, OID_AUTO, inflight, CTLFLAG_RD, &unp_rights, 0, "File descriptors in flight."); SYSCTL_INT(_net_local, OID_AUTO, deferred, CTLFLAG_RD, @@ -282,6 +292,7 @@ static void unp_process_defers(void * __ */ static struct domain localdomain; static struct pr_usrreqs uipc_usrreqs_dgram, uipc_usrreqs_stream; +static struct pr_usrreqs uipc_usrreqs_seqpacket; static struct protosw localsw[] = { { .pr_type = SOCK_STREAM, @@ -296,6 +307,20 @@ static struct protosw localsw[] = { .pr_flags = PR_ATOMIC|PR_ADDR|PR_RIGHTS, .pr_usrreqs = &uipc_usrreqs_dgram }, +{ + .pr_type = SOCK_SEQPACKET, + .pr_domain = &localdomain, + + /* + * XXXRW: For now, PR_ADDR because soreceive will bump into them + * due to our use of sbappendaddr. A new sbappend variants is needed + * that supports both atomic record writes and control data. + */ + .pr_flags = PR_ADDR|PR_ATOMIC|PR_CONNREQUIRED|PR_WANTRCVD| + PR_RIGHTS, + .pr_ctloutput = &uipc_ctloutput, + .pr_usrreqs = &uipc_usrreqs_seqpacket, +}, }; static struct domain localdomain = { @@ -378,6 +403,11 @@ uipc_attach(struct socket *so, int proto recvspace = unpdg_recvspace; break; + case SOCK_SEQPACKET: + sendspace = unpsp_sendspace; + recvspace = unpsp_recvspace; + break; + default: panic("uipc_attach"); } @@ -397,8 +427,22 @@ uipc_attach(struct socket *so, int proto UNP_LIST_LOCK(); unp->unp_gencnt = ++unp_gencnt; unp_count++; - LIST_INSERT_HEAD(so->so_type == SOCK_DGRAM ? &unp_dhead : &unp_shead, - unp, unp_link); + switch (so->so_type) { + case SOCK_STREAM: + LIST_INSERT_HEAD(&unp_shead, unp, unp_link); + break; + + case SOCK_DGRAM: + LIST_INSERT_HEAD(&unp_dhead, unp, unp_link); + break; + + case SOCK_SEQPACKET: + LIST_INSERT_HEAD(&unp_sphead, unp, unp_link); + break; + + default: + panic("uipc_attach"); + } UNP_LIST_UNLOCK(); return (0); @@ -732,11 +776,8 @@ uipc_rcvd(struct socket *so, int flags) unp = sotounpcb(so); KASSERT(unp != NULL, ("uipc_rcvd: unp == NULL")); - if (so->so_type == SOCK_DGRAM) - panic("uipc_rcvd DGRAM?"); - - if (so->so_type != SOCK_STREAM) - panic("uipc_rcvd unknown socktype"); + if (so->so_type != SOCK_STREAM && so->so_type != SOCK_SEQPACKET) + panic("uipc_rcvd socktype %d", so->so_type); /* * Adjust backpressure on sender and wakeup any waiting to write. @@ -851,6 +892,7 @@ uipc_send(struct socket *so, int flags, break; } + case SOCK_SEQPACKET: case SOCK_STREAM: if ((so->so_state & SS_ISCONNECTED) == 0) { if (nam != NULL) { @@ -893,7 +935,8 @@ uipc_send(struct socket *so, int flags, SOCKBUF_LOCK(&so2->so_rcv); if (unp2->unp_flags & UNP_WANTCRED) { /* - * Credentials are passed only once on SOCK_STREAM. + * Credentials are passed only once on SOCK_STREAM + * and SOCK_SEQPACKET. */ unp2->unp_flags &= ~UNP_WANTCRED; control = unp_addsockcred(td, control); @@ -902,11 +945,33 @@ uipc_send(struct socket *so, int flags, * Send to paired receive port, and then reduce send buffer * hiwater marks to maintain backpressure. Wake up readers. */ - if (control != NULL) { - if (sbappendcontrol_locked(&so2->so_rcv, m, control)) + switch (so->so_type) { + case SOCK_STREAM: + if (control != NULL) { + if (sbappendcontrol_locked(&so2->so_rcv, m, + control)) + control = NULL; + } else + sbappend_locked(&so2->so_rcv, m); + break; + + case SOCK_SEQPACKET: { + const struct sockaddr *from; + + from = &sun_noname; + if (sbappendaddr_locked(&so2->so_rcv, from, m, + control)) control = NULL; - } else - sbappend_locked(&so2->so_rcv, m); + break; + } + } + + /* + * XXXRW: While fine for SOCK_STREAM, this conflates maximum + * datagram size and back-pressure for SOCK_SEQPACKET, which + * can lead to undesired return of EMSGSIZE on send instead + * of more desirable blocking. + */ mbcnt_delta = so2->so_rcv.sb_mbcnt - unp2->unp_mbcnt; unp2->unp_mbcnt = so2->so_rcv.sb_mbcnt; sbcc = so2->so_rcv.sb_cc; @@ -969,7 +1034,8 @@ uipc_sense(struct socket *so, struct sta UNP_LINK_RLOCK(); UNP_PCB_LOCK(unp); unp2 = unp->unp_conn; - if (so->so_type == SOCK_STREAM && unp2 != NULL) { + if ((so->so_type == SOCK_STREAM || so->so_type == SOCK_SEQPACKET) && + unp2 != NULL) { so2 = unp2->unp_socket; sb->st_blksize += so2->so_rcv.sb_cc; } @@ -1039,6 +1105,26 @@ static struct pr_usrreqs uipc_usrreqs_dg .pru_close = uipc_close, }; +static struct pr_usrreqs uipc_usrreqs_seqpacket = { + .pru_abort = uipc_abort, + .pru_accept = uipc_accept, + .pru_attach = uipc_attach, + .pru_bind = uipc_bind, + .pru_connect = uipc_connect, + .pru_connect2 = uipc_connect2, + .pru_detach = uipc_detach, + .pru_disconnect = uipc_disconnect, + .pru_listen = uipc_listen, + .pru_peeraddr = uipc_peeraddr, + .pru_rcvd = uipc_rcvd, + .pru_send = uipc_send, + .pru_sense = uipc_sense, + .pru_shutdown = uipc_shutdown, + .pru_sockaddr = uipc_sockaddr, + .pru_soreceive = soreceive_generic, /* XXX: or...? */ + .pru_close = uipc_close, +}; + static struct pr_usrreqs uipc_usrreqs_stream = { .pru_abort = uipc_abort, .pru_accept = uipc_accept, @@ -1340,6 +1426,7 @@ unp_connect2(struct socket *so, struct s break; case SOCK_STREAM: + case SOCK_SEQPACKET: unp2->unp_conn = unp; if (req == PRU_CONNECT && ((unp->unp_flags | unp2->unp_flags) & UNP_CONNWAIT)) @@ -1377,6 +1464,7 @@ unp_disconnect(struct unpcb *unp, struct break; case SOCK_STREAM: + case SOCK_SEQPACKET: soisdisconnected(unp->unp_socket); unp2->unp_conn = NULL; soisdisconnected(unp2->unp_socket); @@ -1402,7 +1490,22 @@ unp_pcblist(SYSCTL_HANDLER_ARGS) struct unp_head *head; struct xunpcb *xu; - head = ((intptr_t)arg1 == SOCK_DGRAM ? &unp_dhead : &unp_shead); + switch ((intptr_t)arg1) { + case SOCK_STREAM: + head = &unp_shead; + break; + + case SOCK_DGRAM: + head = &unp_dhead; + break; + + case SOCK_SEQPACKET: + head = &unp_sphead; + break; + + default: + panic("unp_pcblist: arg1 %d", (int)(intptr_t)arg1); + } /* * The process of preparing the PCB list is too time-consuming and @@ -1515,6 +1618,9 @@ SYSCTL_PROC(_net_local_dgram, OID_AUTO, SYSCTL_PROC(_net_local_stream, OID_AUTO, pcblist, CTLFLAG_RD, (caddr_t)(long)SOCK_STREAM, 0, unp_pcblist, "S,xunpcb", "List of active local stream sockets"); +SYSCTL_PROC(_net_local_seqpacket, OID_AUTO, pcblist, CTLFLAG_RD, + (caddr_t)(long)SOCK_SEQPACKET, 0, unp_pcblist, "S,xunpcb", + "List of active local seqpacket sockets"); static void unp_shutdown(struct unpcb *unp) @@ -1526,7 +1632,8 @@ unp_shutdown(struct unpcb *unp) UNP_PCB_LOCK_ASSERT(unp); unp2 = unp->unp_conn; - if (unp->unp_socket->so_type == SOCK_STREAM && unp2 != NULL) { + if ((unp->unp_socket->so_type == SOCK_STREAM || + (unp->unp_socket->so_type == SOCK_SEQPACKET)) && unp2 != NULL) { so = unp2->unp_socket; if (so != NULL) socantrcvmore(so); @@ -1692,6 +1799,7 @@ unp_init(void) NULL, EVENTHANDLER_PRI_ANY); LIST_INIT(&unp_dhead); LIST_INIT(&unp_shead); + LIST_INIT(&unp_sphead); SLIST_INIT(&unp_defers); TASK_INIT(&unp_gc_task, 0, unp_gc, NULL); TASK_INIT(&unp_defer_task, 0, unp_process_defers, NULL); @@ -2065,7 +2173,8 @@ SYSCTL_INT(_net_local, OID_AUTO, taskcou static void unp_gc(__unused void *arg, int pending) { - struct unp_head *heads[] = { &unp_dhead, &unp_shead, NULL }; + struct unp_head *heads[] = { &unp_dhead, &unp_shead, &unp_sphead, + NULL }; struct unp_head **head; struct file *f, **unref; struct unpcb *unp; Modified: stable/8/tools/regression/sockets/unix_seqpacket_exercise/unix_seqpacket_exercise.c ============================================================================== --- head/tools/regression/sockets/unix_seqpacket_exercise/unix_seqpacket_exercise.c Mon Oct 5 15:27:01 2009 (r197781) +++ stable/8/tools/regression/sockets/unix_seqpacket_exercise/unix_seqpacket_exercise.c Mon Jan 13 21:29:34 2014 (r260606) @@ -50,21 +50,21 @@ __FBSDID("$FreeBSD$"); #define SEQPACKET_SNDBUF (131072-16) #define FAILERR(str) err(-1, "%s: %s", __func__, str) -#define FAILNERR(str, n) err(-1, "%s %d: %s", __func__, n, str) -#define FAILNMERR(str, n, m) err(-1, "%s %d %d: %s", __func__, n, m, str) +#define FAILNERR(str, n) err(-1, "%s %zd: %s", __func__, n, str) +#define FAILNMERR(str, n, m) err(-1, "%s %zd %d: %s", __func__, n, m, str) #define FAILERRX(str) errx(-1, "%s: %s", __func__, str) -#define FAILNERRX(str, n) errx(-1, "%s %d: %s", __func__, n, str) -#define FAILNMERRX(str, n, m) errx(-1, "%s %d %d: %s", __func__, n, m, str) +#define FAILNERRX(str, n) errx(-1, "%s %zd: %s", __func__, n, str) +#define FAILNMERRX(str, n, m) errx(-1, "%s %zd %d: %s", __func__, n, m, str) static int ann = 0; #define ANN() (ann ? warnx("%s: start", __func__) : 0) -#define ANNN(n) (ann ? warnx("%s %d: start", __func__, (n)) : 0) -#define ANNNM(n, m) (ann ? warnx("%s %d %d: start", __func__, (n), (m)) : 0) +#define ANNN(n) (ann ? warnx("%s %zd: start", __func__, (n)) : 0) +#define ANNNM(n, m) (ann ? warnx("%s %zd %d: start", __func__, (n), (m)):0) #define OK() warnx("%s: ok", __func__) -#define OKN(n) warnx("%s %d: ok", __func__, (n)) -#define OKNM(n, m) warnx("%s %d %d: ok", __func__, (n), (m)) +#define OKN(n) warnx("%s %zd: ok", __func__, (n)) +#define OKNM(n, m) warnx("%s %zd %d: ok", __func__, (n), (m)) #ifdef SO_NOSIGPIPE #define NEW_SOCKET(s) do { \ @@ -168,7 +168,7 @@ server(int s_listen) break; } if (ssize_send != ssize_recv) - warnx("server: recv %d sent %d", + warnx("server: recv %zd sent %zd", ssize_recv, ssize_send); } while (1); close(s_accept); Modified: stable/8/usr.bin/netstat/main.c ============================================================================== --- stable/8/usr.bin/netstat/main.c Mon Jan 13 20:55:15 2014 (r260605) +++ stable/8/usr.bin/netstat/main.c Mon Jan 13 21:29:34 2014 (r260606) @@ -186,6 +186,8 @@ static struct nlist nl[] = { { .n_name = "_mfctablesize" }, #define N_ARPSTAT 55 { .n_name = "_arpstat" }, +#define N_UNP_SPHEAD 56 + { .n_name = "unp_sphead" }, { .n_name = NULL }, }; @@ -627,7 +629,8 @@ main(int argc, char *argv[]) #endif /* NETGRAPH */ if ((af == AF_UNIX || af == AF_UNSPEC) && !sflag) unixpr(nl[N_UNP_COUNT].n_value, nl[N_UNP_GENCNT].n_value, - nl[N_UNP_DHEAD].n_value, nl[N_UNP_SHEAD].n_value); + nl[N_UNP_DHEAD].n_value, nl[N_UNP_SHEAD].n_value, + nl[N_UNP_SPHEAD].n_value); exit(0); } Modified: stable/8/usr.bin/netstat/netstat.h ============================================================================== --- stable/8/usr.bin/netstat/netstat.h Mon Jan 13 20:55:15 2014 (r260605) +++ stable/8/usr.bin/netstat/netstat.h Mon Jan 13 21:29:34 2014 (r260606) @@ -158,7 +158,7 @@ void ddp_stats(u_long, const char *, int void netgraphprotopr(u_long, const char *, int, int); #endif -void unixpr(u_long, u_long, u_long, u_long); +void unixpr(u_long, u_long, u_long, u_long, u_long); void esis_stats(u_long, const char *, int, int); void clnp_stats(u_long, const char *, int, int); Modified: stable/8/usr.bin/netstat/unix.c ============================================================================== --- stable/8/usr.bin/netstat/unix.c Mon Jan 13 20:55:15 2014 (r260605) +++ stable/8/usr.bin/netstat/unix.c Mon Jan 13 21:29:34 2014 (r260606) @@ -193,21 +193,37 @@ fail: } void -unixpr(u_long count_off, u_long gencnt_off, u_long dhead_off, u_long shead_off) +unixpr(u_long count_off, u_long gencnt_off, u_long dhead_off, u_long shead_off, + u_long sphead_off) { char *buf; int ret, type; struct xsocket *so; struct xunpgen *xug, *oxug; struct xunpcb *xunp; + u_long head_off; for (type = SOCK_STREAM; type <= SOCK_SEQPACKET; type++) { if (live) ret = pcblist_sysctl(type, &buf); - else - ret = pcblist_kvm(count_off, gencnt_off, - type == SOCK_STREAM ? shead_off : - (type == SOCK_DGRAM ? dhead_off : 0), &buf); + else { + head_off = 0; + switch (type) { + case SOCK_STREAM: + head_off = shead_off; + break; + + case SOCK_DGRAM: + head_off = dhead_off; + break; + + case SOCK_SEQPACKET: + head_off = sphead_off; + break; + } + ret = pcblist_kvm(count_off, gencnt_off, head_off, + &buf); + } if (ret == -1) continue; if (ret < 0) From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 21:44:18 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 15458F6E; Mon, 13 Jan 2014 21:44:18 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F24941B24; Mon, 13 Jan 2014 21:44:17 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DLiHim002998; Mon, 13 Jan 2014 21:44:17 GMT (envelope-from andreast@svn.freebsd.org) Received: (from andreast@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DLiHPp002997; Mon, 13 Jan 2014 21:44:17 GMT (envelope-from andreast@svn.freebsd.org) Message-Id: <201401132144.s0DLiHPp002997@svn.freebsd.org> From: Andreas Tobler Date: Mon, 13 Jan 2014 21:44:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260607 - head/sys/modules/sound/driver/ai2s X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 21:44:18 -0000 Author: andreast Date: Mon Jan 13 21:44:17 2014 New Revision: 260607 URL: http://svnweb.freebsd.org/changeset/base/260607 Log: The onyx codec works also as module, so add it. MFC after: 1 month Modified: head/sys/modules/sound/driver/ai2s/Makefile Modified: head/sys/modules/sound/driver/ai2s/Makefile ============================================================================== --- head/sys/modules/sound/driver/ai2s/Makefile Mon Jan 13 21:29:34 2014 (r260606) +++ head/sys/modules/sound/driver/ai2s/Makefile Mon Jan 13 21:44:17 2014 (r260607) @@ -5,6 +5,6 @@ KMOD= snd_ai2s SRCS= device_if.h bus_if.h ofw_bus_if.h SRCS+= channel_if.h feeder_if.h mixer_if.h -SRCS+= snapper.c tumbler.c aoa.c i2s.c +SRCS+= onyx.c snapper.c tumbler.c aoa.c i2s.c .include From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 22:07:37 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8470DA12; Mon, 13 Jan 2014 22:07:37 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6ECD81DE0; Mon, 13 Jan 2014 22:07:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DM7boY011767; Mon, 13 Jan 2014 22:07:37 GMT (envelope-from bdrewery@svn.freebsd.org) Received: (from bdrewery@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DM7bar011766; Mon, 13 Jan 2014 22:07:37 GMT (envelope-from bdrewery@svn.freebsd.org) Message-Id: <201401132207.s0DM7bar011766@svn.freebsd.org> From: Bryan Drewery Date: Mon, 13 Jan 2014 22:07:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260608 - stable/10/share/keys/pkg/trusted X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 22:07:37 -0000 Author: bdrewery Date: Mon Jan 13 22:07:36 2014 New Revision: 260608 URL: http://svnweb.freebsd.org/changeset/base/260608 Log: MFC r260605: Remove scary comment about this being a test key. There has been no need to regenerate the signing key. Early MFC as it is just a comment and needs to get into releng/10.0. Approved by: bapt (mentor, implicit) Modified: stable/10/share/keys/pkg/trusted/pkg.freebsd.org.2013102301 Directory Properties: stable/10/ (props changed) Modified: stable/10/share/keys/pkg/trusted/pkg.freebsd.org.2013102301 ============================================================================== --- stable/10/share/keys/pkg/trusted/pkg.freebsd.org.2013102301 Mon Jan 13 21:44:17 2014 (r260607) +++ stable/10/share/keys/pkg/trusted/pkg.freebsd.org.2013102301 Mon Jan 13 22:07:36 2014 (r260608) @@ -1,5 +1,4 @@ # $FreeBSD$ -# This key is for testing purposes only and will be revoked before 10.0-RELEASE function: "sha256" fingerprint: "b0170035af3acc5f3f3ae1859dc717101b4e6c1d0a794ad554928ca0cbb2f438" From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 22:15:57 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DEE50BE9; Mon, 13 Jan 2014 22:15:57 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C9A971E6C; Mon, 13 Jan 2014 22:15:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DMFvvr015876; Mon, 13 Jan 2014 22:15:57 GMT (envelope-from bdrewery@svn.freebsd.org) Received: (from bdrewery@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DMFv5f015875; Mon, 13 Jan 2014 22:15:57 GMT (envelope-from bdrewery@svn.freebsd.org) Message-Id: <201401132215.s0DMFv5f015875@svn.freebsd.org> From: Bryan Drewery Date: Mon, 13 Jan 2014 22:15:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260609 - releng/10.0/share/keys/pkg/trusted X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 22:15:57 -0000 Author: bdrewery Date: Mon Jan 13 22:15:57 2014 New Revision: 260609 URL: http://svnweb.freebsd.org/changeset/base/260609 Log: MFS r260608: Remove scary comment about this being a test key. There has been no need to regenerate the signing key. Approved by: bapt (mentor, implicit) Approved by: re (gjb) Modified: releng/10.0/share/keys/pkg/trusted/pkg.freebsd.org.2013102301 Directory Properties: releng/10.0/ (props changed) Modified: releng/10.0/share/keys/pkg/trusted/pkg.freebsd.org.2013102301 ============================================================================== --- releng/10.0/share/keys/pkg/trusted/pkg.freebsd.org.2013102301 Mon Jan 13 22:07:36 2014 (r260608) +++ releng/10.0/share/keys/pkg/trusted/pkg.freebsd.org.2013102301 Mon Jan 13 22:15:57 2014 (r260609) @@ -1,5 +1,4 @@ # $FreeBSD$ -# This key is for testing purposes only and will be revoked before 10.0-RELEASE function: "sha256" fingerprint: "b0170035af3acc5f3f3ae1859dc717101b4e6c1d0a794ad554928ca0cbb2f438" From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 22:21:29 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D690DE34; Mon, 13 Jan 2014 22:21:29 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C202B1EF4; Mon, 13 Jan 2014 22:21:29 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DMLT7G019224; Mon, 13 Jan 2014 22:21:29 GMT (envelope-from andreast@svn.freebsd.org) Received: (from andreast@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DMLTMB019223; Mon, 13 Jan 2014 22:21:29 GMT (envelope-from andreast@svn.freebsd.org) Message-Id: <201401132221.s0DMLTMB019223@svn.freebsd.org> From: Andreas Tobler Date: Mon, 13 Jan 2014 22:21:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260610 - head/sys/powerpc/include X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 22:21:29 -0000 Author: andreast Date: Mon Jan 13 22:21:29 2014 New Revision: 260610 URL: http://svnweb.freebsd.org/changeset/base/260610 Log: Described in the man page but not implemented. Here it comes, atomic_swap_32/64. The latter only for powerpc64. MFC after: 1 month Modified: head/sys/powerpc/include/atomic.h Modified: head/sys/powerpc/include/atomic.h ============================================================================== --- head/sys/powerpc/include/atomic.h Mon Jan 13 22:15:57 2014 (r260609) +++ head/sys/powerpc/include/atomic.h Mon Jan 13 22:21:29 2014 (r260610) @@ -684,10 +684,47 @@ atomic_fetchadd_long(volatile u_long *p, return (value); } +static __inline u_int +atomic_swap_32(volatile u_int *p, u_int v) +{ + u_int prev; + + __asm __volatile( + "1: lwarx %0,0,%2\n" + " stwcx. %3,0,%2\n" + " bne- 1b\n" + : "=&r" (prev), "+m" (*(volatile u_int *)p) + : "r" (p), "r" (v) + : "cc", "memory"); + + return (prev); +} + +#ifdef __powerpc64__ +static __inline u_long +atomic_swap_64(volatile u_long *p, u_long v) +{ + u_long prev; + + __asm __volatile( + "1: ldarx %0,0,%2\n" + " stdcx. %3,0,%2\n" + " bne- 1b\n" + : "=&r" (prev), "+m" (*(volatile u_long *)p) + : "r" (p), "r" (v) + : "cc", "memory"); + + return (prev); +} +#endif + #define atomic_fetchadd_32 atomic_fetchadd_int +#define atomic_swap_int atomic_swap_32 #ifdef __powerpc64__ #define atomic_fetchadd_64 atomic_fetchadd_long +#define atomic_swap_long atomic_swap_64 +#define atomic_swap_ptr atomic_swap_64 #endif #undef __ATOMIC_REL From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 23:15:53 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 244018A8; Mon, 13 Jan 2014 23:15:53 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0DE3212A7; Mon, 13 Jan 2014 23:15:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DNFqZL039958; Mon, 13 Jan 2014 23:15:52 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DNFqEg039953; Mon, 13 Jan 2014 23:15:52 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401132315.s0DNFqEg039953@svn.freebsd.org> From: Glen Barber Date: Mon, 13 Jan 2014 23:15:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260611 - in releng/10.0/release/doc/en_US.ISO8859-1: errata hardware installation readme relnotes X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 23:15:53 -0000 Author: gjb Date: Mon Jan 13 23:15:51 2014 New Revision: 260611 URL: http://svnweb.freebsd.org/changeset/base/260611 Log: Update copyright year. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: releng/10.0/release/doc/en_US.ISO8859-1/errata/article.xml releng/10.0/release/doc/en_US.ISO8859-1/hardware/article.xml releng/10.0/release/doc/en_US.ISO8859-1/installation/article.xml releng/10.0/release/doc/en_US.ISO8859-1/readme/article.xml releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Modified: releng/10.0/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- releng/10.0/release/doc/en_US.ISO8859-1/errata/article.xml Mon Jan 13 22:21:29 2014 (r260610) +++ releng/10.0/release/doc/en_US.ISO8859-1/errata/article.xml Mon Jan 13 23:15:51 2014 (r260611) @@ -40,6 +40,7 @@ 2011 2012 2013 + 2014 The &os; Documentation Project Modified: releng/10.0/release/doc/en_US.ISO8859-1/hardware/article.xml ============================================================================== --- releng/10.0/release/doc/en_US.ISO8859-1/hardware/article.xml Mon Jan 13 22:21:29 2014 (r260610) +++ releng/10.0/release/doc/en_US.ISO8859-1/hardware/article.xml Mon Jan 13 23:15:51 2014 (r260611) @@ -29,6 +29,7 @@ 2011 2012 2013 + 2014 The &os; Documentation Project Modified: releng/10.0/release/doc/en_US.ISO8859-1/installation/article.xml ============================================================================== --- releng/10.0/release/doc/en_US.ISO8859-1/installation/article.xml Mon Jan 13 22:21:29 2014 (r260610) +++ releng/10.0/release/doc/en_US.ISO8859-1/installation/article.xml Mon Jan 13 23:15:51 2014 (r260611) @@ -13,7 +13,7 @@ $FreeBSD$ - 2013 + 2014 The &os; Documentation Project Modified: releng/10.0/release/doc/en_US.ISO8859-1/readme/article.xml ============================================================================== --- releng/10.0/release/doc/en_US.ISO8859-1/readme/article.xml Mon Jan 13 22:21:29 2014 (r260610) +++ releng/10.0/release/doc/en_US.ISO8859-1/readme/article.xml Mon Jan 13 23:15:51 2014 (r260611) @@ -35,6 +35,7 @@ 2011 2012 2013 + 2014 The &os; Documentation Project Modified: releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml ============================================================================== --- releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Mon Jan 13 22:21:29 2014 (r260610) +++ releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Mon Jan 13 23:15:51 2014 (r260611) @@ -43,6 +43,7 @@ 2011 2012 2013 + 2014 The &os; Documentation Project From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 23:27:25 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0FDF7B90; Mon, 13 Jan 2014 23:27:25 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id EF72A1357; Mon, 13 Jan 2014 23:27:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DNRObV044140; Mon, 13 Jan 2014 23:27:24 GMT (envelope-from bmah@svn.freebsd.org) Received: (from bmah@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DNROhu044139; Mon, 13 Jan 2014 23:27:24 GMT (envelope-from bmah@svn.freebsd.org) Message-Id: <201401132327.s0DNROhu044139@svn.freebsd.org> From: "Bruce A. Mah" Date: Mon, 13 Jan 2014 23:27:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260612 - head/share/misc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 23:27:25 -0000 Author: bmah (ports committer) Date: Mon Jan 13 23:27:24 2014 New Revision: 260612 URL: http://svnweb.freebsd.org/changeset/base/260612 Log: Move myself from ports alumni to active ports committer section. Add an edge indicating mat as my ports mentor. Approved by: mat (mentor) Modified: head/share/misc/committers-ports.dot Modified: head/share/misc/committers-ports.dot ============================================================================== --- head/share/misc/committers-ports.dot Mon Jan 13 23:15:51 2014 (r260611) +++ head/share/misc/committers-ports.dot Mon Jan 13 23:27:24 2014 (r260612) @@ -32,7 +32,6 @@ node [color=grey62, style=filled, bgcolo adamw [label="Adam Weinberger\nadamw@FreeBSD.org\n2002/10/16\n2006/09/25"] asami [label="Satoshi Asami\nasami@FreeBSD.org\n1994/11/18\n2001/09/11"] billf [label="Bill Fumerola\nbillf@FreeBSD.org\n1998/11/11\n2006/12/14"] -bmah [label="Bruce A. Mah\nbmah@FreeBSD.org\n2000/08/23\n2006/12/19"] jmallett [label="Juli Mallett\njmallett@FreeBSD.org\n2003/01/16\n2006/08/10"] marcel [label="Marcel Moolenaar\nmarcel@FreeBSD.org\n1999/07/03\n2007/07/01"] steve [label="Steve Price\nsteve@FreeBSD.org\nxxxx/xx/xx\nxxxx/xx/xx"] @@ -66,6 +65,7 @@ beat [label="Beat Gaetzi\nbeat@FreeBSD.o beech [label="Beech Rintoul\nbeech@FreeBSD.org\n2007/05/30"] bf [label="Brendan Fabeny\nbf@FreeBSD.org\n2010/06/02"] bland [label="Alexander Nedotsukov\nbland@FreeBSD.org\n2003/08/14"] +bmah [label="Bruce A. Mah\nbmah@FreeBSD.org\n2000/08/23"] brix [label="Henrik Brix Andersen\nbrix@FreeBSD.org\n2007/10/31"] brooks [label="Brooks Davies\nbrooks@FreeBSD.org\n2004/05/03"] bsam [label="Boris Samorodov\nbsam@FreeBSD.org\n2006/07/20"] @@ -413,6 +413,7 @@ makc -> bf makc -> jhale makc -> rakuco +mat -> bmah mat -> thierry mezz -> tmclaugh From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 23:34:43 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C49CDF18; Mon, 13 Jan 2014 23:34:43 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 95EE41447; Mon, 13 Jan 2014 23:34:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DNYhYJ048249; Mon, 13 Jan 2014 23:34:43 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DNYhrk048248; Mon, 13 Jan 2014 23:34:43 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401132334.s0DNYhrk048248@svn.freebsd.org> From: Glen Barber Date: Mon, 13 Jan 2014 23:34:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260613 - releng/10.0/release/doc/en_US.ISO8859-1/relnotes X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 23:34:43 -0000 Author: gjb Date: Mon Jan 13 23:34:43 2014 New Revision: 260613 URL: http://svnweb.freebsd.org/changeset/base/260613 Log: Add entity for if_cxgbe(4) manual. Fix a typo. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Modified: releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml ============================================================================== --- releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Mon Jan 13 23:27:24 2014 (r260612) +++ releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Mon Jan 13 23:34:43 2014 (r260613) @@ -9,6 +9,7 @@ freebsd-version1"> jemalloc3"> bhyve4"> +if_cxgbe4"> nvme4"> virtio4"> virtio_balloon4"> @@ -346,7 +347,7 @@ hv_vmbus_load="YES" Al The &man.cxgbe.4; driver has been updated to support 40G/10G Ethernet NICs based on Chelsio's Terminator 5 (T5) ASIC. - The iw_cxgbe driver has been added. This is an + The &man.if_cxgbe.4; driver has been added. This is an experimental iWARP/RDMA driver (kernel verbs only) for Chelsio's T4 and T5 based cards. From owner-svn-src-all@FreeBSD.ORG Mon Jan 13 23:48:02 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4D7263A4; Mon, 13 Jan 2014 23:48:02 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 209D6157F; Mon, 13 Jan 2014 23:48:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DNm1mK052331; Mon, 13 Jan 2014 23:48:02 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0DNm1Ac052330; Mon, 13 Jan 2014 23:48:01 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401132348.s0DNm1Ac052330@svn.freebsd.org> From: Glen Barber Date: Mon, 13 Jan 2014 23:48:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260614 - releng/10.0/release/doc/en_US.ISO8859-1/relnotes X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 23:48:02 -0000 Author: gjb Date: Mon Jan 13 23:48:01 2014 New Revision: 260614 URL: http://svnweb.freebsd.org/changeset/base/260614 Log: Add punctuation to sentences where missing. Remove one instance of unneeded punctuation. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Modified: releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml ============================================================================== --- releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Mon Jan 13 23:34:43 2014 (r260613) +++ releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Mon Jan 13 23:48:01 2014 (r260614) @@ -425,7 +425,7 @@ hv_vmbus_load="YES" Al File Systems A new kernel-based iSCSI target and initiator has been - added + added. UFS filesystems can now be enlarged with &man.growfs.8; while mounted read-write. This is especially useful for virtual @@ -434,7 +434,7 @@ hv_vmbus_load="YES" Al A state of the art FUSE implementation is now part of the base system. It allows the use of nearly all fusefs file - systems + systems. ZFS @@ -452,7 +452,7 @@ hv_vmbus_load="YES" Al Support for the high performance LZ4 compression algorithm has been added to ZFS. LZ4 is usually faster and can achieve a higher compression ratio than LZJB, the default compression - algorithm + algorithm. Support for L2ARC compression has been added to ZFS. @@ -741,7 +741,7 @@ hv_vmbus_load="YES" Al Contributed Software &man.jemalloc.3; has been updated to 3.4.0. - See this link. + See this link for more details. AMD has been updated from 6.0.10 @@ -754,7 +754,7 @@ hv_vmbus_load="YES" Al to 1.0.5. CVS has been removed from the - base system, but is still available from ports + base system, but is still available from ports. Subversion has been imported into the base system and is installed as svnlite. svnlite From owner-svn-src-all@FreeBSD.ORG Tue Jan 14 00:25:46 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 781A1E9B; Tue, 14 Jan 2014 00:25:46 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 618DA188C; Tue, 14 Jan 2014 00:25:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0E0Pkeo068586; Tue, 14 Jan 2014 00:25:46 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0E0PkuL068585; Tue, 14 Jan 2014 00:25:46 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401140025.s0E0PkuL068585@svn.freebsd.org> From: Glen Barber Date: Tue, 14 Jan 2014 00:25:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260615 - releng/10.0/release/doc/en_US.ISO8859-1/relnotes X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jan 2014 00:25:46 -0000 Author: gjb Date: Tue Jan 14 00:25:46 2014 New Revision: 260615 URL: http://svnweb.freebsd.org/changeset/base/260615 Log: Fix various release notes nits. Submitted by: dt71@gmx.com (via -doc@) Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Modified: releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml ============================================================================== --- releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Mon Jan 13 23:48:01 2014 (r260614) +++ releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Tue Jan 14 00:25:46 2014 (r260615) @@ -18,6 +18,7 @@ vmx4"> pkg7"> bhyve8"> +gptboot8"> bsdconfig8"> unbound8"> ]> @@ -202,7 +203,7 @@ Support was added for the new Intel on-CPU Bull Mountain random number generator, found on IvyBridge and supposedly later CPUs, - accessible with RDRAND instruction. + accessible with the RDRAND instruction. Virtualization support @@ -229,7 +230,7 @@ hv_netsvc_load="YES" hv_utils_load="YES" hv_vmbus_load="YES" Alternatively, the Hyper-V drivers can be added to the i386 kernel by adding device hyperv to the kernel config, and then - recompiling the kernel. Please refer to: + recompiling the kernel. Please refer to FreeBSD and Microsoft Windows Server Hyper-V support for full instructions on how to set up Hyper-V support under FreeBSD. @@ -247,7 +248,7 @@ hv_vmbus_load="YES" Al Raspberry PI support has been added. Refer to these setup instructions - and quick start + and this quick start guide. The default ABI on ARM is now the ARM EABI. This brings a number of @@ -256,15 +257,15 @@ hv_vmbus_load="YES" Al ARM support has been greatly improved, including support for ARMv6 and ARMv7, SMP and thread-local storage (TLS). Additionally support for some newer SoC like the MV78x60 and OMAP4 was added. - See this announcement + See the announcement for further details. Superpages support on ARM has been added. Superpages support provides improved performance and scalability by allowing TLB translations to dynamically cover large physical memory regions. All ARMv6 and ARMv7-based platforms can take advantage of this feature. - See this page - for further details. + See the ARM Superpages status + page for further details. @@ -276,10 +277,10 @@ hv_vmbus_load="YES" Al mode. This change makes it possible to boot &os; from USB devices. - A new gptboot boot loader has + A new &man.gptboot.8; boot loader has been added to support booting from a GPT labeled disk. A new boot command has been added to - &man.gpt.8;, which makes a GPT disk bootable by writing the + &man.gpart.8;, which makes a GPT disk bootable by writing the required bits of the boot loader, creating a new boot partition if required. @@ -291,7 +292,7 @@ hv_vmbus_load="YES" Al The &man.cmx.4; driver, a driver for Omnikey CardMan 4040 PCMCIA smartcard readers, has been added. - The &man.syscons.4; driver now supports Colemak keyboard layout. + The &man.syscons.4; driver now supports the Colemak keyboard layout. The &man.uslcom.4; driver, a driver for Silicon Laboratories CP2101/CP2102-based USB serial adapters, has been @@ -380,13 +381,13 @@ hv_vmbus_load="YES" Al address on the subnet (carpdev), switching state with &man.ifconfig.8;, better locking and using modern kernel interfaces to allocate multicast memberships. - Configuration of the CARP protocol via &man.ifconfig.8; has changed, as well as format - of CARP events submitted to &man.devd.8; has changed. See &man.carp.4; + Configuration of the CARP protocol via &man.ifconfig.8; has changed, as well as the format + of CARP events submitted to &man.devd.8;. See &man.carp.4; for more information. The arpbalance feature of &man.carp.4; is currently not supported anymore. The &man.pf.4; firewall now supports fine-grain locking - and better utilization on multi-cpu machines resulting in + and better utilization on multi-CPU machines, resulting in significant improvements in performance. Support for up to 65536 routing tables has been @@ -417,7 +418,7 @@ hv_vmbus_load="YES" Al &man.nvme.4; has been added and provides NVM Express support. NVM Express is an optimized register interface, command set and feature set of PCI Express (PCIe)-based Solid-State Drives (SSDs). For more information, - see nvmexpress.org. + see nvmexpress.org. @@ -449,7 +450,7 @@ hv_vmbus_load="YES" Al TRIM support has been added for ZFS. - Support for the high performance LZ4 compression algorithm + Support for the high-performance LZ4 compression algorithm has been added to ZFS. LZ4 is usually faster and can achieve a higher compression ratio than LZJB, the default compression algorithm. @@ -458,13 +459,11 @@ hv_vmbus_load="YES" Al The zio nop-write improvement from Illumos was imported into &os;. To reduce I/O, nop-write skips overwriting - data if the checksum (cryptographically secure) of new data + data if the (cryptographically secure) checksum of new data matches the checksum of existing data. It also saves space if - snapshots are in use. This improvement only works only on + snapshots are in use. This improvement only works on datasets with enabled compression, disabled deduplication and - sha256 checksums. - - ZFS will now compare the checksums of incoming writes to + sha256 checksums. ZFS will now compare the checksums of incoming writes to the checksum of the existing on-disk data and avoid issuing any write I/O for data that has not changed. This will reduce I/O as well as space usage because if the old block is referenced @@ -481,7 +480,7 @@ hv_vmbus_load="YES" Al Userland Changes On platforms where &man.clang.1; is the default - system compiler, (such as i386, amd64, arm) GCC and GNU libstdc++ are no + system compiler (such as i386, amd64, arm), GCC and GNU libstdc++ are no longer built by default. &man.clang.1; and libc++ from LLVM are used on these platforms by instead. GCC 4.2.1 and libstdc++ are still built and used by default on pc98 and all other platforms where &man.clang.1; @@ -491,10 +490,10 @@ hv_vmbus_load="YES" Al &man.clang.1; and llvm have been updated to version 3.3 release. Please refer to - Clang 3.3 Release Notes. + Clang 3.3 Release Notes. BIND has been replaced by &man.unbound.8; for - local dns resolution in the base system. With this change, nslookup + local DNS resolution in the base system. With this change, nslookup and dig are no longer a part of the base system. Users should instead use &man.host.1; and &man.drill.1; Alternatively, nslookup and dig can be obtained by installing the @@ -520,17 +519,17 @@ hv_vmbus_load="YES" Al This brings bison compatibilities to &man.yacc.1; while preserving full backwards compatibility with previous version of &man.yacc.1;. - &man.lex.1; has been replaced by flex 2.5.37 + &man.lex.1; has been replaced by flex 2.5.37. &man.make.1; has been replaced with the - "Portable" BSD make tool (bmake) from NetBSD. + Portable BSD make tool (bmake) from NetBSD. The &man.adduser.8; utility now supports a option to set the mode of a new user's home directory. BSD-licensed versions of &man.ar.1; and &man.ranlib.1;, - based on libarchive, have replaced the GNU + based on &man.libarchive.3;, have replaced the GNU Binutils versions of these utilities. BSD-licensed versions of &man.bc.1; and &man.dc.1; have @@ -546,7 +545,7 @@ hv_vmbus_load="YES" Al specifying the flags. BSD-licensed version of &man.cpio.1; based on - libarchive, has replaced the GNU cpio. + &man.libarchive.3;, has replaced the GNU cpio. Note that the GNU cpio is still installed as gcpio. @@ -558,7 +557,7 @@ hv_vmbus_load="YES" Al The &man.fdopendir.3; library function has been added. - The &man.fetch.3; library now support HTTP 1.1 + The &man.fetch.3; library now supports HTTP 1.1 If-Modified-Since behavior. The &man.fetch.1; program now supports which will only download the specified HTTP URL if the content @@ -596,7 +595,7 @@ hv_vmbus_load="YES" Al &man.sh.1; has many bug fixes, some new features, and will now refuse to parse some invalid scripts. Additionally, it now - has filename completion and defaults to the "emacs" editing + has filename completion and defaults to the emacs editing mode. The &man.split.1; utility now supports a @@ -610,7 +609,7 @@ hv_vmbus_load="YES" Al flag to ignore user/group names on create and extract. - The &man.tar.1; utility now supports an + The &man.tar.1; utility now supports the flag to sparsify files on extraction. The &man.tar.1; utility now supports a @@ -625,7 +624,7 @@ hv_vmbus_load="YES" Al &man.top.1; now supports a flag to provide per-CPU usage statistics. - &man.zdump.8; is now working properly on 64 bit architectures. + &man.zdump.8; is now working properly on 64-bit architectures. &man.traceroute.8; now has the ability to print the AS @@ -747,18 +746,18 @@ hv_vmbus_load="YES" Al AMD has been updated from 6.0.10 to 6.1.5. - awk has been updated from 1 May + awk has been updated from the 1 May 2007 release to the 23 October 2007 release. bzip2 has been updated from 1.0.4 to 1.0.5. CVS has been removed from the - base system, but is still available from ports. + base system, but is still available from Ports Collection. Subversion has been imported into the base system and is installed as svnlite. svnlite - should only be used for checking out &os; source and committing, and does not + should only be used for checking out the &os; source trees and committing, and does not replace the full Subversion port. file has been updated to 5.11. @@ -771,7 +770,7 @@ hv_vmbus_load="YES" Al less has been updated to v458. - ncurses has been updated from + ncurses has been updated to 5.7-20081102. OpenSSH has been updated @@ -791,7 +790,7 @@ hv_vmbus_load="YES" Al have been updated from the tzcode2004a release to the tzcode2009h release. If you have upgraded from source or via the &man.freebsd-update.8;, - then please run &man.tzsetup.8; to install a new /etc/localtime. + then please run &man.tzsetup.8; to install a new /etc/localtime. WPA Supplicant has been @@ -802,7 +801,7 @@ hv_vmbus_load="YES" Al &man.nvi.1; has been updated to 2.1.2. - &man.nvi.1; supports wide character locales. + &man.nvi.1; supports wide-character locales. @@ -812,7 +811,7 @@ hv_vmbus_load="YES" Al The pkg_add, pkg_create, pkg_delete, pkg_info, pkg_updating, and pkg_version utilities have been removed. &man.pkg.7; must now be used to install binary packages. &man.pkg.7; - is the next generation &os; package manager, also referred to as "pkgng". + is the next generation &os; package manager, also referred to as pkgng. From owner-svn-src-all@FreeBSD.ORG Tue Jan 14 00:38:35 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 1033) id 856315E9; Tue, 14 Jan 2014 00:38:35 +0000 (UTC) Date: Tue, 14 Jan 2014 00:38:35 +0000 From: Alexey Dokuchaev To: Alexander Motin Subject: Re: svn commit: r260474 - stable/9/sys/x86/cpufreq Message-ID: <20140114003835.GB46988@FreeBSD.org> References: <201401091045.s09AjcFi083701@svn.freebsd.org> <20140113142347.GA96299@FreeBSD.org> <52D43B3A.9090808@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52D43B3A.9090808@FreeBSD.org> User-Agent: Mutt/1.5.22 (2013-10-16) Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-9@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jan 2014 00:38:35 -0000 On Mon, Jan 13, 2014 at 09:15:06PM +0200, Alexander Motin wrote: > On 13.01.2014 16:23, Alexey Dokuchaev wrote: > >On Thu, Jan 09, 2014 at 10:45:38AM +0000, Alexander Motin wrote: > >>New Revision: 260474 > >>URL: http://svnweb.freebsd.org/changeset/base/260474 > >>[...] > >>Modified: > >> stable/9/sys/x86/cpufreq/est.c > > > >It looks like stable/8 can also benefit from this commit. Mind making one? > > Done. Thank you. ./danfe From owner-svn-src-all@FreeBSD.ORG Tue Jan 14 01:04:11 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 83D9EF99; Tue, 14 Jan 2014 01:04:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6ECF91CC8; Tue, 14 Jan 2014 01:04:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0E14BSB083646; Tue, 14 Jan 2014 01:04:11 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0E14Bet083645; Tue, 14 Jan 2014 01:04:11 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401140104.s0E14Bet083645@svn.freebsd.org> From: Glen Barber Date: Tue, 14 Jan 2014 01:04:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260616 - releng/10.0/release/doc/en_US.ISO8859-1/relnotes X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jan 2014 01:04:11 -0000 Author: gjb Date: Tue Jan 14 01:04:11 2014 New Revision: 260616 URL: http://svnweb.freebsd.org/changeset/base/260616 Log: Clean up unnecessary blank lines. Clean up leading/trailing whitespace. Wrap long lines. End 'para' tags on the correct line. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Modified: releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml ============================================================================== --- releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Tue Jan 14 00:25:46 2014 (r260615) +++ releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Tue Jan 14 01:04:11 2014 (r260616) @@ -1,6 +1,6 @@ %release; @@ -24,7 +24,6 @@ ]>
&os; &release.current; Release Notes - The &os; Project @@ -46,7 +45,8 @@ 2012 2013 2014 - The &os; Documentation Project + The &os; Documentation + Project @@ -59,13 +59,13 @@ - The release notes for &os; &release.current; contain a summary - of the changes made to the &os; base system on the - &release.branch; development line. - This document lists applicable security advisories that were issued since - the last release, as well as significant changes to the &os; - kernel and userland. - Some brief remarks on upgrading are also presented. + The release notes for &os; &release.current; contain + a summary of the changes made to the &os; base system on the + &release.branch; development line. This document lists + applicable security advisories that were issued since the last + release, as well as significant changes to the &os; kernel and + userland. Some brief remarks on upgrading are also + presented. @@ -73,34 +73,36 @@ Introduction This document contains the release notes for &os; - &release.current;. It - describes recently added, changed, or deleted features of &os;. - It also provides some notes on upgrading - from previous versions of &os;. + &release.current;. It describes recently added, changed, or + deleted features of &os;. It also provides some notes on + upgrading from previous versions of &os;. The latest, up-to-date version of the release notes are available online at &release.url;10.0R/relnotes.html. - The &release.type; distribution to which these release notes - apply represents the latest point along the &release.branch; development - branch since &release.branch; was created. Information regarding pre-built, binary - &release.type; distributions along this branch - can be found at &release.url;. - - The &release.type; distribution to which these release notes - apply represents a point along the &release.branch; development - branch between &release.prev; and the future &release.next;. - Information regarding - pre-built, binary &release.type; distributions along this branch - can be found at &release.url;. - - This distribution of &os; &release.current; is a - &release.type; distribution. It can be found at &release.url; or any of its mirrors. More - information on obtaining this (or other) &release.type; - distributions of &os; can be found in the Obtaining - &os; appendix to the &os; - Handbook. + The &release.type; distribution to which + these release notes apply represents the latest point along the + &release.branch; development branch since &release.branch; was + created. Information regarding pre-built, binary &release.type; + distributions along this branch can be found at &release.url;. + + The &release.type; distribution to + which these release notes apply represents a point along the + &release.branch; development branch between &release.prev; and the + future &release.next;. Information regarding pre-built, binary + &release.type; distributions along this branch can be found at + &release.url;. + + This distribution of &os; + &release.current; is a &release.type; distribution. It can be + found at &release.url; or + any of its mirrors. More information on obtaining this (or other) + &release.type; distributions of &os; can be found in the Obtaining + &os; appendix to the &os; Handbook. All users are encouraged to consult the release errata before installing &os;. The errata document is updated with @@ -109,74 +111,70 @@ information on known bugs, security advisories, and corrections to documentation. An up-to-date copy of the errata for &os; &release.current; can be found on the &os; Web site. - What's New - This section describes - the most user-visible new or changed features in &os; - since &release.prev;. - In general, changes described here are unique to the &release.branch; - branch unless specifically marked as &merged; features. - - - Typical release note items - document recent security advisories issued after - &release.prev;, - new drivers or hardware support, new commands or options, - major bug fixes, or contributed software upgrades. They may also - list changes to major ports/packages or release engineering - practices. Clearly the release notes cannot list every single - change made to &os; between releases; this document focuses - primarily on security advisories, user-visible changes, and major - architectural improvements. + This section describes the most user-visible new or changed + features in &os; since &release.prev;. In general, changes + described here are unique to the &release.branch; branch unless + specifically marked as &merged; features. + + Typical release note items document recent security advisories + issued after &release.prev;, new drivers or hardware support, new + commands or options, major bug fixes, or contributed software + upgrades. They may also list changes to major ports/packages or + release engineering practices. Clearly the release notes cannot + list every single change made to &os; between releases; this + document focuses primarily on security advisories, user-visible + changes, and major architectural improvements. Security Advisories No security advisories. - Kernel Changes - The use of unmapped VMIO buffers eliminates the need to perform - TLB shootdown for mapping on buffer creation and reuse, greatly reducing the - amount of IPIs for shootdown on big-SMP machines and eliminating up to 25-30% + The use of unmapped VMIO buffers + eliminates the need to perform TLB shootdown for mapping on + buffer creation and reuse, greatly reducing the amount of IPIs + for shootdown on big-SMP machines and eliminating up to 25-30% of the system time on i/o intensive workloads. - The maximum amount of memory the &os; kernel - can address has been increased from 1TB to 4TB. - - A new &man.cpuset.2; API has been added - for thread to CPU binding and CPU resource grouping and - assignment. The &man.cpuset.1; userland utility has been added - to allow manipulation of processor sets. - - The &man.ddb.4; kernel debugger now has an output capture - facility. Input and output from &man.ddb.4; can now be captured - to a memory buffer for later inspection using &man.sysctl.8; or - a textdump. The new capture command controls - this feature. - - The &man.ddb.4; debugger now supports a simple scripting - facility, which supports a set of named scripts consisting of a - set of &man.ddb.4; commands. These commands can be managed from - within &man.ddb.4; or with the use of the new &man.ddb.8; - utility. More details can be found in the &man.ddb.4; manual - page. - - The kernel now supports a new textdump format of kernel - dumps. A textdump provides higher-level information via - mechanically generated/extracted debugging output, rather than a - simple memory dump. This facility can be used to generate brief - kernel bug reports that are rich in debugging information, but - are not dependent on kernel symbol tables or precisely - synchronized source code. More information can be found in the - &man.textdump.4; manual page. + The maximum amount of memory + the &os; kernel can address has been increased from 1TB to + 4TB. + + A new &man.cpuset.2; API has been added for thread to CPU + binding and CPU resource grouping and assignment. The + &man.cpuset.1; userland utility has been added to allow + manipulation of processor sets. + + The &man.ddb.4; kernel debugger now has an + output capture facility. Input and output from &man.ddb.4; can + now be captured to a memory buffer for later inspection using + &man.sysctl.8; or a textdump. The new + capture command controls this feature. + + The &man.ddb.4; debugger now supports a simple + scripting facility, which supports a set of named scripts + consisting of a set of &man.ddb.4; commands. These commands can + be managed from within &man.ddb.4; or with the use of the new + &man.ddb.8; utility. More details can be found in the + &man.ddb.4; manual page. + + The kernel now supports a new textdump format + of kernel dumps. A textdump provides higher-level information + via mechanically generated/extracted debugging output, rather + than a simple memory dump. This facility can be used to + generate brief kernel bug reports that are rich in debugging + information, but are not dependent on kernel symbol tables or + precisely synchronized source code. More information can be + found in the &man.textdump.4; manual page. Kernel support for M:N threading has been removed. While the KSE (Kernel Scheduled Entities) project was quite successful @@ -207,111 +205,125 @@ Virtualization support - The BSD Hypervisor, &man.bhyve.8; is included - with &os;. &man.bhyve.8; requires Intel CPUs with VT-x and Extended Page Table (EPT) - support. These features are on all Nehalem models and beyond - (e.g. Nehalem and newer), but not on the lower-end Atom CPUs. - - &man.virtio.4; support has been added. &man.virtio.4; is the - name for the paravirtualization interface developed for the Linux KVM, but - since adopted to other virtual machine hypervisors (with the notable exception of Xen). - This work brings in a BSD-licensed clean-room implementation of the virtio kernel drivers - for disk IO (&man.virtio_blk.4; and &man.virtio_scsi.4;), network IO (&man.vtnet.4;), - memory ballooning (&man.virtio_balloon.4;), and PCI. - Tested with on Qemu/KVM, VirtualBox, and &man.bhyve.4;. - - Paravirtualized drivers which - support Microsoft Hyper-V have been imported and made - part of the amd64 GENERIC kernel. For i386, these drivers are not part of - GENERIC, so the following lines must be added to - /boot/loader.conf to load these drivers: - hv_ata_pci_disengage_load="YES" + The BSD Hypervisor, + &man.bhyve.8; is included with &os;. &man.bhyve.8; requires + Intel CPUs with VT-x and Extended Page Table (EPT) support. + These features are on all Nehalem models and beyond (e.g. + Nehalem and newer), but not on the lower-end Atom CPUs. + + &man.virtio.4; support has been added. + &man.virtio.4; is the name for the paravirtualization + interface developed for the Linux KVM, but since adopted to + other virtual machine hypervisors (with the notable exception + of Xen). This work brings in a BSD-licensed clean-room + implementation of the virtio kernel drivers for disk IO + (&man.virtio_blk.4; and &man.virtio_scsi.4;), network IO + (&man.vtnet.4;), memory ballooning (&man.virtio_balloon.4;), + and PCI. Tested with on Qemu/KVM, VirtualBox, and + &man.bhyve.4;. + + Paravirtualized + drivers which support Microsoft Hyper-V have been imported and + made part of the amd64 GENERIC kernel. For i386, these + drivers are not part of GENERIC, so the following lines must + be added to /boot/loader.conf to load + these drivers: + + hv_ata_pci_disengage_load="YES" hv_netsvc_load="YES" hv_utils_load="YES" -hv_vmbus_load="YES" Alternatively, the Hyper-V drivers can be added to the i386 - kernel by adding device hyperv to the kernel config, and then - recompiling the kernel. Please refer to - FreeBSD and Microsoft Windows Server Hyper-V support - for full instructions on how to set up Hyper-V support under FreeBSD. +hv_vmbus_load="YES" - The &man.vmx.4; driver has been added. - &man.vmx.4; is a VMware VMXNET3 ethernet driver ported from - OpenBSD. + Alternatively, the Hyper-V drivers can be added to the + i386 kernel by adding device hyperv to the + kernel config, and then recompiling the kernel. Please refer + to FreeBSD + and Microsoft Windows Server Hyper-V support for full + instructions on how to set up Hyper-V support under + FreeBSD. - Xen PVHVM virtualization is now - part of the GENERIC kernel. + The &man.vmx.4; driver has been added. + &man.vmx.4; is a VMware VMXNET3 ethernet driver ported from + OpenBSD. + Xen PVHVM + virtualization is now part of the GENERIC kernel. ARM support Raspberry PI support has been added. - Refer to these setup instructions - and this quick start - guide. - - The default ABI on ARM is now the ARM EABI. This brings a number of - improvements and allows future support for VFP and Thumb-2. - - ARM support has been greatly improved, including support - for ARMv6 and ARMv7, SMP and thread-local storage (TLS). - Additionally support for some newer SoC like the MV78x60 and OMAP4 was added. - See the announcement - for further details. - - Superpages support on ARM has been added. Superpages support - provides improved performance and scalability by allowing TLB - translations to dynamically cover large physical memory regions. - All ARMv6 and ARMv7-based platforms can take advantage of this feature. - See the ARM Superpages status - page for further details. - + Refer to these setup + instructions and this quick + start guide. + + The default ABI on ARM is now the ARM + EABI. This brings a number of improvements and allows future + support for VFP and Thumb-2. + + ARM support has been greatly improved, + including support for ARMv6 and ARMv7, SMP and thread-local + storage (TLS). Additionally support for some newer SoC like + the MV78x60 and OMAP4 was added. See the announcement + for further details. + + Superpages support on ARM has been + added. Superpages support provides improved performance and + scalability by allowing TLB translations to dynamically cover + large physical memory regions. All ARMv6 and ARMv7-based + platforms can take advantage of this feature. See the ARM + Superpages status page for further details. Boot Loader Changes - The BTX kernel used by the boot - loader has been changed to invoke BIOS routines from real + The BTX kernel used by the + boot loader has been changed to invoke BIOS routines from real mode. This change makes it possible to boot &os; from USB devices. - A new &man.gptboot.8; boot loader has - been added to support booting from a GPT labeled disk. A - new boot command has been added to - &man.gpart.8;, which makes a GPT disk bootable by writing the - required bits of the boot loader, creating a new boot - partition if required. - + A new &man.gptboot.8; boot + loader has been added to support booting from a GPT labeled + disk. A new boot command has been added to + &man.gpart.8;, which makes a GPT disk bootable by writing the + required bits of the boot loader, creating a new boot + partition if required. Hardware Support - The &man.cmx.4; driver, a driver for Omnikey CardMan 4040 - PCMCIA smartcard readers, has been added. + The &man.cmx.4; driver, a driver for Omnikey + CardMan 4040 PCMCIA smartcard readers, has been added. - The &man.syscons.4; driver now supports the Colemak keyboard layout. + The &man.syscons.4; driver now supports the Colemak + keyboard layout. - The &man.uslcom.4; driver, a driver for Silicon - Laboratories CP2101/CP2102-based USB serial adapters, has been - imported from OpenBSD. + The &man.uslcom.4; driver, a driver for + Silicon Laboratories CP2101/CP2102-based USB serial adapters, + has been imported from OpenBSD. Multimedia Support - Support for version 2.0 of the USB Audio reference design - has been added. New devices should support higher bandwidth, - increased sampling frequency and wider dynamic range. - + Support for version 2.0 of the USB + Audio reference design has been added. New devices should + support higher bandwidth, increased sampling frequency and + wider dynamic range. Network Interface Support The &man.ale.4; driver has been added to provide support - for Atheros AR8121/AR8113/AR8114 Gigabit/Fast Ethernet controllers. + for Atheros AR8121/AR8113/AR8114 Gigabit/Fast Ethernet + controllers. The &man.em.4; driver has been split into two drivers with some common parts. The &man.em.4; driver will continue @@ -345,135 +357,143 @@ hv_vmbus_load="YES" Al The &man.wpi.4; driver has been updated to include a number of stability fixes. - The &man.cxgbe.4; driver has been updated to support - 40G/10G Ethernet NICs based on Chelsio's Terminator 5 (T5) ASIC. - - The &man.if_cxgbe.4; driver has been added. This is an - experimental iWARP/RDMA driver - (kernel verbs only) for Chelsio's T4 and T5 based cards. - - The Open Fabrics Enterprise Distribution (OFED) and - OFED Infiniband core has been - updated to the same version as supplied by Linux version 3.7 - - The Mellanox Infiniband driver has been updated to firmware - version 2.30.3200 for ConnectX3 NICs. Support has been added for ConnectX3 VPI NICs, where - each port can be used as Infiniband 56 GB/s or Ethernet 40 GB/s. Support has been added - for dynamically loading kernel modules for Infiniband core (ibcore) and - IP over Infiniband (ipoib). - - &man.netmap.4; has been added. &man.netmap.4; is a framework for - high-performance direct-to-hardware packet IO, offering low latency and high PPS - rates to userland applications while bypassing any kernel-side packet processing. - With &man.netmap.4; it is trivially possible to fully saturate a 10 Gbps network interface with - minimal packet sizes. For more information, see: - Netmap Project. - + The &man.cxgbe.4; driver has been + updated to support 40G/10G Ethernet NICs based on Chelsio's + Terminator 5 (T5) ASIC. + + The &man.if_cxgbe.4; driver has been + added. This is an experimental iWARP/RDMA driver (kernel + verbs only) for Chelsio's T4 and T5 based cards. + + The Open Fabrics Enterprise + Distribution (OFED) and OFED Infiniband core has been + updated to the same version as supplied by Linux version + 3.7 + + The Mellanox Infiniband driver has + been updated to firmware version 2.30.3200 for ConnectX3 + NICs. Support has been added for ConnectX3 VPI NICs, where + each port can be used as Infiniband 56 GB/s or Ethernet 40 + GB/s. Support has been added for dynamically loading kernel + modules for Infiniband core (ibcore) and IP over Infiniband + (ipoib). + + &man.netmap.4; has been added. + &man.netmap.4; is a framework for high-performance + direct-to-hardware packet IO, offering low latency and high + PPS rates to userland applications while bypassing any + kernel-side packet processing. With &man.netmap.4; it is + trivially possible to fully saturate a 10 Gbps network + interface with minimal packet sizes. For more information, + see: Netmap + Project. Network Protocols - &man.carp.4; has been rewritten to make addresses - more sane from the viewpoint of routing daemons such as - quagga/zebra. It also brings support for a single redundant - address on the subnet (carpdev), switching state with - &man.ifconfig.8;, better locking and using modern kernel - interfaces to allocate multicast memberships. - Configuration of the CARP protocol via &man.ifconfig.8; has changed, as well as the format - of CARP events submitted to &man.devd.8;. See &man.carp.4; - for more information. The arpbalance feature of &man.carp.4; is currently - not supported anymore. - - The &man.pf.4; firewall now supports fine-grain locking - and better utilization on multi-CPU machines, resulting in - significant improvements in performance. - - Support for up to 65536 routing tables has been - introduced. - - Support for setting/matching differentiated services - codepoints (DSCP) in IP header has been added to - &man.ipfw.8;. - + &man.carp.4; has been rewritten to make + addresses more sane from the viewpoint of routing daemons such + as quagga/zebra. It also brings support for a single redundant + address on the subnet (carpdev), switching state with + &man.ifconfig.8;, better locking and using modern kernel + interfaces to allocate multicast memberships. Configuration + of the CARP protocol via &man.ifconfig.8; has changed, as well + as the format of CARP events submitted to &man.devd.8;. See + &man.carp.4; for more information. The arpbalance feature of + &man.carp.4; is currently not supported anymore. + + The &man.pf.4; firewall now supports + fine-grain locking and better utilization on multi-CPU + machines, resulting in significant improvements in + performance. + + Support for up to 65536 routing tables + has been introduced. + + Support for setting/matching + differentiated services codepoints (DSCP) in IP header has + been added to &man.ipfw.8;. Disks and Storage - The &man.aac.4; driver now supports volumes larger than - 2TB in size. + The &man.aac.4; driver now supports volumes + larger than 2TB in size. The &man.ata.4; driver now supports a spindown command for - disks; after a configurable amount of time, if no requests - have been received for a disk, the disk will be spun down - until the next request. The &man.atacontrol.8; utility now - supports a spindown command to configure - this feature. - - The &man.hptrr.4; driver has been updated to version 1.2 - from Highpoint. - - &man.nvme.4; has been added and provides NVM Express support. - NVM Express is an optimized register interface, command set and feature set of - PCI Express (PCIe)-based Solid-State Drives (SSDs). For more information, - see nvmexpress.org. - + disks; after a configurable amount of time, if no requests + have been received for a disk, the disk will be spun down + until the next request. The &man.atacontrol.8; utility now + supports a spindown command to configure + this feature. + + The &man.hptrr.4; driver has been updated to + version 1.2 from Highpoint. + + &man.nvme.4; has been added and provides + NVM Express support. NVM Express is an optimized register + interface, command set and feature set of PCI Express + (PCIe)-based Solid-State Drives (SSDs). For more information, + see nvmexpress.org. File Systems - A new kernel-based iSCSI target and initiator has been - added. + A new kernel-based iSCSI target and + initiator has been added. - UFS filesystems can now be enlarged with &man.growfs.8; while - mounted read-write. This is especially useful for virtual - machines, allowing the addition of more harddrive space without - interruption of service. - - A state of the art FUSE implementation is now part of the - base system. It allows the use of nearly all fusefs file - systems. + UFS filesystems can now be enlarged with + &man.growfs.8; while mounted read-write. This is especially + useful for virtual machines, allowing the addition of more + harddrive space without interruption of service. + + A state of the art FUSE implementation + is now part of the base system. It allows the use of nearly + all fusefs file systems. ZFS - &man.bsdinstall.8; now supports installing - ZFS on the root file system. It includes a single configuration menu - that allows you to select all of the required details, including - which drives to use, what ZFS RAID level to use (taking into consideration - the selected number of drives), GPT or MBR, GELI encryption, forcing 4K sectors, - pool name, etc. - - TRIM support has been added for - ZFS. - - Support for the high-performance LZ4 compression algorithm - has been added to ZFS. LZ4 is usually faster and can achieve a - higher compression ratio than LZJB, the default compression - algorithm. - - Support for L2ARC compression has been added to ZFS. - - The zio nop-write improvement from Illumos - was imported into &os;. To reduce I/O, nop-write skips overwriting - data if the (cryptographically secure) checksum of new data - matches the checksum of existing data. It also saves space if - snapshots are in use. This improvement only works on - datasets with enabled compression, disabled deduplication and - sha256 checksums. ZFS will now compare the checksums of incoming writes to - the checksum of the existing on-disk data and avoid issuing any - write I/O for data that has not changed. This will reduce I/O - as well as space usage because if the old block is referenced - by a snapshot, both copies of the block are kept even though - both contain the same data. - + &man.bsdinstall.8; now supports installing + ZFS on the root file system. It includes a single + configuration menu that allows you to select all of the + required details, including which drives to use, what ZFS + RAID level to use (taking into consideration the selected + number of drives), GPT or MBR, GELI encryption, forcing 4K + sectors, pool name, etc. + + TRIM support has been added for + ZFS. + + Support for the high-performance LZ4 + compression algorithm has been added to ZFS. LZ4 is usually + faster and can achieve a higher compression ratio than LZJB, + the default compression algorithm. + + Support for L2ARC compression has been + added to ZFS. + + The zio nop-write improvement from + Illumos was imported into &os;. To reduce I/O, nop-write + skips overwriting data if the (cryptographically secure) + checksum of new data matches the checksum of existing data. + It also saves space if snapshots are in use. This + improvement only works on datasets with enabled compression, + disabled deduplication and sha256 checksums. ZFS will now + compare the checksums of incoming writes to the checksum of + the existing on-disk data and avoid issuing any write I/O + for data that has not changed. This will reduce I/O as well + as space usage because if the old block is referenced by + a snapshot, both copies of the block are kept even though + both contain the same data. - - @@ -484,81 +504,88 @@ hv_vmbus_load="YES" Al longer built by default. &man.clang.1; and libc++ from LLVM are used on these platforms by instead. GCC 4.2.1 and libstdc++ are still built and used by default on pc98 and all other platforms where &man.clang.1; - is not the default system compiler. - + is not the default system compiler. &man.clang.1; and llvm have been updated to - version 3.3 release. Please refer to - - Clang 3.3 Release Notes. - - BIND has been replaced by &man.unbound.8; for - local DNS resolution in the base system. With this change, nslookup - and dig are no longer a part of the base system. Users should - instead use &man.host.1; and &man.drill.1; Alternatively, - nslookup and dig can be obtained by installing the - dns/bind-tools port. - - sysinstall has been removed from the base system. - Auxiliary libraries and tools used by sysinstall such as libdisk, libftpio, - and sade have also been removed. sysinstall has been replaced by - &man.bsdinstall.8; and &man.bsdconfig.8;. - - &man.freebsd-version.1; has been added. This tool - makes a best effort to determine the version and patch level of - the installed kernel and userland. - - GNU patch has been removed from the base system, and replaced - by a BSD-licensed &man.patch.1; program. - - GNU sort has been removed from the base system, and replaced - by a BSD-licensed &man.sort.1; program. + version 3.3 release. Please refer to + Clang 3.3 Release Notes. + + BIND has been replaced by + &man.unbound.8; for local DNS resolution in the base system. + With this change, nslookup and dig are no longer a part of the + base system. Users should instead use &man.host.1; and + &man.drill.1; Alternatively, nslookup and dig can be obtained by + installing the dns/bind-tools port. + + sysinstall has been removed from the base + system. Auxiliary libraries and tools used by sysinstall such + as libdisk, libftpio, and sade have also been removed. + sysinstall has been replaced by &man.bsdinstall.8; and + &man.bsdconfig.8;. + + &man.freebsd-version.1; has been added. + This tool makes a best effort to determine the version and patch + level of the installed kernel and userland. + + GNU patch has been removed from the base + system, and replaced by a BSD-licensed &man.patch.1; + program. + + GNU sort has been removed from the base + system, and replaced by a BSD-licensed &man.sort.1; + program. Berkely yacc (byacc) has been imported - from invisible island. - This brings bison compatibilities to &man.yacc.1; while preserving full - backwards compatibility with previous version of &man.yacc.1;. - - &man.lex.1; has been replaced by flex 2.5.37. - - &man.make.1; has been replaced with the - Portable BSD make tool (bmake) from NetBSD. + from invisible + island. This brings bison compatibilities to + &man.yacc.1; while preserving full backwards compatibility with + previous version of &man.yacc.1;. + + &man.lex.1; has been replaced by flex + 2.5.37. + + &man.make.1; has been replaced with the + Portable BSD make tool (bmake) from + NetBSD. The &man.adduser.8; utility now supports a option to set the mode of a new user's home directory. BSD-licensed versions of &man.ar.1; and &man.ranlib.1;, - based on &man.libarchive.3;, have replaced the GNU - Binutils versions of these utilities. + based on &man.libarchive.3;, have replaced the GNU Binutils + versions of these utilities. BSD-licensed versions of &man.bc.1; and &man.dc.1; have replaced their GNU counterparts. - &man.chflags.1; now supports a flag for - verbose output and a flag to ignore errors - with the same semantics as (for example) - &man.chmod.1;. + &man.chflags.1; now supports + a flag for verbose output and + a flag to ignore errors with the same + semantics as (for example) &man.chmod.1;. For compatibility with other implementations, &man.cp.1; now supports a flag, which is equivalent to specifying the flags. BSD-licensed version of &man.cpio.1; based on - &man.libarchive.3;, has replaced the GNU cpio. - Note that the GNU cpio is still installed as + &man.libarchive.3;, has replaced the GNU cpio. Note that the + GNU cpio is still installed as gcpio. The &man.env.1; program now supports - which will completely unset the given variable - name by removing it from the environment, - instead of just setting it to a null value. + name which will completely + unset the given variable name by + removing it from the environment, instead of just setting it to + a null value. - The &man.fdopendir.3; library function has been added. + The &man.fdopendir.3; library function has been + added. - The &man.fetch.3; library now supports HTTP 1.1 - If-Modified-Since behavior. The &man.fetch.1; program now + The &man.fetch.3; library now supports HTTP + 1.1 If-Modified-Since behavior. The &man.fetch.1; program now supports which will only download the specified HTTP URL if the content is newer than filename. @@ -593,10 +620,10 @@ hv_vmbus_load="YES" Al a flag to suppress warnings; it now also accepts multiple paths on its command line. - &man.sh.1; has many bug fixes, some new features, and will now - refuse to parse some invalid scripts. Additionally, it now - has filename completion and defaults to the emacs editing - mode. + &man.sh.1; has many bug fixes, some new features, and will + now refuse to parse some invalid scripts. Additionally, it now + has filename completion and defaults to the emacs + editing mode. The &man.split.1; utility now supports a flag to split a file into a certain number of chunks. @@ -624,8 +651,8 @@ hv_vmbus_load="YES" Al &man.top.1; now supports a flag to provide per-CPU usage statistics. - &man.zdump.8; is now working properly on 64-bit architectures. - + &man.zdump.8; is now working properly on 64-bit + architectures. &man.traceroute.8; now has the ability to print the AS number for each hop with the new switch; a @@ -739,80 +766,87 @@ hv_vmbus_load="YES" Al Contributed Software - &man.jemalloc.3; has been updated to 3.4.0. - See this link - for more details. + &man.jemalloc.3; has been updated to + 3.4.0. See this + link for more details. - AMD has been updated from 6.0.10 - to 6.1.5. + AMD has been + updated from 6.0.10 to 6.1.5. - awk has been updated from the 1 May + awk has been + updated from the 1 May 2007 release to the 23 October 2007 release. - bzip2 has been updated from 1.0.4 - to 1.0.5. - - CVS has been removed from the - base system, but is still available from Ports Collection. + bzip2 has been + updated from 1.0.4 to 1.0.5. - Subversion has been imported into the base system and - is installed as svnlite. svnlite - should only be used for checking out the &os; source trees and committing, and does not + CVS has been + removed from the base system, but is still available from Ports + Collection. + + Subversion has been imported into the base + system and is installed as svnlite. + svnlite should only be used for + checking out the &os; source trees and committing, and does not replace the full Subversion port. - file has been updated to 5.11. + file has been + updated to 5.11. - hostapd has been - updated from 0.5.8 to 0.5.10. + hostapd has + been updated from 0.5.8 to 0.5.10. - IPFilter has been updated to 5.1.2. + IPFilter has been updated to + 5.1.2. - less has been updated to - v458. + less has been + updated to v458. - ncurses has been updated - to 5.7-20081102. + ncurses has been updated to + 5.7-20081102. - OpenSSH has been updated - to 6.4. + OpenSSH has been + updated to 6.4. - OpenPAM has been updated to - the Micrampelis release. + OpenPAM has + been updated to the Micrampelis release. - sendmail has been updated from - 8.14.1 to 8.14.7. + sendmail has been + updated from 8.14.1 to 8.14.7. The timezone database has been updated from the tzdata2008h release to the tzdata2009m release. - The stdtime part of libc, &man.zdump.8; and &man.zic.8; - have been updated from the tzcode2004a + The stdtime part of libc, &man.zdump.8; and &man.zic.8; have + been updated from the tzcode2004a release to the tzcode2009h release. - If you have upgraded from source or via the &man.freebsd-update.8;, - then please run &man.tzsetup.8; to install a new /etc/localtime. - + If you have upgraded from source or via the + &man.freebsd-update.8;, then please run &man.tzsetup.8; to + install a new /etc/localtime. - WPA Supplicant has been - updated to 2.0. + WPA Supplicant + has been updated to 2.0. xz has been updated from snapshot as of 12 April 2010 to 5.0.0. - &man.nvi.1; has been updated to 2.1.2. - - &man.nvi.1; supports wide-character locales. + &man.nvi.1; has been updated + to 2.1.2. + &man.nvi.1; supports wide-character + locales. Ports/Packages Collection Infrastructure - The pkg_add, pkg_create, pkg_delete, pkg_info, - pkg_updating, and pkg_version utilities have been removed. - &man.pkg.7; must now be used to install binary packages. &man.pkg.7; - is the next generation &os; package manager, also referred to as pkgng. - + The pkg_add, pkg_create, pkg_delete, + pkg_info, pkg_updating, and pkg_version utilities have been + removed. &man.pkg.7; must now be used to install binary + packages. &man.pkg.7; is the next generation &os; package + manager, also referred to as pkgng. @@ -822,7 +856,6 @@ hv_vmbus_load="YES" Al the GNOME desktop environment (x11/gnome2) has been updated from 2.20.1 to 2.22. - + + + + + Added: head/release/doc/en_US.ISO8859-1/share/xml/release.xsl ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/release/doc/en_US.ISO8859-1/share/xml/release.xsl Tue Jan 14 22:46:23 2014 (r260653) @@ -0,0 +1,27 @@ + + + + + + + + +

This file, and other release-related documents, + can be downloaded from .

+ +

For questions about FreeBSD, read the + documentation before + contacting <questions@FreeBSD.org>.

+ +

All users of FreeBSD should + subscribe to the <current@FreeBSD.org> + mailing list.

+ +

For questions about this documentation, + e-mail <doc@FreeBSD.org>.

+
+
Modified: head/release/doc/share/mk/doc.relnotes.mk ============================================================================== --- head/release/doc/share/mk/doc.relnotes.mk Tue Jan 14 22:05:33 2014 (r260652) +++ head/release/doc/share/mk/doc.relnotes.mk Tue Jan 14 22:46:23 2014 (r260653) @@ -4,6 +4,8 @@ DOC_PREFIX?= ${RELN_ROOT}/../../../doc # XXX RELEASETYPE!= grep -o 'release.type "[a-z]*"' ${RELN_ROOT}/share/xml/release.ent | sed 's|[a-z.]* "\([a-z]*\)"|\1|' +RELEASEURL!= grep -o 'release.url \"[^\"]*\"' ${RELN_ROOT}/share/xml/release.ent | sed 's|[^ ]* "\([^"]*\)"|\1|' +RELEASEBRANCH!= grep -o 'release.branch "\([^"]*\)"' ${RELN_ROOT}/share/xml/release.ent | sed 's|[^ ]* "\([^"]*\)"|\1|' .if ${RELEASETYPE} == "current" PROFILING+= --param profile.attribute "'releasetype'" --param profile.value "'current'" .elif ${RELEASETYPE} == "snapshot" @@ -11,13 +13,14 @@ PROFILING+= --param profile.attribute "' .elif ${RELEASETYPE} == "release" PROFILING+= --param profile.attribute "'releasetype'" --param profile.value "'release'" .endif +XSLTPROCFLAGS+= --param release.url "'${RELEASEURL}'" +XSLTPROCFLAGS+= --param release.branch "'${RELEASEBRANCH}'" # Find the RELNOTESng document catalogs EXTRA_CATALOGS+= file://${RELN_ROOT}/${LANGCODE}/share/xml/catalog.xml \ - file://${RELN_ROOT}/share/xml/catalog.xml + file://${RELN_ROOT}/share/xml/catalog.xml -# Use the appropriate architecture-dependent RELNOTESng stylesheet -DSLPRINT?= ${RELN_ROOT}/share/xml/default.dsl +XSLXHTML= http://www.FreeBSD.org/release/XML/share/xml/release.xsl # # Automatic device list generation: Modified: head/release/doc/share/xml/catalog.xml ============================================================================== --- head/release/doc/share/xml/catalog.xml Tue Jan 14 22:05:33 2014 (r260652) +++ head/release/doc/share/xml/catalog.xml Tue Jan 14 22:46:23 2014 (r260653) @@ -1,6 +1,11 @@ + + + Added: head/release/doc/share/xml/release.xsl ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/release/doc/share/xml/release.xsl Tue Jan 14 22:46:23 2014 (r260653) @@ -0,0 +1,15 @@ + + + + + + + + + + + From owner-svn-src-all@FreeBSD.ORG Tue Jan 14 22:56:26 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7C68AE99; Tue, 14 Jan 2014 22:56:26 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5C5D212CB; Tue, 14 Jan 2014 22:56:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0EMuQP4007800; Tue, 14 Jan 2014 22:56:26 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0EMuPOi007794; Tue, 14 Jan 2014 22:56:25 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201401142256.s0EMuPOi007794@svn.freebsd.org> From: Jilles Tjoelker Date: Tue, 14 Jan 2014 22:56:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260654 - head/bin/sh X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jan 2014 22:56:26 -0000 Author: jilles Date: Tue Jan 14 22:56:25 2014 New Revision: 260654 URL: http://svnweb.freebsd.org/changeset/base/260654 Log: sh: Remove SIGWINCH handler and just check for resize before every read. The SIGWINCH handler triggers breakage in libedit which is hard to fix; see PR bin/169773. Also, window size changes while a program is in foreground (and it rather than sh will receive SIGWINCH) will now be picked up automatically. Downside: it is now certain that a resize is only processed after pressing . If libedit is fixed, sh will most likely have to be changed also. PR: bin/180146 Modified: head/bin/sh/input.c head/bin/sh/trap.c head/bin/sh/trap.h Modified: head/bin/sh/input.c ============================================================================== --- head/bin/sh/input.c Tue Jan 14 22:46:23 2014 (r260653) +++ head/bin/sh/input.c Tue Jan 14 22:56:25 2014 (r260654) @@ -162,20 +162,16 @@ preadfd(void) int nr; parsenextc = parsefile->buf; -#ifndef NO_HISTORY - if (el != NULL && gotwinch) { - gotwinch = 0; - el_resize(el); - } -#endif retry: #ifndef NO_HISTORY if (parsefile->fd == 0 && el) { static const char *rl_cp; static int el_len; - if (rl_cp == NULL) + if (rl_cp == NULL) { + el_resize(el); rl_cp = el_gets(el, &el_len); + } if (rl_cp == NULL) nr = el_len == 0 ? 0 : -1; else { Modified: head/bin/sh/trap.c ============================================================================== --- head/bin/sh/trap.c Tue Jan 14 22:46:23 2014 (r260653) +++ head/bin/sh/trap.c Tue Jan 14 22:56:25 2014 (r260654) @@ -80,7 +80,6 @@ static char *volatile trap[NSIG]; /* tra static volatile sig_atomic_t gotsig[NSIG]; /* indicates specified signal received */ static int ignore_sigchld; /* Used while handling SIGCHLD traps. */ -volatile sig_atomic_t gotwinch; static int last_trapsig; static int exiting; /* exitshell() has been called */ @@ -293,12 +292,6 @@ setsignal(int signo) action = S_IGN; break; #endif -#ifndef NO_HISTORY - case SIGWINCH: - if (rootshell && iflag) - action = S_CATCH; - break; -#endif } } @@ -400,11 +393,6 @@ onsig(int signo) gotsig[signo] = 1; pendingsig = signo; } - -#ifndef NO_HISTORY - if (signo == SIGWINCH) - gotwinch = 1; -#endif } @@ -490,9 +478,6 @@ setinteractive(int on) setsignal(SIGINT); setsignal(SIGQUIT); setsignal(SIGTERM); -#ifndef NO_HISTORY - setsignal(SIGWINCH); -#endif is_interactive = on; } Modified: head/bin/sh/trap.h ============================================================================== --- head/bin/sh/trap.h Tue Jan 14 22:46:23 2014 (r260653) +++ head/bin/sh/trap.h Tue Jan 14 22:56:25 2014 (r260654) @@ -36,7 +36,6 @@ extern volatile sig_atomic_t pendingsig; extern volatile sig_atomic_t pendingsig_waitcmd; extern int in_dotrap; -extern volatile sig_atomic_t gotwinch; void clear_traps(void); int have_traps(void); From owner-svn-src-all@FreeBSD.ORG Tue Jan 14 23:04:32 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 50417203; Tue, 14 Jan 2014 23:04:32 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3C0511379; Tue, 14 Jan 2014 23:04:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0EN4W0G011579; Tue, 14 Jan 2014 23:04:32 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0EN4WTn011578; Tue, 14 Jan 2014 23:04:32 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201401142304.s0EN4WTn011578@svn.freebsd.org> From: Hiroki Sato Date: Tue, 14 Jan 2014 23:04:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260655 - head/release/doc/share/xml X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jan 2014 23:04:32 -0000 Author: hrs Date: Tue Jan 14 23:04:31 2014 New Revision: 260655 URL: http://svnweb.freebsd.org/changeset/base/260655 Log: Add missing arch= and revision= support. Modified: head/release/doc/share/xml/release.xsl Modified: head/release/doc/share/xml/release.xsl ============================================================================== --- head/release/doc/share/xml/release.xsl Tue Jan 14 22:56:25 2014 (r260654) +++ head/release/doc/share/xml/release.xsl Tue Jan 14 23:04:31 2014 (r260655) @@ -12,4 +12,49 @@ + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + +

+
+ + + + + + + + + + + +
From owner-svn-src-all@FreeBSD.ORG Tue Jan 14 23:15:55 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 75AB9420; Tue, 14 Jan 2014 23:15:55 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5551B147C; Tue, 14 Jan 2014 23:15:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0ENFt7n015836; Tue, 14 Jan 2014 23:15:55 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0ENFrWY015829; Tue, 14 Jan 2014 23:15:53 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201401142315.s0ENFrWY015829@svn.freebsd.org> From: Hiroki Sato Date: Tue, 14 Jan 2014 23:15:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260656 - in stable/10/release/doc: de_DE.ISO8859-1 en_US.ISO8859-1/errata en_US.ISO8859-1/share/xml fr_FR.ISO8859-1 ja_JP.eucJP ru_RU.KOI8-R share/mk share/xml zh_CN.GB2312 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jan 2014 23:15:55 -0000 Author: hrs Date: Tue Jan 14 23:15:53 2014 New Revision: 260656 URL: http://svnweb.freebsd.org/changeset/base/260656 Log: - MFC 260653,260655: * Purge old translations. * Add missing footer due to DSSSL->XSLT migration and use XML catalog to resolve URI. * Add missing arch= and revision= support. - Update release.ent and fix release number in Errata. Added: stable/10/release/doc/en_US.ISO8859-1/share/xml/catalog.xml - copied unchanged from r260653, head/release/doc/en_US.ISO8859-1/share/xml/catalog.xml stable/10/release/doc/en_US.ISO8859-1/share/xml/release.xsl - copied unchanged from r260653, head/release/doc/en_US.ISO8859-1/share/xml/release.xsl stable/10/release/doc/share/xml/release.xsl - copied, changed from r260653, head/release/doc/share/xml/release.xsl Deleted: stable/10/release/doc/de_DE.ISO8859-1/ stable/10/release/doc/en_US.ISO8859-1/share/xml/catalog stable/10/release/doc/en_US.ISO8859-1/share/xml/release.dsl stable/10/release/doc/fr_FR.ISO8859-1/ stable/10/release/doc/ja_JP.eucJP/ stable/10/release/doc/ru_RU.KOI8-R/ stable/10/release/doc/share/xml/catalog stable/10/release/doc/share/xml/default.dsl stable/10/release/doc/share/xml/release.dsl stable/10/release/doc/zh_CN.GB2312/ Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml stable/10/release/doc/share/mk/doc.relnotes.mk stable/10/release/doc/share/xml/catalog.xml stable/10/release/doc/share/xml/release.ent Directory Properties: stable/10/ (props changed) Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Tue Jan 14 23:04:31 2014 (r260655) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Tue Jan 14 23:15:53 2014 (r260656) @@ -16,7 +16,7 @@ -->
- &os; &release; Errata + &os; &release.prev; Errata @@ -26,20 +26,7 @@ $FreeBSD$ - 2000 - 2001 - 2002 - 2003 - 2004 - 2005 - 2006 - 2007 - 2008 - 2009 - 2010 - 2011 - 2012 - 2013 + 2014 The &os; Documentation Project Copied: stable/10/release/doc/en_US.ISO8859-1/share/xml/catalog.xml (from r260653, head/release/doc/en_US.ISO8859-1/share/xml/catalog.xml) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/release/doc/en_US.ISO8859-1/share/xml/catalog.xml Tue Jan 14 23:15:53 2014 (r260656, copy of r260653, head/release/doc/en_US.ISO8859-1/share/xml/catalog.xml) @@ -0,0 +1,12 @@ + + + + + + + + + Copied: stable/10/release/doc/en_US.ISO8859-1/share/xml/release.xsl (from r260653, head/release/doc/en_US.ISO8859-1/share/xml/release.xsl) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/release/doc/en_US.ISO8859-1/share/xml/release.xsl Tue Jan 14 23:15:53 2014 (r260656, copy of r260653, head/release/doc/en_US.ISO8859-1/share/xml/release.xsl) @@ -0,0 +1,27 @@ + + + + + + + + +

This file, and other release-related documents, + can be downloaded from .

+ +

For questions about FreeBSD, read the + documentation before + contacting <questions@FreeBSD.org>.

+ +

All users of FreeBSD should + subscribe to the <current@FreeBSD.org> + mailing list.

+ +

For questions about this documentation, + e-mail <doc@FreeBSD.org>.

+
+
Modified: stable/10/release/doc/share/mk/doc.relnotes.mk ============================================================================== --- stable/10/release/doc/share/mk/doc.relnotes.mk Tue Jan 14 23:04:31 2014 (r260655) +++ stable/10/release/doc/share/mk/doc.relnotes.mk Tue Jan 14 23:15:53 2014 (r260656) @@ -4,6 +4,8 @@ DOC_PREFIX?= ${RELN_ROOT}/../../../doc # XXX RELEASETYPE!= grep -o 'release.type "[a-z]*"' ${RELN_ROOT}/share/xml/release.ent | sed 's|[a-z.]* "\([a-z]*\)"|\1|' +RELEASEURL!= grep -o 'release.url \"[^\"]*\"' ${RELN_ROOT}/share/xml/release.ent | sed 's|[^ ]* "\([^"]*\)"|\1|' +RELEASEBRANCH!= grep -o 'release.branch "\([^"]*\)"' ${RELN_ROOT}/share/xml/release.ent | sed 's|[^ ]* "\([^"]*\)"|\1|' .if ${RELEASETYPE} == "current" PROFILING+= --param profile.attribute "'releasetype'" --param profile.value "'current'" .elif ${RELEASETYPE} == "snapshot" @@ -11,13 +13,14 @@ PROFILING+= --param profile.attribute "' .elif ${RELEASETYPE} == "release" PROFILING+= --param profile.attribute "'releasetype'" --param profile.value "'release'" .endif +XSLTPROCFLAGS+= --param release.url "'${RELEASEURL}'" +XSLTPROCFLAGS+= --param release.branch "'${RELEASEBRANCH}'" # Find the RELNOTESng document catalogs EXTRA_CATALOGS+= file://${RELN_ROOT}/${LANGCODE}/share/xml/catalog.xml \ - file://${RELN_ROOT}/share/xml/catalog.xml + file://${RELN_ROOT}/share/xml/catalog.xml -# Use the appropriate architecture-dependent RELNOTESng stylesheet -DSLPRINT?= ${RELN_ROOT}/share/xml/default.dsl +XSLXHTML= http://www.FreeBSD.org/release/XML/share/xml/release.xsl # # Automatic device list generation: Modified: stable/10/release/doc/share/xml/catalog.xml ============================================================================== --- stable/10/release/doc/share/xml/catalog.xml Tue Jan 14 23:04:31 2014 (r260655) +++ stable/10/release/doc/share/xml/catalog.xml Tue Jan 14 23:15:53 2014 (r260656) @@ -1,6 +1,11 @@ + + + Modified: stable/10/release/doc/share/xml/release.ent ============================================================================== --- stable/10/release/doc/share/xml/release.ent Tue Jan 14 23:04:31 2014 (r260655) +++ stable/10/release/doc/share/xml/release.ent Tue Jan 14 23:15:53 2014 (r260656) @@ -6,17 +6,17 @@ - + - + - + @@ -52,7 +52,7 @@ - + @@ -70,6 +70,3 @@ - - - Copied and modified: stable/10/release/doc/share/xml/release.xsl (from r260653, head/release/doc/share/xml/release.xsl) ============================================================================== --- head/release/doc/share/xml/release.xsl Tue Jan 14 22:46:23 2014 (r260653, copy source) +++ stable/10/release/doc/share/xml/release.xsl Tue Jan 14 23:15:53 2014 (r260656) @@ -12,4 +12,49 @@ + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + +

+
+ + + + + + + + + + + +
From owner-svn-src-all@FreeBSD.ORG Tue Jan 14 23:58:53 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5721DE26; Tue, 14 Jan 2014 23:58:53 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3E5C1178F; Tue, 14 Jan 2014 23:58:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0ENwrlN031057; Tue, 14 Jan 2014 23:58:53 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0ENwp77031045; Tue, 14 Jan 2014 23:58:51 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201401142358.s0ENwp77031045@svn.freebsd.org> From: Hiroki Sato Date: Tue, 14 Jan 2014 23:58:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260657 - in releng/10.0/release/doc: de_DE.ISO8859-1 en_US.ISO8859-1/errata en_US.ISO8859-1/hardware en_US.ISO8859-1/readme en_US.ISO8859-1/relnotes en_US.ISO8859-1/share/xml fr_FR.ISO... X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jan 2014 23:58:53 -0000 Author: hrs Date: Tue Jan 14 23:58:50 2014 New Revision: 260657 URL: http://svnweb.freebsd.org/changeset/base/260657 Log: - MFC 260656: * Purge old translations. * Add missing footer due to DSSSL->XSLT migration and use XML catalog to resolve URI. * Add missing arch= and revision= support. * Update release.ent and fix release number in Errata. - Trim copyright year. - Trim merged= attr. It is useless for release branch. - Move entities into release.ent. - Update footer for a release. - Document rc.d/sendmail certification support[1]. - Update BIND removal entry to mention NLnet Labs[2]. Submitted by: jmg[1] Suggested by: erwin[2] Approved by: re (implicitly) Added: releng/10.0/release/doc/en_US.ISO8859-1/share/xml/catalog.xml - copied unchanged from r260656, stable/10/release/doc/en_US.ISO8859-1/share/xml/catalog.xml releng/10.0/release/doc/en_US.ISO8859-1/share/xml/release.xsl - copied, changed from r260656, stable/10/release/doc/en_US.ISO8859-1/share/xml/release.xsl releng/10.0/release/doc/share/xml/release.xsl - copied unchanged from r260656, stable/10/release/doc/share/xml/release.xsl Deleted: releng/10.0/release/doc/de_DE.ISO8859-1/ releng/10.0/release/doc/en_US.ISO8859-1/share/xml/catalog releng/10.0/release/doc/en_US.ISO8859-1/share/xml/release.dsl releng/10.0/release/doc/fr_FR.ISO8859-1/ releng/10.0/release/doc/ja_JP.eucJP/ releng/10.0/release/doc/ru_RU.KOI8-R/ releng/10.0/release/doc/share/xml/catalog releng/10.0/release/doc/share/xml/default.dsl releng/10.0/release/doc/share/xml/release.dsl releng/10.0/release/doc/zh_CN.GB2312/ Modified: releng/10.0/release/doc/en_US.ISO8859-1/errata/article.xml releng/10.0/release/doc/en_US.ISO8859-1/hardware/article.xml releng/10.0/release/doc/en_US.ISO8859-1/readme/article.xml releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml releng/10.0/release/doc/share/mk/doc.relnotes.mk releng/10.0/release/doc/share/xml/catalog.xml releng/10.0/release/doc/share/xml/release.ent Modified: releng/10.0/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- releng/10.0/release/doc/en_US.ISO8859-1/errata/article.xml Tue Jan 14 23:15:53 2014 (r260656) +++ releng/10.0/release/doc/en_US.ISO8859-1/errata/article.xml Tue Jan 14 23:58:50 2014 (r260657) @@ -26,20 +26,6 @@ $FreeBSD$ - 2000 - 2001 - 2002 - 2003 - 2004 - 2005 - 2006 - 2007 - 2008 - 2009 - 2010 - 2011 - 2012 - 2013 2014 The &os; Documentation Project Modified: releng/10.0/release/doc/en_US.ISO8859-1/hardware/article.xml ============================================================================== --- releng/10.0/release/doc/en_US.ISO8859-1/hardware/article.xml Tue Jan 14 23:15:53 2014 (r260656) +++ releng/10.0/release/doc/en_US.ISO8859-1/hardware/article.xml Tue Jan 14 23:58:50 2014 (r260657) @@ -15,20 +15,6 @@ $FreeBSD$ - 2000 - 2001 - 2002 - 2003 - 2004 - 2005 - 2006 - 2007 - 2008 - 2009 - 2010 - 2011 - 2012 - 2013 2014 The &os; Documentation Project Modified: releng/10.0/release/doc/en_US.ISO8859-1/readme/article.xml ============================================================================== --- releng/10.0/release/doc/en_US.ISO8859-1/readme/article.xml Tue Jan 14 23:15:53 2014 (r260656) +++ releng/10.0/release/doc/en_US.ISO8859-1/readme/article.xml Tue Jan 14 23:58:50 2014 (r260657) @@ -21,20 +21,6 @@ $FreeBSD$ - 2000 - 2001 - 2002 - 2003 - 2004 - 2005 - 2006 - 2007 - 2008 - 2009 - 2010 - 2011 - 2012 - 2013 2014 The &os; Documentation Project Modified: releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml ============================================================================== --- releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Tue Jan 14 23:15:53 2014 (r260656) +++ releng/10.0/release/doc/en_US.ISO8859-1/relnotes/article.xml Tue Jan 14 23:58:50 2014 (r260657) @@ -3,23 +3,6 @@ "../../../share/xml/freebsd50.dtd" [ %release; - - -drill1"> -freebsd-version1"> -jemalloc3"> -bhyve4"> -nvme4"> -virtio4"> -virtio_balloon4"> -virtio_blk4"> -virtio_scsi4"> -vmx4"> -pkg7"> -bhyve8"> -gptboot8"> -bsdconfig8"> -unbound8"> ]>
&os; &release.current; Release Notes @@ -29,19 +12,6 @@ $FreeBSD$ - 2000 - 2001 - 2002 - 2003 - 2004 - 2005 - 2006 - 2007 - 2008 - 2009 - 2010 - 2011 - 2012 2013 2014 The &os; Documentation @@ -80,21 +50,7 @@ available online at &release.url;10.0R/relnotes.html. - The &release.type; distribution to which - these release notes apply represents the latest point along the - &release.branch; development branch since &release.branch; was - created. Information regarding pre-built, binary &release.type; - distributions along this branch can be found at &release.url;. - - The &release.type; distribution to - which these release notes apply represents a point along the - &release.branch; development branch between &release.prev; and the - future &release.next;. Information regarding pre-built, binary - &release.type; distributions along this branch can be found at - &release.url;. - - This distribution of &os; + This distribution of &os; &release.current; is a &release.type; distribution. It can be found at &release.url; or any of its mirrors. More information on obtaining this (or other) @@ -116,9 +72,7 @@ What's New This section describes the most user-visible new or changed - features in &os; since &release.prev;. In general, changes - described here are unique to the &release.branch; branch unless - specifically marked as &merged; features. + features in &os; since &release.prev;. Typical release note items document recent security advisories issued after &release.prev;, new drivers or hardware support, new @@ -211,20 +165,20 @@ &man.cpuset.1; userland utility has been added to allow manipulation of processor sets. - The &man.ddb.4; kernel debugger now has an + The &man.ddb.4; kernel debugger now has an output capture facility. Input and output from &man.ddb.4; can now be captured to a memory buffer for later inspection using &man.sysctl.8; or a textdump. The new capture command controls this feature. - The &man.ddb.4; debugger now supports a simple + The &man.ddb.4; debugger now supports a simple scripting facility, which supports a set of named scripts consisting of a set of &man.ddb.4; commands. These commands can be managed from within &man.ddb.4; or with the use of the new &man.ddb.8; utility. More details can be found in the &man.ddb.4; manual page. - The kernel now supports a new textdump format + The kernel now supports a new textdump format of kernel dumps. A textdump provides higher-level information via mechanically generated/extracted debugging output, rather than a simple memory dump. This facility can be used to @@ -251,7 +205,7 @@ The &os; kernel now has support for large memory page mappings (superpages). - The ULE + The ULE scheduler is now the default process scheduler in GENERIC kernels. @@ -340,12 +294,12 @@ hv_vmbus_load="YES" Boot Loader Changes - The BTX kernel used by the + The BTX kernel used by the boot loader has been changed to invoke BIOS routines from real mode. This change makes it possible to boot &os; from USB devices. - A new &man.gptboot.8; boot + A new &man.gptboot.8; boot loader has been added to support booting from a GPT labeled disk. A new boot command has been added to &man.gpart.8;, which makes a GPT disk bootable by writing the @@ -356,13 +310,13 @@ hv_vmbus_load="YES" Hardware Support - The &man.cmx.4; driver, a driver for Omnikey + The &man.cmx.4; driver, a driver for Omnikey CardMan 4040 PCMCIA smartcard readers, has been added. The &man.syscons.4; driver now supports the Colemak keyboard layout. - The &man.uslcom.4; driver, a driver for + The &man.uslcom.4; driver, a driver for Silicon Laboratories CP2101/CP2102-based USB serial adapters, has been imported from OpenBSD. @@ -411,7 +365,7 @@ hv_vmbus_load="YES" number of outstanding issues. It also now works on all architectures. - The &man.wpi.4; driver has + The &man.wpi.4; driver has been updated to include a number of stability fixes. The &man.cxgbe.4; driver has been @@ -478,7 +432,7 @@ hv_vmbus_load="YES" Disks and Storage - The &man.aac.4; driver now supports volumes + The &man.aac.4; driver now supports volumes larger than 2TB in size. The &man.ata.4; driver now supports a spindown command for @@ -488,7 +442,7 @@ hv_vmbus_load="YES" supports a spindown command to configure this feature. - The &man.hptrr.4; driver has been updated to + The &man.hptrr.4; driver has been updated to version 1.2 from Highpoint. &man.nvme.4; has been added and provides @@ -568,12 +522,17 @@ hv_vmbus_load="YES" xlink:href="http://llvm.org/releases/3.3/tools/clang/docs/ReleaseNotes.html"> Clang 3.3 Release Notes. - BIND has been replaced by - &man.unbound.8; for local DNS resolution in the base system. + BIND has been + removed from the base system. &man.unbound.8;, which is + maintained by NLnet Labs, has been imported to support local DNS + resolution functionality with DNSSEC. Note that it is not a + replacement of BIND and the latest + versions of BIND is still available + in the Ports Collection. With this change, nslookup and dig are no longer a part of the base system. Users should instead use &man.host.1; and &man.drill.1; Alternatively, nslookup and dig can be obtained by - installing the dns/bind-tools port. + installing dns/bind-tools port. sysinstall has been removed from the base system. Auxiliary libraries and tools used by sysinstall such @@ -607,7 +566,7 @@ hv_vmbus_load="YES" Portable BSD make tool (bmake) from NetBSD. - The &man.adduser.8; utility now supports + The &man.adduser.8; utility now supports a option to set the mode of a new user's home directory. @@ -618,7 +577,7 @@ hv_vmbus_load="YES" BSD-licensed versions of &man.bc.1; and &man.dc.1; have replaced their GNU counterparts. - &man.chflags.1; now supports + &man.chflags.1; now supports a flag for verbose output and a flag to ignore errors with the same semantics as (for example) &man.chmod.1;. @@ -641,7 +600,7 @@ hv_vmbus_load="YES" The &man.fdopendir.3; library function has been added. - The &man.fetch.3; library now supports HTTP + The &man.fetch.3; library now supports HTTP 1.1 If-Modified-Since behavior. The &man.fetch.1; program now supports which will only download the specified HTTP URL if the content @@ -673,7 +632,7 @@ hv_vmbus_load="YES" The &man.procstat.1; utility has been added to display detailed information about processes. - The &man.realpath.1; utility now supports + The &man.realpath.1; utility now supports a flag to suppress warnings; it now also accepts multiple paths on its command line. @@ -723,6 +682,16 @@ hv_vmbus_load="YES" <filename>/etc/rc.d</filename> Scripts + rc.d/sendmail now + generates and uses an SSL certificate by default when + sendmail_enable="YES". This will allow + remote MTA to use STARTTLS to encrypt incoming email. The + certification is signed with a key that is thrown away and is + not a substitute for generating your own properly if you need + to use STARTTLS authentication. Options to control the + certificate generation is documented in + rc.d/sendmail. + The followoing &man.rc.8; scripts have been added: @@ -828,14 +797,14 @@ hv_vmbus_load="YES" xlink:href="http://www.facebook.com/jemalloc/">this link for more details. - AMD has been + AMD has been updated from 6.0.10 to 6.1.5. - awk has been + awk has been updated from the 1 May 2007 release to the 23 October 2007 release. - bzip2 has been + bzip2 has been updated from 1.0.4 to 1.0.5. CVS has been @@ -863,16 +832,16 @@ hv_vmbus_load="YES" ncurses has been updated to 5.7-20081102. - OpenSSH has been + OpenSSH has been updated to 6.4. OpenPAM has been updated to the Micrampelis release. - sendmail has been + sendmail has been updated from 8.14.1 to 8.14.7. - The timezone database has been updated from + The timezone database has been updated from the tzdata2008h release to the tzdata2009m release. @@ -886,10 +855,10 @@ hv_vmbus_load="YES" WPA Supplicant has been updated to 2.0. - xz has been updated + xz has been updated from snapshot as of 12 April 2010 to 5.0.0. - &man.nvi.1; has been updated + &man.nvi.1; has been updated to 2.1.2. &man.nvi.1; supports wide-character @@ -909,7 +878,7 @@ hv_vmbus_load="YES" Release Engineering and Integration - The supported version of + The supported version of the GNOME desktop environment (x11/gnome2) has been updated from 2.20.1 to 2.22. Copied: releng/10.0/release/doc/en_US.ISO8859-1/share/xml/catalog.xml (from r260656, stable/10/release/doc/en_US.ISO8859-1/share/xml/catalog.xml) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ releng/10.0/release/doc/en_US.ISO8859-1/share/xml/catalog.xml Tue Jan 14 23:58:50 2014 (r260657, copy of r260656, stable/10/release/doc/en_US.ISO8859-1/share/xml/catalog.xml) @@ -0,0 +1,12 @@ + + + + + + + + + Copied and modified: releng/10.0/release/doc/en_US.ISO8859-1/share/xml/release.xsl (from r260656, stable/10/release/doc/en_US.ISO8859-1/share/xml/release.xsl) ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/share/xml/release.xsl Tue Jan 14 23:15:53 2014 (r260656, copy source) +++ releng/10.0/release/doc/en_US.ISO8859-1/share/xml/release.xsl Tue Jan 14 23:58:50 2014 (r260657) @@ -17,8 +17,8 @@ documentation before contacting <questions@FreeBSD.org>.

-

All users of FreeBSD should - subscribe to the <current@FreeBSD.org> +

All users of FreeBSD release should + subscribe to the <stable@FreeBSD.org> mailing list.

For questions about this documentation, Modified: releng/10.0/release/doc/share/mk/doc.relnotes.mk ============================================================================== --- releng/10.0/release/doc/share/mk/doc.relnotes.mk Tue Jan 14 23:15:53 2014 (r260656) +++ releng/10.0/release/doc/share/mk/doc.relnotes.mk Tue Jan 14 23:58:50 2014 (r260657) @@ -4,6 +4,8 @@ DOC_PREFIX?= ${RELN_ROOT}/../../../doc # XXX RELEASETYPE!= grep -o 'release.type "[a-z]*"' ${RELN_ROOT}/share/xml/release.ent | sed 's|[a-z.]* "\([a-z]*\)"|\1|' +RELEASEURL!= grep -o 'release.url \"[^\"]*\"' ${RELN_ROOT}/share/xml/release.ent | sed 's|[^ ]* "\([^"]*\)"|\1|' +RELEASEBRANCH!= grep -o 'release.branch "\([^"]*\)"' ${RELN_ROOT}/share/xml/release.ent | sed 's|[^ ]* "\([^"]*\)"|\1|' .if ${RELEASETYPE} == "current" PROFILING+= --param profile.attribute "'releasetype'" --param profile.value "'current'" .elif ${RELEASETYPE} == "snapshot" @@ -11,13 +13,14 @@ PROFILING+= --param profile.attribute "' .elif ${RELEASETYPE} == "release" PROFILING+= --param profile.attribute "'releasetype'" --param profile.value "'release'" .endif +XSLTPROCFLAGS+= --param release.url "'${RELEASEURL}'" +XSLTPROCFLAGS+= --param release.branch "'${RELEASEBRANCH}'" # Find the RELNOTESng document catalogs EXTRA_CATALOGS+= file://${RELN_ROOT}/${LANGCODE}/share/xml/catalog.xml \ - file://${RELN_ROOT}/share/xml/catalog.xml + file://${RELN_ROOT}/share/xml/catalog.xml -# Use the appropriate architecture-dependent RELNOTESng stylesheet -DSLPRINT?= ${RELN_ROOT}/share/xml/default.dsl +XSLXHTML= http://www.FreeBSD.org/release/XML/share/xml/release.xsl # # Automatic device list generation: Modified: releng/10.0/release/doc/share/xml/catalog.xml ============================================================================== --- releng/10.0/release/doc/share/xml/catalog.xml Tue Jan 14 23:15:53 2014 (r260656) +++ releng/10.0/release/doc/share/xml/catalog.xml Tue Jan 14 23:58:50 2014 (r260657) @@ -1,6 +1,11 @@ + + + Modified: releng/10.0/release/doc/share/xml/release.ent ============================================================================== --- releng/10.0/release/doc/share/xml/release.ent Tue Jan 14 23:15:53 2014 (r260656) +++ releng/10.0/release/doc/share/xml/release.ent Tue Jan 14 23:58:50 2014 (r260657) @@ -11,7 +11,7 @@ - + - - - - - - -]]> - -]]> - -]]> - - + @@ -71,5 +58,19 @@ - - + +drill1"> +freebsd-version1"> +jemalloc3"> +bhyve4"> +nvme4"> +virtio4"> +virtio_balloon4"> +virtio_blk4"> +virtio_scsi4"> +vmx4"> +pkg7"> +bhyve8"> +gptboot8"> +bsdconfig8"> +unbound8"> Copied: releng/10.0/release/doc/share/xml/release.xsl (from r260656, stable/10/release/doc/share/xml/release.xsl) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ releng/10.0/release/doc/share/xml/release.xsl Tue Jan 14 23:58:50 2014 (r260657, copy of r260656, stable/10/release/doc/share/xml/release.xsl) @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 00:04:04 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7F05DFD; Wed, 15 Jan 2014 00:04:04 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 530DD183A; Wed, 15 Jan 2014 00:04:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F044f0035370; Wed, 15 Jan 2014 00:04:04 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F044JP035369; Wed, 15 Jan 2014 00:04:04 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201401150004.s0F044JP035369@svn.freebsd.org> From: Hiroki Sato Date: Wed, 15 Jan 2014 00:04:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260658 - releng/10.0 X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 00:04:04 -0000 Author: hrs Date: Wed Jan 15 00:04:03 2014 New Revision: 260658 URL: http://svnweb.freebsd.org/changeset/base/260658 Log: Record a missing mergeinfo. Approved by: re (implicitly) Modified: Directory Properties: releng/10.0/ (props changed) From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 00:10:36 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2FEAF323; Wed, 15 Jan 2014 00:10:36 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 177691876; Wed, 15 Jan 2014 00:10:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F0AaIF038476; Wed, 15 Jan 2014 00:10:36 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F0ALq4036767; Wed, 15 Jan 2014 00:10:21 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201401150010.s0F0ALq4036767@svn.freebsd.org> From: Jung-uk Kim Date: Wed, 15 Jan 2014 00:10:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r260659 - in vendor-sys/acpica/dist: . generate/release generate/unix/acpiexamples generate/unix/acpiexec source/common source/compiler source/components/debugger source/components/disa... X-SVN-Group: vendor-sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 00:10:36 -0000 Author: jkim Date: Wed Jan 15 00:10:20 2014 New Revision: 260659 URL: http://svnweb.freebsd.org/changeset/base/260659 Log: Import ACPICA 20140414. Added: vendor-sys/acpica/dist/generate/unix/acpiexamples/ vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile (contents, props changed) vendor-sys/acpica/dist/source/components/debugger/dbtest.c (contents, props changed) Modified: vendor-sys/acpica/dist/changes.txt vendor-sys/acpica/dist/generate/release/build.sh vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile vendor-sys/acpica/dist/source/common/acgetline.c vendor-sys/acpica/dist/source/common/adfile.c vendor-sys/acpica/dist/source/common/adisasm.c vendor-sys/acpica/dist/source/common/adwalk.c vendor-sys/acpica/dist/source/common/ahpredef.c vendor-sys/acpica/dist/source/common/dmextern.c vendor-sys/acpica/dist/source/common/dmrestag.c vendor-sys/acpica/dist/source/common/dmtable.c vendor-sys/acpica/dist/source/common/dmtbdump.c vendor-sys/acpica/dist/source/common/dmtbinfo.c vendor-sys/acpica/dist/source/common/getopt.c vendor-sys/acpica/dist/source/compiler/aslanalyze.c vendor-sys/acpica/dist/source/compiler/aslbtypes.c vendor-sys/acpica/dist/source/compiler/aslcodegen.c vendor-sys/acpica/dist/source/compiler/aslcompile.c vendor-sys/acpica/dist/source/compiler/aslcompiler.h vendor-sys/acpica/dist/source/compiler/aslcompiler.l vendor-sys/acpica/dist/source/compiler/aslcompiler.y vendor-sys/acpica/dist/source/compiler/asldefine.h vendor-sys/acpica/dist/source/compiler/aslerror.c vendor-sys/acpica/dist/source/compiler/aslfileio.c vendor-sys/acpica/dist/source/compiler/aslfiles.c vendor-sys/acpica/dist/source/compiler/aslfold.c vendor-sys/acpica/dist/source/compiler/aslglobal.h vendor-sys/acpica/dist/source/compiler/aslhex.c vendor-sys/acpica/dist/source/compiler/asllength.c vendor-sys/acpica/dist/source/compiler/asllisting.c vendor-sys/acpica/dist/source/compiler/asllistsup.c vendor-sys/acpica/dist/source/compiler/aslload.c vendor-sys/acpica/dist/source/compiler/asllookup.c vendor-sys/acpica/dist/source/compiler/aslmain.c vendor-sys/acpica/dist/source/compiler/aslmap.c vendor-sys/acpica/dist/source/compiler/aslmessages.h vendor-sys/acpica/dist/source/compiler/aslmethod.c vendor-sys/acpica/dist/source/compiler/aslnamesp.c vendor-sys/acpica/dist/source/compiler/asloffset.c vendor-sys/acpica/dist/source/compiler/aslopcodes.c vendor-sys/acpica/dist/source/compiler/asloperands.c vendor-sys/acpica/dist/source/compiler/aslopt.c vendor-sys/acpica/dist/source/compiler/asloptions.c vendor-sys/acpica/dist/source/compiler/aslpredef.c vendor-sys/acpica/dist/source/compiler/aslprepkg.c vendor-sys/acpica/dist/source/compiler/aslresource.c vendor-sys/acpica/dist/source/compiler/aslrestype1.c vendor-sys/acpica/dist/source/compiler/aslrestype1i.c vendor-sys/acpica/dist/source/compiler/aslrestype2.c vendor-sys/acpica/dist/source/compiler/aslrestype2d.c vendor-sys/acpica/dist/source/compiler/aslrestype2e.c vendor-sys/acpica/dist/source/compiler/aslrestype2q.c vendor-sys/acpica/dist/source/compiler/aslrestype2s.c vendor-sys/acpica/dist/source/compiler/aslrestype2w.c vendor-sys/acpica/dist/source/compiler/aslstartup.c vendor-sys/acpica/dist/source/compiler/aslstubs.c vendor-sys/acpica/dist/source/compiler/aslsupport.l vendor-sys/acpica/dist/source/compiler/asltransform.c vendor-sys/acpica/dist/source/compiler/asltree.c vendor-sys/acpica/dist/source/compiler/asltypes.h vendor-sys/acpica/dist/source/compiler/aslutils.c vendor-sys/acpica/dist/source/compiler/asluuid.c vendor-sys/acpica/dist/source/compiler/aslwalks.c vendor-sys/acpica/dist/source/compiler/aslxref.c vendor-sys/acpica/dist/source/compiler/dtcompile.c vendor-sys/acpica/dist/source/compiler/dtcompiler.h vendor-sys/acpica/dist/source/compiler/dtexpress.c vendor-sys/acpica/dist/source/compiler/dtfield.c vendor-sys/acpica/dist/source/compiler/dtio.c vendor-sys/acpica/dist/source/compiler/dtparser.l vendor-sys/acpica/dist/source/compiler/dtparser.y vendor-sys/acpica/dist/source/compiler/dtsubtable.c vendor-sys/acpica/dist/source/compiler/dttable.c vendor-sys/acpica/dist/source/compiler/dttemplate.c vendor-sys/acpica/dist/source/compiler/dttemplate.h vendor-sys/acpica/dist/source/compiler/dtutils.c vendor-sys/acpica/dist/source/compiler/preprocess.h vendor-sys/acpica/dist/source/compiler/prexpress.c vendor-sys/acpica/dist/source/compiler/prmacros.c vendor-sys/acpica/dist/source/compiler/prparser.l vendor-sys/acpica/dist/source/compiler/prparser.y vendor-sys/acpica/dist/source/compiler/prscan.c vendor-sys/acpica/dist/source/compiler/prutils.c vendor-sys/acpica/dist/source/components/debugger/dbcmds.c vendor-sys/acpica/dist/source/components/debugger/dbconvert.c vendor-sys/acpica/dist/source/components/debugger/dbdisply.c vendor-sys/acpica/dist/source/components/debugger/dbexec.c vendor-sys/acpica/dist/source/components/debugger/dbfileio.c vendor-sys/acpica/dist/source/components/debugger/dbhistry.c vendor-sys/acpica/dist/source/components/debugger/dbinput.c vendor-sys/acpica/dist/source/components/debugger/dbmethod.c vendor-sys/acpica/dist/source/components/debugger/dbnames.c vendor-sys/acpica/dist/source/components/debugger/dbstats.c vendor-sys/acpica/dist/source/components/debugger/dbutils.c vendor-sys/acpica/dist/source/components/debugger/dbxface.c vendor-sys/acpica/dist/source/components/disassembler/dmbuffer.c vendor-sys/acpica/dist/source/components/disassembler/dmdeferred.c vendor-sys/acpica/dist/source/components/disassembler/dmnames.c vendor-sys/acpica/dist/source/components/disassembler/dmobject.c vendor-sys/acpica/dist/source/components/disassembler/dmopcode.c vendor-sys/acpica/dist/source/components/disassembler/dmresrc.c vendor-sys/acpica/dist/source/components/disassembler/dmresrcl.c vendor-sys/acpica/dist/source/components/disassembler/dmresrcl2.c vendor-sys/acpica/dist/source/components/disassembler/dmresrcs.c vendor-sys/acpica/dist/source/components/disassembler/dmutils.c vendor-sys/acpica/dist/source/components/disassembler/dmwalk.c vendor-sys/acpica/dist/source/components/dispatcher/dsargs.c vendor-sys/acpica/dist/source/components/dispatcher/dscontrol.c vendor-sys/acpica/dist/source/components/dispatcher/dsfield.c vendor-sys/acpica/dist/source/components/dispatcher/dsinit.c vendor-sys/acpica/dist/source/components/dispatcher/dsmethod.c vendor-sys/acpica/dist/source/components/dispatcher/dsmthdat.c vendor-sys/acpica/dist/source/components/dispatcher/dsobject.c vendor-sys/acpica/dist/source/components/dispatcher/dsopcode.c vendor-sys/acpica/dist/source/components/dispatcher/dsutils.c vendor-sys/acpica/dist/source/components/dispatcher/dswexec.c vendor-sys/acpica/dist/source/components/dispatcher/dswload.c vendor-sys/acpica/dist/source/components/dispatcher/dswload2.c vendor-sys/acpica/dist/source/components/dispatcher/dswscope.c vendor-sys/acpica/dist/source/components/dispatcher/dswstate.c vendor-sys/acpica/dist/source/components/events/evevent.c vendor-sys/acpica/dist/source/components/events/evglock.c vendor-sys/acpica/dist/source/components/events/evgpe.c vendor-sys/acpica/dist/source/components/events/evgpeblk.c vendor-sys/acpica/dist/source/components/events/evgpeinit.c vendor-sys/acpica/dist/source/components/events/evgpeutil.c vendor-sys/acpica/dist/source/components/events/evhandler.c vendor-sys/acpica/dist/source/components/events/evmisc.c vendor-sys/acpica/dist/source/components/events/evregion.c vendor-sys/acpica/dist/source/components/events/evrgnini.c vendor-sys/acpica/dist/source/components/events/evsci.c vendor-sys/acpica/dist/source/components/events/evxface.c vendor-sys/acpica/dist/source/components/events/evxfevnt.c vendor-sys/acpica/dist/source/components/events/evxfgpe.c vendor-sys/acpica/dist/source/components/events/evxfregn.c vendor-sys/acpica/dist/source/components/executer/exconfig.c vendor-sys/acpica/dist/source/components/executer/exconvrt.c vendor-sys/acpica/dist/source/components/executer/excreate.c vendor-sys/acpica/dist/source/components/executer/exdebug.c vendor-sys/acpica/dist/source/components/executer/exdump.c vendor-sys/acpica/dist/source/components/executer/exfield.c vendor-sys/acpica/dist/source/components/executer/exfldio.c vendor-sys/acpica/dist/source/components/executer/exmisc.c vendor-sys/acpica/dist/source/components/executer/exmutex.c vendor-sys/acpica/dist/source/components/executer/exnames.c vendor-sys/acpica/dist/source/components/executer/exoparg1.c vendor-sys/acpica/dist/source/components/executer/exoparg2.c vendor-sys/acpica/dist/source/components/executer/exoparg3.c vendor-sys/acpica/dist/source/components/executer/exoparg6.c vendor-sys/acpica/dist/source/components/executer/exprep.c vendor-sys/acpica/dist/source/components/executer/exregion.c vendor-sys/acpica/dist/source/components/executer/exresnte.c vendor-sys/acpica/dist/source/components/executer/exresolv.c vendor-sys/acpica/dist/source/components/executer/exresop.c vendor-sys/acpica/dist/source/components/executer/exstore.c vendor-sys/acpica/dist/source/components/executer/exstoren.c vendor-sys/acpica/dist/source/components/executer/exstorob.c vendor-sys/acpica/dist/source/components/executer/exsystem.c vendor-sys/acpica/dist/source/components/executer/exutils.c vendor-sys/acpica/dist/source/components/hardware/hwacpi.c vendor-sys/acpica/dist/source/components/hardware/hwesleep.c vendor-sys/acpica/dist/source/components/hardware/hwgpe.c vendor-sys/acpica/dist/source/components/hardware/hwpci.c vendor-sys/acpica/dist/source/components/hardware/hwregs.c vendor-sys/acpica/dist/source/components/hardware/hwsleep.c vendor-sys/acpica/dist/source/components/hardware/hwtimer.c vendor-sys/acpica/dist/source/components/hardware/hwvalid.c vendor-sys/acpica/dist/source/components/hardware/hwxface.c vendor-sys/acpica/dist/source/components/hardware/hwxfsleep.c vendor-sys/acpica/dist/source/components/namespace/nsaccess.c vendor-sys/acpica/dist/source/components/namespace/nsalloc.c vendor-sys/acpica/dist/source/components/namespace/nsarguments.c vendor-sys/acpica/dist/source/components/namespace/nsconvert.c vendor-sys/acpica/dist/source/components/namespace/nsdump.c vendor-sys/acpica/dist/source/components/namespace/nsdumpdv.c vendor-sys/acpica/dist/source/components/namespace/nseval.c vendor-sys/acpica/dist/source/components/namespace/nsinit.c vendor-sys/acpica/dist/source/components/namespace/nsload.c vendor-sys/acpica/dist/source/components/namespace/nsnames.c vendor-sys/acpica/dist/source/components/namespace/nsobject.c vendor-sys/acpica/dist/source/components/namespace/nsparse.c vendor-sys/acpica/dist/source/components/namespace/nspredef.c vendor-sys/acpica/dist/source/components/namespace/nsprepkg.c vendor-sys/acpica/dist/source/components/namespace/nsrepair.c vendor-sys/acpica/dist/source/components/namespace/nsrepair2.c vendor-sys/acpica/dist/source/components/namespace/nssearch.c vendor-sys/acpica/dist/source/components/namespace/nsutils.c vendor-sys/acpica/dist/source/components/namespace/nswalk.c vendor-sys/acpica/dist/source/components/namespace/nsxfeval.c vendor-sys/acpica/dist/source/components/namespace/nsxfname.c vendor-sys/acpica/dist/source/components/namespace/nsxfobj.c vendor-sys/acpica/dist/source/components/parser/psargs.c vendor-sys/acpica/dist/source/components/parser/psloop.c vendor-sys/acpica/dist/source/components/parser/psobject.c vendor-sys/acpica/dist/source/components/parser/psopcode.c vendor-sys/acpica/dist/source/components/parser/psopinfo.c vendor-sys/acpica/dist/source/components/parser/psparse.c vendor-sys/acpica/dist/source/components/parser/psscope.c vendor-sys/acpica/dist/source/components/parser/pstree.c vendor-sys/acpica/dist/source/components/parser/psutils.c vendor-sys/acpica/dist/source/components/parser/pswalk.c vendor-sys/acpica/dist/source/components/parser/psxface.c vendor-sys/acpica/dist/source/components/resources/rsaddr.c vendor-sys/acpica/dist/source/components/resources/rscalc.c vendor-sys/acpica/dist/source/components/resources/rscreate.c vendor-sys/acpica/dist/source/components/resources/rsdump.c vendor-sys/acpica/dist/source/components/resources/rsdumpinfo.c vendor-sys/acpica/dist/source/components/resources/rsinfo.c vendor-sys/acpica/dist/source/components/resources/rsio.c vendor-sys/acpica/dist/source/components/resources/rsirq.c vendor-sys/acpica/dist/source/components/resources/rslist.c vendor-sys/acpica/dist/source/components/resources/rsmemory.c vendor-sys/acpica/dist/source/components/resources/rsmisc.c vendor-sys/acpica/dist/source/components/resources/rsserial.c vendor-sys/acpica/dist/source/components/resources/rsutils.c vendor-sys/acpica/dist/source/components/resources/rsxface.c vendor-sys/acpica/dist/source/components/tables/tbfadt.c vendor-sys/acpica/dist/source/components/tables/tbfind.c vendor-sys/acpica/dist/source/components/tables/tbinstal.c vendor-sys/acpica/dist/source/components/tables/tbprint.c vendor-sys/acpica/dist/source/components/tables/tbutils.c vendor-sys/acpica/dist/source/components/tables/tbxface.c vendor-sys/acpica/dist/source/components/tables/tbxfload.c vendor-sys/acpica/dist/source/components/tables/tbxfroot.c vendor-sys/acpica/dist/source/components/utilities/utaddress.c vendor-sys/acpica/dist/source/components/utilities/utalloc.c vendor-sys/acpica/dist/source/components/utilities/utbuffer.c vendor-sys/acpica/dist/source/components/utilities/utcache.c vendor-sys/acpica/dist/source/components/utilities/utclib.c vendor-sys/acpica/dist/source/components/utilities/utcopy.c vendor-sys/acpica/dist/source/components/utilities/utdebug.c vendor-sys/acpica/dist/source/components/utilities/utdecode.c vendor-sys/acpica/dist/source/components/utilities/utdelete.c vendor-sys/acpica/dist/source/components/utilities/uterror.c vendor-sys/acpica/dist/source/components/utilities/uteval.c vendor-sys/acpica/dist/source/components/utilities/utexcep.c vendor-sys/acpica/dist/source/components/utilities/utglobal.c vendor-sys/acpica/dist/source/components/utilities/utids.c vendor-sys/acpica/dist/source/components/utilities/utinit.c vendor-sys/acpica/dist/source/components/utilities/utlock.c vendor-sys/acpica/dist/source/components/utilities/utmath.c vendor-sys/acpica/dist/source/components/utilities/utmisc.c vendor-sys/acpica/dist/source/components/utilities/utmutex.c vendor-sys/acpica/dist/source/components/utilities/utobject.c vendor-sys/acpica/dist/source/components/utilities/utosi.c vendor-sys/acpica/dist/source/components/utilities/utownerid.c vendor-sys/acpica/dist/source/components/utilities/utpredef.c vendor-sys/acpica/dist/source/components/utilities/utresrc.c vendor-sys/acpica/dist/source/components/utilities/utstate.c vendor-sys/acpica/dist/source/components/utilities/utstring.c vendor-sys/acpica/dist/source/components/utilities/uttrack.c vendor-sys/acpica/dist/source/components/utilities/utxface.c vendor-sys/acpica/dist/source/components/utilities/utxferror.c vendor-sys/acpica/dist/source/components/utilities/utxfinit.c vendor-sys/acpica/dist/source/components/utilities/utxfmutex.c vendor-sys/acpica/dist/source/include/acapps.h vendor-sys/acpica/dist/source/include/acbuffer.h vendor-sys/acpica/dist/source/include/accommon.h vendor-sys/acpica/dist/source/include/acconfig.h vendor-sys/acpica/dist/source/include/acdebug.h vendor-sys/acpica/dist/source/include/acdisasm.h vendor-sys/acpica/dist/source/include/acdispat.h vendor-sys/acpica/dist/source/include/acevents.h vendor-sys/acpica/dist/source/include/acexcep.h vendor-sys/acpica/dist/source/include/acglobal.h vendor-sys/acpica/dist/source/include/achware.h vendor-sys/acpica/dist/source/include/acinterp.h vendor-sys/acpica/dist/source/include/aclocal.h vendor-sys/acpica/dist/source/include/acmacros.h vendor-sys/acpica/dist/source/include/acnames.h vendor-sys/acpica/dist/source/include/acnamesp.h vendor-sys/acpica/dist/source/include/acobject.h vendor-sys/acpica/dist/source/include/acopcode.h vendor-sys/acpica/dist/source/include/acoutput.h vendor-sys/acpica/dist/source/include/acparser.h vendor-sys/acpica/dist/source/include/acpi.h vendor-sys/acpica/dist/source/include/acpiosxf.h vendor-sys/acpica/dist/source/include/acpixf.h vendor-sys/acpica/dist/source/include/acpredef.h vendor-sys/acpica/dist/source/include/acresrc.h vendor-sys/acpica/dist/source/include/acrestyp.h vendor-sys/acpica/dist/source/include/acstruct.h vendor-sys/acpica/dist/source/include/actables.h vendor-sys/acpica/dist/source/include/actbl.h vendor-sys/acpica/dist/source/include/actbl1.h vendor-sys/acpica/dist/source/include/actbl2.h vendor-sys/acpica/dist/source/include/actbl3.h vendor-sys/acpica/dist/source/include/actypes.h vendor-sys/acpica/dist/source/include/acutils.h vendor-sys/acpica/dist/source/include/amlcode.h vendor-sys/acpica/dist/source/include/amlresrc.h vendor-sys/acpica/dist/source/include/platform/accygwin.h vendor-sys/acpica/dist/source/include/platform/acefi.h vendor-sys/acpica/dist/source/include/platform/acenv.h vendor-sys/acpica/dist/source/include/platform/acfreebsd.h vendor-sys/acpica/dist/source/include/platform/acgcc.h vendor-sys/acpica/dist/source/include/platform/achaiku.h vendor-sys/acpica/dist/source/include/platform/acintel.h vendor-sys/acpica/dist/source/include/platform/aclinux.h vendor-sys/acpica/dist/source/include/platform/acmacosx.h vendor-sys/acpica/dist/source/include/platform/acmsvc.h vendor-sys/acpica/dist/source/include/platform/acnetbsd.h vendor-sys/acpica/dist/source/include/platform/acos2.h vendor-sys/acpica/dist/source/include/platform/acwin.h vendor-sys/acpica/dist/source/include/platform/acwin64.h vendor-sys/acpica/dist/source/os_specific/service_layers/osfreebsdtbl.c vendor-sys/acpica/dist/source/os_specific/service_layers/oslinuxtbl.c vendor-sys/acpica/dist/source/os_specific/service_layers/osunixdir.c vendor-sys/acpica/dist/source/os_specific/service_layers/osunixmap.c vendor-sys/acpica/dist/source/os_specific/service_layers/osunixxf.c vendor-sys/acpica/dist/source/os_specific/service_layers/oswindir.c vendor-sys/acpica/dist/source/os_specific/service_layers/oswintbl.c vendor-sys/acpica/dist/source/os_specific/service_layers/oswinxf.c vendor-sys/acpica/dist/source/tools/acpibin/abcompare.c vendor-sys/acpica/dist/source/tools/acpibin/abmain.c vendor-sys/acpica/dist/source/tools/acpibin/acpibin.h vendor-sys/acpica/dist/source/tools/acpidump/acpidump.h vendor-sys/acpica/dist/source/tools/acpidump/apdump.c vendor-sys/acpica/dist/source/tools/acpidump/apfiles.c vendor-sys/acpica/dist/source/tools/acpidump/apmain.c vendor-sys/acpica/dist/source/tools/acpiexec/aecommon.h vendor-sys/acpica/dist/source/tools/acpiexec/aeexec.c vendor-sys/acpica/dist/source/tools/acpiexec/aehandlers.c vendor-sys/acpica/dist/source/tools/acpiexec/aemain.c vendor-sys/acpica/dist/source/tools/acpiexec/aetables.c vendor-sys/acpica/dist/source/tools/acpiexec/aetables.h vendor-sys/acpica/dist/source/tools/acpihelp/acpihelp.h vendor-sys/acpica/dist/source/tools/acpihelp/ahamlops.c vendor-sys/acpica/dist/source/tools/acpihelp/ahaslkey.c vendor-sys/acpica/dist/source/tools/acpihelp/ahaslops.c vendor-sys/acpica/dist/source/tools/acpihelp/ahdecode.c vendor-sys/acpica/dist/source/tools/acpihelp/ahmain.c vendor-sys/acpica/dist/source/tools/acpinames/acpinames.h vendor-sys/acpica/dist/source/tools/acpinames/anmain.c vendor-sys/acpica/dist/source/tools/acpinames/anstubs.c vendor-sys/acpica/dist/source/tools/acpinames/antables.c vendor-sys/acpica/dist/source/tools/acpisrc/acpisrc.h vendor-sys/acpica/dist/source/tools/acpisrc/ascase.c vendor-sys/acpica/dist/source/tools/acpisrc/asconvrt.c vendor-sys/acpica/dist/source/tools/acpisrc/asfile.c vendor-sys/acpica/dist/source/tools/acpisrc/asmain.c vendor-sys/acpica/dist/source/tools/acpisrc/asremove.c vendor-sys/acpica/dist/source/tools/acpisrc/astable.c vendor-sys/acpica/dist/source/tools/acpisrc/asutils.c vendor-sys/acpica/dist/source/tools/acpixtract/acpixtract.c vendor-sys/acpica/dist/source/tools/acpixtract/axmain.c vendor-sys/acpica/dist/source/tools/examples/examples.c vendor-sys/acpica/dist/source/tools/examples/examples.h vendor-sys/acpica/dist/source/tools/examples/exstubs.c vendor-sys/acpica/dist/source/tools/examples/extables.c vendor-sys/acpica/dist/tests/misc/grammar.asl Modified: vendor-sys/acpica/dist/changes.txt ============================================================================== --- vendor-sys/acpica/dist/changes.txt Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/changes.txt Wed Jan 15 00:10:20 2014 (r260659) @@ -1,4 +1,80 @@ ---------------------------------------- +14 January 2014. Summary of changes for version 20140114: + +1) ACPICA kernel-resident subsystem: + +Updated all ACPICA copyrights and signons to 2014. Added the 2014 +copyright to all module headers and signons, including the standard Linux +header. This affects virtually every file in the ACPICA core subsystem, +iASL compiler, all ACPICA utilities, and the test suites. + +Improved parameter validation for AcpiInstallGpeBlock. Added the +following checks: +1) The incoming device handle refers to type ACPI_TYPE_DEVICE. +2) There is not already a GPE block attached to the device. +Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a +device. + +Correctly support "references" in the ACPI_OBJECT. This change fixes the +support to allow references (namespace nodes) to be passed as arguments +to control methods via the evaluate object interface. This is probably +most useful for testing purposes, however. + +Improved support for 32/64 bit physical addresses in printf()-like +output. This change improves the support for physical addresses in printf +debug statements and other output on both 32-bit and 64-bit hosts. It +consistently outputs the appropriate number of bytes for each host. The +%p specifier is unsatisfactory since it does not emit uniform output on +all hosts/clib implementations (on some, leading zeros are not supported, +leading to difficult-to-read output). + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total + Debug Version: 187.5K Code, 78.3K Data, 265.8K Total + Previous Release: + Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total + Debug Version: 185.6K Code, 77.3K Data, 262.9K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fix a possible fault when using the Connection() operator. Fixes a +problem if the parent Field definition for the Connection operator refers +to an operation region that does not exist. ACPICA BZ 1064. + +AcpiExec: Load of local test tables is now optional. The utility has the +capability to load some various tables to test features of ACPICA. +However, there are enough of them that the output of the utility became +confusing. With this change, only the required local tables are displayed +(RSDP, XSDT, etc.) along with the actual tables loaded via the command +line specification. This makes the default output simler and easier to +understand. The -el command line option restores the original behavior +for testing purposes. + +AcpiExec: Added support for overlapping operation regions. This change +expands the simulation of operation regions by supporting regions that +overlap within the given address space. Supports SystemMemory and +SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. + +AcpiExec: Added region handler support for PCI_Config and EC spaces. This +allows AcpiExec to simulate these address spaces, similar to the current +support for SystemMemory and SystemIO. + +Debugger: Added new command to read/write/compare all namespace objects. +The command "test objects" will exercise the entire namespace by writing +new values to each data object, and ensuring that the write was +successful. The original value is then restored and verified. + +Debugger: Added the "test predefined" command. This change makes this +test public and puts it under the new "test" command. The test executes +each and every predefined name within the current namespace. + +---------------------------------------- 18 December 2013. Summary of changes for version 20131218: Global note: The ACPI 5.0A specification was released this month. There Modified: vendor-sys/acpica/dist/generate/release/build.sh ============================================================================== --- vendor-sys/acpica/dist/generate/release/build.sh Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/generate/release/build.sh Wed Jan 15 00:10:20 2014 (r260659) @@ -214,6 +214,7 @@ generate_source_package () mkdir $TEMP_DIR/generate/unix mkdir $TEMP_DIR/generate/unix/acpibin mkdir $TEMP_DIR/generate/unix/acpidump + mkdir $TEMP_DIR/generate/unix/acpiexamples mkdir $TEMP_DIR/generate/unix/acpiexec mkdir $TEMP_DIR/generate/unix/acpihelp mkdir $TEMP_DIR/generate/unix/acpinames @@ -260,6 +261,7 @@ generate_source_package () cp generate/unix/Makefile* $TEMP_DIR/generate/unix cp generate/unix/acpibin/Makefile $TEMP_DIR/generate/unix/acpibin cp generate/unix/acpidump/Makefile $TEMP_DIR/generate/unix/acpidump + cp generate/unix/acpiexamples/Makefile $TEMP_DIR/generate/unix/acpiexamples cp generate/unix/acpiexec/Makefile $TEMP_DIR/generate/unix/acpiexec cp generate/unix/acpihelp/Makefile $TEMP_DIR/generate/unix/acpihelp cp generate/unix/acpinames/Makefile $TEMP_DIR/generate/unix/acpinames Added: vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile Wed Jan 15 00:10:20 2014 (r260659) @@ -0,0 +1,148 @@ +# +# acpiexamples - Example ACPICA initialization code and control +# method execution. +# + +# +# Note: This makefile is intended to be used from within the native +# ACPICA directory structure, from under generate/unix. It specifically +# places all object files in a generate/unix subdirectory, not within +# the various ACPICA source directories. This prevents collisions +# between different compilations of the same source file with different +# compile options, and prevents pollution of the source code. +# +include ../Makefile.config +FINAL_PROG = ../$(BINDIR)/acpiexamples +PROG = $(OBJDIR)/acpiexamples + +# +# Search paths for source files +# +vpath %.c \ + $(ACPIEXAMPLES)\ + $(ACPICA_DEBUGGER)\ + $(ACPICA_DISPATCHER)\ + $(ACPICA_EXECUTER)\ + $(ACPICA_NAMESPACE)\ + $(ACPICA_PARSER)\ + $(ACPICA_TABLES)\ + $(ACPICA_UTILITIES)\ + $(ACPICA_COMMON)\ + $(ACPICA_OSL) + +HEADERS = \ + $(wildcard $(ACPIEXAMPLES)/*.h) + +OBJECTS = \ + $(OBJDIR)/examples.o\ + $(OBJDIR)/exstubs.o\ + $(OBJDIR)/extables.o\ + $(OBJDIR)/dsargs.o\ + $(OBJDIR)/dscontrol.o\ + $(OBJDIR)/dsfield.o\ + $(OBJDIR)/dsinit.o\ + $(OBJDIR)/dsmethod.o\ + $(OBJDIR)/dsmthdat.o\ + $(OBJDIR)/dsobject.o\ + $(OBJDIR)/dsopcode.o\ + $(OBJDIR)/dsutils.o\ + $(OBJDIR)/dswexec.o\ + $(OBJDIR)/dswload.o\ + $(OBJDIR)/dswload2.o\ + $(OBJDIR)/dswscope.o\ + $(OBJDIR)/dswstate.o\ + $(OBJDIR)/exconfig.o\ + $(OBJDIR)/exconvrt.o\ + $(OBJDIR)/excreate.o\ + $(OBJDIR)/exdebug.o\ + $(OBJDIR)/exdump.o\ + $(OBJDIR)/exfield.o\ + $(OBJDIR)/exfldio.o\ + $(OBJDIR)/exmisc.o\ + $(OBJDIR)/exmutex.o\ + $(OBJDIR)/exnames.o\ + $(OBJDIR)/exoparg1.o\ + $(OBJDIR)/exoparg2.o\ + $(OBJDIR)/exoparg3.o\ + $(OBJDIR)/exoparg6.o\ + $(OBJDIR)/exprep.o\ + $(OBJDIR)/exregion.o\ + $(OBJDIR)/exresnte.o\ + $(OBJDIR)/exresolv.o\ + $(OBJDIR)/exresop.o\ + $(OBJDIR)/exstore.o\ + $(OBJDIR)/exstoren.o\ + $(OBJDIR)/exstorob.o\ + $(OBJDIR)/exsystem.o\ + $(OBJDIR)/exutils.o\ + $(OBJDIR)/nsaccess.o\ + $(OBJDIR)/nsalloc.o\ + $(OBJDIR)/nsconvert.o\ + $(OBJDIR)/nsdump.o\ + $(OBJDIR)/nseval.o\ + $(OBJDIR)/nsinit.o\ + $(OBJDIR)/nsload.o\ + $(OBJDIR)/nsnames.o\ + $(OBJDIR)/nsobject.o\ + $(OBJDIR)/nsparse.o\ + $(OBJDIR)/nssearch.o\ + $(OBJDIR)/nsutils.o\ + $(OBJDIR)/nswalk.o\ + $(OBJDIR)/nsxfeval.o\ + $(OBJDIR)/nsxfname.o\ + $(OBJDIR)/nsxfobj.o\ + $(OBJDIR)/osunixxf.o\ + $(OBJDIR)/psargs.o\ + $(OBJDIR)/psloop.o\ + $(OBJDIR)/psobject.o\ + $(OBJDIR)/psopcode.o\ + $(OBJDIR)/psopinfo.o\ + $(OBJDIR)/psparse.o\ + $(OBJDIR)/psscope.o\ + $(OBJDIR)/pstree.o\ + $(OBJDIR)/psutils.o\ + $(OBJDIR)/pswalk.o\ + $(OBJDIR)/psxface.o\ + $(OBJDIR)/tbfadt.o\ + $(OBJDIR)/tbfind.o\ + $(OBJDIR)/tbinstal.o\ + $(OBJDIR)/tbprint.o\ + $(OBJDIR)/tbutils.o\ + $(OBJDIR)/tbxface.o\ + $(OBJDIR)/tbxfload.o\ + $(OBJDIR)/tbxfroot.o\ + $(OBJDIR)/utaddress.o\ + $(OBJDIR)/utalloc.o\ + $(OBJDIR)/utbuffer.o\ + $(OBJDIR)/utcache.o\ + $(OBJDIR)/utcopy.o\ + $(OBJDIR)/utdebug.o\ + $(OBJDIR)/utdecode.o\ + $(OBJDIR)/utdelete.o\ + $(OBJDIR)/uterror.o\ + $(OBJDIR)/utexcep.o\ + $(OBJDIR)/utglobal.o\ + $(OBJDIR)/utlock.o\ + $(OBJDIR)/utmath.o\ + $(OBJDIR)/utmisc.o\ + $(OBJDIR)/utmutex.o\ + $(OBJDIR)/utobject.o\ + $(OBJDIR)/utosi.o\ + $(OBJDIR)/utownerid.o\ + $(OBJDIR)/utstate.o\ + $(OBJDIR)/utstring.o\ + $(OBJDIR)/utxface.o\ + $(OBJDIR)/utxferror.o\ + $(OBJDIR)/utxfinit.o + +# +# Flags specific to acpinames utility +# +CFLAGS += \ + -DACPI_EXAMPLE_APP\ + -I$(EXAMPLES) + +# +# Common Rules +# +include ../Makefile.rules Modified: vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile ============================================================================== --- vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile Wed Jan 15 00:10:20 2014 (r260659) @@ -54,6 +54,7 @@ OBJECTS = \ $(OBJDIR)/dbmethod.o\ $(OBJDIR)/dbnames.o\ $(OBJDIR)/dbstats.o\ + $(OBJDIR)/dbtest.o\ $(OBJDIR)/dbutils.o\ $(OBJDIR)/dbxface.o\ $(OBJDIR)/dmbuffer.o\ Modified: vendor-sys/acpica/dist/source/common/acgetline.c ============================================================================== --- vendor-sys/acpica/dist/source/common/acgetline.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/common/acgetline.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/common/adfile.c ============================================================================== --- vendor-sys/acpica/dist/source/common/adfile.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/common/adfile.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/common/adisasm.c ============================================================================== --- vendor-sys/acpica/dist/source/common/adisasm.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/common/adisasm.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/common/adwalk.c ============================================================================== --- vendor-sys/acpica/dist/source/common/adwalk.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/common/adwalk.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/common/ahpredef.c ============================================================================== --- vendor-sys/acpica/dist/source/common/ahpredef.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/common/ahpredef.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/common/dmextern.c ============================================================================== --- vendor-sys/acpica/dist/source/common/dmextern.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/common/dmextern.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/common/dmrestag.c ============================================================================== --- vendor-sys/acpica/dist/source/common/dmrestag.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/common/dmrestag.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/common/dmtable.c ============================================================================== --- vendor-sys/acpica/dist/source/common/dmtable.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/common/dmtable.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/common/dmtbdump.c ============================================================================== --- vendor-sys/acpica/dist/source/common/dmtbdump.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/common/dmtbdump.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/common/dmtbinfo.c ============================================================================== --- vendor-sys/acpica/dist/source/common/dmtbinfo.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/common/dmtbinfo.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/common/getopt.c ============================================================================== --- vendor-sys/acpica/dist/source/common/getopt.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/common/getopt.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslanalyze.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslanalyze.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslanalyze.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslbtypes.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslbtypes.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslbtypes.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslcodegen.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslcodegen.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslcodegen.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslcompile.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslcompile.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslcompile.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslcompiler.h ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslcompiler.h Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslcompiler.h Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslcompiler.l ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslcompiler.l Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslcompiler.l Wed Jan 15 00:10:20 2014 (r260659) @@ -6,7 +6,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslcompiler.y ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslcompiler.y Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslcompiler.y Wed Jan 15 00:10:20 2014 (r260659) @@ -6,7 +6,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/asldefine.h ============================================================================== --- vendor-sys/acpica/dist/source/compiler/asldefine.h Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/asldefine.h Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslerror.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslerror.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslerror.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslfileio.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslfileio.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslfileio.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslfiles.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslfiles.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslfiles.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslfold.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslfold.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslfold.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslglobal.h ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslglobal.h Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslglobal.h Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslhex.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslhex.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslhex.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/asllength.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/asllength.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/asllength.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/asllisting.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/asllisting.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/asllisting.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/asllistsup.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/asllistsup.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/asllistsup.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslload.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslload.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslload.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/asllookup.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/asllookup.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/asllookup.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslmain.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslmain.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslmain.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslmap.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslmap.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslmap.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslmessages.h ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslmessages.h Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslmessages.h Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslmethod.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslmethod.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslmethod.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslnamesp.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslnamesp.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslnamesp.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/asloffset.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/asloffset.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/asloffset.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslopcodes.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslopcodes.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslopcodes.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/asloperands.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/asloperands.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/asloperands.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslopt.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslopt.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslopt.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -749,7 +749,7 @@ OptOptimizeNamePath ( HowMuchShorter = (AmlNameStringLength - ACPI_STRLEN (NewPath)); OptTotal += HowMuchShorter; - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " REDUCED BY %2u (TOTAL SAVED %2u)", (UINT32) HowMuchShorter, OptTotal)); Modified: vendor-sys/acpica/dist/source/compiler/asloptions.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/asloptions.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/asloptions.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslpredef.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslpredef.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslpredef.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslprepkg.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslprepkg.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslprepkg.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslresource.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslresource.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslresource.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslrestype1.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslrestype1.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslrestype1.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslrestype1i.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslrestype1i.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslrestype1i.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslrestype2.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslrestype2.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslrestype2.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslrestype2d.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslrestype2d.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslrestype2d.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslrestype2e.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslrestype2e.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslrestype2e.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslrestype2q.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslrestype2q.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslrestype2q.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslrestype2s.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslrestype2s.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslrestype2s.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslrestype2w.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslrestype2w.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslrestype2w.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslstartup.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslstartup.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslstartup.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslstubs.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslstubs.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslstubs.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslsupport.l ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslsupport.l Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslsupport.l Wed Jan 15 00:10:20 2014 (r260659) @@ -6,7 +6,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/asltransform.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/asltransform.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/asltransform.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/asltree.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/asltree.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/asltree.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/asltypes.h ============================================================================== --- vendor-sys/acpica/dist/source/compiler/asltypes.h Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/asltypes.h Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslutils.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslutils.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslutils.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/asluuid.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/asluuid.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/asluuid.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/aslwalks.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslwalks.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslwalks.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -605,6 +605,10 @@ AnOtherSemanticAnalysisWalkBegin ( ArgNode = Op->Asl.Parent; /* Field definition */ ArgNode = ArgNode->Asl.Child; /* First child is the OpRegion Name */ Node = ArgNode->Asl.Node; /* OpRegion namespace node */ + if (!Node) + { + break; + } ArgNode = Node->Op; /* OpRegion definition */ ArgNode = ArgNode->Asl.Child; /* First child is the OpRegion Name */ Modified: vendor-sys/acpica/dist/source/compiler/aslxref.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslxref.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/aslxref.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/dtcompile.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/dtcompile.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/dtcompile.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/dtcompiler.h ============================================================================== --- vendor-sys/acpica/dist/source/compiler/dtcompiler.h Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/dtcompiler.h Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/dtexpress.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/dtexpress.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/dtexpress.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/dtfield.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/dtfield.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/dtfield.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *****************************************************************************/ /* - * Copyright (C) 2000 - 2013, Intel Corp. + * Copyright (C) 2000 - 2014, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: vendor-sys/acpica/dist/source/compiler/dtio.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/dtio.c Wed Jan 15 00:04:03 2014 (r260658) +++ vendor-sys/acpica/dist/source/compiler/dtio.c Wed Jan 15 00:10:20 2014 (r260659) @@ -5,7 +5,7 @@ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 00:11:10 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B900945E; Wed, 15 Jan 2014 00:11:10 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8A3C718D0; Wed, 15 Jan 2014 00:11:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F0BAiW038919; Wed, 15 Jan 2014 00:11:10 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F0BAH9038917; Wed, 15 Jan 2014 00:11:10 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201401150011.s0F0BAH9038917@svn.freebsd.org> From: Hiroki Sato Date: Wed, 15 Jan 2014 00:11:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260660 - in stable/10/release/doc/en_US.ISO8859-1: errata share/xml X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 00:11:10 -0000 Author: hrs Date: Wed Jan 15 00:11:09 2014 New Revision: 260660 URL: http://svnweb.freebsd.org/changeset/base/260660 Log: Fix release numbers and branch names. Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml stable/10/release/doc/en_US.ISO8859-1/share/xml/release.xsl Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Wed Jan 15 00:10:20 2014 (r260659) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Wed Jan 15 00:11:09 2014 (r260660) @@ -38,7 +38,7 @@ - This document lists errata items for &os; &release;, + This document lists errata items for &os; &release.prev;, containing significant information discovered after the release or too late in the release cycle to be otherwise included in the release documentation. @@ -48,7 +48,7 @@ should always be consulted before installing this version of &os;. - This errata document for &os; &release; + This errata document for &os; &release.prev; will be maintained until the release of &os; &release.next;.
@@ -57,7 +57,7 @@ Introduction This errata document contains late-breaking news - about &os; &release; + about &os; &release.prev; Before installing this version, it is important to consult this document to learn about any post-release discoveries or problems that may already have been found and fixed. Modified: stable/10/release/doc/en_US.ISO8859-1/share/xml/release.xsl ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/share/xml/release.xsl Wed Jan 15 00:10:20 2014 (r260659) +++ stable/10/release/doc/en_US.ISO8859-1/share/xml/release.xsl Wed Jan 15 00:11:09 2014 (r260660) @@ -17,8 +17,8 @@ documentation before contacting <questions@FreeBSD.org>.

-

All users of FreeBSD should - subscribe to the <current@FreeBSD.org> +

All users of FreeBSD stable should + subscribe to the <stable@FreeBSD.org> mailing list.

For questions about this documentation, From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 00:11:43 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 22E09588; Wed, 15 Jan 2014 00:11:43 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E919418D3; Wed, 15 Jan 2014 00:11:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F0BgNS039281; Wed, 15 Jan 2014 00:11:42 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F0BgJe039280; Wed, 15 Jan 2014 00:11:42 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201401150011.s0F0BgJe039280@svn.freebsd.org> From: Jung-uk Kim Date: Wed, 15 Jan 2014 00:11:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r260661 - vendor-sys/acpica/20140414 X-SVN-Group: vendor-sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 00:11:43 -0000 Author: jkim Date: Wed Jan 15 00:11:42 2014 New Revision: 260661 URL: http://svnweb.freebsd.org/changeset/base/260661 Log: Tag ACPICA 20140114. Added: vendor-sys/acpica/20140414/ - copied from r260660, vendor-sys/acpica/dist/ From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 00:12:20 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 406FC6B6; Wed, 15 Jan 2014 00:12:20 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2BDEC18D9; Wed, 15 Jan 2014 00:12:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F0CKIH039423; Wed, 15 Jan 2014 00:12:20 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F0CKKE039422; Wed, 15 Jan 2014 00:12:20 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201401150012.s0F0CKKE039422@svn.freebsd.org> From: Hiroki Sato Date: Wed, 15 Jan 2014 00:12:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260662 - stable/10/release/doc/en_US.ISO8859-1/relnotes X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 00:12:20 -0000 Author: hrs Date: Wed Jan 15 00:12:19 2014 New Revision: 260662 URL: http://svnweb.freebsd.org/changeset/base/260662 Log: Remove a non-applicable sentence. Modified: stable/10/release/doc/en_US.ISO8859-1/relnotes/article.xml Modified: stable/10/release/doc/en_US.ISO8859-1/relnotes/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/relnotes/article.xml Wed Jan 15 00:11:42 2014 (r260661) +++ stable/10/release/doc/en_US.ISO8859-1/relnotes/article.xml Wed Jan 15 00:12:19 2014 (r260662) @@ -94,10 +94,7 @@ This section describes the most user-visible new or changed features in &os; - since &release.prev;. - In general, changes described here are unique to the &release.branch; - branch unless specifically marked as &merged; features. - + since &release.prev;. Typical release note items document recent security advisories issued after From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 00:13:03 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 388B17EB; Wed, 15 Jan 2014 00:13:03 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0B65618E2; Wed, 15 Jan 2014 00:13:03 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F0D21S039564; Wed, 15 Jan 2014 00:13:02 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F0D2TW039563; Wed, 15 Jan 2014 00:13:02 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201401150013.s0F0D2TW039563@svn.freebsd.org> From: Jung-uk Kim Date: Wed, 15 Jan 2014 00:13:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r260663 - in vendor-sys/acpica: 20140114 20140414 X-SVN-Group: vendor-sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 00:13:03 -0000 Author: jkim Date: Wed Jan 15 00:13:02 2014 New Revision: 260663 URL: http://svnweb.freebsd.org/changeset/base/260663 Log: Tag ACPICA 20140114. Added: vendor-sys/acpica/20140114/ - copied from r260662, vendor-sys/acpica/20140414/ Deleted: vendor-sys/acpica/20140414/ From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 01:14:53 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 82A262E2; Wed, 15 Jan 2014 01:14:53 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6F04A1E16; Wed, 15 Jan 2014 01:14:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F1Erkr062989; Wed, 15 Jan 2014 01:14:53 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F1Eruf062988; Wed, 15 Jan 2014 01:14:53 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401150114.s0F1Eruf062988@svn.freebsd.org> From: Glen Barber Date: Wed, 15 Jan 2014 01:14:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260664 - releng/10.0/sys/conf X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 01:14:53 -0000 Author: gjb Date: Wed Jan 15 01:14:52 2014 New Revision: 260664 URL: http://svnweb.freebsd.org/changeset/base/260664 Log: Update releng/10.0 to -RELEASE as part of the 10.0-RELEASE cycle. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: releng/10.0/sys/conf/newvers.sh Modified: releng/10.0/sys/conf/newvers.sh ============================================================================== --- releng/10.0/sys/conf/newvers.sh Wed Jan 15 00:13:02 2014 (r260663) +++ releng/10.0/sys/conf/newvers.sh Wed Jan 15 01:14:52 2014 (r260664) @@ -32,7 +32,7 @@ TYPE="FreeBSD" REVISION="10.0" -BRANCH="RC5" +BRANCH="RELEASE" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 01:27:02 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 292C177D; Wed, 15 Jan 2014 01:27:02 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F1D5A1F1E; Wed, 15 Jan 2014 01:27:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F1R1ti066958; Wed, 15 Jan 2014 01:27:01 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F1R1jm066957; Wed, 15 Jan 2014 01:27:01 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401150127.s0F1R1jm066957@svn.freebsd.org> From: Glen Barber Date: Wed, 15 Jan 2014 01:27:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-release@freebsd.org Subject: svn commit: r260665 - release/10.0.0 X-SVN-Group: release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 01:27:02 -0000 Author: gjb Date: Wed Jan 15 01:27:01 2014 New Revision: 260665 URL: http://svnweb.freebsd.org/changeset/base/260665 Log: Copy releng/10.0 to release/10.0.0 as part of the 10.0-RELEASE cycle. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Added: release/10.0.0/ - copied from r260664, releng/10.0/ From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 03:57:41 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E86E938B; Wed, 15 Jan 2014 03:57:41 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D5C511152; Wed, 15 Jan 2014 03:57:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F3vfAl026163; Wed, 15 Jan 2014 03:57:41 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F3vf73026162; Wed, 15 Jan 2014 03:57:41 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201401150357.s0F3vf73026162@svn.freebsd.org> From: Marcel Moolenaar Date: Wed, 15 Jan 2014 03:57:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260666 - head/sys/ia64/ia64 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 03:57:42 -0000 Author: marcel Date: Wed Jan 15 03:57:41 2014 New Revision: 260666 URL: http://svnweb.freebsd.org/changeset/base/260666 Log: In the nested TLB fault handler, for a direct-mapped address, make sure to clear the lower 12 bits. We're adding the translation attributes to the physical address and non-zero bits in the first 12 bits would give us something unexpected, including invalid bit values. Those trigger nested general protection faults. We do not have to clear the region bits, because they are ignored anyway, so we can replace an existing dep instruction with the one we need. This fixes GP faults for the swapper thread, as it's the only thread that has a direct-mapped stack. Since the bug is in the nested TLB fault handler, the frequency of hitting the GP is in the order of hours/days under load. Modified: head/sys/ia64/ia64/exception.S Modified: head/sys/ia64/ia64/exception.S ============================================================================== --- head/sys/ia64/ia64/exception.S Wed Jan 15 01:27:01 2014 (r260665) +++ head/sys/ia64/ia64/exception.S Wed Jan 15 03:57:41 2014 (r260666) @@ -1026,7 +1026,7 @@ IVT_ENTRY(Data_Nested_TLB, 0x1400) } { .mii mov cr.itir=r26 -(p12) dep r28=0,r30,61,3 +(p12) dep r28=0,r30,0,12 (p13) extr.u r28=r30,3*PAGE_SHIFT-8, PAGE_SHIFT-3 // dir L0 index ;; } From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 04:44:53 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A5202ECF; Wed, 15 Jan 2014 04:44:53 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 855FA14CC; Wed, 15 Jan 2014 04:44:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F4irUx045630; Wed, 15 Jan 2014 04:44:53 GMT (envelope-from jhibbits@svn.freebsd.org) Received: (from jhibbits@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F4irhv045628; Wed, 15 Jan 2014 04:44:53 GMT (envelope-from jhibbits@svn.freebsd.org) Message-Id: <201401150444.s0F4irhv045628@svn.freebsd.org> From: Justin Hibbits Date: Wed, 15 Jan 2014 04:44:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260669 - in stable/10/sys: dev/hwpmc powerpc/include X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 04:44:53 -0000 Author: jhibbits Date: Wed Jan 15 04:44:52 2014 New Revision: 260669 URL: http://svnweb.freebsd.org/changeset/base/260669 Log: MFC r259394,r259395,r259699 r259394: Rebase the PMC indices at 1, since PMC_SOFT is at 0. r259395,r259699: Add userland PMC backtracing, and use the PMC trapframe macros for kernel backtraces. Modified: stable/10/sys/dev/hwpmc/hwpmc_powerpc.c stable/10/sys/powerpc/include/pmc_mdep.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/hwpmc/hwpmc_powerpc.c ============================================================================== --- stable/10/sys/dev/hwpmc/hwpmc_powerpc.c Wed Jan 15 04:25:54 2014 (r260668) +++ stable/10/sys/dev/hwpmc/hwpmc_powerpc.c Wed Jan 15 04:44:52 2014 (r260669) @@ -45,6 +45,8 @@ __FBSDID("$FreeBSD$"); #define INKERNEL(x) (((vm_offset_t)(x)) <= VM_MAX_KERNEL_ADDRESS && \ ((vm_offset_t)(x)) >= VM_MIN_KERNEL_ADDRESS) +#define INUSER(x) (((vm_offset_t)(x)) <= VM_MAXUSER_ADDRESS && \ + ((vm_offset_t)(x)) >= VM_MIN_ADDRESS) struct powerpc_cpu **powerpc_pcpu; @@ -55,13 +57,13 @@ pmc_save_kernel_callchain(uintptr_t *cc, int frames = 0; uintptr_t *sp; - cc[frames++] = tf->srr0; - sp = (uintptr_t *)tf->fixreg[1]; + cc[frames++] = PMC_TRAPFRAME_TO_PC(tf); + sp = (uintptr_t *)PMC_TRAPFRAME_TO_FP(tf); for (frames = 1; frames < maxsamples; frames++) { if (!INKERNEL(sp)) break; - cc[frames++] = *(sp + 1); + cc[frames++] = sp[1]; sp = (uintptr_t *)*sp; } return (frames); @@ -172,8 +174,17 @@ int pmc_save_user_callchain(uintptr_t *cc, int maxsamples, struct trapframe *tf) { - (void) cc; - (void) maxsamples; - (void) tf; - return (0); + uintptr_t *sp; + int frames = 0; + + cc[frames++] = PMC_TRAPFRAME_TO_PC(tf); + sp = (uintptr_t *)PMC_TRAPFRAME_TO_FP(tf); + + for (frames = 1; frames < maxsamples; frames++) { + if (!INUSER(sp)) + break; + cc[frames++] = fuword(sp + 1); + sp = (uintptr_t *)fuword(sp); + } + return (frames); } Modified: stable/10/sys/powerpc/include/pmc_mdep.h ============================================================================== --- stable/10/sys/powerpc/include/pmc_mdep.h Wed Jan 15 04:25:54 2014 (r260668) +++ stable/10/sys/powerpc/include/pmc_mdep.h Wed Jan 15 04:44:52 2014 (r260669) @@ -7,8 +7,8 @@ #ifndef _MACHINE_PMC_MDEP_H_ #define _MACHINE_PMC_MDEP_H_ -#define PMC_MDEP_CLASS_INDEX_PPC7450 0 -#define PMC_MDEP_CLASS_INDEX_PPC970 0 +#define PMC_MDEP_CLASS_INDEX_PPC7450 1 +#define PMC_MDEP_CLASS_INDEX_PPC970 1 union pmc_md_op_pmcallocate { uint64_t __pad[4]; @@ -28,8 +28,8 @@ union pmc_md_pmc { struct pmc_md_powerpc_pmc pm_powerpc; }; -#define PMC_TRAPFRAME_TO_PC(TF) (0) /* Stubs */ -#define PMC_TRAPFRAME_TO_FP(TF) (0) +#define PMC_TRAPFRAME_TO_PC(TF) ((TF)->srr0) +#define PMC_TRAPFRAME_TO_FP(TF) ((TF)->fixreg[1]) #define PMC_TRAPFRAME_TO_SP(TF) (0) #endif From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 04:16:46 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5FCC2C54; Wed, 15 Jan 2014 04:16:46 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 40AEA1275; Wed, 15 Jan 2014 04:16:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F4GkCf034250; Wed, 15 Jan 2014 04:16:46 GMT (envelope-from jhibbits@svn.freebsd.org) Received: (from jhibbits@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F4GjKQ034248; Wed, 15 Jan 2014 04:16:45 GMT (envelope-from jhibbits@svn.freebsd.org) Message-Id: <201401150416.s0F4GjKQ034248@svn.freebsd.org> From: Justin Hibbits Date: Wed, 15 Jan 2014 04:16:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260667 - stable/10/sys/powerpc/aim X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 04:16:46 -0000 Author: jhibbits Date: Wed Jan 15 04:16:45 2014 New Revision: 260667 URL: http://svnweb.freebsd.org/changeset/base/260667 Log: MFC r256542,r256581 Move the PMC handling to the first level interrupt handler where it belongs. Also add the pmc_hook use, to handle callchain tracing. Modified: stable/10/sys/powerpc/aim/interrupt.c stable/10/sys/powerpc/aim/trap.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/powerpc/aim/interrupt.c ============================================================================== --- stable/10/sys/powerpc/aim/interrupt.c Wed Jan 15 03:57:41 2014 (r260666) +++ stable/10/sys/powerpc/aim/interrupt.c Wed Jan 15 04:16:45 2014 (r260667) @@ -31,6 +31,8 @@ * Interrupts are dispatched to here from locore asm */ +#include "opt_hwpmc_hooks.h" + #include /* RCS ID & Copyright macro defns */ #include @@ -43,6 +45,9 @@ #include #include #include +#ifdef HWPMC_HOOKS +#include +#endif #include #include #include @@ -96,6 +101,16 @@ powerpc_interrupt(struct trapframe *fram atomic_subtract_int(&td->td_intr_nesting_level, 1); critical_exit(); break; +#ifdef HWPMC_HOOKS + case EXC_PERF: + critical_enter(); + KASSERT(pmc_intr != NULL, ("Performance exception, but no handler!")); + (*pmc_intr)(PCPU_GET(cpuid), framep); + if (pmc_hook && (PCPU_GET(curthread)->td_pflags & TDP_CALLCHAIN)) + pmc_hook(PCPU_GET(curthread), PMC_FN_USER_CALLCHAIN, framep); + critical_exit(); + break; +#endif default: /* Re-enable interrupts if applicable. */ Modified: stable/10/sys/powerpc/aim/trap.c ============================================================================== --- stable/10/sys/powerpc/aim/trap.c Wed Jan 15 03:57:41 2014 (r260666) +++ stable/10/sys/powerpc/aim/trap.c Wed Jan 15 04:16:45 2014 (r260667) @@ -34,7 +34,6 @@ #include __FBSDID("$FreeBSD$"); -#include "opt_hwpmc_hooks.h" #include "opt_kdtrace.h" #include @@ -52,9 +51,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#ifdef HWPMC_HOOKS -#include -#endif #include @@ -195,14 +191,6 @@ trap(struct trapframe *frame) CTR3(KTR_TRAP, "trap: %s type=%s (%s)", td->td_name, trapname(type), user ? "user" : "kernel"); -#ifdef HWPMC_HOOKS - if (type == EXC_PERF && (pmc_intr != NULL)) { - (*pmc_intr)(PCPU_GET(cpuid), frame); - if (user) - userret(td, frame); - return; - } -#endif #ifdef KDTRACE_HOOKS /* * A trap can occur while DTrace executes a probe. Before @@ -292,7 +280,7 @@ trap(struct trapframe *frame) case EXC_PGM: /* Identify the trap reason */ if (frame->srr1 & EXC_PGM_TRAP) - sig = SIGTRAP; + sig = SIGTRAP; else if (ppc_instr_emulate(frame) == 0) frame->srr0 += 4; else From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 05:19:39 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B5B8FCC; Wed, 15 Jan 2014 05:19:39 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 958B61773; Wed, 15 Jan 2014 05:19:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F5Jdao058032; Wed, 15 Jan 2014 05:19:39 GMT (envelope-from jhibbits@svn.freebsd.org) Received: (from jhibbits@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F5Jb2D058021; Wed, 15 Jan 2014 05:19:37 GMT (envelope-from jhibbits@svn.freebsd.org) Message-Id: <201401150519.s0F5Jb2D058021@svn.freebsd.org> From: Justin Hibbits Date: Wed, 15 Jan 2014 05:19:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260670 - in stable/10: cddl/contrib/opensolaris/lib/libdtrace/common cddl/contrib/opensolaris/lib/libdtrace/powerpc sys/cddl/contrib/opensolaris/uts/powerpc/dtrace sys/cddl/contrib/ope... X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 05:19:39 -0000 Author: jhibbits Date: Wed Jan 15 05:19:37 2014 New Revision: 260670 URL: http://svnweb.freebsd.org/changeset/base/260670 Log: MFC r256543,r259245,r259421,r259668,r259674 r256543: Add fasttrap for PowerPC. This is the last piece of the DTrace/ppc puzzle. It's incomplete, it doesn't contain full instruction emulation, but it should be sufficient for most cases. r259245,r259421: (FBT) FBT now does work fully on PowerPC. Save r3 before using it for the trap check, else we end up saving the new r3, containing the trap instruction encoding (0x7c810808), and restoring it back with the frame on return. This caused it to panic on my ppc32 machine. r259668,r259674: Fix a typo in the FBT code. Modified: stable/10/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c stable/10/cddl/contrib/opensolaris/lib/libdtrace/powerpc/dt_isadep.c stable/10/sys/cddl/contrib/opensolaris/uts/powerpc/dtrace/fasttrap_isa.c stable/10/sys/cddl/contrib/opensolaris/uts/powerpc/sys/fasttrap_isa.h stable/10/sys/cddl/dev/fbt/fbt_powerpc.c stable/10/sys/modules/dtrace/Makefile stable/10/sys/modules/dtrace/fasttrap/Makefile stable/10/sys/powerpc/aim/trap.c stable/10/sys/powerpc/aim/trap_subr32.S stable/10/sys/powerpc/aim/trap_subr64.S Directory Properties: stable/10/ (props changed) Modified: stable/10/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c ============================================================================== --- stable/10/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c Wed Jan 15 04:44:52 2014 (r260669) +++ stable/10/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c Wed Jan 15 05:19:37 2014 (r260670) @@ -242,8 +242,14 @@ printf("%s:%s(%d): DOODAD\n",__FUNCTION_ /* XXX */ printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__LINE__); #elif defined(__powerpc__) -/* XXX */ -printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__LINE__); + /* + * Add 4 bytes to hit the low half of this 64-bit + * big-endian address. + */ + rel->r_offset = s->dofs_offset + + dofr[j].dofr_offset + 4; + rel->r_info = ELF32_R_INFO(count + dep->de_global, + R_PPC_REL32); #elif defined(__sparc) /* * Add 4 bytes to hit the low half of this 64-bit @@ -423,7 +429,10 @@ prepare_elf64(dtrace_hdl_t *dtp, const d #elif defined(__mips__) /* XXX */ #elif defined(__powerpc__) -/* XXX */ + rel->r_offset = s->dofs_offset + + dofr[j].dofr_offset; + rel->r_info = ELF64_R_INFO(count + dep->de_global, + R_PPC64_REL64); #elif defined(__i386) || defined(__amd64) rel->r_offset = s->dofs_offset + dofr[j].dofr_offset; @@ -824,12 +833,84 @@ printf("%s:%s(%d): DOODAD\n",__FUNCTION_ return (0); } #elif defined(__powerpc__) +/* The sentinel is 'xor r3,r3,r3'. */ +#define DT_OP_XOR_R3 0x7c631a78 + +#define DT_OP_NOP 0x60000000 +#define DT_OP_BLR 0x4e800020 + +/* This captures all forms of branching to address. */ +#define DT_IS_BRANCH(inst) ((inst & 0xfc000000) == 0x48000000) +#define DT_IS_BL(inst) (DT_IS_BRANCH(inst) && (inst & 0x01)) + /* XXX */ static int dt_modtext(dtrace_hdl_t *dtp, char *p, int isenabled, GElf_Rela *rela, uint32_t *off) { -printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__LINE__); + uint32_t *ip; + + if ((rela->r_offset & (sizeof (uint32_t) - 1)) != 0) + return (-1); + + /*LINTED*/ + ip = (uint32_t *)(p + rela->r_offset); + + /* + * We only know about some specific relocation types. + */ + if (GELF_R_TYPE(rela->r_info) != R_PPC_REL24 && + GELF_R_TYPE(rela->r_info) != R_PPC_PLTREL24) + return (-1); + + /* + * We may have already processed this object file in an earlier linker + * invocation. Check to see if the present instruction sequence matches + * the one we would install below. + */ + if (isenabled) { + if (ip[0] == DT_OP_XOR_R3) { + (*off) += sizeof (ip[0]); + return (0); + } + } else { + if (ip[0] == DT_OP_NOP) { + (*off) += sizeof (ip[0]); + return (0); + } + } + + /* + * We only expect branch to address instructions. + */ + if (!DT_IS_BRANCH(ip[0])) { + dt_dprintf("found %x instead of a branch instruction at %llx\n", + ip[0], (u_longlong_t)rela->r_offset); + return (-1); + } + + if (isenabled) { + /* + * It would necessarily indicate incorrect usage if an is- + * enabled probe were tail-called so flag that as an error. + * It's also potentially (very) tricky to handle gracefully, + * but could be done if this were a desired use scenario. + */ + if (!DT_IS_BL(ip[0])) { + dt_dprintf("tail call to is-enabled probe at %llx\n", + (u_longlong_t)rela->r_offset); + return (-1); + } + + ip[0] = DT_OP_XOR_R3; + (*off) += sizeof (ip[0]); + } else { + if (DT_IS_BL(ip[0])) + ip[0] = DT_OP_NOP; + else + ip[0] = DT_OP_BLR; + } + return (0); } Modified: stable/10/cddl/contrib/opensolaris/lib/libdtrace/powerpc/dt_isadep.c ============================================================================== --- stable/10/cddl/contrib/opensolaris/lib/libdtrace/powerpc/dt_isadep.c Wed Jan 15 04:44:52 2014 (r260669) +++ stable/10/cddl/contrib/opensolaris/lib/libdtrace/powerpc/dt_isadep.c Wed Jan 15 05:19:37 2014 (r260670) @@ -35,14 +35,26 @@ #include #include +#include + /*ARGSUSED*/ int dt_pid_create_entry_probe(struct ps_prochandle *P, dtrace_hdl_t *dtp, fasttrap_probe_spec_t *ftp, const GElf_Sym *symp) { + ftp->ftps_type = DTFTP_ENTRY; + ftp->ftps_pc = (uintptr_t)symp->st_value; + ftp->ftps_size = (size_t)symp->st_size; + ftp->ftps_noffs = 1; + ftp->ftps_offs[0] = 0; + + if (ioctl(dtp->dt_ftfd, FASTTRAPIOC_MAKEPROBE, ftp) != 0) { + dt_dprintf("fasttrap probe creation ioctl failed: %s\n", + strerror(errno)); + return (dt_set_errno(dtp, errno)); + } - dt_dprintf("%s: unimplemented\n", __func__); - return (DT_PROC_ERR); + return (1); } int @@ -50,8 +62,74 @@ dt_pid_create_return_probe(struct ps_pro fasttrap_probe_spec_t *ftp, const GElf_Sym *symp, uint64_t *stret) { - dt_dprintf("%s: unimplemented\n", __func__); - return (DT_PROC_ERR); + uintptr_t temp; + uint32_t *text; + int i; + int srdepth = 0; + + if ((text = malloc(symp->st_size + 4)) == NULL) { + dt_dprintf("mr sparkle: malloc() failed\n"); + return (DT_PROC_ERR); + } + + if (Pread(P, text, symp->st_size, symp->st_value) != symp->st_size) { + dt_dprintf("mr sparkle: Pread() failed\n"); + free(text); + return (DT_PROC_ERR); + } + + /* + * Leave a dummy instruction in the last slot to simplify edge + * conditions. + */ + text[symp->st_size / 4] = 0; + + ftp->ftps_type = DTFTP_RETURN; + ftp->ftps_pc = symp->st_value; + ftp->ftps_size = symp->st_size; + ftp->ftps_noffs = 0; + + for (i = 0; i < symp->st_size / 4; i++) { + + if ((text[i] & 0xfc000001) != 0x48000000 && + text[i] != 0x4e800020) + continue; + + /* + * Check for a jump within this function. If it's outside this + * function then it's a tail-call, so a return point. + */ + if ((text[i] & 0xfc000000) == 0x48000000) { + temp = (text[i] & 0x03fffffc); + /* Bit 30 denotes an absolute address. */ + if (!(text[i] & 0x02)) { + temp += symp->st_value + i * 4; + } + else { + /* Sign extend the absolute address. */ + if (temp & 0x02000000) { + temp |= (UINTPTR_MAX - 0x03ffffff); + } + } + if (temp >= symp->st_value && + temp <= (symp->st_value + symp->st_size)) + continue; + } + dt_dprintf("return at offset %x\n", i * 4); + ftp->ftps_offs[ftp->ftps_noffs++] = i * 4; + } + + free(text); + if (ftp->ftps_noffs > 0) { + if (ioctl(dtp->dt_ftfd, FASTTRAPIOC_MAKEPROBE, ftp) != 0) { + dt_dprintf("fasttrap probe creation ioctl failed: %s\n", + strerror(errno)); + return (dt_set_errno(dtp, errno)); + } + } + + + return (ftp->ftps_noffs); } /*ARGSUSED*/ @@ -59,9 +137,22 @@ int dt_pid_create_offset_probe(struct ps_prochandle *P, dtrace_hdl_t *dtp, fasttrap_probe_spec_t *ftp, const GElf_Sym *symp, ulong_t off) { + if (off & 0x3) + return (DT_PROC_ALIGN); - dt_dprintf("%s: unimplemented\n", __func__); - return (DT_PROC_ERR); + ftp->ftps_type = DTFTP_OFFSETS; + ftp->ftps_pc = (uintptr_t)symp->st_value; + ftp->ftps_size = (size_t)symp->st_size; + ftp->ftps_noffs = 1; + ftp->ftps_offs[0] = off; + + if (ioctl(dtp->dt_ftfd, FASTTRAPIOC_MAKEPROBE, ftp) != 0) { + dt_dprintf("fasttrap probe creation ioctl failed: %s\n", + strerror(errno)); + return (dt_set_errno(dtp, errno)); + } + + return (1); } /*ARGSUSED*/ @@ -69,7 +160,38 @@ int dt_pid_create_glob_offset_probes(struct ps_prochandle *P, dtrace_hdl_t *dtp, fasttrap_probe_spec_t *ftp, const GElf_Sym *symp, const char *pattern) { + ulong_t i; + + ftp->ftps_type = DTFTP_OFFSETS; + ftp->ftps_pc = (uintptr_t)symp->st_value; + ftp->ftps_size = (size_t)symp->st_size; + ftp->ftps_noffs = 0; + + /* + * If we're matching against everything, just iterate through each + * instruction in the function, otherwise look for matching offset + * names by constructing the string and comparing it against the + * pattern. + */ + if (strcmp("*", pattern) == 0) { + for (i = 0; i < symp->st_size; i += 4) { + ftp->ftps_offs[ftp->ftps_noffs++] = i; + } + } else { + char name[sizeof (i) * 2 + 1]; + + for (i = 0; i < symp->st_size; i += 4) { + (void) sprintf(name, "%lx", i); + if (gmatch(name, pattern)) + ftp->ftps_offs[ftp->ftps_noffs++] = i; + } + } + + if (ioctl(dtp->dt_ftfd, FASTTRAPIOC_MAKEPROBE, ftp) != 0) { + dt_dprintf("fasttrap probe creation ioctl failed: %s\n", + strerror(errno)); + return (dt_set_errno(dtp, errno)); + } - dt_dprintf("%s: unimplemented\n", __func__); - return (DT_PROC_ERR); + return (ftp->ftps_noffs); } Modified: stable/10/sys/cddl/contrib/opensolaris/uts/powerpc/dtrace/fasttrap_isa.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/powerpc/dtrace/fasttrap_isa.c Wed Jan 15 04:44:52 2014 (r260669) +++ stable/10/sys/cddl/contrib/opensolaris/uts/powerpc/dtrace/fasttrap_isa.c Wed Jan 15 05:19:37 2014 (r260670) @@ -18,13 +18,560 @@ * * CDDL HEADER END */ - +/* Portions Copyright 2013 Justin Hibbits */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define OP(x) ((x) >> 26) +#define OPX(x) (((x) >> 2) & 0x3FF) +#define OP_BO(x) (((x) & 0x03E00000) >> 21) +#define OP_BI(x) (((x) & 0x001F0000) >> 16) +#define OP_RS(x) (((x) & 0x03E00000) >> 21) +#define OP_RA(x) (((x) & 0x001F0000) >> 16) +#define OP_RB(x) (((x) & 0x0000F100) >> 11) + + +static int +proc_ops(int op, proc_t *p, void *kaddr, off_t uaddr, size_t len) +{ + struct iovec iov; + struct uio uio; + + iov.iov_base = kaddr; + iov.iov_len = len; + uio.uio_offset = uaddr; + uio.uio_iov = &iov; + uio.uio_resid = len; + uio.uio_iovcnt = 1; + uio.uio_segflg = UIO_SYSSPACE; + uio.uio_td = curthread; + uio.uio_rw = op; + PHOLD(p); + if (proc_rwmem(p, &uio) < 0) { + PRELE(p); + return (-1); + } + PRELE(p); + + return (0); +} + +static int +uread(proc_t *p, void *kaddr, size_t len, uintptr_t uaddr) +{ + + return (proc_ops(UIO_READ, p, kaddr, uaddr, len)); +} + +static int +uwrite(proc_t *p, void *kaddr, size_t len, uintptr_t uaddr) +{ + + return (proc_ops(UIO_WRITE, p, kaddr, uaddr, len)); +} + +int +fasttrap_tracepoint_install(proc_t *p, fasttrap_tracepoint_t *tp) +{ + fasttrap_instr_t instr = FASTTRAP_INSTR; + + if (uwrite(p, &instr, 4, tp->ftt_pc) != 0) + return (-1); + + return (0); +} + +int +fasttrap_tracepoint_remove(proc_t *p, fasttrap_tracepoint_t *tp) +{ + uint32_t instr; + + /* + * Distinguish between read or write failures and a changed + * instruction. + */ + if (uread(p, &instr, 4, tp->ftt_pc) != 0) + return (0); + if (instr != FASTTRAP_INSTR) + return (0); + if (uwrite(p, &tp->ftt_instr, 4, tp->ftt_pc) != 0) + return (-1); + + return (0); +} + +int +fasttrap_tracepoint_init(proc_t *p, fasttrap_tracepoint_t *tp, uintptr_t pc, + fasttrap_probe_type_t type) +{ + uint32_t instr; + //int32_t disp; + + /* + * Read the instruction at the given address out of the process's + * address space. We don't have to worry about a debugger + * changing this instruction before we overwrite it with our trap + * instruction since P_PR_LOCK is set. + */ + if (uread(p, &instr, 4, pc) != 0) + return (-1); + + /* + * Decode the instruction to fill in the probe flags. We can have + * the process execute most instructions on its own using a pc/npc + * trick, but pc-relative control transfer present a problem since + * we're relocating the instruction. We emulate these instructions + * in the kernel. We assume a default type and over-write that as + * needed. + * + * pc-relative instructions must be emulated for correctness; + * other instructions (which represent a large set of commonly traced + * instructions) are emulated or otherwise optimized for performance. + */ + tp->ftt_type = FASTTRAP_T_COMMON; + tp->ftt_instr = instr; + + switch (OP(instr)) { + /* The following are invalid for trapping (invalid opcodes, tw/twi). */ + case 0: + case 1: + case 2: + case 4: + case 5: + case 6: + case 30: + case 39: + case 58: + case 62: + case 3: /* twi */ + return (-1); + case 31: /* tw */ + if (OPX(instr) == 4) + return (-1); + else if (OPX(instr) == 444 && OP_RS(instr) == OP_RA(instr) && + OP_RS(instr) == OP_RB(instr)) + tp->ftt_type = FASTTRAP_T_NOP; + break; + case 16: + tp->ftt_type = FASTTRAP_T_BC; + tp->ftt_dest = instr & 0x0000FFFC; /* Extract target address */ + if (instr & 0x00008000) + tp->ftt_dest |= 0xFFFF0000; + /* Use as offset if not absolute address. */ + if (!(instr & 0x02)) + tp->ftt_dest += pc; + tp->ftt_bo = OP_BO(instr); + tp->ftt_bi = OP_BI(instr); + break; + case 18: + tp->ftt_type = FASTTRAP_T_B; + tp->ftt_dest = instr & 0x03FFFFFC; /* Extract target address */ + if (instr & 0x02000000) + tp->ftt_dest |= 0xFC000000; + /* Use as offset if not absolute address. */ + if (!(instr & 0x02)) + tp->ftt_dest += pc; + break; + case 19: + switch (OPX(instr)) { + case 528: /* bcctr */ + tp->ftt_type = FASTTRAP_T_BCTR; + tp->ftt_bo = OP_BO(instr); + tp->ftt_bi = OP_BI(instr); + break; + case 16: /* bclr */ + tp->ftt_type = FASTTRAP_T_BCTR; + tp->ftt_bo = OP_BO(instr); + tp->ftt_bi = OP_BI(instr); + break; + }; + break; + case 24: + if (OP_RS(instr) == OP_RA(instr) && + (instr & 0x0000FFFF) == 0) + tp->ftt_type = FASTTRAP_T_NOP; + break; + }; + + /* + * We don't know how this tracepoint is going to be used, but in case + * it's used as part of a function return probe, we need to indicate + * whether it's always a return site or only potentially a return + * site. If it's part of a return probe, it's always going to be a + * return from that function if it's a restore instruction or if + * the previous instruction was a return. If we could reliably + * distinguish jump tables from return sites, this wouldn't be + * necessary. + */ +#if 0 + if (tp->ftt_type != FASTTRAP_T_RESTORE && + (uread(p, &instr, 4, pc - sizeof (instr)) != 0 || + !(OP(instr) == 2 && OP3(instr) == OP3_RETURN))) + tp->ftt_flags |= FASTTRAP_F_RETMAYBE; +#endif + + return (0); +} + +static uint64_t +fasttrap_anarg(struct reg *rp, int argno) +{ + uint64_t value; + proc_t *p = curproc; + + /* The first 8 arguments are in registers. */ + if (argno < 8) + return rp->fixreg[argno + 3]; + + /* Arguments on stack start after SP+LR (2 register slots). */ + if (SV_PROC_FLAG(p, SV_ILP32)) { + DTRACE_CPUFLAG_SET(CPU_DTRACE_NOFAULT); + value = dtrace_fuword32((void *)(rp->fixreg[1] + 8 + + ((argno - 8) * sizeof(uint32_t)))); + DTRACE_CPUFLAG_CLEAR(CPU_DTRACE_NOFAULT | CPU_DTRACE_BADADDR); + } else { + DTRACE_CPUFLAG_SET(CPU_DTRACE_NOFAULT); + value = dtrace_fuword64((void *)(rp->fixreg[1] + 16 + + ((argno - 8) * sizeof(uint32_t)))); + DTRACE_CPUFLAG_CLEAR(CPU_DTRACE_NOFAULT | CPU_DTRACE_BADADDR); + } + return value; +} + +uint64_t +fasttrap_pid_getarg(void *arg, dtrace_id_t id, void *parg, int argno, + int aframes) +{ + struct reg r; + + fill_regs(curthread, &r); + + return (fasttrap_anarg(&r, argno)); +} + +uint64_t +fasttrap_usdt_getarg(void *arg, dtrace_id_t id, void *parg, int argno, + int aframes) +{ + struct reg r; + + fill_regs(curthread, &r); + + return (fasttrap_anarg(&r, argno)); +} + +static void +fasttrap_usdt_args(fasttrap_probe_t *probe, struct reg *rp, int argc, + uintptr_t *argv) +{ + int i, x, cap = MIN(argc, probe->ftp_nargs); + + for (i = 0; i < cap; i++) { + x = probe->ftp_argmap[i]; + + if (x < 8) + argv[i] = rp->fixreg[x]; + else + if (SV_PROC_FLAG(curproc, SV_ILP32)) + argv[i] = fuword32((void *)(rp->fixreg[1] + 8 + + (x * sizeof(uint32_t)))); + else + argv[i] = fuword32((void *)(rp->fixreg[1] + 16 + + (x * sizeof(uint64_t)))); + } + + for (; i < argc; i++) { + argv[i] = 0; + } +} + +static void +fasttrap_return_common(struct reg *rp, uintptr_t pc, pid_t pid, + uintptr_t new_pc) +{ + fasttrap_tracepoint_t *tp; + fasttrap_bucket_t *bucket; + fasttrap_id_t *id; + + bucket = &fasttrap_tpoints.fth_table[FASTTRAP_TPOINTS_INDEX(pid, pc)]; + + for (tp = bucket->ftb_data; tp != NULL; tp = tp->ftt_next) { + if (pid == tp->ftt_pid && pc == tp->ftt_pc && + tp->ftt_proc->ftpc_acount != 0) + break; + } + + /* + * Don't sweat it if we can't find the tracepoint again; unlike + * when we're in fasttrap_pid_probe(), finding the tracepoint here + * is not essential to the correct execution of the process. + */ + if (tp == NULL) { + return; + } + + for (id = tp->ftt_retids; id != NULL; id = id->fti_next) { + /* + * If there's a branch that could act as a return site, we + * need to trace it, and check here if the program counter is + * external to the function. + */ + /* Skip function-local branches. */ + if ((new_pc - id->fti_probe->ftp_faddr) < id->fti_probe->ftp_fsize) + continue; + + dtrace_probe(id->fti_probe->ftp_id, + pc - id->fti_probe->ftp_faddr, + rp->fixreg[3], rp->fixreg[4], 0, 0); + } +} + + +static int +fasttrap_branch_taken(int bo, int bi, struct reg *regs) +{ + int crzero = 0; + + /* Branch always? */ + if ((bo & 0x14) == 0x14) + return 1; + + /* Handle decrementing ctr */ + if (!(bo & 0x04)) { + --regs->ctr; + crzero = (regs->ctr == 0); + if (bo & 0x10) { + return (!(crzero ^ (bo >> 1))); + } + } + + return (crzero | (((regs->cr >> (31 - bi)) ^ (bo >> 3)) ^ 1)); +} + + +int +fasttrap_pid_probe(struct reg *rp) +{ + proc_t *p = curproc; + uintptr_t pc = rp->pc; + uintptr_t new_pc = 0; + fasttrap_bucket_t *bucket; + fasttrap_tracepoint_t *tp, tp_local; + pid_t pid; + dtrace_icookie_t cookie; + uint_t is_enabled = 0; + + /* + * It's possible that a user (in a veritable orgy of bad planning) + * could redirect this thread's flow of control before it reached the + * return probe fasttrap. In this case we need to kill the process + * since it's in a unrecoverable state. + */ + if (curthread->t_dtrace_step) { + ASSERT(curthread->t_dtrace_on); + fasttrap_sigtrap(p, curthread, pc); + return (0); + } + + /* + * Clear all user tracing flags. + */ + curthread->t_dtrace_ft = 0; + curthread->t_dtrace_pc = 0; + curthread->t_dtrace_npc = 0; + curthread->t_dtrace_scrpc = 0; + curthread->t_dtrace_astpc = 0; + + + PROC_LOCK(p); + pid = p->p_pid; + bucket = &fasttrap_tpoints.fth_table[FASTTRAP_TPOINTS_INDEX(pid, pc)]; + + /* + * Lookup the tracepoint that the process just hit. + */ + for (tp = bucket->ftb_data; tp != NULL; tp = tp->ftt_next) { + if (pid == tp->ftt_pid && pc == tp->ftt_pc && + tp->ftt_proc->ftpc_acount != 0) + break; + } + + /* + * If we couldn't find a matching tracepoint, either a tracepoint has + * been inserted without using the pid ioctl interface (see + * fasttrap_ioctl), or somehow we have mislaid this tracepoint. + */ + if (tp == NULL) { + PROC_UNLOCK(p); + return (-1); + } + + if (tp->ftt_ids != NULL) { + fasttrap_id_t *id; + + for (id = tp->ftt_ids; id != NULL; id = id->fti_next) { + fasttrap_probe_t *probe = id->fti_probe; + + if (id->fti_ptype == DTFTP_ENTRY) { + /* + * We note that this was an entry + * probe to help ustack() find the + * first caller. + */ + cookie = dtrace_interrupt_disable(); + DTRACE_CPUFLAG_SET(CPU_DTRACE_ENTRY); + dtrace_probe(probe->ftp_id, rp->fixreg[3], + rp->fixreg[4], rp->fixreg[5], rp->fixreg[6], + rp->fixreg[7]); + DTRACE_CPUFLAG_CLEAR(CPU_DTRACE_ENTRY); + dtrace_interrupt_enable(cookie); + } else if (id->fti_ptype == DTFTP_IS_ENABLED) { + /* + * Note that in this case, we don't + * call dtrace_probe() since it's only + * an artificial probe meant to change + * the flow of control so that it + * encounters the true probe. + */ + is_enabled = 1; + } else if (probe->ftp_argmap == NULL) { + dtrace_probe(probe->ftp_id, rp->fixreg[3], + rp->fixreg[4], rp->fixreg[5], rp->fixreg[6], + rp->fixreg[7]); + } else { + uintptr_t t[5]; + + fasttrap_usdt_args(probe, rp, + sizeof (t) / sizeof (t[0]), t); + + dtrace_probe(probe->ftp_id, t[0], t[1], + t[2], t[3], t[4]); + } + } + } + + /* + * We're about to do a bunch of work so we cache a local copy of + * the tracepoint to emulate the instruction, and then find the + * tracepoint again later if we need to light up any return probes. + */ + tp_local = *tp; + PROC_UNLOCK(p); + tp = &tp_local; + + /* + * If there's an is-enabled probe connected to this tracepoint it + * means that there was a 'xor r3, r3, r3' + * instruction that was placed there by DTrace when the binary was + * linked. As this probe is, in fact, enabled, we need to stuff 1 + * into R3. Accordingly, we can bypass all the instruction + * emulation logic since we know the inevitable result. It's possible + * that a user could construct a scenario where the 'is-enabled' + * probe was on some other instruction, but that would be a rather + * exotic way to shoot oneself in the foot. + */ + if (is_enabled) { + rp->fixreg[3] = 1; + new_pc = rp->pc + 4; + goto done; + } + + + switch (tp->ftt_type) { + case FASTTRAP_T_NOP: + new_pc = rp->pc + 4; + break; + case FASTTRAP_T_BC: + if (!fasttrap_branch_taken(tp->ftt_bo, tp->ftt_bi, rp)) + break; + /* FALLTHROUGH */ + case FASTTRAP_T_B: + if (tp->ftt_instr & 0x01) + rp->lr = rp->pc + 4; + new_pc = tp->ftt_dest; + break; + case FASTTRAP_T_BLR: + case FASTTRAP_T_BCTR: + if (!fasttrap_branch_taken(tp->ftt_bo, tp->ftt_bi, rp)) + break; + /* FALLTHROUGH */ + if (tp->ftt_type == FASTTRAP_T_BCTR) + new_pc = rp->ctr; + else + new_pc = rp->lr; + if (tp->ftt_instr & 0x01) + rp->lr = rp->pc + 4; + break; + case FASTTRAP_T_COMMON: + break; + }; +done: + /* + * If there were no return probes when we first found the tracepoint, + * we should feel no obligation to honor any return probes that were + * subsequently enabled -- they'll just have to wait until the next + * time around. + */ + if (tp->ftt_retids != NULL) { + /* + * We need to wait until the results of the instruction are + * apparent before invoking any return probes. If this + * instruction was emulated we can just call + * fasttrap_return_common(); if it needs to be executed, we + * need to wait until the user thread returns to the kernel. + */ + if (tp->ftt_type != FASTTRAP_T_COMMON) { + fasttrap_return_common(rp, pc, pid, new_pc); + } else { + ASSERT(curthread->t_dtrace_ret != 0); + ASSERT(curthread->t_dtrace_pc == pc); + ASSERT(curthread->t_dtrace_scrpc != 0); + ASSERT(new_pc == curthread->t_dtrace_astpc); + } + } + + rp->pc = new_pc; + set_regs(curthread, rp); + + return (0); +} + +int +fasttrap_return_probe(struct reg *rp) +{ + proc_t *p = curproc; + uintptr_t pc = curthread->t_dtrace_pc; + uintptr_t npc = curthread->t_dtrace_npc; + + curthread->t_dtrace_pc = 0; + curthread->t_dtrace_npc = 0; + curthread->t_dtrace_scrpc = 0; + curthread->t_dtrace_astpc = 0; + + /* + * We set rp->pc to the address of the traced instruction so + * that it appears to dtrace_probe() that we're on the original + * instruction, and so that the user can't easily detect our + * complex web of lies. dtrace_return_probe() (our caller) + * will correctly set %pc after we return. + */ + rp->pc = pc; + + fasttrap_return_common(rp, pc, p->p_pid, npc); + + return (0); +} -/* - * XXX: Placeholder for PowerPC fasttrap code - */ Modified: stable/10/sys/cddl/contrib/opensolaris/uts/powerpc/sys/fasttrap_isa.h ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/powerpc/sys/fasttrap_isa.h Wed Jan 15 04:44:52 2014 (r260669) +++ stable/10/sys/cddl/contrib/opensolaris/uts/powerpc/sys/fasttrap_isa.h Wed Jan 15 05:19:37 2014 (r260670) @@ -19,6 +19,7 @@ * * CDDL HEADER END */ +/* Portions Copyright 2013 Justin Hibbits */ /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. @@ -34,13 +35,39 @@ #ifdef __cplusplus extern "C" { #endif -/* - * XXXDTRACE: placehodler for PowerPC fasttrap stuff - */ -typedef uint32_t fasttrap_instr_t; #define FASTTRAP_SUNWDTRACE_SIZE 64 -#define FASTTRAP_INSTR 0x0FFFDDDD +#define FASTTRAP_INSTR 0x0FFFDDDD + +typedef uint32_t fasttrap_instr_t; + +typedef struct fasttrap_machtp_t { + fasttrap_instr_t ftmt_instr; /* original instruction */ + uintptr_t ftmt_dest; /* branch target */ + uint8_t ftmt_type; /* emulation type */ + uint8_t ftmt_flags; /* emulation flags */ + uint8_t ftmt_bo; /* BO field */ + uint8_t ftmt_bi; /* BI field (CR bit) */ +} fasttrap_machtp_t; + +#define ftt_instr ftt_mtp.ftmt_instr +#define ftt_dest ftt_mtp.ftmt_dest +#define ftt_type ftt_mtp.ftmt_type +#define ftt_flags ftt_mtp.ftmt_flags +#define ftt_bo ftt_mtp.ftmt_bo +#define ftt_bi ftt_mtp.ftmt_bi + +#define FASTTRAP_T_COMMON 0x00 +#define FASTTRAP_T_B 0x01 +#define FASTTRAP_T_BC 0x02 +#define FASTTRAP_T_BLR 0x03 +#define FASTTRAP_T_BCTR 0x04 +#define FASTTRAP_T_NOP 0x05 + +#define FASTTRAP_AFRAMES 3 +#define FASTTRAP_RETURN_AFRAMES 4 +#define FASTTRAP_ENTRY_AFRAMES 3 +#define FASTTRAP_OFFSET_AFRAMES 3 #ifdef __cplusplus } Modified: stable/10/sys/cddl/dev/fbt/fbt_powerpc.c ============================================================================== --- stable/10/sys/cddl/dev/fbt/fbt_powerpc.c Wed Jan 15 04:44:52 2014 (r260669) +++ stable/10/sys/cddl/dev/fbt/fbt_powerpc.c Wed Jan 15 05:19:37 2014 (r260670) @@ -219,7 +219,7 @@ fbt_provide_module_function(linker_file_ return (0); instr = (u_int32_t *) symval->value; - limit = (u_int32_t *) symval->value + symval->size; + limit = (u_int32_t *) (symval->value + symval->size); for (; instr < limit; instr++) if (*instr == FBT_MFLR_R0) @@ -278,7 +278,7 @@ again: instr++; for (j = 0; j < 12 && instr < limit; j++, instr++) { - if ((*instr == FBT_BCTR) || (*instr == FBT_BLR) | + if ((*instr == FBT_BCTR) || (*instr == FBT_BLR) || FBT_IS_JUMP(*instr)) break; } Modified: stable/10/sys/modules/dtrace/Makefile ============================================================================== --- stable/10/sys/modules/dtrace/Makefile Wed Jan 15 04:44:52 2014 (r260669) +++ stable/10/sys/modules/dtrace/Makefile Wed Jan 15 05:19:37 2014 (r260670) @@ -20,7 +20,7 @@ SUBDIR= dtmalloc \ SUBDIR+= fasttrap fbt systrace_linux32 .endif .if ${MACHINE_CPUARCH} == "powerpc" -SUBDIR+= fbt +SUBDIR+= fbt fasttrap .endif .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_ARCH} == "powerpc64" SUBDIR+= systrace_freebsd32 Modified: stable/10/sys/modules/dtrace/fasttrap/Makefile ============================================================================== --- stable/10/sys/modules/dtrace/fasttrap/Makefile Wed Jan 15 04:44:52 2014 (r260669) +++ stable/10/sys/modules/dtrace/fasttrap/Makefile Wed Jan 15 05:19:37 2014 (r260670) @@ -13,6 +13,9 @@ CFLAGS+= -I${.CURDIR}/../../../cddl/comp .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" CFLAGS+= -I${.CURDIR}/../../../cddl/contrib/opensolaris/uts/intel .PATH: ${.CURDIR}/../../../cddl/contrib/opensolaris/uts/intel/dtrace +.elif ${MACHINE_CPUARCH} == "powerpc" +CFLAGS+= -I${.CURDIR}/../../../cddl/contrib/opensolaris/uts/powerpc +.PATH: ${.CURDIR}/../../../cddl/contrib/opensolaris/uts/powerpc/dtrace .endif CFLAGS+= -DSMP Modified: stable/10/sys/powerpc/aim/trap.c ============================================================================== --- stable/10/sys/powerpc/aim/trap.c Wed Jan 15 04:44:52 2014 (r260669) +++ stable/10/sys/powerpc/aim/trap.c Wed Jan 15 05:19:37 2014 (r260670) @@ -175,6 +175,9 @@ trap(struct trapframe *frame) { struct thread *td; struct proc *p; +#ifdef KDTRACE_HOOKS + uint32_t inst; +#endif int sig, type, user; u_int ucode; ksiginfo_t ksi; @@ -279,9 +282,18 @@ trap(struct trapframe *frame) case EXC_PGM: /* Identify the trap reason */ - if (frame->srr1 & EXC_PGM_TRAP) + if (frame->srr1 & EXC_PGM_TRAP) { +#ifdef KDTRACE_HOOKS + inst = fuword32((const void *)frame->srr0); + if (inst == 0x0FFFDDDD && dtrace_pid_probe_ptr != NULL) { + struct reg regs; + fill_regs(td, ®s); + (*dtrace_pid_probe_ptr)(®s); + break; + } +#endif sig = SIGTRAP; - else if (ppc_instr_emulate(frame) == 0) + } else if (ppc_instr_emulate(frame) == 0) frame->srr0 += 4; else sig = SIGILL; @@ -299,7 +311,7 @@ trap(struct trapframe *frame) #ifdef KDTRACE_HOOKS case EXC_PGM: if (frame->srr1 & EXC_PGM_TRAP) { - if (*(uintptr_t *)frame->srr0 == 0x7c810808) { + if (*(uint32_t *)frame->srr0 == 0x7c810808) { if (dtrace_invop_jump_addr != NULL) { dtrace_invop_jump_addr(frame); return; Modified: stable/10/sys/powerpc/aim/trap_subr32.S ============================================================================== --- stable/10/sys/powerpc/aim/trap_subr32.S Wed Jan 15 04:44:52 2014 (r260669) +++ stable/10/sys/powerpc/aim/trap_subr32.S Wed Jan 15 05:19:37 2014 (r260670) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 05:30:06 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C40B2527; Wed, 15 Jan 2014 05:30:06 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AFE5A185F; Wed, 15 Jan 2014 05:30:06 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F5U6ov062260; Wed, 15 Jan 2014 05:30:06 GMT (envelope-from jhibbits@svn.freebsd.org) Received: (from jhibbits@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F5U6Xr062256; Wed, 15 Jan 2014 05:30:06 GMT (envelope-from jhibbits@svn.freebsd.org) Message-Id: <201401150530.s0F5U6Xr062256@svn.freebsd.org> From: Justin Hibbits Date: Wed, 15 Jan 2014 05:30:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260671 - in stable/10/cddl/contrib/opensolaris/cmd: plockstat zfs X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 05:30:06 -0000 Author: jhibbits Date: Wed Jan 15 05:30:05 2014 New Revision: 260671 URL: http://svnweb.freebsd.org/changeset/base/260671 Log: MFC r258362 Use 'int' to store the return value of getopt(), rather than char. On some architectures (powerpc), char is unsigned by default, which means comparisons against -1 always fail, so the programs get stuck in an infinite loop. Modified: stable/10/cddl/contrib/opensolaris/cmd/plockstat/plockstat.c stable/10/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Directory Properties: stable/10/ (props changed) Modified: stable/10/cddl/contrib/opensolaris/cmd/plockstat/plockstat.c ============================================================================== --- stable/10/cddl/contrib/opensolaris/cmd/plockstat/plockstat.c Wed Jan 15 05:19:37 2014 (r260670) +++ stable/10/cddl/contrib/opensolaris/cmd/plockstat/plockstat.c Wed Jan 15 05:30:05 2014 (r260671) @@ -778,7 +778,8 @@ main(int argc, char **argv) #endif int err; int opt_C = 0, opt_H = 0, opt_p = 0, opt_v = 0; - char c, *p, *end; + int c; + char *p, *end; struct sigaction act; int done = 0; Modified: stable/10/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c ============================================================================== --- stable/10/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Wed Jan 15 05:19:37 2014 (r260670) +++ stable/10/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Wed Jan 15 05:30:05 2014 (r260671) @@ -2011,7 +2011,7 @@ zfs_do_upgrade(int argc, char **argv) boolean_t showversions = B_FALSE; int ret = 0; upgrade_cbdata_t cb = { 0 }; - char c; + int c; int flags = ZFS_ITER_ARGS_CAN_BE_PATHS; /* check options */ @@ -3560,7 +3560,7 @@ static int zfs_do_snapshot(int argc, char **argv) { int ret = 0; - char c; + int c; nvlist_t *props; snap_cbdata_t sd = { 0 }; boolean_t multiple_snaps = B_FALSE; From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 05:41:28 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C732EA72; Wed, 15 Jan 2014 05:41:28 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B3875197A; Wed, 15 Jan 2014 05:41:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F5fSqF068437; Wed, 15 Jan 2014 05:41:28 GMT (envelope-from jhibbits@svn.freebsd.org) Received: (from jhibbits@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F5fSPq068436; Wed, 15 Jan 2014 05:41:28 GMT (envelope-from jhibbits@svn.freebsd.org) Message-Id: <201401150541.s0F5fSPq068436@svn.freebsd.org> From: Justin Hibbits Date: Wed, 15 Jan 2014 05:41:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260672 - stable/10/sys/powerpc/aim X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 05:41:29 -0000 Author: jhibbits Date: Wed Jan 15 05:41:28 2014 New Revision: 260672 URL: http://svnweb.freebsd.org/changeset/base/260672 Log: MFC r257941,r258119 Add the necessary bits for dumps on ppc64. Modified: stable/10/sys/powerpc/aim/mmu_oea64.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/powerpc/aim/mmu_oea64.c ============================================================================== --- stable/10/sys/powerpc/aim/mmu_oea64.c Wed Jan 15 05:30:05 2014 (r260671) +++ stable/10/sys/powerpc/aim/mmu_oea64.c Wed Jan 15 05:41:28 2014 (r260672) @@ -192,6 +192,11 @@ struct ofw_map { cell_t om_mode; }; +extern unsigned char _etext[]; +extern unsigned char _end[]; + +extern int dumpsys_minidump; + /* * Map of physical memory regions. */ @@ -329,6 +334,9 @@ void moea64_kenter_attr(mmu_t, vm_offset void moea64_kenter(mmu_t, vm_offset_t, vm_paddr_t); boolean_t moea64_dev_direct_mapped(mmu_t, vm_paddr_t, vm_size_t); static void moea64_sync_icache(mmu_t, pmap_t, vm_offset_t, vm_size_t); +vm_offset_t moea64_dumpsys_map(mmu_t mmu, struct pmap_md *md, vm_size_t ofs, + vm_size_t *sz); +struct pmap_md * moea64_scan_md(mmu_t mmu, struct pmap_md *prev); static mmu_method_t moea64_methods[] = { MMUMETHOD(mmu_change_wiring, moea64_change_wiring), @@ -374,6 +382,8 @@ static mmu_method_t moea64_methods[] = { MMUMETHOD(mmu_kenter, moea64_kenter), MMUMETHOD(mmu_kenter_attr, moea64_kenter_attr), MMUMETHOD(mmu_dev_direct_mapped,moea64_dev_direct_mapped), + MMUMETHOD(mmu_scan_md, moea64_scan_md), + MMUMETHOD(mmu_dumpsys_map, moea64_dumpsys_map), { 0, 0 } }; @@ -2584,3 +2594,98 @@ moea64_sync_icache(mmu_t mmu, pmap_t pm, } PMAP_UNLOCK(pm); } + +vm_offset_t +moea64_dumpsys_map(mmu_t mmu, struct pmap_md *md, vm_size_t ofs, + vm_size_t *sz) +{ + if (md->md_vaddr == ~0UL) + return (md->md_paddr + ofs); + else + return (md->md_vaddr + ofs); +} + +struct pmap_md * +moea64_scan_md(mmu_t mmu, struct pmap_md *prev) +{ + static struct pmap_md md; + struct pvo_entry *pvo; + vm_offset_t va; + + if (dumpsys_minidump) { + md.md_paddr = ~0UL; /* Minidumps use virtual addresses. */ + if (prev == NULL) { + /* 1st: kernel .data and .bss. */ + md.md_index = 1; + md.md_vaddr = trunc_page((uintptr_t)_etext); + md.md_size = round_page((uintptr_t)_end) - md.md_vaddr; + return (&md); + } + switch (prev->md_index) { + case 1: + /* 2nd: msgbuf and tables (see pmap_bootstrap()). */ + md.md_index = 2; + md.md_vaddr = (vm_offset_t)msgbufp->msg_ptr; + md.md_size = round_page(msgbufp->msg_size); + break; + case 2: + /* 3rd: kernel VM. */ + va = prev->md_vaddr + prev->md_size; + /* Find start of next chunk (from va). */ + while (va < virtual_end) { + /* Don't dump the buffer cache. */ + if (va >= kmi.buffer_sva && + va < kmi.buffer_eva) { + va = kmi.buffer_eva; + continue; + } + pvo = moea64_pvo_find_va(kernel_pmap, + va & ~ADDR_POFF); + if (pvo != NULL && + (pvo->pvo_pte.lpte.pte_hi & LPTE_VALID)) + break; + va += PAGE_SIZE; + } + if (va < virtual_end) { + md.md_vaddr = va; + va += PAGE_SIZE; + /* Find last page in chunk. */ + while (va < virtual_end) { + /* Don't run into the buffer cache. */ + if (va == kmi.buffer_sva) + break; + pvo = moea64_pvo_find_va(kernel_pmap, + va & ~ADDR_POFF); + if (pvo == NULL || + !(pvo->pvo_pte.lpte.pte_hi & LPTE_VALID)) + break; + va += PAGE_SIZE; + } + md.md_size = va - md.md_vaddr; + break; + } + md.md_index = 3; + /* FALLTHROUGH */ + default: + return (NULL); + } + } else { /* minidumps */ + if (prev == NULL) { + /* first physical chunk. */ + md.md_paddr = pregions[0].mr_start; + md.md_size = pregions[0].mr_size; + md.md_vaddr = ~0UL; + md.md_index = 1; + } else if (md.md_index < pregions_sz) { + md.md_paddr = pregions[md.md_index].mr_start; + md.md_size = pregions[md.md_index].mr_size; + md.md_vaddr = ~0UL; + md.md_index++; + } else { + /* There's no next physical chunk. */ + return (NULL); + } + } + + return (&md); +} From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 05:52:07 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 345CBEE2; Wed, 15 Jan 2014 05:52:07 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1FF2F1A30; Wed, 15 Jan 2014 05:52:07 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F5q66n072549; Wed, 15 Jan 2014 05:52:06 GMT (envelope-from jhibbits@svn.freebsd.org) Received: (from jhibbits@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F5q64j072546; Wed, 15 Jan 2014 05:52:06 GMT (envelope-from jhibbits@svn.freebsd.org) Message-Id: <201401150552.s0F5q64j072546@svn.freebsd.org> From: Justin Hibbits Date: Wed, 15 Jan 2014 05:52:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260673 - in stable/10/sys: dev/iicbus powerpc/powermac X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 05:52:07 -0000 Author: jhibbits Date: Wed Jan 15 05:52:06 2014 New Revision: 260673 URL: http://svnweb.freebsd.org/changeset/base/260673 Log: MFC r259082 Make some unsigned ints signed. Found by: clang (powerpc64) Modified: stable/10/sys/dev/iicbus/ds1631.c stable/10/sys/dev/iicbus/ds1775.c stable/10/sys/powerpc/powermac/platform_powermac.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/iicbus/ds1631.c ============================================================================== --- stable/10/sys/dev/iicbus/ds1631.c Wed Jan 15 05:41:28 2014 (r260672) +++ stable/10/sys/dev/iicbus/ds1631.c Wed Jan 15 05:52:06 2014 (r260673) @@ -398,7 +398,7 @@ ds1631_sensor_sysctl(SYSCTL_HANDLER_ARGS device_t dev; struct ds1631_softc *sc; int error; - unsigned int temp; + int temp; dev = arg1; sc = device_get_softc(dev); Modified: stable/10/sys/dev/iicbus/ds1775.c ============================================================================== --- stable/10/sys/dev/iicbus/ds1775.c Wed Jan 15 05:41:28 2014 (r260672) +++ stable/10/sys/dev/iicbus/ds1775.c Wed Jan 15 05:52:06 2014 (r260673) @@ -257,7 +257,7 @@ ds1775_sensor_sysctl(SYSCTL_HANDLER_ARGS device_t dev; struct ds1775_softc *sc; int error; - unsigned int temp; + int temp; dev = arg1; sc = device_get_softc(dev); Modified: stable/10/sys/powerpc/powermac/platform_powermac.c ============================================================================== --- stable/10/sys/powerpc/powermac/platform_powermac.c Wed Jan 15 05:41:28 2014 (r260672) +++ stable/10/sys/powerpc/powermac/platform_powermac.c Wed Jan 15 05:52:06 2014 (r260673) @@ -169,7 +169,8 @@ powermac_timebase_freq(platform_t plat, static int powermac_smp_fill_cpuref(struct cpuref *cpuref, phandle_t cpu) { - cell_t cpuid, res; + cell_t cpuid; + int res; cpuref->cr_hwref = cpu; res = OF_getprop(cpu, "reg", &cpuid, sizeof(cpuid)); From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 06:17:18 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B286D806; Wed, 15 Jan 2014 06:17:18 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9C5641D17; Wed, 15 Jan 2014 06:17:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F6HIjW081141; Wed, 15 Jan 2014 06:17:18 GMT (envelope-from jhibbits@svn.freebsd.org) Received: (from jhibbits@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F6HFsI081122; Wed, 15 Jan 2014 06:17:15 GMT (envelope-from jhibbits@svn.freebsd.org) Message-Id: <201401150617.s0F6HFsI081122@svn.freebsd.org> From: Justin Hibbits Date: Wed, 15 Jan 2014 06:17:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260674 - in stable/10/sys: conf powerpc/aim powerpc/cpufreq powerpc/include powerpc/powermac powerpc/powerpc X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 06:17:18 -0000 Author: jhibbits Date: Wed Jan 15 06:17:15 2014 New Revision: 260674 URL: http://svnweb.freebsd.org/changeset/base/260674 Log: MFC r259284,r259287 Add PMU-based CPU frequency scalling. This is used on most Titanium PowerBooks. Added: stable/10/sys/powerpc/cpufreq/pmufreq.c - copied, changed from r259284, head/sys/powerpc/cpufreq/pmufreq.c Modified: stable/10/sys/conf/files.powerpc stable/10/sys/powerpc/aim/mp_cpudep.c stable/10/sys/powerpc/include/cpu.h stable/10/sys/powerpc/include/dbdma.h stable/10/sys/powerpc/include/pcpu.h stable/10/sys/powerpc/include/spr.h stable/10/sys/powerpc/powermac/platform_powermac.c stable/10/sys/powerpc/powermac/pmu.c stable/10/sys/powerpc/powermac/pmuvar.h stable/10/sys/powerpc/powermac/uninorth.c stable/10/sys/powerpc/powermac/uninorthvar.h stable/10/sys/powerpc/powermac/viareg.h stable/10/sys/powerpc/powerpc/mp_machdep.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/conf/files.powerpc ============================================================================== --- stable/10/sys/conf/files.powerpc Wed Jan 15 05:52:06 2014 (r260673) +++ stable/10/sys/conf/files.powerpc Wed Jan 15 06:17:15 2014 (r260674) @@ -116,6 +116,7 @@ powerpc/booke/trap.c optional booke powerpc/booke/vm_machdep.c optional booke powerpc/cpufreq/dfs.c optional cpufreq powerpc/cpufreq/pcr.c optional cpufreq aim +powerpc/cpufreq/pmufreq.c optional cpufreq aim pmu powerpc/fpu/fpu_add.c optional fpu_emu powerpc powerpc/fpu/fpu_compare.c optional fpu_emu powerpc powerpc/fpu/fpu_div.c optional fpu_emu powerpc Modified: stable/10/sys/powerpc/aim/mp_cpudep.c ============================================================================== --- stable/10/sys/powerpc/aim/mp_cpudep.c Wed Jan 15 05:52:06 2014 (r260673) +++ stable/10/sys/powerpc/aim/mp_cpudep.c Wed Jan 15 06:17:15 2014 (r260674) @@ -322,17 +322,13 @@ cpudep_ap_setup() mtspr(SPR_CELL_TSRL, bsp_state[5]); break; - case MPC7450: - case MPC7455: - case MPC7457: - /* Only MPC745x CPUs have an L3 cache. */ - reg = mpc745x_l3_enable(bsp_state[3]); - - /* Fallthrough */ case MPC7400: case MPC7410: case MPC7447A: case MPC7448: + case MPC7450: + case MPC7455: + case MPC7457: /* XXX: Program the CPU ID into PIR */ __asm __volatile("mtspr 1023,%0" :: "r"(PCPU_GET(cpuid))); @@ -342,6 +338,17 @@ cpudep_ap_setup() mtspr(SPR_HID0, bsp_state[0]); isync(); mtspr(SPR_HID1, bsp_state[1]); isync(); + /* Now enable the L3 cache. */ + switch (vers) { + case MPC7450: + case MPC7455: + case MPC7457: + /* Only MPC745x CPUs have an L3 cache. */ + reg = mpc745x_l3_enable(bsp_state[3]); + default: + break; + } + reg = mpc74xx_l2_enable(bsp_state[2]); reg = mpc74xx_l1d_enable(); reg = mpc74xx_l1i_enable(); Copied and modified: stable/10/sys/powerpc/cpufreq/pmufreq.c (from r259284, head/sys/powerpc/cpufreq/pmufreq.c) ============================================================================== --- head/sys/powerpc/cpufreq/pmufreq.c Fri Dec 13 02:37:35 2013 (r259284, copy source) +++ stable/10/sys/powerpc/cpufreq/pmufreq.c Wed Jan 15 06:17:15 2014 (r260674) @@ -106,9 +106,9 @@ pmufreq_identify(driver_t *driver, devic static int pmufreq_probe(device_t dev) { - uint32_t min_freq; struct pmufreq_softc *sc; phandle_t node; + uint32_t min_freq; if (resource_disabled("pmufreq", 0)) return (ENXIO); @@ -174,8 +174,7 @@ static int pmufreq_set(device_t dev, const struct cf_setting *set) { struct pmufreq_softc *sc; - int speed_sel; - int error; + int error, speed_sel; if (set == NULL) return (EINVAL); @@ -191,7 +190,7 @@ pmufreq_set(device_t dev, const struct c if (error == 0) sc->curfreq = set->freq; - return error; + return (error); } static int Modified: stable/10/sys/powerpc/include/cpu.h ============================================================================== --- stable/10/sys/powerpc/include/cpu.h Wed Jan 15 05:52:06 2014 (r260673) +++ stable/10/sys/powerpc/include/cpu.h Wed Jan 15 06:17:15 2014 (r260674) @@ -98,4 +98,6 @@ void cpu_reset(void); void fork_trampoline(void); void swi_vm(void *); +void flush_disable_caches(void); + #endif /* _MACHINE_CPU_H_ */ Modified: stable/10/sys/powerpc/include/dbdma.h ============================================================================== --- stable/10/sys/powerpc/include/dbdma.h Wed Jan 15 05:52:06 2014 (r260673) +++ stable/10/sys/powerpc/include/dbdma.h Wed Jan 15 06:17:15 2014 (r260674) @@ -147,4 +147,7 @@ void dbdma_insert_branch(dbdma_channel_t void dbdma_sync_commands(dbdma_channel_t *chan, bus_dmasync_op_t op); +void dbdma_save_state(dbdma_channel_t *chan); +void dbdma_restore_state(dbdma_channel_t *chan); + #endif /* _MACHINE_DBDMA_H_ */ Modified: stable/10/sys/powerpc/include/pcpu.h ============================================================================== --- stable/10/sys/powerpc/include/pcpu.h Wed Jan 15 05:52:06 2014 (r260673) +++ stable/10/sys/powerpc/include/pcpu.h Wed Jan 15 06:17:15 2014 (r260674) @@ -49,7 +49,8 @@ struct pmap; uint32_t pc_ipimask; \ register_t pc_tempsave[CPUSAVE_LEN]; \ register_t pc_disisave[CPUSAVE_LEN]; \ - register_t pc_dbsave[CPUSAVE_LEN]; + register_t pc_dbsave[CPUSAVE_LEN]; \ + void *pc_restore; #define PCPU_MD_AIM32_FIELDS \ /* char __pad[0] */ Modified: stable/10/sys/powerpc/include/spr.h ============================================================================== --- stable/10/sys/powerpc/include/spr.h Wed Jan 15 05:52:06 2014 (r260673) +++ stable/10/sys/powerpc/include/spr.h Wed Jan 15 06:17:15 2014 (r260674) @@ -519,6 +519,8 @@ #define MSSCR0_EMODE 0x00200000 /* 10: MPX bus mode (read-only) */ #define MSSCR0_ABD 0x00100000 /* 11: address bus driven (read-only) */ #define MSSCR0_MBZ 0x000fffff /* 12-31: must be zero */ +#define MSSCR0_L2PFE 0x00000003 /* 30-31: L2 prefetch enable */ +#define SPR_LDSTCR 0x3f8 /* .6. Load/Store Control Register */ #define SPR_L2PM 0x3f8 /* .6. L2 Private Memory Control Register */ #define SPR_L2CR 0x3f9 /* .6. L2 Control Register */ #define L2CR_L2E 0x80000000 /* 0: L2 enable */ @@ -543,12 +545,14 @@ Setting this bit disables instruction caching. */ #define L2CR_L2I 0x00200000 /* 10: L2 global invalidate. */ +#define L2CR_L2IO_7450 0x00010000 /* 11: L2 instruction-only (MPC745x). */ #define L2CR_L2CTL 0x00100000 /* 11: L2 RAM control (ZZ enable). Enables automatic operation of the L2ZZ (low-power mode) signal. */ #define L2CR_L2WT 0x00080000 /* 12: L2 write-through. */ #define L2CR_L2TS 0x00040000 /* 13: L2 test support. */ #define L2CR_L2OH 0x00030000 /* 14-15: L2 output hold. */ +#define L2CR_L2DO_7450 0x00010000 /* 15: L2 data-only (MPC745x). */ #define L2CR_L2SL 0x00008000 /* 16: L2 DLL slow. */ #define L2CR_L2DF 0x00004000 /* 17: L2 differential clock. */ #define L2CR_L2BYP 0x00002000 /* 18: L2 DLL bypass. */ Modified: stable/10/sys/powerpc/powermac/platform_powermac.c ============================================================================== --- stable/10/sys/powerpc/powermac/platform_powermac.c Wed Jan 15 05:52:06 2014 (r260673) +++ stable/10/sys/powerpc/powermac/platform_powermac.c Wed Jan 15 06:17:15 2014 (r260674) @@ -326,6 +326,110 @@ powermac_smp_start_cpu(platform_t plat, #endif } +/* From p3-53 of the MPC7450 RISC Microprocessor Family Reference Manual */ +void +flush_disable_caches(void) +{ + register_t msr; + register_t msscr0; + register_t cache_reg; + volatile uint32_t *memp; + uint32_t temp; + int i; + int x; + + msr = mfmsr(); + powerpc_sync(); + mtmsr(msr & ~(PSL_EE | PSL_DR)); + msscr0 = mfspr(SPR_MSSCR0); + msscr0 &= ~MSSCR0_L2PFE; + mtspr(SPR_MSSCR0, msscr0); + powerpc_sync(); + isync(); + __asm__ __volatile__("dssall; sync"); + powerpc_sync(); + isync(); + __asm__ __volatile__("dcbf 0,%0" :: "r"(0)); + __asm__ __volatile__("dcbf 0,%0" :: "r"(0)); + __asm__ __volatile__("dcbf 0,%0" :: "r"(0)); + + /* Lock the L1 Data cache. */ + mtspr(SPR_LDSTCR, mfspr(SPR_LDSTCR) | 0xFF); + powerpc_sync(); + isync(); + + mtspr(SPR_LDSTCR, 0); + + /* + * Perform this in two stages: Flush the cache starting in RAM, then do it + * from ROM. + */ + memp = (volatile uint32_t *)0x00000000; + for (i = 0; i < 128 * 1024; i++) { + temp = *memp; + __asm__ __volatile__("dcbf 0,%0" :: "r"(memp)); + memp += 32/sizeof(*memp); + } + + memp = (volatile uint32_t *)0xfff00000; + x = 0xfe; + + for (; x != 0xff;) { + mtspr(SPR_LDSTCR, x); + for (i = 0; i < 128; i++) { + temp = *memp; + __asm__ __volatile__("dcbf 0,%0" :: "r"(memp)); + memp += 32/sizeof(*memp); + } + x = ((x << 1) | 1) & 0xff; + } + mtspr(SPR_LDSTCR, 0); + + cache_reg = mfspr(SPR_L2CR); + if (cache_reg & L2CR_L2E) { + cache_reg &= ~(L2CR_L2IO_7450 | L2CR_L2DO_7450); + mtspr(SPR_L2CR, cache_reg); + powerpc_sync(); + mtspr(SPR_L2CR, cache_reg | L2CR_L2HWF); + while (mfspr(SPR_L2CR) & L2CR_L2HWF) + ; /* Busy wait for cache to flush */ + powerpc_sync(); + cache_reg &= ~L2CR_L2E; + mtspr(SPR_L2CR, cache_reg); + powerpc_sync(); + mtspr(SPR_L2CR, cache_reg | L2CR_L2I); + powerpc_sync(); + while (mfspr(SPR_L2CR) & L2CR_L2I) + ; /* Busy wait for L2 cache invalidate */ + powerpc_sync(); + } + + cache_reg = mfspr(SPR_L3CR); + if (cache_reg & L3CR_L3E) { + cache_reg &= ~(L3CR_L3IO | L3CR_L3DO); + mtspr(SPR_L3CR, cache_reg); + powerpc_sync(); + mtspr(SPR_L3CR, cache_reg | L3CR_L3HWF); + while (mfspr(SPR_L3CR) & L3CR_L3HWF) + ; /* Busy wait for cache to flush */ + powerpc_sync(); + cache_reg &= ~L3CR_L3E; + mtspr(SPR_L3CR, cache_reg); + powerpc_sync(); + mtspr(SPR_L3CR, cache_reg | L3CR_L3I); + powerpc_sync(); + while (mfspr(SPR_L3CR) & L3CR_L3I) + ; /* Busy wait for L3 cache invalidate */ + powerpc_sync(); + } + + mtspr(SPR_HID0, mfspr(SPR_HID0) & ~HID0_DCE); + powerpc_sync(); + isync(); + + mtmsr(msr); +} + static void powermac_reset(platform_t platform) { Modified: stable/10/sys/powerpc/powermac/pmu.c ============================================================================== --- stable/10/sys/powerpc/powermac/pmu.c Wed Jan 15 05:52:06 2014 (r260673) +++ stable/10/sys/powerpc/powermac/pmu.c Wed Jan 15 06:17:15 2014 (r260674) @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -43,11 +44,18 @@ __FBSDID("$FreeBSD$"); #include #include +#include +#include /* For save_vec() */ #include +#include +#include /* For save_fpu() */ +#include #include #include +#include #include #include +#include #include #include @@ -59,6 +67,11 @@ __FBSDID("$FreeBSD$"); #include "clock_if.h" #include "pmuvar.h" #include "viareg.h" +#include "uninorthvar.h" /* For unin_chip_sleep()/unin_chip_wake() */ + +#define PMU_DEFAULTS PMU_INT_TICK | PMU_INT_ADB | \ + PMU_INT_PCEJECT | PMU_INT_SNDBRT | \ + PMU_INT_BATTERY | PMU_INT_ENVIRONMENT /* * Bus interface @@ -93,6 +106,7 @@ static int pmu_acline_state(SYSCTL_HANDL static int pmu_query_battery(struct pmu_softc *sc, int batt, struct pmu_battstate *info); static int pmu_battquery_sysctl(SYSCTL_HANDLER_ARGS); +static void pmu_sleep_int(void); /* * List of battery-related sysctls we might ask for @@ -115,8 +129,6 @@ static device_method_t pmu_methods[] = DEVMETHOD(device_attach, pmu_attach), DEVMETHOD(device_detach, pmu_detach), DEVMETHOD(device_shutdown, bus_generic_shutdown), - DEVMETHOD(device_suspend, bus_generic_suspend), - DEVMETHOD(device_resume, bus_generic_resume), /* ADB bus interface */ DEVMETHOD(adb_hb_send_raw_packet, pmu_adb_send), @@ -193,7 +205,7 @@ static signed char pm_send_cmd_type[] = 0x02, -1, -1, -1, -1, -1, -1, -1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -1, -1, 0x01, 0x01, 0x01, -1, -1, -1, -1, -1, - 0x00, 0x00, -1, -1, -1, -1, 0x04, 0x04, + 0x00, 0x00, -1, -1, -1, 0x05, 0x04, 0x04, 0x04, -1, 0x00, -1, -1, -1, -1, -1, 0x00, -1, -1, -1, -1, -1, -1, -1, 0x01, 0x02, -1, -1, -1, -1, -1, -1, @@ -229,7 +241,7 @@ static signed char pm_receive_cmd_type[] 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x03, 0x09, -1, -1, -1, -1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - -1, -1, -1, -1, -1, -1, 0x01, 0x01, + -1, -1, -1, -1, -1, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, -1, -1, -1, -1, -1, -1, -1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -357,12 +369,13 @@ pmu_attach(device_t dev) /* Init PMU */ - reg = PMU_INT_TICK | PMU_INT_ADB | PMU_INT_PCEJECT | PMU_INT_SNDBRT; - reg |= PMU_INT_BATTERY; - reg |= PMU_INT_ENVIRONMENT; + pmu_write_reg(sc, vBufB, pmu_read_reg(sc, vBufB) | vPB4); + pmu_write_reg(sc, vDirB, (pmu_read_reg(sc, vDirB) | vPB4) & ~vPB3); + + reg = PMU_DEFAULTS; pmu_send(sc, PMU_SET_IMASK, 1, ®, 16, resp); - pmu_write_reg(sc, vIER, 0x90); /* make sure VIA interrupts are on */ + pmu_write_reg(sc, vIER, 0x94); /* make sure VIA interrupts are on */ pmu_send(sc, PMU_SYSTEM_READY, 1, cmd, 16, resp); pmu_send(sc, PMU_GET_VERSION, 1, cmd, 16, resp); @@ -1018,3 +1031,95 @@ pmu_settime(device_t dev, struct timespe return (0); } +static register_t sprgs[4]; +static register_t srrs[2]; +extern void *ap_pcpu; + +void pmu_sleep_int(void) +{ + static u_quad_t timebase = 0; + jmp_buf resetjb; + struct thread *fputd; + struct thread *vectd; + register_t hid0; + register_t msr; + register_t saved_msr; + + ap_pcpu = pcpup; + + PCPU_SET(restore, &resetjb); + + *(unsigned long *)0x80 = 0x100; + saved_msr = mfmsr(); + fputd = PCPU_GET(fputhread); + vectd = PCPU_GET(vecthread); + if (fputd != NULL) + save_fpu(fputd); + if (vectd != NULL) + save_vec(vectd); + if (setjmp(resetjb) == 0) { + sprgs[0] = mfspr(SPR_SPRG0); + sprgs[1] = mfspr(SPR_SPRG1); + sprgs[2] = mfspr(SPR_SPRG2); + sprgs[3] = mfspr(SPR_SPRG3); + srrs[0] = mfspr(SPR_SRR0); + srrs[1] = mfspr(SPR_SRR1); + timebase = mftb(); + powerpc_sync(); + flush_disable_caches(); + hid0 = mfspr(SPR_HID0); + hid0 = (hid0 & ~(HID0_DOZE | HID0_NAP)) | HID0_SLEEP; + powerpc_sync(); + isync(); + msr = mfmsr() | PSL_POW; + mtspr(SPR_HID0, hid0); + powerpc_sync(); + + while (1) + mtmsr(msr); + } + mttb(timebase); + PCPU_SET(curthread, curthread); + PCPU_SET(curpcb, curthread->td_pcb); + pmap_activate(curthread); + powerpc_sync(); + mtspr(SPR_SPRG0, sprgs[0]); + mtspr(SPR_SPRG1, sprgs[1]); + mtspr(SPR_SPRG2, sprgs[2]); + mtspr(SPR_SPRG3, sprgs[3]); + mtspr(SPR_SRR0, srrs[0]); + mtspr(SPR_SRR1, srrs[1]); + mtmsr(saved_msr); + if (fputd == curthread) + enable_fpu(curthread); + if (vectd == curthread) + enable_vec(curthread); + powerpc_sync(); +} + +int +pmu_set_speed(int low_speed) +{ + struct pmu_softc *sc; + uint8_t sleepcmd[] = {'W', 'O', 'O', 'F', 0}; + uint8_t resp[16]; + + sc = device_get_softc(pmu); + pmu_write_reg(sc, vIER, 0x10); + spinlock_enter(); + mtdec(0x7fffffff); + mb(); + mtdec(0x7fffffff); + + sleepcmd[4] = low_speed; + pmu_send(sc, PMU_CPU_SPEED, 5, sleepcmd, 16, resp); + unin_chip_sleep(NULL, 1); + pmu_sleep_int(); + unin_chip_wake(NULL); + + mtdec(1); /* Force a decrementer exception */ + spinlock_exit(); + pmu_write_reg(sc, vIER, 0x90); + + return (0); +} Modified: stable/10/sys/powerpc/powermac/pmuvar.h ============================================================================== --- stable/10/sys/powerpc/powermac/pmuvar.h Wed Jan 15 05:52:06 2014 (r260673) +++ stable/10/sys/powerpc/powermac/pmuvar.h Wed Jan 15 06:17:15 2014 (r260674) @@ -160,7 +160,8 @@ struct pmu_softc { volatile int sc_autopoll; int sc_batteries; struct cdev *sc_leddev; - int lid_closed; + int lid_closed; + uint8_t saved_regs[9]; }; struct pmu_battstate { @@ -172,4 +173,6 @@ struct pmu_battstate { int voltage; }; +int pmu_set_speed(int low_speed); + #endif /* PMUVAR_H */ Modified: stable/10/sys/powerpc/powermac/uninorth.c ============================================================================== --- stable/10/sys/powerpc/powermac/uninorth.c Wed Jan 15 05:52:06 2014 (r260673) +++ stable/10/sys/powerpc/powermac/uninorth.c Wed Jan 15 06:17:15 2014 (r260674) @@ -136,6 +136,13 @@ static driver_t unin_chip_driver = { static devclass_t unin_chip_devclass; +/* + * Assume there is only one unin chip in a PowerMac, so that pmu.c functions can + * suspend the chip after the whole rest of the device tree is suspended, not + * earlier. + */ +static device_t unin_chip; + DRIVER_MODULE(unin, nexus, unin_chip_driver, unin_chip_devclass, 0, 0); /* @@ -210,31 +217,30 @@ unin_chip_add_reg(phandle_t devnode, str } static void -unin_enable_gmac(device_t dev) +unin_update_reg(device_t dev, uint32_t regoff, uint32_t set, uint32_t clr) { - volatile u_int *clkreg; + volatile u_int *reg; struct unin_chip_softc *sc; u_int32_t tmpl; sc = device_get_softc(dev); - clkreg = (void *)(sc->sc_addr + UNIN_CLOCKCNTL); - tmpl = inl(clkreg); - tmpl |= UNIN_CLOCKCNTL_GMAC; - outl(clkreg, tmpl); + reg = (void *)(sc->sc_addr + regoff); + tmpl = inl(reg); + tmpl &= ~clr; + tmpl |= set; + outl(reg, tmpl); } static void -unin_enable_mpic(device_t dev) +unin_enable_gmac(device_t dev) { - volatile u_int *toggle; - struct unin_chip_softc *sc; - u_int32_t tmpl; + unin_update_reg(dev, UNIN_CLOCKCNTL, UNIN_CLOCKCNTL_GMAC, 0); +} - sc = device_get_softc(dev); - toggle = (void *)(sc->sc_addr + UNIN_TOGGLE_REG); - tmpl = inl(toggle); - tmpl |= UNIN_MPIC_RESET | UNIN_MPIC_OUTPUT_ENABLE; - outl(toggle, tmpl); +static void +unin_enable_mpic(device_t dev) +{ + unin_update_reg(dev, UNIN_TOGGLE_REG, UNIN_MPIC_RESET | UNIN_MPIC_OUTPUT_ENABLE, 0); } static int @@ -301,6 +307,9 @@ unin_chip_attach(device_t dev) return (error); } + if (unin_chip == NULL) + unin_chip = dev; + /* * Iterate through the sub-devices */ @@ -621,3 +630,33 @@ unin_chip_get_devinfo(device_t dev, devi return (&dinfo->udi_obdinfo); } +int +unin_chip_wake(device_t dev) +{ + + if (dev == NULL) + dev = unin_chip; + unin_update_reg(dev, UNIN_PWR_MGMT, UNIN_PWR_NORMAL, UNIN_PWR_MASK); + DELAY(10); + unin_update_reg(dev, UNIN_HWINIT_STATE, UNIN_RUNNING, 0); + DELAY(100); + + return (0); +} + +int +unin_chip_sleep(device_t dev, int idle) +{ + if (dev == NULL) + dev = unin_chip; + + unin_update_reg(dev, UNIN_HWINIT_STATE, UNIN_SLEEPING, 0); + DELAY(10); + if (idle) + unin_update_reg(dev, UNIN_PWR_MGMT, UNIN_PWR_IDLE2, UNIN_PWR_MASK); + else + unin_update_reg(dev, UNIN_PWR_MGMT, UNIN_PWR_SLEEP, UNIN_PWR_MASK); + DELAY(10); + + return (0); +} Modified: stable/10/sys/powerpc/powermac/uninorthvar.h ============================================================================== --- stable/10/sys/powerpc/powermac/uninorthvar.h Wed Jan 15 05:52:06 2014 (r260673) +++ stable/10/sys/powerpc/powermac/uninorthvar.h Wed Jan 15 06:17:15 2014 (r260674) @@ -28,6 +28,8 @@ #ifndef _POWERPC_POWERMAC_UNINORTHVAR_H_ #define _POWERPC_POWERMAC_UNINORTHVAR_H_ +#include +#include #include struct uninorth_softc { @@ -76,10 +78,30 @@ struct unin_chip_devinfo { #define UNIN_CLOCKCNTL_GMAC 0x2 /* + * Power management register + */ +#define UNIN_PWR_MGMT 0x30 +#define UNIN_PWR_NORMAL 0x00 +#define UNIN_PWR_IDLE2 0x01 +#define UNIN_PWR_SLEEP 0x02 +#define UNIN_PWR_SAVE 0x03 +#define UNIN_PWR_MASK 0x03 + +/* + * Hardware initialization state register + */ +#define UNIN_HWINIT_STATE 0x70 +#define UNIN_SLEEPING 0x01 +#define UNIN_RUNNING 0x02 + + +/* * Toggle registers */ #define UNIN_TOGGLE_REG 0xe0 #define UNIN_MPIC_RESET 0x2 #define UNIN_MPIC_OUTPUT_ENABLE 0x4 +extern int unin_chip_sleep(device_t dev, int idle); +extern int unin_chip_wake(device_t dev); #endif /* _POWERPC_POWERMAC_UNINORTHVAR_H_ */ Modified: stable/10/sys/powerpc/powermac/viareg.h ============================================================================== --- stable/10/sys/powerpc/powermac/viareg.h Wed Jan 15 05:52:06 2014 (r260673) +++ stable/10/sys/powerpc/powermac/viareg.h Wed Jan 15 06:17:15 2014 (r260674) @@ -30,14 +30,16 @@ /* VIA interface registers */ #define vBufB 0x0000 /* register B */ -#define vBufA 0x0200 /* register A */ #define vDirB 0x0400 /* data direction register */ #define vDirA 0x0600 /* data direction register */ +#define vT1C 0x0800 /* Timer 1 counter Lo */ +#define vT1CH 0x0a00 /* Timer 1 counter Hi */ #define vSR 0x1400 /* shift register */ #define vACR 0x1600 /* aux control register */ #define vPCR 0x1800 /* peripheral control register */ #define vIFR 0x1a00 /* interrupt flag register */ #define vIER 0x1c00 /* interrupt enable register */ +#define vBufA 0x1e00 /* register A */ #define vPB 0x0000 #define vPB3 0x08 Modified: stable/10/sys/powerpc/powerpc/mp_machdep.c ============================================================================== --- stable/10/sys/powerpc/powerpc/mp_machdep.c Wed Jan 15 05:52:06 2014 (r260673) +++ stable/10/sys/powerpc/powerpc/mp_machdep.c Wed Jan 15 06:17:15 2014 (r260674) @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include "pic_if.h" @@ -66,10 +67,21 @@ volatile static u_quad_t ap_timebase; static u_int ipi_msg_cnt[32]; static struct mtx ap_boot_mtx; struct pcb stoppcbs[MAXCPU]; +int longfault(faultbuf, int); void machdep_ap_bootstrap(void) { + jmp_buf *restore; + + /* The following is needed for restoring from sleep. */ +#ifdef __powerpc64__ + /* Writing to the time base register is hypervisor-privileged */ + if (mfmsr() & PSL_HV) + mttb(0); +#else + mttb(0); +#endif /* Set up important bits on the CPU (HID registers, etc.) */ cpudep_ap_setup(); @@ -78,6 +90,11 @@ machdep_ap_bootstrap(void) PCPU_SET(awake, 1); __asm __volatile("msync; isync"); + restore = PCPU_GET(restore); + if (restore != NULL) { + longjmp(*restore, 1); + } + while (ap_letgo == 0) ; From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 07:36:37 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B500C4B1; Wed, 15 Jan 2014 07:36:37 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 95A521373; Wed, 15 Jan 2014 07:36:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F7abVX012813; Wed, 15 Jan 2014 07:36:37 GMT (envelope-from dteske@svn.freebsd.org) Received: (from dteske@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F7aYj6012794; Wed, 15 Jan 2014 07:36:34 GMT (envelope-from dteske@svn.freebsd.org) Message-Id: <201401150736.s0F7aYj6012794@svn.freebsd.org> From: Devin Teske Date: Wed, 15 Jan 2014 07:36:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260675 - in stable/10/usr.sbin/bsdconfig: . console console/include dot include includes mouse/include networking/include networking/share share share/media startup/include usermgmt/in... X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 07:36:37 -0000 Author: dteske Date: Wed Jan 15 07:36:34 2014 New Revision: 260675 URL: http://svnweb.freebsd.org/changeset/base/260675 Log: MFC r258355,258360,258400-258401,258406-258407,258418,258430,258439,258589- 258590,258592,258727-258728,258785, with the following descriptions: Revisions 258400-258401,258406-258407,258590,258727-258728,258785: + Add a new `includes' module (see: bsdconfig includes -h) for exploring the bsdconfig(8) API Remaining revisions: 258592: Sort all the messages.subr files 258355: Fix typo in a comment in networking/device.subr 258360: Whitespace, style, and other changes in networking/device.subr 258418: Quote interface names for good measure in networking/device.subr 258430: Remove an unused line in networking/device.subr 258439: Minor bugfix to f_die() function in common.subr 258589: Minor bugfix to syscons_ttys module Added: stable/10/usr.sbin/bsdconfig/includes/ - copied from r258400, head/usr.sbin/bsdconfig/includes/ Modified: stable/10/usr.sbin/bsdconfig/Makefile stable/10/usr.sbin/bsdconfig/console/include/messages.subr stable/10/usr.sbin/bsdconfig/console/ttys stable/10/usr.sbin/bsdconfig/dot/dot stable/10/usr.sbin/bsdconfig/include/messages.subr stable/10/usr.sbin/bsdconfig/includes/USAGE stable/10/usr.sbin/bsdconfig/includes/includes stable/10/usr.sbin/bsdconfig/mouse/include/messages.subr stable/10/usr.sbin/bsdconfig/networking/include/messages.subr stable/10/usr.sbin/bsdconfig/networking/share/device.subr stable/10/usr.sbin/bsdconfig/share/media/tcpip.subr stable/10/usr.sbin/bsdconfig/share/variable.subr stable/10/usr.sbin/bsdconfig/startup/include/messages.subr stable/10/usr.sbin/bsdconfig/usermgmt/include/messages.subr Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/bsdconfig/Makefile ============================================================================== --- stable/10/usr.sbin/bsdconfig/Makefile Wed Jan 15 06:17:15 2014 (r260674) +++ stable/10/usr.sbin/bsdconfig/Makefile Wed Jan 15 07:36:34 2014 (r260675) @@ -6,6 +6,7 @@ SUBDIR= console \ dot \ examples \ include \ + includes \ mouse \ networking \ packages \ Modified: stable/10/usr.sbin/bsdconfig/console/include/messages.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/console/include/messages.subr Wed Jan 15 06:17:15 2014 (r260674) +++ stable/10/usr.sbin/bsdconfig/console/include/messages.subr Wed Jan 15 07:36:34 2014 (r260675) @@ -51,8 +51,8 @@ msg_cancel="Cancel" msg_central_european_iso="Central European ISO" msg_central_european_iso_desc="Central European ISO keymap" msg_choose_alternate_keyboard_map="Choose an alternate keyboard map" -msg_choose_alternate_screenmap="Choose an alternate screenmap" msg_choose_alternate_screen_font="Choose an alternate screen font" +msg_choose_alternate_screenmap="Choose an alternate screenmap" msg_choose_console_terminal_type="Choose console terminal type" msg_configure_screen_saver="Configure the screen saver" msg_console_menu_text="The system console driver for FreeBSD has a number of configuration\noptions which may be set according to your preference.\n\nWhen you are done setting configuration options, select Cancel." @@ -74,9 +74,9 @@ msg_enter_timeout_period="Enter time-out msg_estonian_cp850="Estonian CP850" msg_estonian_cp850_desc="Estonian Code Page 850 keymap" msg_estonian_iso="Estonian ISO" -msg_estonian_iso_desc="Estonian ISO keymap" msg_estonian_iso_15="Estonian ISO 15" msg_estonian_iso_15_desc="Estonian ISO 8859-15 keymap" +msg_estonian_iso_desc="Estonian ISO keymap" msg_exit="Exit" msg_exit_this_menu="Exit this menu" msg_fade="Fade" @@ -97,8 +97,6 @@ msg_french_iso_accent_desc="French ISO k msg_french_iso_desc="French ISO keymap" msg_french_iso_macbook="French ISO/Macbook" msg_french_iso_macbook_desc="French ISO keymap on macbook" -msg_green="Green" -msg_green_desc="\"Green\" power saving mode (if supported by monitor)" msg_german_cp850="German CP850" msg_german_cp850_desc="German Code Page 850 keymap" msg_german_iso="German ISO" @@ -109,10 +107,14 @@ msg_greek_104="Greek 104" msg_greek_104_desc="Greek ISO keymap (104 keys)" msg_greek_elot="Greek ELOT" msg_greek_elot_desc="Greek ISO keymap (ELOT 1000)" +msg_green="Green" +msg_green_desc="\"Green\" power saving mode (if supported by monitor)" msg_hungarian_101="Hungarian 101" msg_hungarian_101_desc="Hungarian ISO keymap (101 key)" msg_hungarian_102="Hungarian 102" msg_hungarian_102_desc="Hungarian ISO keymap (102 key)" +msg_ibm_1251="IBM 1251" +msg_ibm_1251_desc="Cyrillic, MS Windows encoding" msg_ibm_437="IBM 437" msg_ibm_437_desc="English and others, VGA default" msg_ibm_437_vga_default="IBM437 (VGA default)" @@ -124,12 +126,12 @@ msg_ibm_866="IBM 866" msg_ibm_866_desc="Russian, IBM encoding (use with KOI8-R screenmap)" msg_ibm_866u="IBM 866u" msg_ibm_866u_desc="Ukrainian, IBM encoding (use with KOI8-U screenmap)" -msg_ibm_1251="IBM 1251" -msg_ibm_1251_desc="Cyrillic, MS Windows encoding" msg_icelandic="Icelandic" msg_icelandic_accent="Icelandic (accent)" msg_icelandic_accent_desc="Icelandic ISO keymap (accent keys)" msg_icelandic_desc="Icelandic ISO keymap" +msg_iso_8859_15="ISO 8859-15" +msg_iso_8859_15_desc="Europe, ISO encoding" msg_iso_8859_1="ISO 8859-1" msg_iso_8859_1_desc="Western Europe, ISO encoding" msg_iso_8859_1_to_ibm437="ISO 8859-1 to IBM437" @@ -144,8 +146,6 @@ msg_iso_8859_7_to_ibm437="ISO 8859-7 to msg_iso_8859_7_to_ibm437_desc="Greek ISO 8859-1 to IBM 437 screenmap" msg_iso_8859_8="ISO 8859-8" msg_iso_8859_8_desc="Hebrew, ISO encoding" -msg_iso_8859_15="ISO 8859-15" -msg_iso_8859_15_desc="Europe, ISO encoding" msg_italian="Italian" msg_italian_desc="Italian ISO keymap" msg_japanese_106="Japanese 106" @@ -153,9 +153,9 @@ msg_japanese_106_desc="Japanese 106 keym msg_keymap="Keymap" msg_keymap_menu_text="The system console driver for FreeBSD defaults to a standard\n\"US\" keyboard map. Users may wish to choose one of the\nother keymaps below." msg_koi8_r="KOI8-R" -msg_koi8_u="KOI8-U" msg_koi8_r_to_ibm866="KOI8-R to IBM866" msg_koi8_r_to_ibm866_desc="Russian KOI8-R to IBM 866 screenmap" +msg_koi8_u="KOI8-U" msg_koi8_u_to_ibm866u="KOI8-U to IBM866u" msg_koi8_u_to_ibm866u_desc="Ukrainian KOI8-U to IBM 866u screenmap" msg_latin_american="Latin American" @@ -224,8 +224,8 @@ msg_swiss_german_iso_accent_desc="Swiss msg_swiss_german_iso_desc="Swiss German ISO keymap" msg_system_console_configuration="System Console Configuration" msg_system_console_font="System Console Font" -msg_system_console_keymap="System Console Keymap" msg_system_console_keyboard_repeat_rate="System Console Keyboard Repeat Rate" +msg_system_console_keymap="System Console Keymap" msg_system_console_screen_saver="System Console Screen Saver" msg_system_console_screenmap="System Console Screenmap" msg_system_console_terminal_type="System Console Terminal Type" Modified: stable/10/usr.sbin/bsdconfig/console/ttys ============================================================================== --- stable/10/usr.sbin/bsdconfig/console/ttys Wed Jan 15 06:17:15 2014 (r260674) +++ stable/10/usr.sbin/bsdconfig/console/ttys Wed Jan 15 07:36:34 2014 (r260675) @@ -113,7 +113,7 @@ ttys_set_type() # # Create new temporary file to write our ttys(5) update with new types. # - local tmpfile="$( mktemp -t "pgm" )" + local tmpfile="$( mktemp -t "$pgm" )" [ "$tmpfile" ] || return $FAILURE # Modified: stable/10/usr.sbin/bsdconfig/dot/dot ============================================================================== --- stable/10/usr.sbin/bsdconfig/dot/dot Wed Jan 15 06:17:15 2014 (r260674) +++ stable/10/usr.sbin/bsdconfig/dot/dot Wed Jan 15 07:36:34 2014 (r260675) @@ -163,7 +163,7 @@ while getopts cdhi flag; do done shift $(( $OPTIND - 1 )) -cd $BSDCFG_LIBE || f_die 1 "$msg_directory_not_found" "$BSDCFG_LIB" +cd $BSDCFG_LIBE || f_die # Pedantic # # Get a list of menu programs Modified: stable/10/usr.sbin/bsdconfig/include/messages.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/include/messages.subr Wed Jan 15 06:17:15 2014 (r260674) +++ stable/10/usr.sbin/bsdconfig/include/messages.subr Wed Jan 15 07:36:34 2014 (r260675) @@ -170,8 +170,8 @@ msg_install_from_an_http_server="Install msg_install_from_the_existing_filesystem="Install from the existing filesystem" msg_install_over_nfs="Install over NFS" msg_installed="Installed" -msg_installed_lc="installed" msg_installed_desc="Leave package as-is, installed" +msg_installed_lc="installed" msg_invalid_gateway_ipv4_address_specified="Invalid gateway IPv4 address specified" msg_invalid_hostname_value="Invalid hostname value" msg_invalid_ipv4_address="Invalid IPv4 address" @@ -261,7 +261,6 @@ msg_ok="OK" msg_options="Options" msg_options_editor="Options Editor" msg_other="other" -msg_pkg_delete_failed="Warning: pkg-delete(8) of %s failed.\n Run with debugging for details." msg_package_is_needed_by_other_installed_packages="Warning: Package %s is needed by\n %d other installed package%s." msg_package_not_installed_cannot_delete="Warning: package %s not installed\n No package can be deleted." msg_package_temp="Package Temp" @@ -273,6 +272,7 @@ msg_parallel_desc="Applications dealing msg_pear_desc="Software related to the Pear PHP framework." msg_perl5_desc="Utilities/modules for the PERL5 language." msg_permission_denied="%s: %s: Permission denied" +msg_pkg_delete_failed="Warning: pkg-delete(8) of %s failed.\n Run with debugging for details." msg_pkg_install_apparently_did_not_like_the_package="pkg-install(8) apparently did not like the %s package." msg_plan9_desc="Software from the Plan9 operating system." msg_please_check_the_url_and_try_again="No such directory: %s\nplease check the URL and try again.\n" @@ -375,9 +375,9 @@ msg_unable_to_get_file_from_selected_med msg_unable_to_get_proper_ftp_path="Unable to get proper FTP path. FTP media not initialized." msg_unable_to_initialize_media_type_for_package_extract="Unable to initialize media type for package extract." msg_unable_to_make_directory_mountpoint="Unable to make %s directory mountpoint for %s!" -msg_unable_to_pkg_rquery_package_dependencies="Unable to pkg-rquery(8) package dependencies!" -msg_unable_to_pkg_rquery_package_categories="Unable to pkg-rquery(8) package categories!" msg_unable_to_open="Unable to open %s" +msg_unable_to_pkg_rquery_package_categories="Unable to pkg-rquery(8) package categories!" +msg_unable_to_pkg_rquery_package_dependencies="Unable to pkg-rquery(8) package dependencies!" msg_unable_to_update_pkg_from_selected_media="Unable to update pkg(8) from selected media." msg_uninstall="Uninstall" msg_uninstall_desc="Mark this package for deletion" Modified: stable/10/usr.sbin/bsdconfig/includes/USAGE ============================================================================== --- head/usr.sbin/bsdconfig/includes/USAGE Wed Nov 20 20:37:21 2013 (r258400) +++ stable/10/usr.sbin/bsdconfig/includes/USAGE Wed Jan 15 07:36:34 2014 (r260675) @@ -28,6 +28,7 @@ Usage: bsdconfig @PROGRAM_NAME@ [OPTIONS OPTIONS: -a Always use color even when output is not to a terminal. + -d Print description for each function selected. Implies `-f'. -f Show functions for selected includes. -F pattern If `-f', only print functions matching pattern. Without `-f' @@ -64,3 +65,7 @@ EXAMPLES: bsdconfig @PROGRAM_NAME@ -F show common NB: The `.subr' suffix on the end of the include is optional. + + Show descriptions of each of the `show' functions: + + bsdconfig @PROGRAM_NAME@ -dF show Modified: stable/10/usr.sbin/bsdconfig/includes/includes ============================================================================== --- head/usr.sbin/bsdconfig/includes/includes Wed Nov 20 20:37:21 2013 (r258400) +++ stable/10/usr.sbin/bsdconfig/includes/includes Wed Jan 15 07:36:34 2014 (r260675) @@ -29,7 +29,7 @@ ############################################################ INCLUDES # Prevent common.subr from auto initializing debugging (this is not an inter- -# active utility that requires debugging). +# active utility that requires debugging; also `-d' has been repurposed). # DEBUG_SELF_INITIALIZE=NO @@ -50,6 +50,7 @@ ipgm=$( f_index_menusel_keyword $BSDCFG_ # Options # USE_COLOR=1 +SHOW_DESC= SHOW_FUNCS= FUNC_PATTERN= @@ -64,24 +65,62 @@ show_include() local file="${1#./}" local pattern="${FUNC_PATTERN:-.*}" - output=$( awk -v use_color=${USE_COLOR:-0} -v re="$pattern" ' + output=$( awk \ + -v use_color=${USE_COLOR:-0} \ + -v re="$pattern" \ + -v show_desc=${SHOW_DESC:-0} ' + function asorti(src, dest) + { + # Copy src indices to dest and calculate array length + nitems = 0; for (i in src) dest[++nitems] = i + + # Sort the array of indices (dest) using insertion sort method + for (i = 1; i <= nitems; k = i++) + { + idx = dest[i] + while ((k > 0) && (dest[k] > idx)) + { + dest[k+1] = dest[k] + k-- + } + dest[k+1] = idx + } + + return nitems + } /^$/,/^#/ { if ($0 ~ /^# f_/) { if (!match($2, re)) next + fn = $2 if (use_color) - printf " %s%s%s\n", + syntax[fn] = sprintf("+%s%s%s\n", substr($0, 2, RSTART), substr($0, 2 + RSTART, RLENGTH), - substr($0, 2 + RSTART + RLENGTH) + substr($0, 2 + RSTART + RLENGTH)) else - print substr($0, 2) - print_more = substr($0, length($0)) == "\\" + syntax[fn] = "+" substr($0, 2) "\n" + if (show_desc) + print_more = 1 + else + print_more = substr($0, length($0)) == "\\" } - while (print_more) { + if (show_desc && print_more) { + getline + while ($0 ~ /^#/) { + syntax[fn] = syntax[fn] " " substr($0, 2) "\n" + getline + } + print_more = 0 + } else while (print_more) { getline - print substr($0, 2) + syntax[fn] = syntax[fn] " " substr($0, 2) "\n" print_more = substr($0, length($0)) == "\\" } + } + END { + n = asorti(syntax, sorted_indices) + for (i = 1; i <= n; i++) + printf "%s", syntax[sorted_indices[i]] }' "$file" ) if [ "$output" ]; then if [ ! "$SHOW_FUNCS" ]; then @@ -89,10 +128,10 @@ show_include() return $SUCCESS fi if [ "$FUNC_PATTERN" ]; then - printf "$msg_functions_in_matching\n" \ + printf ">>> $msg_functions_in_matching\n" \ "$file" "$FUNC_PATTERN" else - printf "$msg_functions_in\n" "$file" + printf ">>> $msg_functions_in\n" "$file" fi echo "$output" echo # blank line to simplify awk(1)-based reparse @@ -110,9 +149,10 @@ show_include() # # Process command-line arguments # -while getopts afF:hn flag; do +while getopts adfF:hn flag; do case "$flag" in a) USE_COLOR=1 ;; + d) SHOW_DESC=1 SHOW_FUNCS=1 ;; f) SHOW_FUNCS=1 ;; F) FUNC_PATTERN="$OPTARG" ;; n) USE_COLOR= ;; @@ -122,7 +162,7 @@ done shift $(( $OPTIND - 1 )) # cd(1) to `share' dir so relative paths work for find and positional args -cd $BSDCFG_SHARE || f_die 1 "$msg_directory_not_found" "$BSDCFG_SHARE" +cd $BSDCFG_SHARE || f_die # Pedantic # # If given an argument, operate on it specifically (implied `-f') and exit @@ -132,9 +172,11 @@ for include in "$@"; do # See if they've just omitted the `*.subr' suffix [ -f "$include.subr" -a ! -f "$include" ] && include="$include.subr" if [ ! -f "$include" ]; then - f_die 1 "$msg_no_such_file_or_directory" "$0" "$include" + printf "$msg_no_such_file_or_directory\n" "$0" "$include" + exit $FAILURE elif [ ! -r "$include" ]; then - f_die 1 "$msg_permission_denied" "$0" "$include" + printf "$msg_permission_denied\n" "$0" "$include" + exit $FAILURE fi show_include "$include" || f_die done Modified: stable/10/usr.sbin/bsdconfig/mouse/include/messages.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/mouse/include/messages.subr Wed Jan 15 06:17:15 2014 (r260674) +++ stable/10/usr.sbin/bsdconfig/mouse/include/messages.subr Wed Jan 15 07:36:34 2014 (r260675) @@ -58,14 +58,14 @@ msg_microsoft="Microsoft" msg_microsoft_desc="Microsoft protocol (serial)" msg_mm_series="MM Series" msg_mm_series_desc="MM Series protocol (serial)" -msg_mouseman="MouseMan" -msg_mouseman_desc="Logitech MouseMan/TrackMan models (serial)" -msg_mousesystems="MouseSystems" -msg_mousesystems_desc="MouseSystems protocol (serial)" msg_mouse_daemon_is_disabled="The mouse daemon is disabled." msg_mouse_disable="Mouse Disable" msg_mouse_enable="Mouse Enable" msg_mouse_flags="Mouse Flags" +msg_mouseman="MouseMan" +msg_mouseman_desc="Logitech MouseMan/TrackMan models (serial)" +msg_mousesystems="MouseSystems" +msg_mousesystems_desc="MouseSystems protocol (serial)" msg_now_move_the_mouse="Now move the mouse and see if it works.\n(Note that buttons don't have any effect for now.)\n\n Is the mouse cursor moving?\n" msg_ok="OK" msg_please_configure_your_mouse="Please configure your mouse" Modified: stable/10/usr.sbin/bsdconfig/networking/include/messages.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/include/messages.subr Wed Jan 15 06:17:15 2014 (r260674) +++ stable/10/usr.sbin/bsdconfig/networking/include/messages.subr Wed Jan 15 07:36:34 2014 (r260675) @@ -59,15 +59,15 @@ msg_ipv4_addr_octet_contains_invalid_cha msg_ipv4_addr_octet_exceeds_max_value="ERROR! One or more individual octets within the IPv4 address\n(separated by dots) exceeds the maximum of 255.\n\nInvalid IP Address: %s" msg_ipv4_addr_octet_is_null="ERROR! One or more individual octets within the IPv4 address\n(separated by dots) are null and/or missing.\n\nInvalid IP Address: %s" msg_ipv4_addr_octet_missing_or_extra="ERROR! The IPv4 address entered has either too few (less than\nfour) or too many (more than four) octets, separated by dots.\n\nInvalid IP Address: %s" -msg_ipv6_addr_segment_contains_invalid_chars="ERROR! One or more individual segments within the IP address\n(separated by colons) contains one or more invalid characters.\nSegments must contain only combinations of the characters 0-9,\nA-F, or a-f.\n\nInvalid IPv6 Address: %s" -msg_ipv6_addr_segment_contains_too_many_chars="ERROR! One or more individual segments within the IP address\n(separated by colons) exceeds the length of 4 hex-digits.\n\nInvalid IPv6 Address: %s" -msg_ipv6_addr_too_few_or_extra_segments="ERROR! The IP address entered has either too few (less than 3), too\nmany (more than 8), or not enough segments, separated by colons.\n\nInvalid IPv6 Address: %s" -msg_ipv6_addr_too_many_null_segments="ERROR! Too many/incorrect null segments. A single null\nsegment is allowed within the IP address (separated by\ncolons) but not allowed at the beginning or end (unless\na double-null segment; i.e., \"::*\" or \"*::\").\n\nInvalid IPv6 Address: %s" msg_ipv4_mask_field_contains_invalid_chars="ERROR! One or more individual fields within the subnet mask\n(separated by dots) contains one or more invalid characters.\n\nInvalid Subnet Mask: %s" msg_ipv4_mask_field_exceeds_max_value="ERROR! One or more individual fields within the subnet mask\n(separated by dots) exceeds the maximum of 255.\n\nInvalid Subnet Mask: %s" msg_ipv4_mask_field_invalid_value="ERROR! One or more individual fields within the subnet mask\n(separated by dots) contains one or more invalid integers.\nFields must be one of 0/128/192/224/240/248/252/254/255.\n\nInvalid Subnet Mask: %s" msg_ipv4_mask_field_is_null="ERROR! One or more individual fields within the subnet mask\n(separated by dots) are null and/or missing.\n\nInvalid Subnet Mask: %s" msg_ipv4_mask_field_missing_or_extra="ERROR! The subnet mask entered has either too few or too many\nfields.\n\nInvalid Subnet Mask: %s" +msg_ipv6_addr_segment_contains_invalid_chars="ERROR! One or more individual segments within the IP address\n(separated by colons) contains one or more invalid characters.\nSegments must contain only combinations of the characters 0-9,\nA-F, or a-f.\n\nInvalid IPv6 Address: %s" +msg_ipv6_addr_segment_contains_too_many_chars="ERROR! One or more individual segments within the IP address\n(separated by colons) exceeds the length of 4 hex-digits.\n\nInvalid IPv6 Address: %s" +msg_ipv6_addr_too_few_or_extra_segments="ERROR! The IP address entered has either too few (less than 3), too\nmany (more than 8), or not enough segments, separated by colons.\n\nInvalid IPv6 Address: %s" +msg_ipv6_addr_too_many_null_segments="ERROR! Too many/incorrect null segments. A single null\nsegment is allowed within the IP address (separated by\ncolons) but not allowed at the beginning or end (unless\na double-null segment; i.e., \"::*\" or \"*::\").\n\nInvalid IPv6 Address: %s" msg_netmask="netmask" msg_network_configuration="%s Network Configuration:\nChoose Save/Exit when finished or Cancel." msg_network_interfaces="Network Interfaces" Modified: stable/10/usr.sbin/bsdconfig/networking/share/device.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/share/device.subr Wed Jan 15 06:17:15 2014 (r260674) +++ stable/10/usr.sbin/bsdconfig/networking/share/device.subr Wed Jan 15 07:36:34 2014 (r260675) @@ -62,7 +62,8 @@ f_include_lang $BSDCFG_LIBE/$APP_DIR/inc # f_dialog_menu_netdev() { - local defaultitem="${1%\*}" # Tim trailing asterisk if present + local menu_list # Calculated below + local defaultitem="${1%\*}" # Trim trailing asterisk if present # # Display a message to let the user know we're working... @@ -73,20 +74,15 @@ f_dialog_menu_netdev() # # Get list of usable network interfaces # - local d='[[:digit:]]+:' - local iflist="`echo "$(ifconfig -l):" | sed -E -e " - # Convert all spaces to colons - y/ /:/ - - # Prune unsavory interfaces - s/lo$d//g - s/ppp$d//g - s/sl$d//g - s/faith$d//g - - # Convert all colons back into spaces - y/:/ / - "`" + local if iflist= # Calculated below + for if in $( ifconfig -l ); do + # Skip unsavory interfaces + case "$if" in + lo[0-9]*|ppp[0-9]*|sl[0-9]*|faith[0-9]*) continue ;; + esac + iflist="$iflist $if" + done + iflist="${iflist# }" # # Optionally kick interfaces in the head to get them to accurately @@ -110,20 +106,17 @@ f_dialog_menu_netdev() # Mark any "active" interfaces with an asterisk (*) # to the right of the device name. # - interfaces=$( + menu_list=$( for ifn in $iflist; do - active=$( ifconfig $ifn | awk \ - ' - ( $1 == "status:" ) \ - { - if ( $2 == "active" ) { print 1; exit } - } - ' ) + active=$( ifconfig $ifn 2> /dev/null | awk ' + ($1 == "status:") { + if ($2 == "active") { print 1; exit } + }' ) printf "'%s%s' '%s'\n" \ $ifn "${active:+*}" "$( f_device_desc $ifn )" done ) - if [ ! "$interfaces" ]; then + if [ ! "$menu_list" ]; then f_show_msg "$msg_no_network_interfaces" return $DIALOG_CANCEL fi @@ -132,8 +125,8 @@ f_dialog_menu_netdev() # Maybe the default item was marked as active # if [ "$defaultitem" ]; then - ifconfig "$defaultitem" 2> /dev/null | awk \ - '( $1 == "status:" && $2 != "active" ) { exit 0 }' || + ifconfig "$defaultitem" 2> /dev/null | + awk '($1 == "status:" && $2 == "active"){exit 1}' || defaultitem="$defaultitem*" fi @@ -149,7 +142,7 @@ f_dialog_menu_netdev() \"\$DIALOG_BACKTITLE\" \ \"\$prompt\" \ \"\$hline\" \ - $interfaces + $menu_list local menu_choice menu_choice=$( eval $DIALOG \ --title \"\$DIALOG_TITLE\" \ @@ -160,7 +153,7 @@ f_dialog_menu_netdev() --default-item \"\$defaultitem\" \ --menu \"\$prompt\" \ $height $width $rows \ - $interfaces \ + $menu_list \ 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD ) local retval=$? @@ -284,22 +277,23 @@ f_dialog_menu_netdev_edit() msg=$( printf "$msg_scanning_for_dhcp" "$interface" ) if [ "$USE_XDIALOG" ]; then ( - f_quietly ifconfig $interface delete - f_quietly dhclient $interface + f_quietly ifconfig "$interface" delete + f_quietly dhclient "$interface" ) | f_xdialog_info "$msg" else f_dialog_info "$msg" - f_quietly ifconfig $interface delete - f_quietly dhclient $interface + f_quietly ifconfig "$interface" delete + f_quietly dhclient "$interface" fi ) retval=$? trap 'interrupt' SIGINT if [ $retval -eq $DIALOG_OK ]; then dhcp=1 - ipaddr=$( f_ifconfig_inet $interface ) - netmask=$( f_ifconfig_netmask $interface ) + f_ifconfig_inet "$interface" ipaddr + f_ifconfig_inet6 "$interface" ipaddr6 + f_ifconfig_netmask "$interface" netmask options= # Fixup search/domain in resolv.conf(5) Modified: stable/10/usr.sbin/bsdconfig/share/media/tcpip.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/share/media/tcpip.subr Wed Jan 15 06:17:15 2014 (r260674) +++ stable/10/usr.sbin/bsdconfig/share/media/tcpip.subr Wed Jan 15 07:36:34 2014 (r260675) @@ -110,10 +110,11 @@ f_struct_define DHCP_LEASE \ # begin or end with a hyphen). # 3 One or more individual labels within the hostname are null. # -# f_dialog_validate_hostname $hostname +# To call this function and display an appropriate error message to the user +# based on the above error codes, use the following function defined in +# dialog.subr: # -# If the hostname is determined to be invalid, the appropriate error will be -# displayed using the f_show_msg function. +# f_dialog_validate_hostname $hostname # f_validate_hostname() { Modified: stable/10/usr.sbin/bsdconfig/share/variable.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/share/variable.subr Wed Jan 15 06:17:15 2014 (r260674) +++ stable/10/usr.sbin/bsdconfig/share/variable.subr Wed Jan 15 07:36:34 2014 (r260675) @@ -179,7 +179,7 @@ f_debugging() f_getvar $VAR_DEBUG value && [ "$value" ] } -# f_interactive() +# f_interactive # # Are we running interactively? Return error if $nonInteractive is set and non- # NULL, otherwise return success. @@ -190,7 +190,7 @@ f_interactive() ! f_getvar $VAR_NONINTERACTIVE value || [ ! "$value" ] } -# f_netinteractive() +# f_netinteractive # # Has the user specifically requested the network-portion of configuration and # setup to be performed interactively? Returns success if the user has asked @@ -205,7 +205,7 @@ f_netinteractive() f_getvar $VAR_NETINTERACTIVE value && [ "$value" ] } -# f_zfsinteractive() +# f_zfsinteractive # # Has the user specifically requested the ZFS-portion of configuration and # setup to be performed interactively? Returns success if the user has asked Modified: stable/10/usr.sbin/bsdconfig/startup/include/messages.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/startup/include/messages.subr Wed Jan 15 06:17:15 2014 (r260674) +++ stable/10/usr.sbin/bsdconfig/startup/include/messages.subr Wed Jan 15 07:36:34 2014 (r260675) @@ -39,8 +39,8 @@ msg_all_desc="Select all directives" msg_all_help="Select all displayed rc.conf(5) configuration directives" msg_apm="APM" msg_apm_desc="Auto-power management services (typically laptops)" -msg_are_you_sure_you_want_to_delete="Are you sure you want to delete the \`%s' directive\nfrom the rc.conf(5) collection of system configuration files?" msg_are_you_sure_you_want_delete_the_following="Are you sure you want to delete the following directives\nfrom the rc.conf(5) collection of system configuration files?" +msg_are_you_sure_you_want_to_delete="Are you sure you want to delete the \`%s' directive\nfrom the rc.conf(5) collection of system configuration files?" msg_cancel="Cancel" msg_choose_view_details="Choose View Details" msg_creating_menu_list="Creating menu list...\nThis may take a while." @@ -67,8 +67,8 @@ msg_exit_this_menu="Exit this menu" msg_info="Info" msg_lpd="lpd" msg_lpd_desc="This host has a printer and wants to run lpd." -msg_miscellaneous_startup_services="Miscellaneous Startup Services" msg_miscellaneous_menu_text="This menu allows you to configure various aspects of your system's\nstartup configuration. Use [SPACE] or [ENTER] to select items, and\n[TAB] to move to the buttons. Select Exit to leave this menu." +msg_miscellaneous_startup_services="Miscellaneous Startup Services" msg_named="named" msg_named_desc="Run a local name server on this host" msg_named_flags="named flags" Modified: stable/10/usr.sbin/bsdconfig/usermgmt/include/messages.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/usermgmt/include/messages.subr Wed Jan 15 06:17:15 2014 (r260674) +++ stable/10/usr.sbin/bsdconfig/usermgmt/include/messages.subr Wed Jan 15 07:36:34 2014 (r260675) @@ -32,9 +32,9 @@ hline_arrows_space_tab_enter="Use arrows hline_arrows_tab_enter="Press arrows, TAB or ENTER" hline_num_arrows_tab_enter="Use numbers, arrows, TAB or ENTER" hline_num_tab_enter="Use numbers, TAB or ENTER" +msg_account_does_not_expire="Account does not expire" msg_account_expires_in_how_many_days="Account expires in how many days?" msg_account_expires_on="Account Expires on" -msg_account_does_not_expire="Account does not expire" msg_add="Add" msg_add_group="Add Group" msg_add_login="Add Login" @@ -65,9 +65,9 @@ msg_group="Group" msg_group_added="Group Added" msg_group_already_used="%s: Group is already used." msg_group_deleted="Group Deleted" -msg_group_is_empty="Group is empty." msg_group_id="Group ID" msg_group_id_leave_empty_for_default="Group ID (Leave empty for default)" +msg_group_is_empty="Group is empty." msg_group_members="Group Members" msg_group_must_start_with_letter="Group must start with a letter." msg_group_not_found="%s: Group not found." @@ -89,21 +89,21 @@ msg_login_not_found="Login not found." msg_login_updated="Login Updated" msg_member_of_groups="Member of Groups" msg_n_a="N/A" -msg_number_of_seconds_since_epoch="Number of seconds since the Epoch\n(1 = %s)\nNULL or zero to disable:" msg_no="No" +msg_number_of_seconds_since_epoch="Number of seconds since the Epoch\n(1 = %s)\nNULL or zero to disable:" msg_ok="OK" msg_password="Password" +msg_password_does_not_expire="Password does not expire" msg_password_expires_in_how_many_days="Password expires in how many days?" msg_password_expires_on="Password Expires on" msg_passwords_do_not_match="Passwords do not match." -msg_password_does_not_expire="Password does not expire" msg_reenter_group_password="Re-enter Group Password" msg_reenter_password="Re-enter Password" msg_save="Save" msg_save_exit_or_cancel="Choose Save/Exit when finished or Cancel." -msg_separated_by_commas="Separated by commas" msg_select_group_members_from_list="Select Group Members from a list" msg_select_login_shell="Select Login Shell" +msg_separated_by_commas="Separated by commas" msg_shell="Shell" msg_unknown_user_management_menu_selection="Unknown user management menu selection" msg_use_default_values_for_all_account_details="Use default values for all account details?" From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 07:42:32 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CAC2A75D; Wed, 15 Jan 2014 07:42:32 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B4BF51445; Wed, 15 Jan 2014 07:42:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F7gWQG016432; Wed, 15 Jan 2014 07:42:32 GMT (envelope-from dteske@svn.freebsd.org) Received: (from dteske@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F7gWpR016429; Wed, 15 Jan 2014 07:42:32 GMT (envelope-from dteske@svn.freebsd.org) Message-Id: <201401150742.s0F7gWpR016429@svn.freebsd.org> From: Devin Teske Date: Wed, 15 Jan 2014 07:42:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260676 - in stable/10/usr.sbin/bsdconfig: networking networking/share share X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 07:42:32 -0000 Author: dteske Date: Wed Jan 15 07:42:31 2014 New Revision: 260676 URL: http://svnweb.freebsd.org/changeset/base/260676 Log: MFC r258458: Improve network device scanning in the netdev module. First, make it use the `device.subr' framework (improving performane and reducing sub-shells). Next improve the `device.subr' framework itself. Make use of the `flags' device struct member for network interfaces to indicate if an interface is Active, Wired Ethernet, or 802.11 Wireless. Functions have been added to make checks against the `flags' bit-field quick and efficient. Last, add function for rescanning the network to update the device registers. Remove an unnecessary local (ifn) while we're here (use already provided local `if'). Modified: stable/10/usr.sbin/bsdconfig/networking/devices stable/10/usr.sbin/bsdconfig/networking/share/device.subr stable/10/usr.sbin/bsdconfig/share/device.subr Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/bsdconfig/networking/devices ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/devices Wed Jan 15 07:36:34 2014 (r260675) +++ stable/10/usr.sbin/bsdconfig/networking/devices Wed Jan 15 07:42:31 2014 (r260676) @@ -28,6 +28,12 @@ # ############################################################ INCLUDES +# Prevent device.subr (included indirectly) from auto scanning; this will be +# performed indirectly later via f_dialog_menu_netdev() -- but only after we've +# successfully completed f_mustberoot_init(). +# +DEVICE_SELF_SCAN_ALL=NO + BSDCFG_SHARE="/usr/share/bsdconfig" . $BSDCFG_SHARE/common.subr || exit 1 f_dprintf "%s: loading includes..." "$0" Modified: stable/10/usr.sbin/bsdconfig/networking/share/device.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/share/device.subr Wed Jan 15 07:36:34 2014 (r260675) +++ stable/10/usr.sbin/bsdconfig/networking/share/device.subr Wed Jan 15 07:42:31 2014 (r260676) @@ -74,8 +74,10 @@ f_dialog_menu_netdev() # # Get list of usable network interfaces # - local if iflist= # Calculated below - for if in $( ifconfig -l ); do + local devs if iflist= # Calculated below + f_device_rescan_network + f_device_find "" $DEVICE_TYPE_NETWORK devs + for if in $devs; do # Skip unsavory interfaces case "$if" in lo[0-9]*|ppp[0-9]*|sl[0-9]*|faith[0-9]*) continue ;; @@ -91,9 +93,8 @@ f_dialog_menu_netdev() if [ "$DIALOG_MENU_NETDEV_KICK_INTERFACES" ]; then DIALOG_MENU_NETDEV_KICK_INTERFACES= - local ifn - for ifn in $iflist; do - f_quietly ifconfig $ifn up + for if in $iflist; do + f_quietly ifconfig $if up done if [ "$DIALOG_MENU_NETDEV_SLEEP_AFTER_KICK" ]; then @@ -107,13 +108,14 @@ f_dialog_menu_netdev() # to the right of the device name. # menu_list=$( - for ifn in $iflist; do - active=$( ifconfig $ifn 2> /dev/null | awk ' - ($1 == "status:") { - if ($2 == "active") { print 1; exit } - }' ) - printf "'%s%s' '%s'\n" \ - $ifn "${active:+*}" "$( f_device_desc $ifn )" + for if in $iflist; do + f_device_desc $if $DEVICE_TYPE_NETWORK desc + f_shell_escape "$desc" desc + if f_device_is_active $if; then + printf "'%s\*' '%s'\n" $if "$desc" + else + printf "'%s' '%s'\n" $if "$desc" + fi done ) if [ ! "$menu_list" ]; then @@ -121,21 +123,14 @@ f_dialog_menu_netdev() return $DIALOG_CANCEL fi - # # Maybe the default item was marked as active - # - if [ "$defaultitem" ]; then - ifconfig "$defaultitem" 2> /dev/null | - awk '($1 == "status:" && $2 == "active"){exit 1}' || - defaultitem="$defaultitem*" - fi - - local hline="$hline_arrows_tab_enter" + f_device_is_active "$defaultitem" && defaultitem="$defaultitem*" # # Ask user to select an interface # local prompt="$msg_select_network_interface" + local hline="$hline_arrows_tab_enter" local height width rows eval f_dialog_menu_size height width rows \ \"\$DIALOG_TITLE\" \ Modified: stable/10/usr.sbin/bsdconfig/share/device.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/share/device.subr Wed Jan 15 07:36:34 2014 (r260675) +++ stable/10/usr.sbin/bsdconfig/share/device.subr Wed Jan 15 07:42:31 2014 (r260676) @@ -76,6 +76,11 @@ setvar DEVICE_TYPE_ANY 11 setvar DEVICE_TYPE_HTTP_PROXY 12 setvar DEVICE_TYPE_HTTP 13 +# Network devices have the following flags available +setvar IF_ETHERNET 1 +setvar IF_WIRELESS 2 +setvar IF_ACTIVE 4 + # # Default behavior is to call f_device_get_all() automatically when loaded. # @@ -175,6 +180,33 @@ f_device_reset() DEVICES= } +# f_device_reset_network +# +# Reset the registered network device chain. +# +f_device_reset_network() +{ + local dev type private pruned_list= + for dev in $DEVICES; do + device_$dev get type type + if [ "$type" != "$DEVICE_TYPE_NETWORK" ]; then + pruned_list="$pruned_list $dev" + continue + fi + + # + # Leave the device up (don't call shutdown routine) + # + + # Network devices may have DEVICE_INFO private member + device_$dev get private private + [ "$private" ] && f_struct_free "$private" + + f_struct_free device_$dev + done + DEVICES="${pruned_list# }" +} + # f_device_get_all # # Get all device information for devices we have attached. @@ -187,20 +219,7 @@ f_device_get_all() f_dialog_info "$msg_probing_devices_please_wait_this_can_take_a_while" # First go for the network interfaces - for devname in $( ifconfig -l ); do - # Eliminate network devices that don't make sense - case "$devname" in - lo*) continue ;; - esac - - # Try and find its description - f_device_desc "$devname" $DEVICE_TYPE_NETWORK desc - - f_dprintf "Found a network device named %s" "$devname" - f_device_register $devname \ - "$desc" "$devname" $DEVICE_TYPE_NETWORK 1 \ - f_media_init_network "" f_media_shutdown_network "" -1 - done + f_device_get_all_network # Next, try to find all the types of devices one might use # as a media source for content @@ -378,6 +397,48 @@ f_device_get_all() done # disks } +# f_device_get_all_network +# +# Get all network device information for attached network devices. +# +f_device_get_all_network() +{ + local devname desc flags + for devname in $( ifconfig -l ); do + # Eliminate network devices that don't make sense + case "$devname" in + lo*) continue ;; + esac + + # Try and find its description + f_device_desc "$devname" $DEVICE_TYPE_NETWORK desc + + f_dprintf "Found a network device named %s" "$devname" + f_device_register $devname \ + "$desc" "$devname" $DEVICE_TYPE_NETWORK 1 \ + f_media_init_network "" f_media_shutdown_network "" -1 + + # Set flags based on media and status + flags=0 + eval "$( ifconfig $devname 2> /dev/null | awk -v var=flags ' + function _or(var, mask) { + printf "%s=$(( $%s | $%s ))\n", var, var, mask + } + BEGIN { S = "[[:space:]]+" } + { + if (!match($0, "^" S "(media|status):" S)) next + value = substr($0, RLENGTH + 1) + if ($1 == "media:") { + if (value ~ /Ethernet/) _or(var, "IF_ETHERNET") + if (value ~ /802\.11/) _or(var, "IF_WIRELESS") + } else if ($1 == "status:") { + if (value ~ /^active/) _or(var, "IF_ACTIVE") + } + }' )" + device_$devname set flags $flags + done +} + # f_device_name_get $type $name type|desc|max [$var_to_set] # # Fetch the device type (type), description (desc), or maximum number of @@ -571,6 +632,72 @@ f_device_desc() return $FAILURE } +# f_device_is_ethernet $device +# +# Returns true if $device is a wired Ethernet network interface. Otherwise +# returns false. Example wired interfaces include: fxp0 em0 bge0 rl0 etc. +# +f_device_is_ethernet() +{ + local dev="$1" type flags + + # Make sure we have an actual device by that name + f_struct "device_$dev" || return $FAILURE + + # Make sure that the device is a network device + device_$dev get type type + [ "$type" = "$DEVICE_TYPE_NETWORK" ] || return $FAILURE + + # Make sure that the media flags indicate that it is Ethernet + device_$dev get flags flags + [ $(( ${flags:-0} & $IF_ETHERNET )) -eq $IF_ETHERNET ] +} + +# f_device_is_wireless $device +# +# Returns true if $device is a Wireless network interface. Otherwise returns +# false. Examples of wireless interfaces include: iwn0 +# +f_device_is_wireless() +{ + local dev="$1" type flags + + # Make sure we have an actual device by that name + f_struct "device_$dev" || return $FAILURE + + # Make sure that the device is a network device + device_$dev get type type + [ "$type" = "$DEVICE_TYPE_NETWORK" ] || return $FAILURE + + # Make sure that the media flags indicate that it is Ethernet + device_$dev get flags flags + [ $(( ${flags:-0} & $IF_WIRELESS )) -eq $IF_WIRELESS ] +} + +# f_device_is_active $device +# +# Returns true if $device is active. Otherwise returns false. Currently this +# only works for network interfaces. +# +f_device_is_active() +{ + local dev="$1" type flags=0 + + # Make sure we have an actual device by that name + f_struct "device_$dev" || return $FAILURE + + device_$dev get type type + case "$type" in + $DEVICE_TYPE_NETWORK) + # Make sure that the media flags indicate that it is active + device_$dev get flags flags + [ $(( ${flags:-0} & $IF_ACTIVE )) -eq $IF_ACTIVE ] + ;; + *) + return $FAILURE + esac +} + # f_device_rescan # # Rescan all devices, after closing previous set - convenience function. @@ -581,6 +708,16 @@ f_device_rescan() f_device_get_all } +# f_device_rescan_network +# +# Rescan all network devices, after closing previous set - for convenience. +# +f_device_rescan_network() +{ + f_device_reset_network + f_device_get_all_network +} + # f_device_find $name [$type [$var_to_set]] # # Find one or more registered devices by name, type, or both. Returns a space- From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 07:47:14 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 45DE4988; Wed, 15 Jan 2014 07:47:14 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1777B14A5; Wed, 15 Jan 2014 07:47:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F7lDvN017110; Wed, 15 Jan 2014 07:47:13 GMT (envelope-from dteske@svn.freebsd.org) Received: (from dteske@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F7lD3f017109; Wed, 15 Jan 2014 07:47:13 GMT (envelope-from dteske@svn.freebsd.org) Message-Id: <201401150747.s0F7lD3f017109@svn.freebsd.org> From: Devin Teske Date: Wed, 15 Jan 2014 07:47:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260677 - stable/10 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 07:47:14 -0000 Author: dteske Date: Wed Jan 15 07:47:13 2014 New Revision: 260677 URL: http://svnweb.freebsd.org/changeset/base/260677 Log: MFC missing mergeinfo for r258854. Modified: Directory Properties: stable/10/ (props changed) From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 07:49:24 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 54450AD4; Wed, 15 Jan 2014 07:49:24 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3C55114B8; Wed, 15 Jan 2014 07:49:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F7nOjM017418; Wed, 15 Jan 2014 07:49:24 GMT (envelope-from dteske@svn.freebsd.org) Received: (from dteske@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F7nHVW017377; Wed, 15 Jan 2014 07:49:17 GMT (envelope-from dteske@svn.freebsd.org) Message-Id: <201401150749.s0F7nHVW017377@svn.freebsd.org> From: Devin Teske Date: Wed, 15 Jan 2014 07:49:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260678 - in stable/10/usr.sbin/bsdconfig: console diskmgmt docsinstall dot includes mouse networking networking/share packages password security share share/media share/packages startu... X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 07:49:24 -0000 Author: dteske Date: Wed Jan 15 07:49:17 2014 New Revision: 260678 URL: http://svnweb.freebsd.org/changeset/base/260678 Log: MFC r259054: Performance and debugging enhancements: + Remove UNAME_P=$(...) from startup/misc -- already supplied by common.subr + Use f_getvar instead of $(eval echo \$$var) -- f_getvar is sub-shell free + Add `-e' and `-k var' options to f_eval_catch -- increasing use-cases + Use f_eval_catch to display errors on failure -- reducing duplicated code + Use f_eval_catch when we need output from a command -- improving debugging + Optimize f_isinter of strings.subr for performance -- now sub-shell free + Improve error checking on pidfiles -- using f_eval_catch and f_isinteger + Use $var_to_set arg of f_ifconfig_{inet,netmask} -- eliminate sub-shells + Use f_sprintf instead of $(printf ...) -- consolidate sub-shells + Use $var_to_set arg of f_route_get_default -- eliminate sub-shells + Add f_count to replace $(set -- ...;echo $#) -- eliminate sub-shells + Add f_count_ifs to replace $(IFS=x;set -- ...;echo $#) -- no sub-shells + Replace var="$var${var:+ }..." in loops with var="$var ..." with a follow- up var="${var# }" to trim leading whitespace -- optimize loops + Use $var_to_set arg of f_resolv_conf_nameservers -- eliminate sub-shells + Comments for the f_eval_catch function + Remove a duplicate `local ... desc ...' in f_device_get_all of device.subr + Use $var_to_set arg of f_device_capacity -- eliminate sub-shells + Whitespace fixes in f_dialog_init of dialog.subr + Optimize f_inet_atoi of media/tcpip.subr for performance -- sub-shell free + In several cases, send stderr to /dev/null -- clean up runtime execution + Change f_err of common.subr to go to program stderr not terminal stderr, allowing redirection of output from functions that use f_err + Disable debugging when using f_getvar to get variable argument to f_startup_rcconf_map_expand of startup/rcconf.subr + Use f_replace_all instead of $(echo ... | tr | sed) -- performance + Add a $var_to_set option to f_index_{file,menusel_{command,keyword}} of common.subr -- centralize sub-shells Modified: stable/10/usr.sbin/bsdconfig/console/console stable/10/usr.sbin/bsdconfig/console/font stable/10/usr.sbin/bsdconfig/console/keymap stable/10/usr.sbin/bsdconfig/console/repeat stable/10/usr.sbin/bsdconfig/console/saver stable/10/usr.sbin/bsdconfig/console/screenmap stable/10/usr.sbin/bsdconfig/console/ttys stable/10/usr.sbin/bsdconfig/diskmgmt/diskmgmt stable/10/usr.sbin/bsdconfig/docsinstall/docsinstall stable/10/usr.sbin/bsdconfig/dot/dot stable/10/usr.sbin/bsdconfig/includes/includes stable/10/usr.sbin/bsdconfig/mouse/disable stable/10/usr.sbin/bsdconfig/mouse/enable stable/10/usr.sbin/bsdconfig/mouse/flags stable/10/usr.sbin/bsdconfig/mouse/mouse stable/10/usr.sbin/bsdconfig/mouse/port stable/10/usr.sbin/bsdconfig/mouse/type stable/10/usr.sbin/bsdconfig/networking/defaultrouter stable/10/usr.sbin/bsdconfig/networking/devices stable/10/usr.sbin/bsdconfig/networking/hostname stable/10/usr.sbin/bsdconfig/networking/nameservers stable/10/usr.sbin/bsdconfig/networking/networking stable/10/usr.sbin/bsdconfig/networking/share/device.subr stable/10/usr.sbin/bsdconfig/networking/share/hostname.subr stable/10/usr.sbin/bsdconfig/networking/share/ipaddr.subr stable/10/usr.sbin/bsdconfig/networking/share/media.subr stable/10/usr.sbin/bsdconfig/networking/share/netmask.subr stable/10/usr.sbin/bsdconfig/networking/share/resolv.subr stable/10/usr.sbin/bsdconfig/networking/share/routing.subr stable/10/usr.sbin/bsdconfig/networking/share/services.subr stable/10/usr.sbin/bsdconfig/packages/packages stable/10/usr.sbin/bsdconfig/password/password stable/10/usr.sbin/bsdconfig/security/kern_securelevel stable/10/usr.sbin/bsdconfig/security/security stable/10/usr.sbin/bsdconfig/share/common.subr stable/10/usr.sbin/bsdconfig/share/device.subr stable/10/usr.sbin/bsdconfig/share/dialog.subr stable/10/usr.sbin/bsdconfig/share/keymap.subr stable/10/usr.sbin/bsdconfig/share/media/cdrom.subr stable/10/usr.sbin/bsdconfig/share/media/common.subr stable/10/usr.sbin/bsdconfig/share/media/dos.subr stable/10/usr.sbin/bsdconfig/share/media/floppy.subr stable/10/usr.sbin/bsdconfig/share/media/ftp.subr stable/10/usr.sbin/bsdconfig/share/media/nfs.subr stable/10/usr.sbin/bsdconfig/share/media/tcpip.subr stable/10/usr.sbin/bsdconfig/share/media/ufs.subr stable/10/usr.sbin/bsdconfig/share/media/usb.subr stable/10/usr.sbin/bsdconfig/share/mustberoot.subr stable/10/usr.sbin/bsdconfig/share/packages/categories.subr stable/10/usr.sbin/bsdconfig/share/packages/index.subr stable/10/usr.sbin/bsdconfig/share/packages/packages.subr stable/10/usr.sbin/bsdconfig/share/strings.subr stable/10/usr.sbin/bsdconfig/share/sysrc.subr stable/10/usr.sbin/bsdconfig/startup/misc stable/10/usr.sbin/bsdconfig/startup/rcadd stable/10/usr.sbin/bsdconfig/startup/rcconf stable/10/usr.sbin/bsdconfig/startup/rcdelete stable/10/usr.sbin/bsdconfig/startup/rcedit stable/10/usr.sbin/bsdconfig/startup/rcvar stable/10/usr.sbin/bsdconfig/startup/share/rcconf.subr stable/10/usr.sbin/bsdconfig/startup/share/rcedit.subr stable/10/usr.sbin/bsdconfig/startup/share/rcvar.subr stable/10/usr.sbin/bsdconfig/startup/startup stable/10/usr.sbin/bsdconfig/timezone/share/zones.subr stable/10/usr.sbin/bsdconfig/timezone/timezone stable/10/usr.sbin/bsdconfig/ttys/ttys stable/10/usr.sbin/bsdconfig/usermgmt/groupadd stable/10/usr.sbin/bsdconfig/usermgmt/groupdel stable/10/usr.sbin/bsdconfig/usermgmt/groupedit stable/10/usr.sbin/bsdconfig/usermgmt/groupinput stable/10/usr.sbin/bsdconfig/usermgmt/share/group_input.subr stable/10/usr.sbin/bsdconfig/usermgmt/share/user_input.subr stable/10/usr.sbin/bsdconfig/usermgmt/useradd stable/10/usr.sbin/bsdconfig/usermgmt/userdel stable/10/usr.sbin/bsdconfig/usermgmt/useredit stable/10/usr.sbin/bsdconfig/usermgmt/userinput stable/10/usr.sbin/bsdconfig/usermgmt/usermgmt Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/bsdconfig/console/console ============================================================================== --- stable/10/usr.sbin/bsdconfig/console/console Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/console/console Wed Jan 15 07:49:17 2014 (r260678) @@ -37,8 +37,8 @@ f_include $BSDCFG_SHARE/mustberoot.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ FUNCTIONS Modified: stable/10/usr.sbin/bsdconfig/console/font ============================================================================== --- stable/10/usr.sbin/bsdconfig/console/font Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/console/font Wed Jan 15 07:49:17 2014 (r260678) @@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ FUNCTIONS @@ -174,14 +174,16 @@ esac [ "$f8" -a "$f14" -a "$f16" ] || f_die 1 "$msg_unknown_font_selection" -f_sysrc_set font8x8 "$f8" || f_die -f_sysrc_set font8x14 "$f14" || f_die -f_sysrc_set font8x16 "$f16" || f_die +f_eval_catch "$0" f_sysrc_set 'f_sysrc_set font8x8 "%s"' "$f8" || f_die +f_eval_catch "$0" f_sysrc_set 'f_sysrc_set font8x14 "%s"' "$f14" || f_die +f_eval_catch "$0" f_sysrc_set 'f_sysrc_set font8x16 "%s"' "$f16" || f_die if [ "$mc_start" ]; then - f_sysrc_set mousechar_start "$mc_start" || f_die + f_eval_catch "$0" f_sysrc_set \ + 'f_sysrc_set mousechar_start "%s"' "$mc_start" || f_die else - f_sysrc_delete mousechar_start || f_die + f_eval_catch "$0" f_sysrc_delete \ + 'f_sysrc_delete mousechar_start' || f_die fi exit $SUCCESS Modified: stable/10/usr.sbin/bsdconfig/console/keymap ============================================================================== --- stable/10/usr.sbin/bsdconfig/console/keymap Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/console/keymap Wed Jan 15 07:49:17 2014 (r260678) @@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ CONFIGURATION @@ -246,10 +246,8 @@ while :; do keymap_name= mtag="${mtag# }" # remove single leading-space if-present for name in $KEYMAP_NAMES; do - if [ "$( eval echo \"\$msg_$name\" )" = "$mtag" ]; then - keymap_name="$name" - break - fi + debug= f_getvar msg_$name msg + [ "$msg" = "$mtag" ] && keymap_name="$name" break done [ "$keymap_name" ] || continue @@ -319,7 +317,8 @@ while :; do esac if [ "$keymap_to_set" ]; then - f_sysrc_set keymap "$keymap_to_set" || f_die + f_eval_catch "$0" f_sysrc_set \ + 'f_sysrc_set keymap "%s"' "$keymap_to_set" || f_die break else f_die 1 "$msg_unknown_keymap" Modified: stable/10/usr.sbin/bsdconfig/console/repeat ============================================================================== --- stable/10/usr.sbin/bsdconfig/console/repeat Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/console/repeat Wed Jan 15 07:49:17 2014 (r260678) @@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ FUNCTIONS @@ -129,7 +129,8 @@ case "$mtag" in esac if [ "$repeat_rate_to_set" ]; then - f_sysrc_set keyrate "$repeat_rate_to_set" || f_die + f_eval_catch "$0" f_sysrc_set \ + 'f_sysrc_set keyrate "%s"' "$repeat_rate_to_set" || f_die break else f_die 1 "$msg_unknown_repeat_rate" Modified: stable/10/usr.sbin/bsdconfig/console/saver ============================================================================== --- stable/10/usr.sbin/bsdconfig/console/saver Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/console/saver Wed Jan 15 07:49:17 2014 (r260678) @@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ FUNCTIONS @@ -144,7 +144,8 @@ case "$mtag" in f_dialog_title "$msg_value_required" f_dialog_input blanktime "$msg_enter_timeout_period" \ "$( f_sysrc_get blanktime )" && - f_sysrc_set blanktime "$blanktime" || f_die + f_eval_catch "$0" f_sysrc_set \ + 'f_sysrc_set blanktime "%s"' "$blanktime" || f_die f_dialog_title_restore exit $SUCCESS esac @@ -180,7 +181,8 @@ case "$mtag" in esac if [ "$saver_to_set" ]; then - f_sysrc_set saver "$saver_to_set" || f_die + f_eval_catch "$0" f_sysrc_set \ + 'f_sysrc_set saver "%s"' "$saver_to_set" || f_die break else f_die 1 "$msg_unknown_saver" Modified: stable/10/usr.sbin/bsdconfig/console/screenmap ============================================================================== --- stable/10/usr.sbin/bsdconfig/console/screenmap Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/console/screenmap Wed Jan 15 07:49:17 2014 (r260678) @@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ FUNCTIONS @@ -141,7 +141,8 @@ case "$mtag" in esac if [ "$scrnmap_to_set" ]; then - f_sysrc_set scrnmap "$scrnmap_to_set" || f_die + f_eval_catch "$0" f_sysrc_set \ + 'f_sysrc_set scrnmap "%s"' "$scrnmap_to_set" || f_die break else f_die 1 "$msg_unknown_screenmap_selection" Modified: stable/10/usr.sbin/bsdconfig/console/ttys ============================================================================== --- stable/10/usr.sbin/bsdconfig/console/ttys Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/console/ttys Wed Jan 15 07:49:17 2014 (r260678) @@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ CONFIGURATION @@ -108,23 +108,28 @@ dialog_menu_main() # ttys_set_type() { + local funcname=ttys_set_type local consterm="$1" err # # Create new temporary file to write our ttys(5) update with new types. # - local tmpfile="$( mktemp -t "$pgm" )" - [ "$tmpfile" ] || return $FAILURE + local tmpfile + f_eval_catch -k tmpfile $funcname mktemp 'mktemp -t "%s"' "$pgm" || + return $FAILURE # # Fixup permissions and ownership (mktemp(1) creates the temporary file # with 0600 permissions -- change the permissions and ownership to # match ttys(5) before we write it out and mv(1) it into place). # - local mode="$( stat -f '%#Lp' "$ETC_TTYS" 2> /dev/null )" - local owner="$( stat -f '%u:%g' "$ETC_TTYS" 2> /dev/null )" - f_quietly chmod "${mode:-0644}" "$tmpfile" - f_quietly chown "${owner:-root:wheel}" "$tmpfile" + local mode owner + f_eval_catch -dk mode $funcname stat \ + 'stat -f "%%#Lp" "%s"' "$ETC_TTYS" || mode=0644 + f_eval_catch -dk owner $funcname stat \ + 'stat -f "%%u:%%g" "%s"' "$ETC_TTYS" || owner="root:wheel" + f_eval_catch -d $funcname chmod 'chmod "%s" "%s"' "$mode" "$tmpfile" + f_eval_catch -d $funcname chown 'chown "%s" "%s"' "$owner" "$tmpfile" # # Operate on ttys(5), replacing only the types of `ttyv*' and @@ -156,10 +161,8 @@ ttys_set_type() f_dialog_msgbox "$err" return $FAILURE fi - if ! err=$( mv -f "$tmpfile" "$ETC_TTYS" 2>&1 ); then - f_dialog_msgbox "$err" + f_eval_catch $funcname mv 'mv -f "%s" "%s"' "$tmpfile" "$ETC_TTYS" || return $FAILURE - fi return $SUCCESS } Modified: stable/10/usr.sbin/bsdconfig/diskmgmt/diskmgmt ============================================================================== --- stable/10/usr.sbin/bsdconfig/diskmgmt/diskmgmt Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/diskmgmt/diskmgmt Wed Jan 15 07:49:17 2014 (r260678) @@ -37,8 +37,8 @@ f_include $BSDCFG_SHARE/mustberoot.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="050.diskmgmt" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ CONFIGURATION Modified: stable/10/usr.sbin/bsdconfig/docsinstall/docsinstall ============================================================================== --- stable/10/usr.sbin/bsdconfig/docsinstall/docsinstall Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/docsinstall/docsinstall Wed Jan 15 07:49:17 2014 (r260678) @@ -37,8 +37,8 @@ f_include $BSDCFG_SHARE/mustberoot.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="020.docsinstall" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ CONFIGURATION Modified: stable/10/usr.sbin/bsdconfig/dot/dot ============================================================================== --- stable/10/usr.sbin/bsdconfig/dot/dot Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/dot/dot Wed Jan 15 07:49:17 2014 (r260678) @@ -41,8 +41,8 @@ BSDCFG_LIBE="/usr/libexec/bsdconfig" APP f_include_lang $BSDCFG_LIBE/include/messages.subr f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ CONFIGURATION Modified: stable/10/usr.sbin/bsdconfig/includes/includes ============================================================================== --- stable/10/usr.sbin/bsdconfig/includes/includes Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/includes/includes Wed Jan 15 07:49:17 2014 (r260678) @@ -41,8 +41,8 @@ BSDCFG_LIBE="/usr/libexec/bsdconfig" APP f_include_lang $BSDCFG_LIBE/include/messages.subr f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ GLOBALS Modified: stable/10/usr.sbin/bsdconfig/mouse/disable ============================================================================== --- stable/10/usr.sbin/bsdconfig/mouse/disable Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/mouse/disable Wed Jan 15 07:49:17 2014 (r260678) @@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="110.mouse" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ CONFIGURATION @@ -73,12 +73,16 @@ f_mustberoot_init # # Stop the mouse daemon # -[ -r "$MOUSED_PIDFILE" ] && - f_quietly kill "$( cat "$MOUSED_PIDFILE" )" -f_sysrc_set moused_enable "NO" || f_die -f_sysrc_set moused_type "NO" || f_die -f_sysrc_delete moused_port || f_die -f_sysrc_delete moused_flags || f_die +if [ -r "$MOUSED_PIDFILE" ]; then + f_eval_catch -dk pid "$0" cat 'cat "%s"' "$MOUSED_PIDFILE" && + f_isinteger "$pid" && + [ $pid -gt 0 ] && + f_eval_catch -d "$0" kill 'kill %s' $pid +fi +f_eval_catch "$0" f_sysrc_set 'f_sysrc_set moused_enable NO' || f_die +f_eval_catch "$0" f_sysrc_set 'f_sysrc_set moused_type NO' || f_die +f_eval_catch "$0" f_sysrc_delete 'f_sysrc_delete moused_port' || f_die +f_eval_catch "$0" f_sysrc_delete 'f_sysrc_delete moused_flags' || f_die # # Message box Modified: stable/10/usr.sbin/bsdconfig/mouse/enable ============================================================================== --- stable/10/usr.sbin/bsdconfig/mouse/enable Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/mouse/enable Wed Jan 15 07:49:17 2014 (r260678) @@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="110.mouse" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ CONFIGURATION @@ -85,10 +85,15 @@ flags=$( f_sysrc_get moused_flags ) # Start the mouse daemon # f_dialog_info "$msg_trying_to_start_the_mouse_daemon" -[ -r "$MOUSED_PIDFILE" ] && - f_quietly kill "$( cat "$MOUSED_PIDFILE" 2> /dev/null )" -f_quietly vidcontrol -m on -f_quietly moused -t "$type" -p "$port" $flags +if [ -r "$MOUSED_PIDFILE" ]; then + f_eval_catch -dk pid "$0" cat 'cat "%s"' "$MOUSED_PIDFILE" && + f_isinteger "$pid" && + [ $pid -gt 0 ] && + f_eval_catch -d "$0" kill 'kill %s' $pid +fi +f_eval_catch -d "$0" vidcontrol 'vidcontrol -m on' +f_eval_catch -d "$0" moused \ + 'moused -t "%s" -p "%s" %s' "$type" "$port" "$flags" # # Confirm with the user that the mouse is working @@ -101,14 +106,19 @@ f_dialog_title_restore # # Stop the mouse daemon # -f_quietly vidcontrol -m off +f_eval_catch -d "$0" vidcontrol 'vidcontrol -m off' if [ $retval -eq $DIALOG_OK ]; then - f_sysrc_set moused_enable "YES" || f_die - ln -fs /dev/sysmouse /dev/mouse || f_die # backwards compat + f_eval_catch "$0" f_sysrc_set 'f_sysrc_set moused_enable YES' || f_die + f_eval_catch "$0" ln \ + 'ln -fs /dev/sysmouse /dev/mouse' || f_die # backwards compat else - [ -r "$MOUSED_PIDFILE" ] && - f_quietly kill "$( cat "$MOUSED_PIDFILE" )" - f_sysrc_set moused_enable "NO" || f_die + if [ -r "$MOUSED_PIDFILE" ]; then + f_eval_catch -dk pid "$0" cat 'cat "%s"' "$MOUSED_PIDFILE" && + f_isinteger "$pid" && + [ $pid -gt 0 ] && + f_eval_catch -d "$0" kill 'kill %s' $pid + fi + f_eval_catch "$0" f_sysrc_set 'f_sysrc_set moused_enable NO' || f_die fi exit $SUCCESS Modified: stable/10/usr.sbin/bsdconfig/mouse/flags ============================================================================== --- stable/10/usr.sbin/bsdconfig/mouse/flags Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/mouse/flags Wed Jan 15 07:49:17 2014 (r260678) @@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="110.mouse" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ CONFIGURATION @@ -86,7 +86,7 @@ f_dialog_title_restore # # Save the new value # -f_sysrc_set moused_flags "$flags" || f_die +f_eval_catch "$0" f_sysrc_set 'f_sysrc_set moused_flags "%s"' "$flags" || f_die exit $SUCCESS Modified: stable/10/usr.sbin/bsdconfig/mouse/mouse ============================================================================== --- stable/10/usr.sbin/bsdconfig/mouse/mouse Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/mouse/mouse Wed Jan 15 07:49:17 2014 (r260678) @@ -37,8 +37,8 @@ f_include $BSDCFG_SHARE/mustberoot.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="110.mouse" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ FUNCTIONS Modified: stable/10/usr.sbin/bsdconfig/mouse/port ============================================================================== --- stable/10/usr.sbin/bsdconfig/mouse/port Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/mouse/port Wed Jan 15 07:49:17 2014 (r260678) @@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="110.mouse" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ FUNCTIONS @@ -141,7 +141,8 @@ case "$mtag" in esac if [ "$moused_port_to_set" ]; then - f_sysrc_set moused_port "$moused_port_to_set" || f_die + f_eval_catch "$0" f_sysrc_set \ + 'f_sysrc_set moused_port "%s"' "$moused_port_to_set" || f_die else f_die 1 "$msg_unknown_mouse_port_selection" fi Modified: stable/10/usr.sbin/bsdconfig/mouse/type ============================================================================== --- stable/10/usr.sbin/bsdconfig/mouse/type Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/mouse/type Wed Jan 15 07:49:17 2014 (r260678) @@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="110.mouse" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ FUNCTIONS @@ -157,7 +157,8 @@ case "$mtag" in esac if [ "$moused_type_to_set" ]; then - f_sysrc_set moused_type "$moused_type_to_set" || f_die + f_eval_catch "$0" f_sysrc_set \ + 'f_sysrc_set moused_type "%s"' "$moused_type_to_set" || f_die else f_die 1 "$msg_unknown_mouse_protocol_selection" fi Modified: stable/10/usr.sbin/bsdconfig/networking/defaultrouter ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/defaultrouter Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/networking/defaultrouter Wed Jan 15 07:49:17 2014 (r260678) @@ -28,6 +28,9 @@ # ############################################################ INCLUDES +# Prevent device.subr (included indirectly) from auto scanning on load +DEVICE_SELF_SCAN_ALL=NO + BSDCFG_SHARE="/usr/share/bsdconfig" . $BSDCFG_SHARE/common.subr || exit 1 f_dprintf "%s: loading includes..." "$0" @@ -38,8 +41,8 @@ f_include $BSDCFG_SHARE/networking/routi BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ MAIN Modified: stable/10/usr.sbin/bsdconfig/networking/devices ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/devices Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/networking/devices Wed Jan 15 07:49:17 2014 (r260678) @@ -49,8 +49,8 @@ f_include $BSDCFG_SHARE/networking/netma BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ MAIN @@ -143,8 +143,8 @@ while :; do # Fill in IP address/netmask from active settings if no # configuration could be extrapolated from rc.conf(5) # - [ "$_ipaddr" ] || _ipaddr=$( f_ifconfig_inet $interface ) - [ "$_netmask" ] || _netmask=$( f_ifconfig_netmask $interface ) + [ "$_ipaddr" ] || f_ifconfig_inet $interface _ipaddr + [ "$_netmask" ] || f_ifconfig_netmask $interface _netmask # Get the extra options (this always comes from rc.conf(5)) _options=$( f_ifconfig_options $interface ) Modified: stable/10/usr.sbin/bsdconfig/networking/hostname ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/hostname Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/networking/hostname Wed Jan 15 07:49:17 2014 (r260678) @@ -41,8 +41,8 @@ f_include $BSDCFG_SHARE/networking/hostn BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ MAIN Modified: stable/10/usr.sbin/bsdconfig/networking/nameservers ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/nameservers Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/networking/nameservers Wed Jan 15 07:49:17 2014 (r260678) @@ -41,8 +41,8 @@ f_include $BSDCFG_SHARE/networking/resol BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ MAIN Modified: stable/10/usr.sbin/bsdconfig/networking/networking ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/networking Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/networking/networking Wed Jan 15 07:49:17 2014 (r260678) @@ -37,8 +37,8 @@ f_include $BSDCFG_SHARE/mustberoot.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ FUNCTIONS Modified: stable/10/usr.sbin/bsdconfig/networking/share/device.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/share/device.subr Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/networking/share/device.subr Wed Jan 15 07:49:17 2014 (r260678) @@ -40,6 +40,7 @@ f_include $BSDCFG_SHARE/networking/media f_include $BSDCFG_SHARE/networking/netmask.subr f_include $BSDCFG_SHARE/networking/resolv.subr f_include $BSDCFG_SHARE/networking/routing.subr +f_include $BSDCFG_SHARE/strings.subr f_include $BSDCFG_SHARE/sysrc.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking" @@ -163,6 +164,7 @@ f_dialog_menu_netdev() # f_dialog_menu_netdev_edit() { + local funcname=f_dialog_menu_netdev_edit local interface="$1" ipaddr="$2" netmask="$3" options="$4" dhcp="$5" local prompt menu_list height width rows @@ -175,7 +177,7 @@ f_dialog_menu_netdev_edit() dhcp_orig="$5" local hline="$hline_arrows_tab_enter" - prompt=$( printf "$msg_network_configuration" "$interface" ) + f_sprintf prompt "$msg_network_configuration" "$interface" # # Loop forever until the user has finished configuring the different @@ -254,8 +256,9 @@ f_dialog_menu_netdev_edit() # are made is changed parts of the system may hang. # if f_nfs_mounted && ! f_jailed; then - local setting="$( printf "$msg_current_dhcp_status" \ - "$interface" "$dhcp_status" )" + local setting + f_sprintf setting "$msg_current_dhcp_status" \ + "$interface" "$dhcp_status" f_noyes "$msg_nfs_mounts_may_cause_hang" "$setting" || continue fi @@ -269,7 +272,7 @@ f_dialog_menu_netdev_edit() trap - SIGINT ( # Execute within sub-shell to allow/catch Ctrl-C trap 'exit $FAILURE' SIGINT - msg=$( printf "$msg_scanning_for_dhcp" "$interface" ) + f_sprintf msg "$msg_scanning_for_dhcp" "$interface" if [ "$USE_XDIALOG" ]; then ( f_quietly ifconfig "$interface" delete @@ -319,14 +322,16 @@ f_dialog_menu_netdev_edit() local value= if [ "$dhcp" ]; then - f_sysrc_delete defaultrouter + f_eval_catch $funcname f_sysrc_delete \ + 'f_sysrc_delete defaultrouter' value=DHCP else value="inet $ipaddr netmask $netmask" value="$value${options:+ }$options" fi - f_sysrc_set ifconfig_$interface "$value" + f_eval_catch $funcname f_sysrc_set \ + 'f_sysrc_set "ifconfig_%s" "%s"' "$interface" "$value" fi # @@ -337,10 +342,12 @@ f_dialog_menu_netdev_edit() then f_show_info "$msg_bring_interface_up" "$interface" - local dr="$( f_sysrc_get defaultrouter )" err + local dr="$( f_sysrc_get defaultrouter )" if [ "$dr" = "NO" -o ! "$dr" ]; then - dr=$( f_route_get_default ) - [ "$dr" ] && f_sysrc_set defaultrouter "$dr" + f_route_get_default dr + [ "$dr" ] && f_eval_catch \ + $funcname f_sysrc_set \ + 'f_sysrc_set defaultrouter "%s"' "$dr" fi # # Make a backup of resolv.conf(5) before using @@ -351,16 +358,13 @@ f_dialog_menu_netdev_edit() # resolv.conf(5) by-default upon termination). # f_quietly cp -fp "$RESOLV_CONF" "$RESOLV_CONF.$$" - err=$( ifconfig $interface inet $ipaddr \ - netmask $netmask $options 2>&1 ) - if [ $? -eq $SUCCESS ]; then - if [ "$dr" -a "$dr" != "NO" ]; then - err=$( route add default "$dr" 2>&1 ) - [ $? -eq $SUCCESS ] || \ - dialog_msgbox "$err" - fi - else - dialog_msgbox "$err" + if f_eval_catch $funcname ifconfig \ + 'ifconfig "%s" inet "%s" netmask "%s" %s' \ + "$interface" "$ipaddr" "$netmask" "$options" + then + [ "$dr" -a "$dr" != "NO" ] && + f_eval_catch $funcname route \ + 'route add default "%s"' "$dr" fi if cmp -s "$RESOLV_CONF" "$RESOLV_CONF.$$"; then f_quietly rm -f "$RESOLV_CONF.$$" Modified: stable/10/usr.sbin/bsdconfig/networking/share/hostname.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/share/hostname.subr Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/networking/share/hostname.subr Wed Jan 15 07:49:17 2014 (r260678) @@ -95,6 +95,7 @@ f_dialog_validate_hostname() # f_dialog_input_hostname() { + local funcname=f_dialog_input_hostname local hostname="$( f_sysrc_get 'hostname:-$(hostname)' )" local hostname_orig="$hostname" # for change-tracking @@ -120,7 +121,8 @@ f_dialog_input_hostname() # if [ "$hostname" != "$hostname_orig" ]; then f_dialog_info "$msg_saving_hostname" - f_sysrc_set hostname "$hostname" + f_eval_catch $funcname f_sysrc_set \ + 'f_sysrc_set hostname "%s"' "$hostname" fi # Modified: stable/10/usr.sbin/bsdconfig/networking/share/ipaddr.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/share/ipaddr.subr Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/networking/share/ipaddr.subr Wed Jan 15 07:49:17 2014 (r260678) @@ -144,13 +144,14 @@ f_dialog_input_ipaddr() # system may hang (if any NFS mounts are using that interface). # if f_nfs_mounted && ! f_jailed; then - local setting="$( printf "$msg_current_ipaddr" \ - "$interface" "$_ipaddr" )" + local setting + f_sprintf setting "$msg_current_ipaddr" "$interface" "$_ipaddr" f_noyes "$msg_nfs_mounts_may_cause_hang" "$setting" || return $DIALOG_CANCEL fi - local msg="$( printf "$msg_please_enter_new_ip_addr" "$interface" )" + local msg + f_sprintf msg "$msg_please_enter_new_ip_addr" "$interface" # # Loop until the user provides taint-free input. Modified: stable/10/usr.sbin/bsdconfig/networking/share/media.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/share/media.subr Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/networking/share/media.subr Wed Jan 15 07:49:17 2014 (r260678) @@ -115,13 +115,15 @@ f_dialog_input_options() # the system may hang (if any NFS mounts are using that interface). # if f_nfs_mounted && ! f_jailed; then - local setting="$( printf "$msg_current_options" \ - "$interface" "$options" )" + local setting + f_sprintf setting "$msg_current_options" \ + "$interface" "$options" f_noyes "$msg_nfs_mounts_may_cause_hang" "$setting" || return $DIALOG_CANCEL fi - local msg="$( printf "$msg_please_enter_mediaopts" "$interface" )" + local msg + f_sprintf msg "$msg_please_enter_mediaopts" "$interface" local hline="$hline_alnum_punc_tab_enter" local _options @@ -162,8 +164,9 @@ f_dialog_menu_media_options() # the system may hang (if any NFS mounts are using that interface). # if f_nfs_mounted && ! f_jailed; then - local setting="$( printf "$msg_current_options" \ - "$interface" "$_options" )" + local setting + f_sprintf setting "$msg_current_options" \ + "$interface" "$_options" f_noyes "$msg_nfs_mounts_may_cause_hang" "$setting" || return $DIALOG_CANCEL fi @@ -196,11 +199,11 @@ f_dialog_menu_media_options() local msg if [ "$USE_XDIALOG" ]; then - msg=$( printf "$xmsg_supported_media_options" \ - "$interface" "$interface" ) + f_sprintf msg "$xmsg_supported_media_options" \ + "$interface" "$interface" else - msg=$( printf "$msg_supported_media_options" \ - "$interface" "$interface" ) + f_sprintf msg "$msg_supported_media_options" \ + "$interface" "$interface" fi local hline="$hline_arrows_tab_enter" Modified: stable/10/usr.sbin/bsdconfig/networking/share/netmask.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/share/netmask.subr Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/networking/share/netmask.subr Wed Jan 15 07:49:17 2014 (r260678) @@ -94,8 +94,9 @@ f_dialog_input_netmask() # the system may hang (if any NFS mounts are using that interface). # if f_nfs_mounted && ! f_jailed; then - local setting="$( printf "$msg_current_subnet" \ - "$interface" "$_netmask" )" + local setting + f_sprintf setting "$msg_current_subnet" \ + "$interface" "$_netmask" f_noyes "$msg_nfs_mounts_may_cause_hang" "$setting" || return $DIALOG_CANCEL fi @@ -103,7 +104,8 @@ f_dialog_input_netmask() # # Loop until the user provides taint-free input. # - local msg="$( printf "$msg_please_enter_subnet_mask" "$interface" )" + local msg + f_sprintf msg "$msg_please_enter_subnet_mask" "$interface" while :; do # # Return error status if: Modified: stable/10/usr.sbin/bsdconfig/networking/share/resolv.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/share/resolv.subr Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/networking/share/resolv.subr Wed Jan 15 07:49:17 2014 (r260678) @@ -162,20 +162,23 @@ END { ' f_dialog_resolv_conf_update() { + local funcname=f_dialog_resolv_conf_update local hostname="$1" # # Extrapolate the desired domain search parameter for resolv.conf(5) # - local search ndots domain="${hostname#*.}" + local search nfields ndots domain="${hostname#*.}" if [ "$RESOLVER_SEARCH_DOMAINS_ALL" = "1" ]; then - search="" - ndots=$( IFS=.; set -- $domain; echo $(( $# - 1 )) ) + search= + IFS=. f_count_ifs nfields "$domain" + ndots=$(( $nfields - 1 )) while [ $ndots -ge ${RESOLVER_SEARCH_NDOTS:-1} ]; do - search="$search${search:+ }$domain" + search="$search $domain" domain="${domain#*.}" ndots=$(( $ndots - 1 )) done + search="${search# }" domain="${hostname#*.}" else search="$domain" @@ -194,8 +197,9 @@ f_dialog_resolv_conf_update() # Create a new temporary file to write our resolv.conf(5) # update with our new `domain' and `search' directives. # - local tmpfile="$( mktemp -t "$pgm" )" - [ "$tmpfile" ] || return $DIALOG_CANCEL + local tmpfile + f_eval_catch -dk tmpfile $funcname mktemp \ + 'mktemp -t "%s"' "$tmpfile" || return $DIALOG_CANCEL # # Fixup permissions and ownership (mktemp(1) creates the @@ -203,10 +207,16 @@ f_dialog_resolv_conf_update() # permissions and ownership to match resolv.conf(5) before # we write it out and mv(1) it into place). # - local mode="$( stat -f '%#Lp' "$RESOLV_CONF" 2> /dev/null )" - local owner="$( stat -f '%u:%g' "$RESOLV_CONF" 2> /dev/null )" - f_quietly chmod "${mode:-0644}" "$tmpfile" - f_quietly chown "${owner:-root:wheel}" "$tmpfile" + local mode owner + f_eval_catch -dk mode $funcname stat \ + 'stat -f "%%#Lp" "%s"' "$RESOLV_CONF" || mode=0644 + f_eval_catch -dk owner $funcname stat \ + 'stat -f "%%u:%%g" "%s"' "$RESOLV_CONF" || + owner="root:wheel" + f_eval_catch -d $funcname chmod \ + 'chmod "%s" "%s"' "$mode" "$tmpfile" + f_eval_catch -d $funcname chown \ + 'chown "%s" "%s"' "$owner" "$tmpfile" # # Operate on resolv.conf(5), replacing only the last @@ -237,7 +247,8 @@ f_dialog_resolv_conf_update() # echo "$new_contents" | tail -r > "$tmpfile" || return $DIALOG_CANCEL - f_quietly mv "$tmpfile" "$RESOLV_CONF" + f_eval_catch -d $funcname mv \ + 'mv "%s" "%s"' "$tmpfile" "$RESOLV_CONF" fi } @@ -288,6 +299,7 @@ END { if ( ! found ) exit 3 } ' f_dialog_input_nameserver() { + local funcname=f_dialog_input_nameserver local index="${1:-0}" old_ns="$2" new_ns local ns="$old_ns" @@ -344,17 +356,23 @@ f_dialog_input_nameserver() # # Create a new temporary file to write our new resolv.conf(5) # - local tmpfile="$( mktemp -t "$pgm" )" - [ "$tmpfile" ] || return $DIALOG_CANCEL + local tmpfile + f_eval_catch -dk tmpfile $funcname mktemp \ + 'mktemp -t "%s"' "$pgm" || return $DIALOG_CANCEL # # Quietly fixup permissions and ownership # local mode owner - mode=$( stat -f '%#Lp' "$RESOLV_CONF" 2> /dev/null ) - owner=$( stat -f '%u:%g' "$RESOLV_CONF" 2> /dev/null ) - f_quietly chmod "${mode:-0644}" "$tmpfile" - f_quietly chown "${owner:-root:wheel}" "$tmpfile" + f_eval_catch -dk mode $funcname stat \ + 'stat -f "%%#Lp" "%s"' "$RESOLV_CONF" || mode=0644 + f_eval_catch -dk owner $funcname stat \ + 'stat -f "%%u:%%g" "%s"' "$RESOLV_CONF" || + owner="root:wheel" + f_eval_catch -d $funcname chmod \ + 'chmod "%s" "%s"' "$mode" "$tmpfile" + f_eval_catch -d $funcname chown \ + 'chown "%s" "%s"' "$owner" "$tmpfile" # # Operate on resolv.conf(5) @@ -383,7 +401,8 @@ f_dialog_input_nameserver() # file into place. # echo "$new_contents" > "$tmpfile" || return $DIALOG_CANCEL - f_quietly mv "$tmpfile" "$RESOLV_CONF" + f_eval_catch -d $funcname mv \ + 'mv "%s" "%s"' "$tmpfile" "$RESOLV_CONF" fi } @@ -409,7 +428,8 @@ f_dialog_menu_nameservers() # # Re/Build list of nameservers # - local nameservers="$( f_resolv_conf_nameservers )" + local nameservers + f_resolv_conf_nameservers nameservers menu_list=$( index=1 Modified: stable/10/usr.sbin/bsdconfig/networking/share/routing.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/share/routing.subr Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/networking/share/routing.subr Wed Jan 15 07:49:17 2014 (r260678) @@ -35,6 +35,7 @@ f_include $BSDCFG_SHARE/dialog.subr f_include $BSDCFG_SHARE/media/tcpip.subr f_include $BSDCFG_SHARE/networking/common.subr f_include $BSDCFG_SHARE/networking/ipaddr.subr +f_include $BSDCFG_SHARE/strings.subr f_include $BSDCFG_SHARE/sysrc.subr BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking" @@ -48,6 +49,8 @@ f_include_lang $BSDCFG_LIBE/$APP_DIR/inc # f_dialog_input_defaultrouter() { + local funcname=f_dialog_input_defaultrouter + # # Get the defaultrouter. When this is not configured, the default is # "NO", however we don't ever want to present this default to the user @@ -61,9 +64,7 @@ f_dialog_input_defaultrouter() local defaultrouter="$( f_sysrc_get 'defaultrouter:-NO' )" local defaultrouter_orig="$defaultrouter" # for change-tracking case "$defaultrouter" in - [Nn][Oo]) - defaultrouter=$( f_route_get_default ) - ;; + [Nn][Oo]) f_route_get_default defaultrouter ;; esac # @@ -72,8 +73,9 @@ f_dialog_input_defaultrouter() # mounted, the system will hang. # if f_nfs_mounted && ! f_jailed; then - local setting="$( printf "$msg_current_default_router" \ - "$defaultrouter" )" + local setting + f_sprintf setting "$msg_current_default_router" \ + "$defaultrouter" f_noyes "$msg_nfs_mounts_may_cause_hang" "$setting" || return $DIALOG_CANCEL fi @@ -101,27 +103,25 @@ f_dialog_input_defaultrouter() f_dialog_info "$msg_saving_default_router" # Save the default router/gateway - f_sysrc_set defaultrouter "$defaultrouter" + f_eval_catch $funcname f_sysrc_set \ + 'f_sysrc_set defaultrouter "%s"' "$defaultrouter" fi # # Only ask to apply setting if the current defaultrouter is different # than the stored configuration (in rc.conf(5)). # - if [ "$( f_route_get_default )" != "$defaultrouter" ]; then + local dr + f_route_get_default dr + if [ "$dr" != "$defaultrouter" ]; then f_dialog_clear - f_yesno "$msg_activate_default_router" \ - "$( f_route_get_default )" "$defaultrouter" + f_yesno "$msg_activate_default_router" "$dr" "$defaultrouter" if [ $? -eq $DIALOG_OK ]; then - local err - # Apply the default router/gateway - f_quietly route delete default - err=$( route add default "$defaultrouter" 2>&1 ) - if [ $? -ne $SUCCESS ]; then - f_dialog_msgbox "$err" + f_eval_catch -d $funcname route 'route delete default' + f_eval_catch $funcname route \ + 'route add default "%s"' "$defaultrouter" || return $DIALOG_CANCEL - fi fi fi } Modified: stable/10/usr.sbin/bsdconfig/networking/share/services.subr ============================================================================== --- stable/10/usr.sbin/bsdconfig/networking/share/services.subr Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/networking/share/services.subr Wed Jan 15 07:49:17 2014 (r260678) @@ -42,8 +42,9 @@ f_include $BSDCFG_SHARE/sysrc.subr # f_config_pcnfsd() { + local funcname=f_config_pcnfsd f_package_add "pcnfsd" || return $? - f_sysrc_set mountd_flags "-n" + f_eval_catch $funcname f_sysrc_set 'f_sysrc_set mountd_flags -n' return $SUCCESS } Modified: stable/10/usr.sbin/bsdconfig/packages/packages ============================================================================== --- stable/10/usr.sbin/bsdconfig/packages/packages Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/packages/packages Wed Jan 15 07:49:17 2014 (r260678) @@ -45,8 +45,8 @@ f_include $BSDCFG_SHARE/packages/package BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="030.packages" f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) -[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" +f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && + pgm="${ipgm:-$pgm}" ############################################################ MAIN Modified: stable/10/usr.sbin/bsdconfig/password/password ============================================================================== --- stable/10/usr.sbin/bsdconfig/password/password Wed Jan 15 07:47:13 2014 (r260677) +++ stable/10/usr.sbin/bsdconfig/password/password Wed Jan 15 07:49:17 2014 (r260678) @@ -37,8 +37,8 @@ f_include $BSDCFG_SHARE/password/passwor BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="040.password" -ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 08:03:02 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 573CED8B; Wed, 15 Jan 2014 08:03:02 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4282815FB; Wed, 15 Jan 2014 08:03:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F832Mt024433; Wed, 15 Jan 2014 08:03:02 GMT (envelope-from dteske@svn.freebsd.org) Received: (from dteske@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F831i2024430; Wed, 15 Jan 2014 08:03:01 GMT (envelope-from dteske@svn.freebsd.org) Message-Id: <201401150803.s0F831i2024430@svn.freebsd.org> From: Devin Teske Date: Wed, 15 Jan 2014 08:03:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260679 - stable/10/usr.sbin/sysrc X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 08:03:02 -0000 Author: dteske Date: Wed Jan 15 08:03:01 2014 New Revision: 260679 URL: http://svnweb.freebsd.org/changeset/base/260679 Log: MFC r257824,257826-257830,258411: Updates to sysrc(8) 257824: Fix a bug with `-d' form working as documented 257826: Add `--version' long option 257827: Add a `-c' option for `check only' 257828: Comments and whitespace 257829: Fix a bug with `-e' introduced by above 257828 257830: Document SYSRC_VERBOSE enviroment variable in the manual 258411: Revert the above 257830 (both merged to get .Dd bump in man-page) Modified: stable/10/usr.sbin/sysrc/sysrc stable/10/usr.sbin/sysrc/sysrc.8 Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/sysrc/sysrc ============================================================================== --- stable/10/usr.sbin/sysrc/sysrc Wed Jan 15 07:49:17 2014 (r260678) +++ stable/10/usr.sbin/sysrc/sysrc Wed Jan 15 08:03:01 2014 (r260679) @@ -28,6 +28,9 @@ # ############################################################ INCLUDES +# Prevent `-d' from being interpreted as a debug flag by common.subr +DEBUG_SELF_INITIALIZE= + BSDCFG_SHARE="/usr/share/bsdconfig" [ "$_COMMON_SUBR" ] || . $BSDCFG_SHARE/common.subr || exit 1 [ "$_SYSRC_SUBR" ] || f_include $BSDCFG_SHARE/sysrc.subr @@ -35,8 +38,14 @@ BSDCFG_SHARE="/usr/share/bsdconfig" ############################################################ GLOBALS # +# Version information +# +SYSRC_VERSION="6.0 Nov-07,2013" + +# # Options # +CHECK_ONLY= DELETE= DESCRIBE= IGNORE_UNKNOWNS= @@ -92,6 +101,8 @@ help() "Dump a list of all non-default configuration variables." f_err "$optfmt" "-A" \ "Dump a list of all configuration variables (incl. defaults)." + f_err "$optfmt" "-c" \ + "Check. Return success if no changes needed, else error." f_err "$optfmt" "-d" \ "Print a description of the given variable." f_err "$optfmt" "-D" \ @@ -130,6 +141,8 @@ help() "Verbose. Print the pathname of the specific rc.conf(5)" f_err "$optfmt" "" \ "file where the directive was found." + f_err "$optfmt" "--version" \ + "Print version information to stdout and exit." f_err "$optfmt" "-x" \ "Remove variable(s) from specified file(s)." f_err "\n" @@ -179,6 +192,7 @@ jail_depend() # # Print include dependencies # + echo DEBUG_SELF_INITIALIZE= cat $BSDCFG_SHARE/common.subr cat $BSDCFG_SHARE/sysrc.subr } @@ -191,27 +205,31 @@ jail_depend() [ $# -gt 0 ] || usage # -# Check for `--help' command-line option +# Check for `--help' and `--version' command-line option # ( # Operate in sub-shell to protect $@ in parent while [ $# -gt 0 ]; do case "$1" in - --help) exit 1;; + --help) help ;; + --version) # see GLOBALS + echo "$SYSRC_VERSION" + exit 1 ;; -[fRj]) # These flags take an argument - shift 1;; + shift 1 ;; esac shift 1 done exit 0 -) || help +) || die # # Process command-line flags # -while getopts aAdDef:Fhij:nNqR:vxX flag; do +while getopts aAcdDef:Fhij:nNqR:vxX flag; do case "$flag" in a) SHOW_ALL=${SHOW_ALL:-1};; A) SHOW_ALL=2;; + c) CHECK_ONLY=1;; d) DESCRIBE=1;; D) RC_CONFS=;; e) SHOW_EQUALS=1;; @@ -273,16 +291,23 @@ if [ "$DELETE" -a "$SHOW_ALL" ]; then fi # +# Pre-flight for `-c' command-line option +# +[ "$CHECK_ONLY" -a "$SHOW_ALL" ] && + die "$pgm: \`-c' option incompatible with \`-a'/\`-A' options" + +# # Process `-e', `-n', and `-N' command-line options # SEP=': ' -[ "$SHOW_EQUALS" ] && SEP='="' +[ "$SHOW_FILE" ] && SHOW_EQUALS= [ "$SHOW_NAME" ] || SHOW_EQUALS= [ "$SYSRC_VERBOSE" = "0" ] && SYSRC_VERBOSE= if [ ! "$SHOW_VALUE" ]; then SHOW_NAME=1 SHOW_EQUALS= fi +[ "$SHOW_EQUALS" ] && SEP='="' # # Process `-j jail' and `-R dir' command-line options @@ -298,6 +323,7 @@ if [ "$JAIL" -o "$ROOTDIR" ]; then $( [ "$DELETE" = "2" ] && echo \ -X ) $( [ "$SHOW_ALL" = "1" ] && echo \ -a ) $( [ "$SHOW_ALL" = "2" ] && echo \ -A ) + ${CHECK_ONLY:+-c} ${DESCRIBE:+-d} ${SHOW_EQUALS:+-e} ${IGNORE_UNKNOWNS:+-i} @@ -408,7 +434,7 @@ if [ "$SHOW_ALL" ]; then EXCEPT="IFS|EXCEPT|PATH|RC_DEFAULTS|OPTIND|DESCRIBE|SEP" EXCEPT="$EXCEPT|DELETE|SHOW_ALL|SHOW_EQUALS|SHOW_NAME" EXCEPT="$EXCEPT|SHOW_VALUE|SHOW_FILE|SYSRC_VERBOSE|RC_CONFS" - EXCEPT="$EXCEPT|pgm|SUCCESS|FAILURE" + EXCEPT="$EXCEPT|pgm|SUCCESS|FAILURE|CHECK_ONLY" EXCEPT="$EXCEPT|f_sysrc_desc_awk|f_sysrc_delete_awk" # @@ -501,6 +527,7 @@ fi # # Process command-line arguments # +costatus=$SUCCESS while [ $# -gt 0 ]; do NAME="${1%%=*}" @@ -511,14 +538,19 @@ while [ $# -gt 0 ]; do *=*) # # Like sysctl(8), if both `-d' AND "name=value" is passed, - # first describe, then attempt to set + # first describe (done above), then attempt to set # - if [ "$SYSRC_VERBOSE" ]; then + # If verbose, prefix line with where the directive lives + if [ "$SYSRC_VERBOSE" -a ! "$CHECK_ONLY" ]; then file=$( f_sysrc_find "$NAME" ) [ "$file" = "$RC_DEFAULTS" -o ! "$file" ] && \ file=$( f_sysrc_get 'rc_conf_files%%[$IFS]*' ) - echo -n "$file: " + if [ "$SHOW_EQUALS" ]; then + echo -n ": $file; " + else + echo -n "$file: " + fi fi # @@ -532,6 +564,20 @@ while [ $# -gt 0 ]; do fi # + # If `-c' is passed, simply compare and move on + # + if [ "$CHECK_ONLY" ]; then + if ! IGNORED=$( f_sysrc_get "$NAME?" ); then + costatus=$FAILURE + else + value=$( f_sysrc_get "$NAME" ) + [ "$value" = "${1#*=}" ] || costatus=$FAILURE + fi + shift 1 + continue + fi + + # # If `-N' is passed, simplify the output # if [ ! "$SHOW_VALUE" ]; then @@ -546,28 +592,34 @@ while [ $# -gt 0 ]; do if f_sysrc_set "$NAME" "${1#*=}"; then if [ "$SHOW_FILE" ]; then after=$( f_sysrc_find "$NAME" ) - echo -n "${SHOW_NAME:+$NAME$SEP}" - echo -n "$before${SHOW_EQUALS:+\"}" - echo " -> $after" else after=$( f_sysrc_get "$NAME" ) - echo -n "${SHOW_NAME:+$NAME$SEP}" - echo "$before -> $after" fi + echo -n "${SHOW_NAME:+$NAME$SEP}" + echo -n "$before${SHOW_EQUALS:+\" #}" + echo -n " -> ${SHOW_EQUALS:+\"}$after" + echo "${SHOW_EQUALS:+\"}" fi fi ;; *) - if ! IGNORED="$( f_sysrc_get "$NAME?" )"; then - [ "$IGNORE_UNKNOWNS" ] \ - || echo "$pgm: unknown variable '$NAME'" + if ! IGNORED=$( f_sysrc_get "$NAME?" ); then + [ "$IGNORE_UNKNOWNS" ] || + echo "$pgm: unknown variable '$NAME'" + shift 1 + costatus=$FAILURE + continue + fi + + # The above check told us what we needed for `-c' + if [ "$CHECK_ONLY" ]; then shift 1 continue fi # - # Like sysctl(8), when `-d' is passed, - # desribe it rather than expanding it + # Like sysctl(8), when `-d' is passed, desribe it + # (already done above) rather than expanding it # if [ "$DESCRIBE" ]; then @@ -594,8 +646,13 @@ while [ $# -gt 0 ]; do continue fi - [ "$SYSRC_VERBOSE" ] && \ - echo -n "$( f_sysrc_find "$NAME" ): " + if [ "$SYSRC_VERBOSE" ]; then + if [ "$SHOW_EQUALS" ]; then + echo -n ": $( f_sysrc_find "$NAME" ); " + else + echo -n "$( f_sysrc_find "$NAME" ): " + fi + fi # # If `-N' is passed, simplify the output @@ -609,3 +666,9 @@ while [ $# -gt 0 ]; do esac shift 1 done + +[ ! "$CHECK_ONLY" ] || exit $costatus + +################################################################################ +# END +################################################################################ Modified: stable/10/usr.sbin/sysrc/sysrc.8 ============================================================================== --- stable/10/usr.sbin/sysrc/sysrc.8 Wed Jan 15 07:49:17 2014 (r260678) +++ stable/10/usr.sbin/sysrc/sysrc.8 Wed Jan 15 08:03:01 2014 (r260679) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd Jul 5, 2013 +.Dd Nov 20, 2013 .Dt SYSRC 8 .Os .Sh NAME @@ -32,13 +32,13 @@ .Nd safely edit system rc files .Sh SYNOPSIS .Nm -.Op Fl dDeFhinNqvx +.Op Fl cdDeFhinNqvx .Op Fl f Ar file .Op Fl j Ar jail | Fl R Ar dir .Ar name Ns Op = Ns Ar value .Ar ... .Nm -.Op Fl dDeFhinNqvx +.Op Fl cdDeFhinNqvx .Op Fl f Ar file .Op Fl j Ar jail | Fl R Ar dir .Fl a | A @@ -57,6 +57,12 @@ Dump a list of all non-default configura .It Fl A Dump a list of all configuration variables .Pq incl. defaults . +.It Fl c +Check if the value will change when assigning a new value. +If verbose +.Pq see Dq Fl v +prints a message stating whether a change would occur. +Exits with success if no change is necessary, else returns error status. .It Fl d Print a description of the given variable. .It Fl D @@ -64,10 +70,13 @@ Show default value(s) only (this is the passing `-f' with a NULL file-argument). .It Fl e Print query results as -.Ql var=value -.Pq useful for producing output to be fed back in . -Ignored if -.Fl n +.Xr sh 1 +compatible syntax +.Pq for example, Ql var=value . +Ignored if either +.Ql Fl n +or +.Ql Fl F is specified. .It Fl f Ar file Operate on the specified file(s) instead of the files obtained by reading the @@ -112,6 +121,8 @@ Verbose. Print the pathname of the specific .Xr rc.conf 5 file where the directive was found. +.It Fl -version +Print version information to stdout and exit. .It Fl x Remove variable(s) from specified file(s). .El From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 08:10:42 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1F27F16D; Wed, 15 Jan 2014 08:10:42 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0AE50169F; Wed, 15 Jan 2014 08:10:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F8Afw3025795; Wed, 15 Jan 2014 08:10:41 GMT (envelope-from dteske@svn.freebsd.org) Received: (from dteske@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F8AfdO025792; Wed, 15 Jan 2014 08:10:41 GMT (envelope-from dteske@svn.freebsd.org) Message-Id: <201401150810.s0F8AfdO025792@svn.freebsd.org> From: Devin Teske Date: Wed, 15 Jan 2014 08:10:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260680 - in stable/10: release usr.sbin/bsdinstall/scripts X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 08:10:42 -0000 Author: dteske Date: Wed Jan 15 08:10:41 2014 New Revision: 260680 URL: http://svnweb.freebsd.org/changeset/base/260680 Log: MFC r259686: Move the installer's keymap solution introduced by SVN r259468. The new location of /etc/rc.local on the install media is more appropriate as it knows serial vs. non-serial and can also do the change earlier (so that even the initial Install dialog can benefit from the change). Discussed with: nwhitehorn Modified: stable/10/release/rc.local stable/10/usr.sbin/bsdinstall/scripts/auto Directory Properties: stable/10/ (props changed) Modified: stable/10/release/rc.local ============================================================================== --- stable/10/release/rc.local Wed Jan 15 08:03:01 2014 (r260679) +++ stable/10/release/rc.local Wed Jan 15 08:10:41 2014 (r260680) @@ -19,6 +19,10 @@ if [ $? -eq 0 ]; then TERM=xterm fi + # Don't send ESC on function-key 62/63 (left/right command key) + kbdcontrol -f 62 '' > /dev/null 2>&1 + kbdcontrol -f 63 '' > /dev/null 2>&1 + if [ -z "$EXTERNAL_VTY_STARTED" ]; then # Init will clean these processes up if/when the system # goes multiuser Modified: stable/10/usr.sbin/bsdinstall/scripts/auto ============================================================================== --- stable/10/usr.sbin/bsdinstall/scripts/auto Wed Jan 15 08:03:01 2014 (r260679) +++ stable/10/usr.sbin/bsdinstall/scripts/auto Wed Jan 15 08:10:41 2014 (r260680) @@ -49,10 +49,6 @@ error() { ############################################################ MAIN -# Don't send ESC on function-key 62/63 (left/right command key) -f_quietly kbdcontrol -f 62 '' -f_quietly kbdcontrol -f 63 '' - f_dprintf "Began Installation at %s" "$( date )" rm -rf $BSDINSTALL_TMPETC From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 08:12:19 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9726C2C3; Wed, 15 Jan 2014 08:12:19 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 82D5916AC; Wed, 15 Jan 2014 08:12:19 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F8CJ0Y028665; Wed, 15 Jan 2014 08:12:19 GMT (envelope-from dteske@svn.freebsd.org) Received: (from dteske@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F8CJwN028664; Wed, 15 Jan 2014 08:12:19 GMT (envelope-from dteske@svn.freebsd.org) Message-Id: <201401150812.s0F8CJwN028664@svn.freebsd.org> From: Devin Teske Date: Wed, 15 Jan 2014 08:12:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260681 - stable/10/usr.sbin/bsdinstall/scripts X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 08:12:19 -0000 Author: dteske Date: Wed Jan 15 08:12:19 2014 New Revision: 260681 URL: http://svnweb.freebsd.org/changeset/base/260681 Log: MFC r260260 (gavin): Remove what appears to be a stray debugging printf. Modified: stable/10/usr.sbin/bsdinstall/scripts/wlanconfig Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/bsdinstall/scripts/wlanconfig ============================================================================== --- stable/10/usr.sbin/bsdinstall/scripts/wlanconfig Wed Jan 15 08:10:41 2014 (r260680) +++ stable/10/usr.sbin/bsdinstall/scripts/wlanconfig Wed Jan 15 08:12:19 2014 (r260681) @@ -111,7 +111,6 @@ echo "network={ priority=5 }" >> $BSDINSTALL_TMPETC/wpa_supplicant.conf elif echo $ENCRYPTION | grep -q WEP; then - echo FOO exec 3>&1 WEPKEY=`dialog --insecure --backtitle "FreeBSD Installer" \ --title "WEP Setup" --mixedform "" 0 0 0 \ From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 08:17:32 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4EB8A47D; Wed, 15 Jan 2014 08:17:32 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 201CD16DB; Wed, 15 Jan 2014 08:17:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F8HVAB029470; Wed, 15 Jan 2014 08:17:31 GMT (envelope-from dteske@svn.freebsd.org) Received: (from dteske@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F8HVT8029469; Wed, 15 Jan 2014 08:17:31 GMT (envelope-from dteske@svn.freebsd.org) Message-Id: <201401150817.s0F8HVT8029469@svn.freebsd.org> From: Devin Teske Date: Wed, 15 Jan 2014 08:17:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260682 - stable/10/usr.sbin/bsdinstall/scripts X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 08:17:32 -0000 Author: dteske Date: Wed Jan 15 08:17:31 2014 New Revision: 260682 URL: http://svnweb.freebsd.org/changeset/base/260682 Log: MFC r260261 (gavin): Lower the priority of the "connect to any open wireless network" network description, so guaranteeing that any other defined network will be tried first. MFC r260262 (gavin): Allow bsdinstall to use WPA-Enterprise networks when installing. This only allows basic username/password config, and does not provide the ability to set any of the other WPA options. Regardless, this is generally sufficient to associate. Perhaps in the future this could allow full configuring (e.g. being able to set "anonymous identity", and perhaps some of the more obscure WPA options), though perhaps that will better belong in bsdconfig when that grows wlan config ability. Modified: stable/10/usr.sbin/bsdinstall/scripts/wlanconfig Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/bsdinstall/scripts/wlanconfig ============================================================================== --- stable/10/usr.sbin/bsdinstall/scripts/wlanconfig Wed Jan 15 08:12:19 2014 (r260681) +++ stable/10/usr.sbin/bsdinstall/scripts/wlanconfig Wed Jan 15 08:17:31 2014 (r260682) @@ -110,6 +110,29 @@ echo "network={ psk=\"$PASS\" priority=5 }" >> $BSDINSTALL_TMPETC/wpa_supplicant.conf +elif echo $ENCRYPTION | grep -q EAP; then + exec 3>&1 + USERPASS=`dialog --insecure --backtitle "FreeBSD Installer" \ + --title "WPA-Enterprise Setup" --mixedform "" 0 0 0 \ + "SSID" 1 0 "$NETWORK" 1 12 0 0 2 \ + "Username" 2 0 "" 2 12 25 63 0 \ + "Password" 3 0 "" 3 12 25 63 1 \ + 2>&1 1>&3` \ + || exec $0 $@ + exec 3>&- +echo "network={ + ssid=\"$NETWORK\" + key_mgmt=WPA-EAP" >> $BSDINSTALL_TMPETC/wpa_supplicant.conf +echo "$USERPASS" | awk ' +{ + if (NR == 1) { + printf " identity=\"%s\"\n", $1; + } else if (NR == 2) { + printf " password=\"%s\"\n", $1; + } +}' >> $BSDINSTALL_TMPETC/wpa_supplicant.conf +echo " priority=5 +}" >> $BSDINSTALL_TMPETC/wpa_supplicant.conf elif echo $ENCRYPTION | grep -q WEP; then exec 3>&1 WEPKEY=`dialog --insecure --backtitle "FreeBSD Installer" \ @@ -135,7 +158,7 @@ fi # Connect to any open networks policy echo "network={ - priority=5 + priority=0 key_mgmt=NONE }" >> $BSDINSTALL_TMPETC/wpa_supplicant.conf From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 08:40:11 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 10EAACFA; Wed, 15 Jan 2014 08:40:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D7D09188D; Wed, 15 Jan 2014 08:40:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F8eA41037680; Wed, 15 Jan 2014 08:40:10 GMT (envelope-from kaiw@svn.freebsd.org) Received: (from kaiw@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F8eAnv037679; Wed, 15 Jan 2014 08:40:10 GMT (envelope-from kaiw@svn.freebsd.org) Message-Id: <201401150840.s0F8eAnv037679@svn.freebsd.org> From: Kai Wang Date: Wed, 15 Jan 2014 08:40:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-svnadmin@freebsd.org Subject: svn commit: r260683 - svnadmin/conf X-SVN-Group: svnadmin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 08:40:11 -0000 Author: kaiw Date: Wed Jan 15 08:40:10 2014 New Revision: 260683 URL: http://svnweb.freebsd.org/changeset/base/260683 Log: Add my name for elftoolchain import. Modified: svnadmin/conf/sizelimit.conf Modified: svnadmin/conf/sizelimit.conf ============================================================================== --- svnadmin/conf/sizelimit.conf Wed Jan 15 08:17:31 2014 (r260682) +++ svnadmin/conf/sizelimit.conf Wed Jan 15 08:40:10 2014 (r260683) @@ -36,3 +36,4 @@ rwatson sam stas thompsa +kaiw From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 08:43:24 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 44D22FAC; Wed, 15 Jan 2014 08:43:24 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2AFC31911; Wed, 15 Jan 2014 08:43:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F8hOeb040575; Wed, 15 Jan 2014 08:43:24 GMT (envelope-from kaiw@svn.freebsd.org) Received: (from kaiw@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F8hMJ5040564; Wed, 15 Jan 2014 08:43:22 GMT (envelope-from kaiw@svn.freebsd.org) Message-Id: <201401150843.s0F8hMJ5040564@svn.freebsd.org> From: Kai Wang Date: Wed, 15 Jan 2014 08:43:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r260684 - in vendor/elftoolchain: . dist dist/addr2line dist/ar dist/ar/benchmark dist/as dist/brandelf dist/common dist/cxxfilt dist/documentation dist/documentation/libelf-by-example ... X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 08:43:24 -0000 Author: kaiw Date: Wed Jan 15 08:43:20 2014 New Revision: 260684 URL: http://svnweb.freebsd.org/changeset/base/260684 Log: Initial import of elftoolchain r2974. Obtained from: elftoolchain.org Added: vendor/elftoolchain/ vendor/elftoolchain/dist/ vendor/elftoolchain/dist/GNUmakefile vendor/elftoolchain/dist/INSTALL vendor/elftoolchain/dist/Makefile (contents, props changed) vendor/elftoolchain/dist/README vendor/elftoolchain/dist/RELEASE-NOTES vendor/elftoolchain/dist/addr2line/ vendor/elftoolchain/dist/addr2line/Makefile (contents, props changed) vendor/elftoolchain/dist/addr2line/addr2line.1 (contents, props changed) vendor/elftoolchain/dist/addr2line/addr2line.c (contents, props changed) vendor/elftoolchain/dist/ar/ vendor/elftoolchain/dist/ar/Makefile (contents, props changed) vendor/elftoolchain/dist/ar/acplex.l vendor/elftoolchain/dist/ar/acpyacc.y vendor/elftoolchain/dist/ar/ar.1 (contents, props changed) vendor/elftoolchain/dist/ar/ar.5 (contents, props changed) vendor/elftoolchain/dist/ar/ar.c (contents, props changed) vendor/elftoolchain/dist/ar/ar.h (contents, props changed) vendor/elftoolchain/dist/ar/benchmark/ vendor/elftoolchain/dist/ar/benchmark/acp.sh (contents, props changed) vendor/elftoolchain/dist/ar/ranlib.1 (contents, props changed) vendor/elftoolchain/dist/ar/read.c (contents, props changed) vendor/elftoolchain/dist/ar/util.c (contents, props changed) vendor/elftoolchain/dist/ar/write.c (contents, props changed) vendor/elftoolchain/dist/as/ vendor/elftoolchain/dist/as/Makefile (contents, props changed) vendor/elftoolchain/dist/as/as.1 (contents, props changed) vendor/elftoolchain/dist/as/as.c (contents, props changed) vendor/elftoolchain/dist/brandelf/ vendor/elftoolchain/dist/brandelf/Makefile (contents, props changed) vendor/elftoolchain/dist/brandelf/brandelf.1 (contents, props changed) vendor/elftoolchain/dist/brandelf/brandelf.c (contents, props changed) vendor/elftoolchain/dist/common/ vendor/elftoolchain/dist/common/Makefile (contents, props changed) vendor/elftoolchain/dist/common/_elftc.h (contents, props changed) vendor/elftoolchain/dist/common/elfdefinitions.h (contents, props changed) vendor/elftoolchain/dist/common/native-elf-format (contents, props changed) vendor/elftoolchain/dist/common/os.Linux.mk vendor/elftoolchain/dist/common/utarray.h (contents, props changed) vendor/elftoolchain/dist/common/uthash.h (contents, props changed) vendor/elftoolchain/dist/cxxfilt/ vendor/elftoolchain/dist/cxxfilt/Makefile (contents, props changed) vendor/elftoolchain/dist/cxxfilt/c++filt.1 (contents, props changed) vendor/elftoolchain/dist/cxxfilt/cxxfilt.c (contents, props changed) vendor/elftoolchain/dist/documentation/ vendor/elftoolchain/dist/documentation/Makefile (contents, props changed) vendor/elftoolchain/dist/documentation/libelf-by-example/ vendor/elftoolchain/dist/documentation/libelf-by-example/Makefile (contents, props changed) vendor/elftoolchain/dist/documentation/libelf-by-example/libelf-by-example.tex vendor/elftoolchain/dist/documentation/libelf-by-example/prog1.txt (contents, props changed) vendor/elftoolchain/dist/documentation/libelf-by-example/prog2.txt (contents, props changed) vendor/elftoolchain/dist/documentation/libelf-by-example/prog3.txt (contents, props changed) vendor/elftoolchain/dist/documentation/libelf-by-example/prog4.txt (contents, props changed) vendor/elftoolchain/dist/documentation/libelf-by-example/prog5.txt (contents, props changed) vendor/elftoolchain/dist/documentation/libelf-by-example/prog6.txt (contents, props changed) vendor/elftoolchain/dist/elfcopy/ vendor/elftoolchain/dist/elfcopy/Makefile (contents, props changed) vendor/elftoolchain/dist/elfcopy/archive.c (contents, props changed) vendor/elftoolchain/dist/elfcopy/ascii.c (contents, props changed) vendor/elftoolchain/dist/elfcopy/binary.c (contents, props changed) vendor/elftoolchain/dist/elfcopy/elfcopy.1 (contents, props changed) vendor/elftoolchain/dist/elfcopy/elfcopy.h (contents, props changed) vendor/elftoolchain/dist/elfcopy/main.c (contents, props changed) vendor/elftoolchain/dist/elfcopy/mcs.1 (contents, props changed) vendor/elftoolchain/dist/elfcopy/sections.c (contents, props changed) vendor/elftoolchain/dist/elfcopy/segments.c (contents, props changed) vendor/elftoolchain/dist/elfcopy/strip.1 (contents, props changed) vendor/elftoolchain/dist/elfcopy/symbols.c (contents, props changed) vendor/elftoolchain/dist/elfdump/ vendor/elftoolchain/dist/elfdump/Makefile (contents, props changed) vendor/elftoolchain/dist/elfdump/elfdump.1 (contents, props changed) vendor/elftoolchain/dist/elfdump/elfdump.c (contents, props changed) vendor/elftoolchain/dist/findtextrel/ vendor/elftoolchain/dist/findtextrel/Makefile (contents, props changed) vendor/elftoolchain/dist/findtextrel/findtextrel.1 (contents, props changed) vendor/elftoolchain/dist/findtextrel/findtextrel.c (contents, props changed) vendor/elftoolchain/dist/isa/ vendor/elftoolchain/dist/isa/Makefile (contents, props changed) vendor/elftoolchain/dist/isa/avr.isa vendor/elftoolchain/dist/isa/isa.1 (contents, props changed) vendor/elftoolchain/dist/isa/isa.5 (contents, props changed) vendor/elftoolchain/dist/isa/isa.c (contents, props changed) vendor/elftoolchain/dist/ld/ vendor/elftoolchain/dist/ld/Makefile (contents, props changed) vendor/elftoolchain/dist/ld/amd64.c (contents, props changed) vendor/elftoolchain/dist/ld/amd64.h (contents, props changed) vendor/elftoolchain/dist/ld/amd64_script.ld vendor/elftoolchain/dist/ld/i386.c (contents, props changed) vendor/elftoolchain/dist/ld/i386.h (contents, props changed) vendor/elftoolchain/dist/ld/i386_script.ld vendor/elftoolchain/dist/ld/ld.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_arch.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_arch.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_dynamic.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_dynamic.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_ehframe.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_ehframe.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_error.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_exp.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_exp.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_file.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_file.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_hash.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_hash.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_input.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_input.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_layout.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_layout.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_main.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_options.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_options.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_output.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_output.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_path.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_path.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_reloc.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_reloc.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_script.awk (contents, props changed) vendor/elftoolchain/dist/ld/ld_script.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_script.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_script_lexer.l vendor/elftoolchain/dist/ld/ld_script_parser.y vendor/elftoolchain/dist/ld/ld_strtab.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_strtab.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_symbols.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_symbols.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_symver.c (contents, props changed) vendor/elftoolchain/dist/ld/ld_symver.h (contents, props changed) vendor/elftoolchain/dist/ld/ld_utils.h (contents, props changed) vendor/elftoolchain/dist/libdwarf/ vendor/elftoolchain/dist/libdwarf/Makefile (contents, props changed) vendor/elftoolchain/dist/libdwarf/Version.map vendor/elftoolchain/dist/libdwarf/_libdwarf.h (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf.h (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_abbrev.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_AT_comp_dir.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_AT_const_value_string.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_AT_dataref.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_AT_flag.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_AT_location_expr.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_AT_name.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_AT_producer.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_AT_ref_address.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_AT_reference.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_AT_signed_const.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_AT_string.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_AT_targ_address.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_arange.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_die_to_debug.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_directory_decl.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_expr_addr.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_expr_gen.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_fde_inst.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_file_decl.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_frame_cie.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_frame_fde.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_funcname.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_line_entry.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_pubname.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_typename.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_varname.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_add_weakname.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_arange.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_attr.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_attr.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_attrlist.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_attrval.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_attrval_signed.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_child.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_cu.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_dealloc.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_dealloc.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_def_macro.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_die.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_die_abbrev_code.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_die_link.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_diename.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_dieoffset.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_dump.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_end_macro_file.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_errmsg.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_errmsg.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_errno.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_expand_frame_instructions.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_expr_current_offset.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_expr_into_block.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_fde_cfa_offset.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_find_macro_value_start.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_finish.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_finish.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_form.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_formaddr.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_formblock.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_formexprloc.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_formflag.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_formref.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_formsig8.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_formstring.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_formudata.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_frame.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_funcs.m4 vendor/elftoolchain/dist/libdwarf/dwarf_get_AT_name.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_abbrev.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_abbrev_children_flag.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_abbrev_code.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_abbrev_entry.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_abbrev_tag.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_address_size.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_arange.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_arange_info.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_aranges.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_cie_index.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_cie_info.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_cie_of_fde.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_cu_die_offset.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_elf.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_fde_at_pc.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_fde_info_for_all_regs.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_fde_info_for_all_regs3.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_fde_info_for_cfa_reg3.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_fde_info_for_reg.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_fde_info_for_reg3.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_fde_instr_bytes.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_fde_list.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_fde_n.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_fde_range.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_form_class.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_funcs.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_globals.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_loclist_entry.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_macro_details.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_pubtypes.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_ranges.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_relocation_info.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_relocation_info_count.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_section_bytes.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_str.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_types.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_vars.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_get_weaks.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_hasattr.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_hasform.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_highpc.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_init.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_init.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_lineno.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_lineno.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_lne_end_sequence.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_lne_set_address.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_loclist.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_loclist.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_loclist_from_expr.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_macinfo.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_nametbl.m4 vendor/elftoolchain/dist/libdwarf/dwarf_new_die.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_new_expr.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_new_fde.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_next_cu_header.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_object_init.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_pro_arange.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_pro_attr.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_pro_die.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_pro_expr.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_pro_finish.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_pro_frame.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_pro_funcs.m4 vendor/elftoolchain/dist/libdwarf/dwarf_pro_init.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_pro_lineno.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_pro_macinfo.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_pro_nametbl.m4 vendor/elftoolchain/dist/libdwarf/dwarf_pro_pubnames.m4 vendor/elftoolchain/dist/libdwarf/dwarf_pro_reloc.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_pro_sections.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_pro_types.m4 vendor/elftoolchain/dist/libdwarf/dwarf_pro_vars.m4 vendor/elftoolchain/dist/libdwarf/dwarf_pro_weaks.m4 vendor/elftoolchain/dist/libdwarf/dwarf_producer_init.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_producer_set_isa.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_pubnames.m4 vendor/elftoolchain/dist/libdwarf/dwarf_pubtypes.m4 vendor/elftoolchain/dist/libdwarf/dwarf_ranges.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_reloc.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_reset_section_bytes.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_set_frame_cfa_value.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_set_reloc_application.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_seterrarg.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_seterror.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_srcfiles.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_srclines.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_start_macro_file.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_str.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_tag.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_transform_to_disk_form.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_types.m4 vendor/elftoolchain/dist/libdwarf/dwarf_undef_macro.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_vars.m4 vendor/elftoolchain/dist/libdwarf/dwarf_vendor_ext.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/dwarf_weaks.m4 vendor/elftoolchain/dist/libdwarf/dwarf_whatattr.3 (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf.h (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_abbrev.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_arange.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_attr.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_die.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_elf_access.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_elf_init.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_error.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_frame.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_info.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_init.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_lineno.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_loc.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_loclist.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_macinfo.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_nametbl.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_ranges.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_reloc.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_rw.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_sections.c (contents, props changed) vendor/elftoolchain/dist/libdwarf/libdwarf_str.c (contents, props changed) vendor/elftoolchain/dist/libelf/ vendor/elftoolchain/dist/libelf/Makefile (contents, props changed) vendor/elftoolchain/dist/libelf/Version.map vendor/elftoolchain/dist/libelf/_libelf.h (contents, props changed) vendor/elftoolchain/dist/libelf/_libelf_ar.h (contents, props changed) vendor/elftoolchain/dist/libelf/_libelf_config.h (contents, props changed) vendor/elftoolchain/dist/libelf/elf.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_begin.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_begin.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_cntl.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_cntl.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_data.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_end.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_end.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_errmsg.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_errmsg.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_errno.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_fill.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_fill.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_flag.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_flagdata.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getarhdr.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getarhdr.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getarsym.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getarsym.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getbase.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getbase.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getdata.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getident.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getident.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getphdrnum.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getphnum.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getscn.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getshdrnum.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getshdrstrndx.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getshnum.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_getshstrndx.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_hash.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_hash.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_kind.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_kind.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_memory.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_memory.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_next.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_next.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_open.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_open.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_phnum.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_rand.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_rand.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_rawfile.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_rawfile.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_scn.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_shnum.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_shstrndx.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_strptr.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_strptr.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_types.m4 vendor/elftoolchain/dist/libelf/elf_update.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_update.c (contents, props changed) vendor/elftoolchain/dist/libelf/elf_version.3 (contents, props changed) vendor/elftoolchain/dist/libelf/elf_version.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf.h (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_cap.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_checksum.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_checksum.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_dyn.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_ehdr.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_fsize.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_fsize.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_getcap.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_getclass.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_getclass.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_getdyn.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_getehdr.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_getmove.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_getphdr.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_getrel.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_getrela.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_getshdr.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_getsym.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_getsyminfo.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_getsymshndx.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_move.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_newehdr.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_newphdr.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_phdr.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_rel.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_rela.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_shdr.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_sym.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_syminfo.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_symshndx.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_update_ehdr.3 (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_xlate.c (contents, props changed) vendor/elftoolchain/dist/libelf/gelf_xlatetof.3 (contents, props changed) vendor/elftoolchain/dist/libelf/libelf.h (contents, props changed) vendor/elftoolchain/dist/libelf/libelf_align.c (contents, props changed) vendor/elftoolchain/dist/libelf/libelf_allocate.c (contents, props changed) vendor/elftoolchain/dist/libelf/libelf_ar.c (contents, props changed) vendor/elftoolchain/dist/libelf/libelf_ar_util.c (contents, props changed) vendor/elftoolchain/dist/libelf/libelf_checksum.c (contents, props changed) vendor/elftoolchain/dist/libelf/libelf_convert.m4 vendor/elftoolchain/dist/libelf/libelf_data.c (contents, props changed) vendor/elftoolchain/dist/libelf/libelf_ehdr.c (contents, props changed) vendor/elftoolchain/dist/libelf/libelf_extended.c (contents, props changed) vendor/elftoolchain/dist/libelf/libelf_fsize.m4 vendor/elftoolchain/dist/libelf/libelf_memory.c (contents, props changed) vendor/elftoolchain/dist/libelf/libelf_msize.m4 vendor/elftoolchain/dist/libelf/libelf_open.c (contents, props changed) vendor/elftoolchain/dist/libelf/libelf_phdr.c (contents, props changed) vendor/elftoolchain/dist/libelf/libelf_shdr.c (contents, props changed) vendor/elftoolchain/dist/libelf/libelf_xlate.c (contents, props changed) vendor/elftoolchain/dist/libelf/os.FreeBSD.mk vendor/elftoolchain/dist/libelf/os.NetBSD.mk vendor/elftoolchain/dist/libelftc/ vendor/elftoolchain/dist/libelftc/Makefile (contents, props changed) vendor/elftoolchain/dist/libelftc/Version.map vendor/elftoolchain/dist/libelftc/_libelftc.h (contents, props changed) vendor/elftoolchain/dist/libelftc/elftc.3 (contents, props changed) vendor/elftoolchain/dist/libelftc/elftc_bfd_find_target.3 (contents, props changed) vendor/elftoolchain/dist/libelftc/elftc_bfdtarget.c (contents, props changed) vendor/elftoolchain/dist/libelftc/elftc_copyfile.3 (contents, props changed) vendor/elftoolchain/dist/libelftc/elftc_copyfile.c (contents, props changed) vendor/elftoolchain/dist/libelftc/elftc_demangle.3 (contents, props changed) vendor/elftoolchain/dist/libelftc/elftc_demangle.c (contents, props changed) vendor/elftoolchain/dist/libelftc/elftc_set_timestamps.3 (contents, props changed) vendor/elftoolchain/dist/libelftc/elftc_set_timestamps.c (contents, props changed) vendor/elftoolchain/dist/libelftc/elftc_string_table.c (contents, props changed) vendor/elftoolchain/dist/libelftc/elftc_string_table_create.3 (contents, props changed) vendor/elftoolchain/dist/libelftc/elftc_symbol_table_create.3 (contents, props changed) vendor/elftoolchain/dist/libelftc/elftc_version.3 (contents, props changed) vendor/elftoolchain/dist/libelftc/libelftc.h (contents, props changed) vendor/elftoolchain/dist/libelftc/libelftc_bfdtarget.c (contents, props changed) vendor/elftoolchain/dist/libelftc/libelftc_dem_arm.c (contents, props changed) vendor/elftoolchain/dist/libelftc/libelftc_dem_gnu2.c (contents, props changed) vendor/elftoolchain/dist/libelftc/libelftc_dem_gnu3.c (contents, props changed) vendor/elftoolchain/dist/libelftc/libelftc_hash.c (contents, props changed) vendor/elftoolchain/dist/libelftc/libelftc_vstr.c (contents, props changed) vendor/elftoolchain/dist/libelftc/make-toolchain-version (contents, props changed) vendor/elftoolchain/dist/libelftc/os.FreeBSD.mk vendor/elftoolchain/dist/libelftc/os.Linux.mk vendor/elftoolchain/dist/mk/ vendor/elftoolchain/dist/mk/elftoolchain.inc.mk vendor/elftoolchain/dist/mk/elftoolchain.lib.mk vendor/elftoolchain/dist/mk/elftoolchain.m4.mk vendor/elftoolchain/dist/mk/elftoolchain.os.mk vendor/elftoolchain/dist/mk/elftoolchain.prog.mk vendor/elftoolchain/dist/mk/elftoolchain.subdir.mk vendor/elftoolchain/dist/mk/elftoolchain.test.mk vendor/elftoolchain/dist/mk/elftoolchain.tet.mk vendor/elftoolchain/dist/mk/elftoolchain.tetvars.mk vendor/elftoolchain/dist/mk/elftoolchain.tex.mk vendor/elftoolchain/dist/mk/os.DragonFly.mk vendor/elftoolchain/dist/mk/os.FreeBSD.mk vendor/elftoolchain/dist/mk/os.Linux.mk vendor/elftoolchain/dist/mk/os.Minix.mk vendor/elftoolchain/dist/mk/os.NetBSD.mk vendor/elftoolchain/dist/mk/os.OpenBSD.mk vendor/elftoolchain/dist/nm/ vendor/elftoolchain/dist/nm/Makefile (contents, props changed) vendor/elftoolchain/dist/nm/nm.1 (contents, props changed) vendor/elftoolchain/dist/nm/nm.c (contents, props changed) vendor/elftoolchain/dist/readelf/ vendor/elftoolchain/dist/readelf/Makefile (contents, props changed) vendor/elftoolchain/dist/readelf/readelf.1 (contents, props changed) vendor/elftoolchain/dist/readelf/readelf.c (contents, props changed) vendor/elftoolchain/dist/size/ vendor/elftoolchain/dist/size/Makefile (contents, props changed) vendor/elftoolchain/dist/size/size.1 (contents, props changed) vendor/elftoolchain/dist/size/size.c (contents, props changed) vendor/elftoolchain/dist/strings/ vendor/elftoolchain/dist/strings/Makefile (contents, props changed) vendor/elftoolchain/dist/strings/strings.1 (contents, props changed) vendor/elftoolchain/dist/strings/strings.c (contents, props changed) vendor/elftoolchain/dist/test/ vendor/elftoolchain/dist/test/Makefile (contents, props changed) vendor/elftoolchain/dist/test/ar/ vendor/elftoolchain/dist/test/ar/Makefile (contents, props changed) vendor/elftoolchain/dist/test/ar/README vendor/elftoolchain/dist/test/ar/func.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/plugin/ vendor/elftoolchain/dist/test/ar/plugin/Makefile (contents, props changed) vendor/elftoolchain/dist/test/ar/plugin/Makefile.ardiff (contents, props changed) vendor/elftoolchain/dist/test/ar/plugin/Makefile.teraser (contents, props changed) vendor/elftoolchain/dist/test/ar/plugin/ardiff.c (contents, props changed) vendor/elftoolchain/dist/test/ar/plugin/teraser.c (contents, props changed) vendor/elftoolchain/dist/test/ar/run.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/ vendor/elftoolchain/dist/test/ar/tc/addself-liba/ vendor/elftoolchain/dist/test/ar/tc/addself-liba/addself-liba.err vendor/elftoolchain/dist/test/ar/tc/addself-liba/addself-liba.eval vendor/elftoolchain/dist/test/ar/tc/addself-liba/addself-liba.out vendor/elftoolchain/dist/test/ar/tc/addself-liba/addself-liba.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/addself-liba/in/ vendor/elftoolchain/dist/test/ar/tc/addself-liba/in/addself-liba.in.shar vendor/elftoolchain/dist/test/ar/tc/addself-liba/out/ vendor/elftoolchain/dist/test/ar/tc/addself-liba/out/addself-liba.out.shar vendor/elftoolchain/dist/test/ar/tc/archive-liba/ vendor/elftoolchain/dist/test/ar/tc/archive-liba-v/ vendor/elftoolchain/dist/test/ar/tc/archive-liba-v/archive-liba-v.err vendor/elftoolchain/dist/test/ar/tc/archive-liba-v/archive-liba-v.eval vendor/elftoolchain/dist/test/ar/tc/archive-liba-v/archive-liba-v.out vendor/elftoolchain/dist/test/ar/tc/archive-liba-v/archive-liba-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/archive-liba-v/in/ vendor/elftoolchain/dist/test/ar/tc/archive-liba-v/in/archive-liba-v.in.shar vendor/elftoolchain/dist/test/ar/tc/archive-liba-v/out/ vendor/elftoolchain/dist/test/ar/tc/archive-liba-v/out/archive-liba-v.out.shar vendor/elftoolchain/dist/test/ar/tc/archive-liba/archive-liba.err vendor/elftoolchain/dist/test/ar/tc/archive-liba/archive-liba.eval vendor/elftoolchain/dist/test/ar/tc/archive-liba/archive-liba.out vendor/elftoolchain/dist/test/ar/tc/archive-liba/archive-liba.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/archive-liba/in/ vendor/elftoolchain/dist/test/ar/tc/archive-liba/in/archive-liba.in.shar vendor/elftoolchain/dist/test/ar/tc/archive-liba/out/ vendor/elftoolchain/dist/test/ar/tc/archive-liba/out/archive-liba.out.shar vendor/elftoolchain/dist/test/ar/tc/archive-liblong/ vendor/elftoolchain/dist/test/ar/tc/archive-liblong/archive-liblong.err vendor/elftoolchain/dist/test/ar/tc/archive-liblong/archive-liblong.eval vendor/elftoolchain/dist/test/ar/tc/archive-liblong/archive-liblong.out vendor/elftoolchain/dist/test/ar/tc/archive-liblong/archive-liblong.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/archive-liblong/in/ vendor/elftoolchain/dist/test/ar/tc/archive-liblong/in/archive-liblong.in.shar vendor/elftoolchain/dist/test/ar/tc/archive-liblong/out/ vendor/elftoolchain/dist/test/ar/tc/archive-liblong/out/archive-liblong.out.shar vendor/elftoolchain/dist/test/ar/tc/archive-libmix-v/ vendor/elftoolchain/dist/test/ar/tc/archive-libmix-v/archive-libmix-v.err vendor/elftoolchain/dist/test/ar/tc/archive-libmix-v/archive-libmix-v.eval vendor/elftoolchain/dist/test/ar/tc/archive-libmix-v/archive-libmix-v.out vendor/elftoolchain/dist/test/ar/tc/archive-libmix-v/archive-libmix-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/archive-libmix-v/in/ vendor/elftoolchain/dist/test/ar/tc/archive-libmix-v/in/archive-libmix-v.in.shar vendor/elftoolchain/dist/test/ar/tc/archive-libmix-v/out/ vendor/elftoolchain/dist/test/ar/tc/archive-libmix-v/out/archive-libmix-v.out.shar vendor/elftoolchain/dist/test/ar/tc/archive-libnonelf-v/ vendor/elftoolchain/dist/test/ar/tc/archive-libnonelf-v/archive-libnonelf-v.err vendor/elftoolchain/dist/test/ar/tc/archive-libnonelf-v/archive-libnonelf-v.eval vendor/elftoolchain/dist/test/ar/tc/archive-libnonelf-v/archive-libnonelf-v.out vendor/elftoolchain/dist/test/ar/tc/archive-libnonelf-v/archive-libnonelf-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/archive-libnonelf-v/in/ vendor/elftoolchain/dist/test/ar/tc/archive-libnonelf-v/in/archive-libnonelf-v.in.shar vendor/elftoolchain/dist/test/ar/tc/archive-libnonelf-v/out/ vendor/elftoolchain/dist/test/ar/tc/archive-libnonelf-v/out/archive-libnonelf-v.out.shar vendor/elftoolchain/dist/test/ar/tc/arscript-1/ vendor/elftoolchain/dist/test/ar/tc/arscript-1/arscript-1.err vendor/elftoolchain/dist/test/ar/tc/arscript-1/arscript-1.eval vendor/elftoolchain/dist/test/ar/tc/arscript-1/arscript-1.out vendor/elftoolchain/dist/test/ar/tc/arscript-1/arscript-1.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/arscript-1/in/ vendor/elftoolchain/dist/test/ar/tc/arscript-1/in/arscript-1.in.shar vendor/elftoolchain/dist/test/ar/tc/arscript-1/out/ vendor/elftoolchain/dist/test/ar/tc/arscript-1/out/arscript-1.out.shar vendor/elftoolchain/dist/test/ar/tc/arscript-2/ vendor/elftoolchain/dist/test/ar/tc/arscript-2/arscript-2.err vendor/elftoolchain/dist/test/ar/tc/arscript-2/arscript-2.eval vendor/elftoolchain/dist/test/ar/tc/arscript-2/arscript-2.out vendor/elftoolchain/dist/test/ar/tc/arscript-2/arscript-2.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/arscript-2/in/ vendor/elftoolchain/dist/test/ar/tc/arscript-2/in/arscript-2.in.shar vendor/elftoolchain/dist/test/ar/tc/arscript-2/out/ vendor/elftoolchain/dist/test/ar/tc/arscript-2/out/arscript-2.out.shar vendor/elftoolchain/dist/test/ar/tc/arscript-3/ vendor/elftoolchain/dist/test/ar/tc/arscript-3/arscript-3.err vendor/elftoolchain/dist/test/ar/tc/arscript-3/arscript-3.eval vendor/elftoolchain/dist/test/ar/tc/arscript-3/arscript-3.out vendor/elftoolchain/dist/test/ar/tc/arscript-3/arscript-3.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/arscript-3/in/ vendor/elftoolchain/dist/test/ar/tc/arscript-3/in/arscript-3.in.shar vendor/elftoolchain/dist/test/ar/tc/arscript-3/out/ vendor/elftoolchain/dist/test/ar/tc/arscript-3/out/arscript-3.out.shar vendor/elftoolchain/dist/test/ar/tc/arscript-4/ vendor/elftoolchain/dist/test/ar/tc/arscript-4/arscript-4.err vendor/elftoolchain/dist/test/ar/tc/arscript-4/arscript-4.eval vendor/elftoolchain/dist/test/ar/tc/arscript-4/arscript-4.out vendor/elftoolchain/dist/test/ar/tc/arscript-4/arscript-4.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/arscript-4/in/ vendor/elftoolchain/dist/test/ar/tc/arscript-4/in/arscript-4.in.shar vendor/elftoolchain/dist/test/ar/tc/arscript-4/out/ vendor/elftoolchain/dist/test/ar/tc/arscript-4/out/arscript-4.out.shar vendor/elftoolchain/dist/test/ar/tc/arscript-5/ vendor/elftoolchain/dist/test/ar/tc/arscript-5/arscript-5.err vendor/elftoolchain/dist/test/ar/tc/arscript-5/arscript-5.eval vendor/elftoolchain/dist/test/ar/tc/arscript-5/arscript-5.out vendor/elftoolchain/dist/test/ar/tc/arscript-5/arscript-5.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/arscript-5/in/ vendor/elftoolchain/dist/test/ar/tc/arscript-5/in/arscript-5.in.shar vendor/elftoolchain/dist/test/ar/tc/arscript-5/out/ vendor/elftoolchain/dist/test/ar/tc/arscript-5/out/arscript-5.out.shar vendor/elftoolchain/dist/test/ar/tc/arscript-6/ vendor/elftoolchain/dist/test/ar/tc/arscript-6/arscript-6.err vendor/elftoolchain/dist/test/ar/tc/arscript-6/arscript-6.eval vendor/elftoolchain/dist/test/ar/tc/arscript-6/arscript-6.out vendor/elftoolchain/dist/test/ar/tc/arscript-6/arscript-6.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/arscript-6/in/ vendor/elftoolchain/dist/test/ar/tc/arscript-6/in/arscript-6.in.shar vendor/elftoolchain/dist/test/ar/tc/arscript-6/out/ vendor/elftoolchain/dist/test/ar/tc/arscript-6/out/arscript-6.out.shar vendor/elftoolchain/dist/test/ar/tc/arscript-7/ vendor/elftoolchain/dist/test/ar/tc/arscript-7/arscript-7.err vendor/elftoolchain/dist/test/ar/tc/arscript-7/arscript-7.eval vendor/elftoolchain/dist/test/ar/tc/arscript-7/arscript-7.out vendor/elftoolchain/dist/test/ar/tc/arscript-7/arscript-7.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/arscript-7/in/ vendor/elftoolchain/dist/test/ar/tc/arscript-7/in/arscript-7.in.shar vendor/elftoolchain/dist/test/ar/tc/arscript-7/out/ vendor/elftoolchain/dist/test/ar/tc/arscript-7/out/arscript-7.out.shar vendor/elftoolchain/dist/test/ar/tc/arscript-8/ vendor/elftoolchain/dist/test/ar/tc/arscript-8/arscript-8.err vendor/elftoolchain/dist/test/ar/tc/arscript-8/arscript-8.eval vendor/elftoolchain/dist/test/ar/tc/arscript-8/arscript-8.out vendor/elftoolchain/dist/test/ar/tc/arscript-8/arscript-8.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/arscript-8/in/ vendor/elftoolchain/dist/test/ar/tc/arscript-8/in/arscript-8.in.shar vendor/elftoolchain/dist/test/ar/tc/arscript-8/out/ vendor/elftoolchain/dist/test/ar/tc/arscript-8/out/arscript-8.out.shar vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liba32/ vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liba32/bsd-archive-liba32.err vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liba32/bsd-archive-liba32.eval vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liba32/bsd-archive-liba32.out vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liba32/bsd-archive-liba32.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liba32/in/ vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liba32/in/bsd-archive-liba32.in.shar vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liba32/out/ vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liba32/out/bsd-archive-liba32.out.shar vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liblong/ vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liblong/bsd-archive-liblong.err vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liblong/bsd-archive-liblong.eval vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liblong/bsd-archive-liblong.out vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liblong/bsd-archive-liblong.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liblong/in/ vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liblong/in/bsd-archive-liblong.in.shar vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liblong/out/ vendor/elftoolchain/dist/test/ar/tc/bsd-archive-liblong/out/bsd-archive-liblong.out.shar vendor/elftoolchain/dist/test/ar/tc/bsd-archive-libnonelf/ vendor/elftoolchain/dist/test/ar/tc/bsd-archive-libnonelf/bsd-archive-libnonelf.err vendor/elftoolchain/dist/test/ar/tc/bsd-archive-libnonelf/bsd-archive-libnonelf.eval vendor/elftoolchain/dist/test/ar/tc/bsd-archive-libnonelf/bsd-archive-libnonelf.out vendor/elftoolchain/dist/test/ar/tc/bsd-archive-libnonelf/bsd-archive-libnonelf.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/bsd-archive-libnonelf/in/ vendor/elftoolchain/dist/test/ar/tc/bsd-archive-libnonelf/in/bsd-archive-libnonelf.in.shar vendor/elftoolchain/dist/test/ar/tc/bsd-archive-libnonelf/out/ vendor/elftoolchain/dist/test/ar/tc/bsd-archive-libnonelf/out/bsd-archive-libnonelf.out.shar vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liba32-v/ vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liba32-v/bsd-extract-liba32-v.err vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liba32-v/bsd-extract-liba32-v.eval vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liba32-v/bsd-extract-liba32-v.out vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liba32-v/bsd-extract-liba32-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liba32-v/in/ vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liba32-v/in/bsd-extract-liba32-v.in.shar vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liba32-v/out/ vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liba32-v/out/bsd-extract-liba32-v.out.shar vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liblong-v/ vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liblong-v/bsd-extract-liblong-v.err vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liblong-v/bsd-extract-liblong-v.eval vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liblong-v/bsd-extract-liblong-v.out vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liblong-v/bsd-extract-liblong-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liblong-v/in/ vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liblong-v/in/bsd-extract-liblong-v.in.shar vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liblong-v/out/ vendor/elftoolchain/dist/test/ar/tc/bsd-extract-liblong-v/out/bsd-extract-liblong-v.out.shar vendor/elftoolchain/dist/test/ar/tc/compbase-liba-v/ vendor/elftoolchain/dist/test/ar/tc/compbase-liba-v/compbase-liba-v.err vendor/elftoolchain/dist/test/ar/tc/compbase-liba-v/compbase-liba-v.eval vendor/elftoolchain/dist/test/ar/tc/compbase-liba-v/compbase-liba-v.out vendor/elftoolchain/dist/test/ar/tc/compbase-liba-v/compbase-liba-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/compbase-liba-v/in/ vendor/elftoolchain/dist/test/ar/tc/compbase-liba-v/in/compbase-liba-v.in.shar vendor/elftoolchain/dist/test/ar/tc/compbase-liba-v/out/ vendor/elftoolchain/dist/test/ar/tc/compbase-liba-v/out/compbase-liba-v.out.shar vendor/elftoolchain/dist/test/ar/tc/compbase_read-liba/ vendor/elftoolchain/dist/test/ar/tc/compbase_read-liba/compbase_read-liba.err vendor/elftoolchain/dist/test/ar/tc/compbase_read-liba/compbase_read-liba.eval vendor/elftoolchain/dist/test/ar/tc/compbase_read-liba/compbase_read-liba.out vendor/elftoolchain/dist/test/ar/tc/compbase_read-liba/compbase_read-liba.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/compbase_read-liba/in/ vendor/elftoolchain/dist/test/ar/tc/compbase_read-liba/in/compbase_read-liba.in.shar vendor/elftoolchain/dist/test/ar/tc/compbase_read-liba/out/ vendor/elftoolchain/dist/test/ar/tc/compbase_read-liba/out/compbase_read-liba.out.shar vendor/elftoolchain/dist/test/ar/tc/delete-liba-v/ vendor/elftoolchain/dist/test/ar/tc/delete-liba-v/delete-liba-v.err vendor/elftoolchain/dist/test/ar/tc/delete-liba-v/delete-liba-v.eval vendor/elftoolchain/dist/test/ar/tc/delete-liba-v/delete-liba-v.out vendor/elftoolchain/dist/test/ar/tc/delete-liba-v/delete-liba-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/delete-liba-v/in/ vendor/elftoolchain/dist/test/ar/tc/delete-liba-v/in/delete-liba-v.in.shar vendor/elftoolchain/dist/test/ar/tc/delete-liba-v/out/ vendor/elftoolchain/dist/test/ar/tc/delete-liba-v/out/delete-liba-v.out.shar vendor/elftoolchain/dist/test/ar/tc/delete-liblong/ vendor/elftoolchain/dist/test/ar/tc/delete-liblong/delete-liblong.err vendor/elftoolchain/dist/test/ar/tc/delete-liblong/delete-liblong.eval vendor/elftoolchain/dist/test/ar/tc/delete-liblong/delete-liblong.out vendor/elftoolchain/dist/test/ar/tc/delete-liblong/delete-liblong.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/delete-liblong/in/ vendor/elftoolchain/dist/test/ar/tc/delete-liblong/in/delete-liblong.in.shar vendor/elftoolchain/dist/test/ar/tc/delete-liblong/out/ vendor/elftoolchain/dist/test/ar/tc/delete-liblong/out/delete-liblong.out.shar vendor/elftoolchain/dist/test/ar/tc/delete-libmix-v/ vendor/elftoolchain/dist/test/ar/tc/delete-libmix-v/delete-libmix-v.err vendor/elftoolchain/dist/test/ar/tc/delete-libmix-v/delete-libmix-v.eval vendor/elftoolchain/dist/test/ar/tc/delete-libmix-v/delete-libmix-v.out vendor/elftoolchain/dist/test/ar/tc/delete-libmix-v/delete-libmix-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/delete-libmix-v/in/ vendor/elftoolchain/dist/test/ar/tc/delete-libmix-v/in/delete-libmix-v.in.shar vendor/elftoolchain/dist/test/ar/tc/delete-libmix-v/out/ vendor/elftoolchain/dist/test/ar/tc/delete-libmix-v/out/delete-libmix-v.out.shar vendor/elftoolchain/dist/test/ar/tc/delete_all-liba-v/ vendor/elftoolchain/dist/test/ar/tc/delete_all-liba-v/delete_all-liba-v.err vendor/elftoolchain/dist/test/ar/tc/delete_all-liba-v/delete_all-liba-v.eval vendor/elftoolchain/dist/test/ar/tc/delete_all-liba-v/delete_all-liba-v.out vendor/elftoolchain/dist/test/ar/tc/delete_all-liba-v/delete_all-liba-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/delete_all-liba-v/in/ vendor/elftoolchain/dist/test/ar/tc/delete_all-liba-v/in/delete_all-liba-v.in.shar vendor/elftoolchain/dist/test/ar/tc/delete_all-liba-v/out/ vendor/elftoolchain/dist/test/ar/tc/delete_all-liba-v/out/delete_all-liba-v.out.shar vendor/elftoolchain/dist/test/ar/tc/extract-liba/ vendor/elftoolchain/dist/test/ar/tc/extract-liba-v/ vendor/elftoolchain/dist/test/ar/tc/extract-liba-v/extract-liba-v.err vendor/elftoolchain/dist/test/ar/tc/extract-liba-v/extract-liba-v.eval vendor/elftoolchain/dist/test/ar/tc/extract-liba-v/extract-liba-v.out vendor/elftoolchain/dist/test/ar/tc/extract-liba-v/extract-liba-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/extract-liba-v/in/ vendor/elftoolchain/dist/test/ar/tc/extract-liba-v/in/extract-liba-v.in.shar vendor/elftoolchain/dist/test/ar/tc/extract-liba-v/out/ vendor/elftoolchain/dist/test/ar/tc/extract-liba-v/out/extract-liba-v.out.shar vendor/elftoolchain/dist/test/ar/tc/extract-liba/extract-liba.err vendor/elftoolchain/dist/test/ar/tc/extract-liba/extract-liba.eval vendor/elftoolchain/dist/test/ar/tc/extract-liba/extract-liba.out vendor/elftoolchain/dist/test/ar/tc/extract-liba/extract-liba.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/extract-liba/in/ vendor/elftoolchain/dist/test/ar/tc/extract-liba/in/extract-liba.in.shar vendor/elftoolchain/dist/test/ar/tc/extract-liba/out/ vendor/elftoolchain/dist/test/ar/tc/extract-liba/out/extract-liba.out.shar vendor/elftoolchain/dist/test/ar/tc/extract-liblong/ vendor/elftoolchain/dist/test/ar/tc/extract-liblong/extract-liblong.err vendor/elftoolchain/dist/test/ar/tc/extract-liblong/extract-liblong.eval vendor/elftoolchain/dist/test/ar/tc/extract-liblong/extract-liblong.out vendor/elftoolchain/dist/test/ar/tc/extract-liblong/extract-liblong.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/extract-liblong/in/ vendor/elftoolchain/dist/test/ar/tc/extract-liblong/in/extract-liblong.in.shar vendor/elftoolchain/dist/test/ar/tc/extract-liblong/out/ vendor/elftoolchain/dist/test/ar/tc/extract-liblong/out/extract-liblong.out.shar vendor/elftoolchain/dist/test/ar/tc/extract-libmix-v/ vendor/elftoolchain/dist/test/ar/tc/extract-libmix-v/extract-libmix-v.err vendor/elftoolchain/dist/test/ar/tc/extract-libmix-v/extract-libmix-v.eval vendor/elftoolchain/dist/test/ar/tc/extract-libmix-v/extract-libmix-v.out vendor/elftoolchain/dist/test/ar/tc/extract-libmix-v/extract-libmix-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/extract-libmix-v/in/ vendor/elftoolchain/dist/test/ar/tc/extract-libmix-v/in/extract-libmix-v.in.shar vendor/elftoolchain/dist/test/ar/tc/extract-libmix-v/out/ vendor/elftoolchain/dist/test/ar/tc/extract-libmix-v/out/extract-libmix-v.out.shar vendor/elftoolchain/dist/test/ar/tc/extract-libnonelf-v/ vendor/elftoolchain/dist/test/ar/tc/extract-libnonelf-v/extract-libnonelf-v.err vendor/elftoolchain/dist/test/ar/tc/extract-libnonelf-v/extract-libnonelf-v.eval vendor/elftoolchain/dist/test/ar/tc/extract-libnonelf-v/extract-libnonelf-v.out vendor/elftoolchain/dist/test/ar/tc/extract-libnonelf-v/extract-libnonelf-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/extract-libnonelf-v/in/ vendor/elftoolchain/dist/test/ar/tc/extract-libnonelf-v/in/extract-libnonelf-v.in.shar vendor/elftoolchain/dist/test/ar/tc/extract-libnonelf-v/out/ vendor/elftoolchain/dist/test/ar/tc/extract-libnonelf-v/out/extract-libnonelf-v.out.shar vendor/elftoolchain/dist/test/ar/tc/list-lib65536/ vendor/elftoolchain/dist/test/ar/tc/list-lib65536/in/ vendor/elftoolchain/dist/test/ar/tc/list-lib65536/in/list-lib65536.in.shar vendor/elftoolchain/dist/test/ar/tc/list-lib65536/list-lib65536.err vendor/elftoolchain/dist/test/ar/tc/list-lib65536/list-lib65536.eval vendor/elftoolchain/dist/test/ar/tc/list-lib65536/list-lib65536.out vendor/elftoolchain/dist/test/ar/tc/list-lib65536/list-lib65536.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/list-lib65536/out/ vendor/elftoolchain/dist/test/ar/tc/list-lib65536/out/list-lib65536.out.shar vendor/elftoolchain/dist/test/ar/tc/list-liblong/ vendor/elftoolchain/dist/test/ar/tc/list-liblong/in/ vendor/elftoolchain/dist/test/ar/tc/list-liblong/in/list-liblong.in.shar vendor/elftoolchain/dist/test/ar/tc/list-liblong/list-liblong.err vendor/elftoolchain/dist/test/ar/tc/list-liblong/list-liblong.eval vendor/elftoolchain/dist/test/ar/tc/list-liblong/list-liblong.out vendor/elftoolchain/dist/test/ar/tc/list-liblong/list-liblong.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/list-liblong/out/ vendor/elftoolchain/dist/test/ar/tc/list-liblong/out/list-liblong.out.shar vendor/elftoolchain/dist/test/ar/tc/list_s-libaS/ vendor/elftoolchain/dist/test/ar/tc/list_s-libaS/in/ vendor/elftoolchain/dist/test/ar/tc/list_s-libaS/in/list_s-libaS.in.shar vendor/elftoolchain/dist/test/ar/tc/list_s-libaS/list_s-libaS.err vendor/elftoolchain/dist/test/ar/tc/list_s-libaS/list_s-libaS.eval vendor/elftoolchain/dist/test/ar/tc/list_s-libaS/list_s-libaS.out vendor/elftoolchain/dist/test/ar/tc/list_s-libaS/list_s-libaS.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/list_s-libaS/out/ vendor/elftoolchain/dist/test/ar/tc/list_s-libaS/out/list_s-libaS.out.shar vendor/elftoolchain/dist/test/ar/tc/moveafter-liba-v/ vendor/elftoolchain/dist/test/ar/tc/moveafter-liba-v/in/ vendor/elftoolchain/dist/test/ar/tc/moveafter-liba-v/in/moveafter-liba-v.in.shar vendor/elftoolchain/dist/test/ar/tc/moveafter-liba-v/moveafter-liba-v.err vendor/elftoolchain/dist/test/ar/tc/moveafter-liba-v/moveafter-liba-v.eval vendor/elftoolchain/dist/test/ar/tc/moveafter-liba-v/moveafter-liba-v.out vendor/elftoolchain/dist/test/ar/tc/moveafter-liba-v/moveafter-liba-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/moveafter-liba-v/out/ vendor/elftoolchain/dist/test/ar/tc/moveafter-liba-v/out/moveafter-liba-v.out.shar vendor/elftoolchain/dist/test/ar/tc/moveafter-libmix-v/ vendor/elftoolchain/dist/test/ar/tc/moveafter-libmix-v/in/ vendor/elftoolchain/dist/test/ar/tc/moveafter-libmix-v/in/moveafter-libmix-v.in.shar vendor/elftoolchain/dist/test/ar/tc/moveafter-libmix-v/moveafter-libmix-v.err vendor/elftoolchain/dist/test/ar/tc/moveafter-libmix-v/moveafter-libmix-v.eval vendor/elftoolchain/dist/test/ar/tc/moveafter-libmix-v/moveafter-libmix-v.out vendor/elftoolchain/dist/test/ar/tc/moveafter-libmix-v/moveafter-libmix-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/moveafter-libmix-v/out/ vendor/elftoolchain/dist/test/ar/tc/moveafter-libmix-v/out/moveafter-libmix-v.out.shar vendor/elftoolchain/dist/test/ar/tc/moveafter_movepos-liba-v/ vendor/elftoolchain/dist/test/ar/tc/moveafter_movepos-liba-v/in/ vendor/elftoolchain/dist/test/ar/tc/moveafter_movepos-liba-v/in/moveafter_movepos-liba-v.in.shar vendor/elftoolchain/dist/test/ar/tc/moveafter_movepos-liba-v/moveafter_movepos-liba-v.err vendor/elftoolchain/dist/test/ar/tc/moveafter_movepos-liba-v/moveafter_movepos-liba-v.eval vendor/elftoolchain/dist/test/ar/tc/moveafter_movepos-liba-v/moveafter_movepos-liba-v.out vendor/elftoolchain/dist/test/ar/tc/moveafter_movepos-liba-v/moveafter_movepos-liba-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/moveafter_movepos-liba-v/out/ vendor/elftoolchain/dist/test/ar/tc/moveafter_movepos-liba-v/out/moveafter_movepos-liba-v.out.shar vendor/elftoolchain/dist/test/ar/tc/movebefore-liba-v/ vendor/elftoolchain/dist/test/ar/tc/movebefore-liba-v/in/ vendor/elftoolchain/dist/test/ar/tc/movebefore-liba-v/in/movebefore-liba-v.in.shar vendor/elftoolchain/dist/test/ar/tc/movebefore-liba-v/movebefore-liba-v.err vendor/elftoolchain/dist/test/ar/tc/movebefore-liba-v/movebefore-liba-v.eval vendor/elftoolchain/dist/test/ar/tc/movebefore-liba-v/movebefore-liba-v.out vendor/elftoolchain/dist/test/ar/tc/movebefore-liba-v/movebefore-liba-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/movebefore-liba-v/out/ vendor/elftoolchain/dist/test/ar/tc/movebefore-liba-v/out/movebefore-liba-v.out.shar vendor/elftoolchain/dist/test/ar/tc/movebefore-libmix/ vendor/elftoolchain/dist/test/ar/tc/movebefore-libmix/in/ vendor/elftoolchain/dist/test/ar/tc/movebefore-libmix/in/movebefore-libmix.in.shar vendor/elftoolchain/dist/test/ar/tc/movebefore-libmix/movebefore-libmix.err vendor/elftoolchain/dist/test/ar/tc/movebefore-libmix/movebefore-libmix.eval vendor/elftoolchain/dist/test/ar/tc/movebefore-libmix/movebefore-libmix.out vendor/elftoolchain/dist/test/ar/tc/movebefore-libmix/movebefore-libmix.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/movebefore-libmix/out/ vendor/elftoolchain/dist/test/ar/tc/movebefore-libmix/out/movebefore-libmix.out.shar vendor/elftoolchain/dist/test/ar/tc/movebefore_movepos-liba-v/ vendor/elftoolchain/dist/test/ar/tc/movebefore_movepos-liba-v/in/ vendor/elftoolchain/dist/test/ar/tc/movebefore_movepos-liba-v/in/movebefore_movepos-liba-v.in.shar vendor/elftoolchain/dist/test/ar/tc/movebefore_movepos-liba-v/movebefore_movepos-liba-v.err vendor/elftoolchain/dist/test/ar/tc/movebefore_movepos-liba-v/movebefore_movepos-liba-v.eval vendor/elftoolchain/dist/test/ar/tc/movebefore_movepos-liba-v/movebefore_movepos-liba-v.out vendor/elftoolchain/dist/test/ar/tc/movebefore_movepos-liba-v/movebefore_movepos-liba-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/movebefore_movepos-liba-v/out/ vendor/elftoolchain/dist/test/ar/tc/movebefore_movepos-liba-v/out/movebefore_movepos-liba-v.out.shar vendor/elftoolchain/dist/test/ar/tc/movetail-libmix/ vendor/elftoolchain/dist/test/ar/tc/movetail-libmix/in/ vendor/elftoolchain/dist/test/ar/tc/movetail-libmix/in/movetail-libmix.in.shar vendor/elftoolchain/dist/test/ar/tc/movetail-libmix/movetail-libmix.err vendor/elftoolchain/dist/test/ar/tc/movetail-libmix/movetail-libmix.eval vendor/elftoolchain/dist/test/ar/tc/movetail-libmix/movetail-libmix.out vendor/elftoolchain/dist/test/ar/tc/movetail-libmix/movetail-libmix.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/movetail-libmix/out/ vendor/elftoolchain/dist/test/ar/tc/movetail-libmix/out/movetail-libmix.out.shar vendor/elftoolchain/dist/test/ar/tc/optionl-liba/ vendor/elftoolchain/dist/test/ar/tc/optionl-liba/in/ vendor/elftoolchain/dist/test/ar/tc/optionl-liba/in/optionl-liba.in.shar vendor/elftoolchain/dist/test/ar/tc/optionl-liba/optionl-liba.err vendor/elftoolchain/dist/test/ar/tc/optionl-liba/optionl-liba.eval vendor/elftoolchain/dist/test/ar/tc/optionl-liba/optionl-liba.out vendor/elftoolchain/dist/test/ar/tc/optionl-liba/optionl-liba.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/optionl-liba/out/ vendor/elftoolchain/dist/test/ar/tc/optionl-liba/out/optionl-liba.out.shar vendor/elftoolchain/dist/test/ar/tc/print-liblong/ vendor/elftoolchain/dist/test/ar/tc/print-liblong-v/ vendor/elftoolchain/dist/test/ar/tc/print-liblong-v/in/ vendor/elftoolchain/dist/test/ar/tc/print-liblong-v/in/print-liblong-v.in.shar vendor/elftoolchain/dist/test/ar/tc/print-liblong-v/out/ vendor/elftoolchain/dist/test/ar/tc/print-liblong-v/out/print-liblong-v.out.shar vendor/elftoolchain/dist/test/ar/tc/print-liblong-v/print-liblong-v.err vendor/elftoolchain/dist/test/ar/tc/print-liblong-v/print-liblong-v.eval vendor/elftoolchain/dist/test/ar/tc/print-liblong-v/print-liblong-v.out (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/print-liblong-v/print-liblong-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/print-liblong/in/ vendor/elftoolchain/dist/test/ar/tc/print-liblong/in/print-liblong.in.shar vendor/elftoolchain/dist/test/ar/tc/print-liblong/out/ vendor/elftoolchain/dist/test/ar/tc/print-liblong/out/print-liblong.out.shar vendor/elftoolchain/dist/test/ar/tc/print-liblong/print-liblong.err vendor/elftoolchain/dist/test/ar/tc/print-liblong/print-liblong.eval vendor/elftoolchain/dist/test/ar/tc/print-liblong/print-liblong.out (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/print-liblong/print-liblong.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/print-libmix/ vendor/elftoolchain/dist/test/ar/tc/print-libmix-v/ vendor/elftoolchain/dist/test/ar/tc/print-libmix-v/in/ vendor/elftoolchain/dist/test/ar/tc/print-libmix-v/in/print-libmix-v.in.shar vendor/elftoolchain/dist/test/ar/tc/print-libmix-v/out/ vendor/elftoolchain/dist/test/ar/tc/print-libmix-v/out/print-libmix-v.out.shar vendor/elftoolchain/dist/test/ar/tc/print-libmix-v/print-libmix-v.err vendor/elftoolchain/dist/test/ar/tc/print-libmix-v/print-libmix-v.eval vendor/elftoolchain/dist/test/ar/tc/print-libmix-v/print-libmix-v.out (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/print-libmix-v/print-libmix-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/print-libmix/in/ vendor/elftoolchain/dist/test/ar/tc/print-libmix/in/print-libmix.in.shar vendor/elftoolchain/dist/test/ar/tc/print-libmix/out/ vendor/elftoolchain/dist/test/ar/tc/print-libmix/out/print-libmix.out.shar vendor/elftoolchain/dist/test/ar/tc/print-libmix/print-libmix.err vendor/elftoolchain/dist/test/ar/tc/print-libmix/print-libmix.eval vendor/elftoolchain/dist/test/ar/tc/print-libmix/print-libmix.out (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/print-libmix/print-libmix.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/quickadd-liba-v/ vendor/elftoolchain/dist/test/ar/tc/quickadd-liba-v/in/ vendor/elftoolchain/dist/test/ar/tc/quickadd-liba-v/in/quickadd-liba-v.in.shar vendor/elftoolchain/dist/test/ar/tc/quickadd-liba-v/out/ vendor/elftoolchain/dist/test/ar/tc/quickadd-liba-v/out/quickadd-liba-v.out.shar vendor/elftoolchain/dist/test/ar/tc/quickadd-liba-v/quickadd-liba-v.err vendor/elftoolchain/dist/test/ar/tc/quickadd-liba-v/quickadd-liba-v.eval vendor/elftoolchain/dist/test/ar/tc/quickadd-liba-v/quickadd-liba-v.out vendor/elftoolchain/dist/test/ar/tc/quickadd-liba-v/quickadd-liba-v.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/undefined-libsbrk/ vendor/elftoolchain/dist/test/ar/tc/undefined-libsbrk/in/ vendor/elftoolchain/dist/test/ar/tc/undefined-libsbrk/in/undefined-libsbrk.in.shar vendor/elftoolchain/dist/test/ar/tc/undefined-libsbrk/out/ vendor/elftoolchain/dist/test/ar/tc/undefined-libsbrk/out/undefined-libsbrk.out.shar vendor/elftoolchain/dist/test/ar/tc/undefined-libsbrk/undefined-libsbrk.err vendor/elftoolchain/dist/test/ar/tc/undefined-libsbrk/undefined-libsbrk.eval vendor/elftoolchain/dist/test/ar/tc/undefined-libsbrk/undefined-libsbrk.out vendor/elftoolchain/dist/test/ar/tc/undefined-libsbrk/undefined-libsbrk.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/usage-ab/ vendor/elftoolchain/dist/test/ar/tc/usage-ab/usage-ab.err vendor/elftoolchain/dist/test/ar/tc/usage-ab/usage-ab.eval vendor/elftoolchain/dist/test/ar/tc/usage-ab/usage-ab.out vendor/elftoolchain/dist/test/ar/tc/usage-ab/usage-ab.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/usage-bi/ vendor/elftoolchain/dist/test/ar/tc/usage-bi/usage-bi.err vendor/elftoolchain/dist/test/ar/tc/usage-bi/usage-bi.eval vendor/elftoolchain/dist/test/ar/tc/usage-bi/usage-bi.out vendor/elftoolchain/dist/test/ar/tc/usage-bi/usage-bi.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/usage-tx/ vendor/elftoolchain/dist/test/ar/tc/usage-tx/usage-tx.err vendor/elftoolchain/dist/test/ar/tc/usage-tx/usage-tx.eval vendor/elftoolchain/dist/test/ar/tc/usage-tx/usage-tx.out vendor/elftoolchain/dist/test/ar/tc/usage-tx/usage-tx.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tc/weaksymbol-libweak/ vendor/elftoolchain/dist/test/ar/tc/weaksymbol-libweak/in/ vendor/elftoolchain/dist/test/ar/tc/weaksymbol-libweak/in/weaksymbol-libweak.in.shar vendor/elftoolchain/dist/test/ar/tc/weaksymbol-libweak/out/ vendor/elftoolchain/dist/test/ar/tc/weaksymbol-libweak/out/weaksymbol-libweak.out.shar vendor/elftoolchain/dist/test/ar/tc/weaksymbol-libweak/weaksymbol-libweak.err vendor/elftoolchain/dist/test/ar/tc/weaksymbol-libweak/weaksymbol-libweak.eval vendor/elftoolchain/dist/test/ar/tc/weaksymbol-libweak/weaksymbol-libweak.out vendor/elftoolchain/dist/test/ar/tc/weaksymbol-libweak/weaksymbol-libweak.sh (contents, props changed) vendor/elftoolchain/dist/test/ar/tcgen.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/ vendor/elftoolchain/dist/test/elfcopy/Makefile (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/func.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/plugin/ vendor/elftoolchain/dist/test/elfcopy/plugin/Makefile (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/plugin/Makefile.ardiff (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/plugin/Makefile.teraser (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/plugin/ardiff.c (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/plugin/teraser.c (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/run.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-1/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-1/elfcopy-L-1.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-1/elfcopy-L-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-1/elfcopy-L-1.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-1/elfcopy-L-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-1/in/elfcopy-L-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-1/out/elfcopy-L-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-2/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-2/elfcopy-L-2.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-2/elfcopy-L-2.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-2/elfcopy-L-2.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-2/elfcopy-L-2.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-2/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-2/in/elfcopy-L-2.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-2/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-L-2/out/elfcopy-L-2.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-1/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-1/elfcopy-N-1.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-1/elfcopy-N-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-1/elfcopy-N-1.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-1/elfcopy-N-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-1/in/elfcopy-N-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-1/out/elfcopy-N-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-2/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-2/elfcopy-N-2.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-2/elfcopy-N-2.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-2/elfcopy-N-2.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-2/elfcopy-N-2.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-2/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-2/in/elfcopy-N-2.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-2/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-N-2/out/elfcopy-N-2.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-1/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-1/elfcopy-noops-1.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-1/elfcopy-noops-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-1/elfcopy-noops-1.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-1/elfcopy-noops-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-1/in/elfcopy-noops-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-1/out/elfcopy-noops-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-2/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-2/elfcopy-noops-2.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-2/elfcopy-noops-2.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-2/elfcopy-noops-2.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-2/elfcopy-noops-2.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-2/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-2/in/elfcopy-noops-2.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-2/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-2/out/elfcopy-noops-2.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-3/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-3/elfcopy-noops-3.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-3/elfcopy-noops-3.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-3/elfcopy-noops-3.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-3/elfcopy-noops-3.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-3/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-3/in/elfcopy-noops-3.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-3/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-3/out/elfcopy-noops-3.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-4/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-4/elfcopy-noops-4.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-4/elfcopy-noops-4.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-4/elfcopy-noops-4.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-4/elfcopy-noops-4.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-4/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-4/in/elfcopy-noops-4.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-4/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-4/out/elfcopy-noops-4.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-5/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-5/elfcopy-noops-5.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-5/elfcopy-noops-5.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-5/elfcopy-noops-5.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-5/elfcopy-noops-5.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-5/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-5/in/elfcopy-noops-5.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-5/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-5/out/elfcopy-noops-5.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-6/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-6/elfcopy-noops-6.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-6/elfcopy-noops-6.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-6/elfcopy-noops-6.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-6/elfcopy-noops-6.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-6/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-6/in/elfcopy-noops-6.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-6/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-6/out/elfcopy-noops-6.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-7/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-7/elfcopy-noops-7.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-7/elfcopy-noops-7.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-7/elfcopy-noops-7.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-7/elfcopy-noops-7.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-7/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-7/in/elfcopy-noops-7.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-7/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-7/out/elfcopy-noops-7.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-1/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-1/elfcopy-noops-archive-1.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-1/elfcopy-noops-archive-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-1/elfcopy-noops-archive-1.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-1/elfcopy-noops-archive-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-1/in/elfcopy-noops-archive-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-1/out/elfcopy-noops-archive-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-2/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-2/elfcopy-noops-archive-2.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-2/elfcopy-noops-archive-2.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-2/elfcopy-noops-archive-2.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-2/elfcopy-noops-archive-2.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-2/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-2/in/elfcopy-noops-archive-2.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-2/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-noops-archive-2/out/elfcopy-noops-archive-2.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-rename-1/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-rename-1/elfcopy-rename-1.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-rename-1/elfcopy-rename-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-rename-1/elfcopy-rename-1.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-rename-1/elfcopy-rename-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-rename-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-rename-1/in/elfcopy-rename-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-rename-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-rename-1/out/elfcopy-rename-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-ihex-1/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-ihex-1/elfcopy-to-ihex-1.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-ihex-1/elfcopy-to-ihex-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-ihex-1/elfcopy-to-ihex-1.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-ihex-1/elfcopy-to-ihex-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-ihex-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-ihex-1/in/elfcopy-to-ihex-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-ihex-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-ihex-1/out/elfcopy-to-ihex-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-1/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-1/elfcopy-to-srec-1.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-1/elfcopy-to-srec-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-1/elfcopy-to-srec-1.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-1/elfcopy-to-srec-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-1/in/elfcopy-to-srec-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-1/out/elfcopy-to-srec-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-2/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-2/elfcopy-to-srec-2.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-2/elfcopy-to-srec-2.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-2/elfcopy-to-srec-2.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-2/elfcopy-to-srec-2.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-2/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-2/in/elfcopy-to-srec-2.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-2/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-2/out/elfcopy-to-srec-2.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-3/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-3/elfcopy-to-srec-3.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-3/elfcopy-to-srec-3.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-3/elfcopy-to-srec-3.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-3/elfcopy-to-srec-3.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-3/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-3/in/elfcopy-to-srec-3.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-3/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-srec-3/out/elfcopy-to-srec-3.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-symbolsrec-1/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-symbolsrec-1/elfcopy-to-symbolsrec-1.err vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-symbolsrec-1/elfcopy-to-symbolsrec-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-symbolsrec-1/elfcopy-to-symbolsrec-1.out vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-symbolsrec-1/elfcopy-to-symbolsrec-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-symbolsrec-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-symbolsrec-1/in/elfcopy-to-symbolsrec-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-symbolsrec-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/elfcopy-to-symbolsrec-1/out/elfcopy-to-symbolsrec-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-1/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-1/in/strip-K-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-1/out/strip-K-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-1/strip-K-1.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-1/strip-K-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-1/strip-K-1.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-1/strip-K-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-2/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-2/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-2/in/strip-K-2.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-2/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-2/out/strip-K-2.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-2/strip-K-2.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-2/strip-K-2.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-2/strip-K-2.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-K-2/strip-K-2.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-1/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-1/in/strip-all-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-1/out/strip-all-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-1/strip-all-1.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-1/strip-all-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-1/strip-all-1.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-1/strip-all-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-10/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-10/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-10/in/strip-all-10.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-10/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-10/out/strip-all-10.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-10/strip-all-10.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-10/strip-all-10.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-10/strip-all-10.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-10/strip-all-10.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-2/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-2/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-2/in/strip-all-2.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-2/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-2/out/strip-all-2.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-2/strip-all-2.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-2/strip-all-2.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-2/strip-all-2.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-2/strip-all-2.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-3/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-3/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-3/in/strip-all-3.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-3/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-3/out/strip-all-3.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-3/strip-all-3.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-3/strip-all-3.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-3/strip-all-3.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-3/strip-all-3.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-4/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-4/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-4/in/strip-all-4.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-4/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-4/out/strip-all-4.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-4/strip-all-4.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-4/strip-all-4.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-4/strip-all-4.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-4/strip-all-4.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-5/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-5/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-5/in/strip-all-5.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-5/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-5/out/strip-all-5.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-5/strip-all-5.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-5/strip-all-5.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-5/strip-all-5.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-5/strip-all-5.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-6/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-6/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-6/in/strip-all-6.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-6/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-6/out/strip-all-6.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-6/strip-all-6.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-6/strip-all-6.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-6/strip-all-6.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-6/strip-all-6.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-7/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-7/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-7/in/strip-all-7.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-7/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-7/out/strip-all-7.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-7/strip-all-7.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-7/strip-all-7.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-7/strip-all-7.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-7/strip-all-7.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-8/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-8/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-8/in/strip-all-8.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-8/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-8/out/strip-all-8.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-8/strip-all-8.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-8/strip-all-8.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-8/strip-all-8.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-8/strip-all-8.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-9/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-9/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-9/in/strip-all-9.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-9/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-9/out/strip-all-9.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-9/strip-all-9.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-9/strip-all-9.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-9/strip-all-9.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-9/strip-all-9.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-1/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-1/in/strip-all-archive-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-1/out/strip-all-archive-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-1/strip-all-archive-1.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-1/strip-all-archive-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-1/strip-all-archive-1.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-1/strip-all-archive-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-2/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-2/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-2/in/strip-all-archive-2.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-2/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-2/out/strip-all-archive-2.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-2/strip-all-archive-2.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-2/strip-all-archive-2.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-2/strip-all-archive-2.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-all-archive-2/strip-all-archive-2.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-1/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-1/in/strip-debug-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-1/out/strip-debug-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-1/strip-debug-1.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-1/strip-debug-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-1/strip-debug-1.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-1/strip-debug-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-2/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-2/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-2/in/strip-debug-2.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-2/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-2/out/strip-debug-2.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-2/strip-debug-2.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-2/strip-debug-2.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-2/strip-debug-2.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-2/strip-debug-2.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-3/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-3/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-3/in/strip-debug-3.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-3/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-3/out/strip-debug-3.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-3/strip-debug-3.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-3/strip-debug-3.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-3/strip-debug-3.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-3/strip-debug-3.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-4/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-4/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-4/in/strip-debug-4.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-4/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-4/out/strip-debug-4.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-4/strip-debug-4.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-4/strip-debug-4.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-4/strip-debug-4.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-debug-4/strip-debug-4.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-onlydebug-1/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-onlydebug-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-onlydebug-1/in/strip-onlydebug-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-onlydebug-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-onlydebug-1/out/strip-onlydebug-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-onlydebug-1/strip-onlydebug-1.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-onlydebug-1/strip-onlydebug-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-onlydebug-1/strip-onlydebug-1.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-onlydebug-1/strip-onlydebug-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-1/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-1/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-1/in/strip-unneeded-1.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-1/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-1/out/strip-unneeded-1.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-1/strip-unneeded-1.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-1/strip-unneeded-1.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-1/strip-unneeded-1.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-1/strip-unneeded-1.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-2/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-2/in/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-2/in/strip-unneeded-2.in.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-2/out/ vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-2/out/strip-unneeded-2.out.shar vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-2/strip-unneeded-2.err vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-2/strip-unneeded-2.eval vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-2/strip-unneeded-2.out vendor/elftoolchain/dist/test/elfcopy/tc/strip-unneeded-2/strip-unneeded-2.sh (contents, props changed) vendor/elftoolchain/dist/test/elfcopy/tcgen.sh (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ vendor/elftoolchain/dist/test/elfdump/Makefile (contents, props changed) vendor/elftoolchain/dist/test/elfdump/tet_scen vendor/elftoolchain/dist/test/elfdump/tetexec.cfg vendor/elftoolchain/dist/test/elfdump/ts/ vendor/elftoolchain/dist/test/elfdump/ts/archive1/ vendor/elftoolchain/dist/test/elfdump/ts/archive1/@G%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@G%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@G%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@G%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@c%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@c%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@d%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@d%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@e%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@e%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@h%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@h%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@k%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@k%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@n%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@n%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@p%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@p%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@r%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@r%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@s%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@s%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@s@N%.symtab%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@s@N%.symtab%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@s@N%ARSYM%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@s@N%ARSYM%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@v%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@S@v%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@c%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@c%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@c@p@n%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@c@p@n%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@c@s%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@c@s%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@d%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@d%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@e%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@e%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@e@i%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@e@i%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@e@p@c%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@e@p@c%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@h%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@h%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@n%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@n%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@p%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@p%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@p@s%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@p@s%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/@r%liba.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive1/@r%liba.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive1/liba.a (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ts/archive1/tc (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ts/archive2/ vendor/elftoolchain/dist/test/elfdump/ts/archive2/@G%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@G%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@G%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@G%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@c%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@c%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@d%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@d%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@e%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@e%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@h%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@h%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@k%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@k%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@n%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@n%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@p%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@p%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@r%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@r%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@s%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@s%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@s@N%.symtab%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@s@N%.symtab%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@s@N%ARSYM%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@s@N%ARSYM%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@v%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@S@v%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@c%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@c%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@d%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@d%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@e%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@e%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@h%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@h%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@i%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@i%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@k%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@k%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@n%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@n%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@p%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@p%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@r%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@r%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@s%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@s%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/@v%libdwarf.a.err vendor/elftoolchain/dist/test/elfdump/ts/archive2/@v%libdwarf.a.out vendor/elftoolchain/dist/test/elfdump/ts/archive2/libdwarf.a (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ts/archive2/tc (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ts/bin/ vendor/elftoolchain/dist/test/elfdump/ts/bin/tcgen.sh (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ts/common/ vendor/elftoolchain/dist/test/elfdump/ts/common/func.sh (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ts/dso1/ vendor/elftoolchain/dist/test/elfdump/ts/dso1/@G%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@G%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@G%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@G%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@c@s%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@c@s%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@d%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@d%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@e%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@e%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@h%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@h%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@k%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@k%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@n%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@n%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@p%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@p%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@r%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@r%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@s@N%.dynsym%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@s@N%.dynsym%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@v%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@S@v%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@c%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@c%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@c@p@n%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@c@p@n%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@c@s%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@c@s%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@d%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@d%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@e%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@e%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@e@i%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@e@i%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@e@p@c%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@e@p@c%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@h%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@h%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@n%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@n%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@p%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@p%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@p@s%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@p@s%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/@r%libelf.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso1/@r%libelf.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso1/libelf.so (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ts/dso1/tc (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ts/dso2/ vendor/elftoolchain/dist/test/elfdump/ts/dso2/@G%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@G%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@G%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@G%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@c%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@c%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@d%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@d%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@e%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@e%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@h%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@h%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@k%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@k%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@n%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@n%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@p%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@p%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@r%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@r%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@s%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@s%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@v%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@S@v%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@c%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@c%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@c@p@n%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@c@p@n%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@c@s%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@c@s%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@d%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@d%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@e%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@e%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@e@i%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@e@i%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@e@p@c%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@e@p@c%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@h%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@h%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@n%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@n%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@p%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@p%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@p@s%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@p@s%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/@r%test.so.err vendor/elftoolchain/dist/test/elfdump/ts/dso2/@r%test.so.out vendor/elftoolchain/dist/test/elfdump/ts/dso2/tc (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ts/dso2/test.so (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ts/exec1/ vendor/elftoolchain/dist/test/elfdump/ts/exec1/@G%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@G%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@G@e%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@G@e%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@G%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@G%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@c@s%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@c@s%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@d%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@d%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@e%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@e%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@e@k%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@e@k%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@e@p%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@e@p%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@h%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@h%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@n%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@n%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@r%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@r%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@r@N%.rela.dyn%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@r@N%.rela.dyn%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@r@N%.rela.dyn@N%.rela.plt%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@r@N%.rela.dyn@N%.rela.plt%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@s@N%.dynsym%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@s@N%.dynsym%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@v%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@S@v%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@c%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@c%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@c@d%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@c@d%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@c@p@n%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@c@p@n%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@c@s%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@c@s%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@e%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@e%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@e@d%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@e@d%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@e@p%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@e@p%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@e@p@c@d%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@e@p@c@d%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@n%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@n%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@p@e%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@p@e%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@p@n%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@p@n%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/@p@s%ls.err vendor/elftoolchain/dist/test/elfdump/ts/exec1/@p@s%ls.out vendor/elftoolchain/dist/test/elfdump/ts/exec1/ls (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ts/exec1/tc (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ts/exec2/ vendor/elftoolchain/dist/test/elfdump/ts/exec2/@G%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@G%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@G@e%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@G@e%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@G%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@G%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@c@s%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@c@s%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@d%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@d%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@e%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@e%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@e@p%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@e@p%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@h%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@h%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@k%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@k%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@n%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@n%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@r%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@r%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@r@N%.rela.dyn%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@r@N%.rela.dyn%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@s@N%.dynsym%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@s@N%.dynsym%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@v%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@S@v%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@c%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@c%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@c@d%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@c@d%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@c@p@n%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@c@p@n%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@c@s%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@c@s%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@e%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@e%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@e@d%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@e@d%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@e@i%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@e@i%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@e@p%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@e@p%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@e@p@c@d%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@e@p@c@d%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@h%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@h%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@n%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@n%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@p@e%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@p@e%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@p@n%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@p@n%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@p@s%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@p@s%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/@r%cp.err vendor/elftoolchain/dist/test/elfdump/ts/exec2/@r%cp.out vendor/elftoolchain/dist/test/elfdump/ts/exec2/cp (contents, props changed) vendor/elftoolchain/dist/test/elfdump/ts/exec2/tc (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ vendor/elftoolchain/dist/test/libdwarf/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/tet_scen vendor/elftoolchain/dist/test/libdwarf/tetbuild.cfg vendor/elftoolchain/dist/test/libdwarf/tetclean.cfg vendor/elftoolchain/dist/test/libdwarf/tetexec.cfg vendor/elftoolchain/dist/test/libdwarf/ts/ vendor/elftoolchain/dist/test/libdwarf/ts/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/Makefile.tset (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/README vendor/elftoolchain/dist/test/libdwarf/ts/bin/ vendor/elftoolchain/dist/test/libdwarf/ts/bin/count-ic (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/common/ vendor/elftoolchain/dist/test/libdwarf/ts/common/die_traverse.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/common/driver.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/common/driver.h (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/common/object/ vendor/elftoolchain/dist/test/libdwarf/ts/common/object/dt32-g1.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/common/object/dt64-g1.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/common/object/dt64-g3.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/common/object/dto64-g1.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/common/object/ec32-g1.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/common/object/ec64-g1.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/common/object/ec64-g3.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_abbrev/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_abbrev/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_abbrev/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_abbrev/dto64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_abbrev/dwarf_abbrev.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_abbrev/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_arange/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_arange/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_arange/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_arange/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_arange/dwarf_arange.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_arange/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_arange/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attr/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attr/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attr/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attr/dto64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attr/dwarf_attr.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attr/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attr/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attrlist/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attrlist/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attrlist/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attrlist/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attrlist/dwarf_attrlist.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attrlist/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_attrlist/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_child/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_child/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_child/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_child/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_child/dwarf_child.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_child/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_child/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_convenience/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_convenience/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_convenience/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_convenience/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_convenience/dwarf_die_convenience.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_convenience/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_convenience/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_offset/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_offset/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_offset/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_offset/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_offset/dwarf_die_offset.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_offset/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_offset/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_query/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_query/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_query/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_query/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_query/dto64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_query/dwarf_die_query.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_query/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_die_query/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_form/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_form/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_form/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_form/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_form/dwarf_form.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_form/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_form/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_frame/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_frame/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_frame/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_frame/dto64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_frame/dwarf_frame.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_frame/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_get_address_size/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_get_address_size/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_get_address_size/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_get_address_size/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_get_address_size/dwarf_get_address_size.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_init/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_init/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_init/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_init/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_init/dwarf_init.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_init/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_init/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_lineno/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_lineno/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_lineno/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_lineno/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_lineno/dto64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_lineno/dwarf_lineno.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_lineno/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_lineno/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_loclist/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_loclist/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_loclist/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_loclist/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_loclist/dwarf_loclist.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_loclist/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_loclist/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_macinfo/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_macinfo/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_macinfo/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_macinfo/dt64-g3.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_macinfo/dwarf_macinfo.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_macinfo/ec64-g3.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_next_cu_header/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_next_cu_header/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_next_cu_header/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_next_cu_header/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_next_cu_header/dwarf_next_cu_header.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_next_cu_header/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_next_cu_header/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_pubnames/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_pubnames/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_pubnames/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_pubnames/dwarf_pubnames.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_pubnames/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_ranges/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_ranges/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_ranges/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_ranges/dwarf_ranges.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_ranges/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_siblingof/ vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_siblingof/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_siblingof/dt32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_siblingof/dt64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_siblingof/dwarf_siblingof.c (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_siblingof/ec32-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libdwarf/ts/dwarf_siblingof/ec64-g1.xml.gz (contents, props changed) vendor/elftoolchain/dist/test/libelf/ vendor/elftoolchain/dist/test/libelf/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/README vendor/elftoolchain/dist/test/libelf/tet_code vendor/elftoolchain/dist/test/libelf/tet_scen vendor/elftoolchain/dist/test/libelf/tetbuild.cfg vendor/elftoolchain/dist/test/libelf/tetclean.cfg vendor/elftoolchain/dist/test/libelf/tetexec.cfg vendor/elftoolchain/dist/test/libelf/tset/ vendor/elftoolchain/dist/test/libelf/tset/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/Makefile.tset (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/abi/ vendor/elftoolchain/dist/test/libelf/tset/abi/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/abi/abi.m4 vendor/elftoolchain/dist/test/libelf/tset/bin/ vendor/elftoolchain/dist/test/libelf/tset/bin/elf-hash (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/bin/elfc (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/common/ vendor/elftoolchain/dist/test/libelf/tset/common/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/common/check_elf.yaml vendor/elftoolchain/dist/test/libelf/tset/common/ehdr.yaml vendor/elftoolchain/dist/test/libelf/tset/common/ehdr_template.m4 vendor/elftoolchain/dist/test/libelf/tset/common/elf_flag.m4 vendor/elftoolchain/dist/test/libelf/tset/common/elfts-compare-files.c (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/common/elfts-copy-file.c (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/common/elfts-initversion.c (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/common/elfts-openfile.c (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/common/elfts.h (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/common/fsize.yaml vendor/elftoolchain/dist/test/libelf/tset/common/gelf_ehdr_template.h (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/common/getclass.yaml vendor/elftoolchain/dist/test/libelf/tset/common/getshdr.m4 vendor/elftoolchain/dist/test/libelf/tset/common/newehdr.yaml vendor/elftoolchain/dist/test/libelf/tset/common/newehdr_template.m4 vendor/elftoolchain/dist/test/libelf/tset/common/newscn.yaml vendor/elftoolchain/dist/test/libelf/tset/common/newscn2.yaml vendor/elftoolchain/dist/test/libelf/tset/common/phdr.yaml vendor/elftoolchain/dist/test/libelf/tset/common/phdr_template.c (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/common/rdwr.yaml vendor/elftoolchain/dist/test/libelf/tset/common/rdwr1.yaml vendor/elftoolchain/dist/test/libelf/tset/common/rdwr2.yaml vendor/elftoolchain/dist/test/libelf/tset/common/shdr.yaml vendor/elftoolchain/dist/test/libelf/tset/common/u1.yaml vendor/elftoolchain/dist/test/libelf/tset/common/versioning.yaml vendor/elftoolchain/dist/test/libelf/tset/common/xlate.yaml vendor/elftoolchain/dist/test/libelf/tset/common/xlate_template.c (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/common/xlate_template.m4 vendor/elftoolchain/dist/test/libelf/tset/common/xscn-1.yaml vendor/elftoolchain/dist/test/libelf/tset/common/xscn-2.yaml vendor/elftoolchain/dist/test/libelf/tset/common/xscn-3.yaml vendor/elftoolchain/dist/test/libelf/tset/common/zerosection.yaml vendor/elftoolchain/dist/test/libelf/tset/elf32_getehdr/ vendor/elftoolchain/dist/test/libelf/tset/elf32_getehdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf32_getehdr/ehdr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf32_getphdr/ vendor/elftoolchain/dist/test/libelf/tset/elf32_getphdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf32_getphdr/phdr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf32_getshdr/ vendor/elftoolchain/dist/test/libelf/tset/elf32_getshdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf32_getshdr/shdr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf32_newehdr/ vendor/elftoolchain/dist/test/libelf/tset/elf32_newehdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf32_newehdr/ehdr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf32_xlatetof/ vendor/elftoolchain/dist/test/libelf/tset/elf32_xlatetof/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf32_xlatetof/xlate.m4 vendor/elftoolchain/dist/test/libelf/tset/elf32_xlatetom/ vendor/elftoolchain/dist/test/libelf/tset/elf32_xlatetom/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf32_xlatetom/xlate.m4 vendor/elftoolchain/dist/test/libelf/tset/elf64_getehdr/ vendor/elftoolchain/dist/test/libelf/tset/elf64_getehdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf64_getehdr/ehdr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf64_getphdr/ vendor/elftoolchain/dist/test/libelf/tset/elf64_getphdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf64_getphdr/phdr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf64_getshdr/ vendor/elftoolchain/dist/test/libelf/tset/elf64_getshdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf64_getshdr/shdr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf64_newehdr/ vendor/elftoolchain/dist/test/libelf/tset/elf64_newehdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf64_newehdr/ehdr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf64_xlatetof/ vendor/elftoolchain/dist/test/libelf/tset/elf64_xlatetof/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf64_xlatetof/xlate.m4 vendor/elftoolchain/dist/test/libelf/tset/elf64_xlatetom/ vendor/elftoolchain/dist/test/libelf/tset/elf64_xlatetom/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf64_xlatetom/xlate.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_begin/ vendor/elftoolchain/dist/test/libelf/tset/elf_begin/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_begin/begin.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_cntl/ vendor/elftoolchain/dist/test/libelf/tset/elf_cntl/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_cntl/cntl.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_end/ vendor/elftoolchain/dist/test/libelf/tset/elf_end/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_end/end.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_errmsg/ vendor/elftoolchain/dist/test/libelf/tset/elf_errmsg/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_errmsg/errmsg.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_errno/ vendor/elftoolchain/dist/test/libelf/tset/elf_errno/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_errno/errno.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_fill/ vendor/elftoolchain/dist/test/libelf/tset/elf_fill/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_fill/fill.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_flagarhdr/ vendor/elftoolchain/dist/test/libelf/tset/elf_flagarhdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_flagarhdr/flagarhdr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_flagdata/ vendor/elftoolchain/dist/test/libelf/tset/elf_flagdata/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_flagdata/data.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_flagehdr/ vendor/elftoolchain/dist/test/libelf/tset/elf_flagehdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_flagehdr/ehdr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_flagelf/ vendor/elftoolchain/dist/test/libelf/tset/elf_flagelf/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_flagelf/elf.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_flagphdr/ vendor/elftoolchain/dist/test/libelf/tset/elf_flagphdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_flagphdr/phdr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_flagscn/ vendor/elftoolchain/dist/test/libelf/tset/elf_flagscn/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_flagscn/scn.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_flagshdr/ vendor/elftoolchain/dist/test/libelf/tset/elf_flagshdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_flagshdr/shdr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_fsize/ vendor/elftoolchain/dist/test/libelf/tset/elf_fsize/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_fsize/fsize.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_getarhdr/ vendor/elftoolchain/dist/test/libelf/tset/elf_getarhdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_getarhdr/getarhdr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_getarsym/ vendor/elftoolchain/dist/test/libelf/tset/elf_getarsym/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_getarsym/getarsym.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_getbase/ vendor/elftoolchain/dist/test/libelf/tset/elf_getbase/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_getbase/getbase.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_getdata/ vendor/elftoolchain/dist/test/libelf/tset/elf_getdata/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_getdata/getdata.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_getident/ vendor/elftoolchain/dist/test/libelf/tset/elf_getident/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_getident/getident.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_getscn/ vendor/elftoolchain/dist/test/libelf/tset/elf_getscn/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_getscn/getscn.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_getshnum/ vendor/elftoolchain/dist/test/libelf/tset/elf_getshnum/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_getshnum/getshnum.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_getshstrndx/ vendor/elftoolchain/dist/test/libelf/tset/elf_getshstrndx/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_getshstrndx/getshstrndx.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_hash/ vendor/elftoolchain/dist/test/libelf/tset/elf_hash/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_hash/hash.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_kind/ vendor/elftoolchain/dist/test/libelf/tset/elf_kind/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_kind/kind.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_memory/ vendor/elftoolchain/dist/test/libelf/tset/elf_memory/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_memory/memory.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_ndxscn/ vendor/elftoolchain/dist/test/libelf/tset/elf_ndxscn/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_ndxscn/ndxscn.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_newscn/ vendor/elftoolchain/dist/test/libelf/tset/elf_newscn/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_newscn/newscn.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_next/ vendor/elftoolchain/dist/test/libelf/tset/elf_next/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_next/next.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_nextscn/ vendor/elftoolchain/dist/test/libelf/tset/elf_nextscn/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_nextscn/nextscn.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_rawfile/ vendor/elftoolchain/dist/test/libelf/tset/elf_rawfile/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_rawfile/rawfile.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_strptr/ vendor/elftoolchain/dist/test/libelf/tset/elf_strptr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_strptr/strptr.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_update/ vendor/elftoolchain/dist/test/libelf/tset/elf_update/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_update/update.m4 vendor/elftoolchain/dist/test/libelf/tset/elf_version/ vendor/elftoolchain/dist/test/libelf/tset/elf_version/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/elf_version/version.m4 vendor/elftoolchain/dist/test/libelf/tset/gelf_getclass/ vendor/elftoolchain/dist/test/libelf/tset/gelf_getclass/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/gelf_getclass/getclass.m4 vendor/elftoolchain/dist/test/libelf/tset/gelf_getehdr/ vendor/elftoolchain/dist/test/libelf/tset/gelf_getehdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/gelf_getehdr/ehdr.m4 vendor/elftoolchain/dist/test/libelf/tset/gelf_newehdr/ vendor/elftoolchain/dist/test/libelf/tset/gelf_newehdr/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/gelf_newehdr/ehdr.m4 vendor/elftoolchain/dist/test/libelf/tset/gelf_xlate/ vendor/elftoolchain/dist/test/libelf/tset/gelf_xlate/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelf/tset/gelf_xlate/xlate.m4 vendor/elftoolchain/dist/test/libelftc/ vendor/elftoolchain/dist/test/libelftc/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelftc/tet_scen vendor/elftoolchain/dist/test/libelftc/tetbuild.cfg vendor/elftoolchain/dist/test/libelftc/tetclean.cfg vendor/elftoolchain/dist/test/libelftc/tetexec.cfg vendor/elftoolchain/dist/test/libelftc/tset/ vendor/elftoolchain/dist/test/libelftc/tset/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelftc/tset/Makefile.tset (contents, props changed) vendor/elftoolchain/dist/test/libelftc/tset/elftc_string_table/ vendor/elftoolchain/dist/test/libelftc/tset/elftc_string_table/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelftc/tset/elftc_string_table/string_table.m4 vendor/elftoolchain/dist/test/libelftc/tset/elftc_version/ vendor/elftoolchain/dist/test/libelftc/tset/elftc_version/Makefile (contents, props changed) vendor/elftoolchain/dist/test/libelftc/tset/elftc_version/elftc_version.m4 vendor/elftoolchain/dist/test/nm/ vendor/elftoolchain/dist/test/nm/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/tet_code vendor/elftoolchain/dist/test/nm/tet_scen vendor/elftoolchain/dist/test/nm/tetbuild.cfg vendor/elftoolchain/dist/test/nm/tetclean.cfg vendor/elftoolchain/dist/test/nm/tetexec.cfg vendor/elftoolchain/dist/test/nm/ts/ vendor/elftoolchain/dist/test/nm/ts/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/Makefile.tset (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/common/ vendor/elftoolchain/dist/test/nm/ts/common/func.sh (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/common/test_nm.c (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/cpp_demangle/ vendor/elftoolchain/dist/test/nm/ts/cpp_demangle/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/cpp_demangle/cpp_demangle-tc.c (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/cpp_demangle_ARM/ vendor/elftoolchain/dist/test/nm/ts/cpp_demangle_ARM/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/cpp_demangle_ARM/cpp_demangle_ARM-tc.c (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/cpp_demangle_gnu2/ vendor/elftoolchain/dist/test/nm/ts/cpp_demangle_gnu2/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/cpp_demangle_gnu2/cpp_demangle_gnu2-tc.c (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/ vendor/elftoolchain/dist/test/nm/ts/nm_archive1/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/tc.sh (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-dynamic.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-external.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-format-bsd.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-format-posix.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-print-file-name.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-print-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-radix-hexa.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-radix-octal.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-size-sort.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-sort-no.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-sort-num.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-sort-reverse-no.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-sort-reverse-num.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-sort-reverse-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-sort-reverse.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-sysv.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar-undef.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive1/test_ar.uu vendor/elftoolchain/dist/test/nm/ts/nm_archive2/ vendor/elftoolchain/dist/test/nm/ts/nm_archive2/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/tc.sh (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-dynamic.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-external.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-format-bsd.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-format-posix.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-format-sysv.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-print-file-name.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-print-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-radix-hexa.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-radix-octal.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-reverse.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-sort-no.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-sort-num.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-sort-reverse-no.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-sort-reverse-num.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-sort-reverse-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-sort-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar-undef.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_archive2/test_ar.uu vendor/elftoolchain/dist/test/nm/ts/nm_debug/ vendor/elftoolchain/dist/test/nm/ts/nm_debug/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_debug/tc.sh (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_debug/test_obj-debug-syms.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_debug/test_obj.uu vendor/elftoolchain/dist/test/nm/ts/nm_object1/ vendor/elftoolchain/dist/test/nm/ts/nm_object1/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/tc.sh (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-dynamic.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-external.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-format-bsd.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-format-posix.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-format-sysv.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-print-file-name.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-print-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-radix-hexa.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-radix-octal.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-sort-no.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-sort-num.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-sort-reverse-no.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-sort-reverse-num.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-sort-reverse-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-sort-reverse.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-sort-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj-undef.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object1/test_obj.uu vendor/elftoolchain/dist/test/nm/ts/nm_object2/ vendor/elftoolchain/dist/test/nm/ts/nm_object2/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/tc.sh (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-dynamic.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-external.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-format-bsd.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-format-posix.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-format-sysv.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-print-file-name.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-print-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-radix-hexa.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-radix-octal.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-sort-no.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-sort-num.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-sort-reverse-no.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-sort-reverse-num.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-sort-reverse-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-sort-reverse.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-sort-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj-undef.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_object2/test_obj.uu vendor/elftoolchain/dist/test/nm/ts/nm_option/ vendor/elftoolchain/dist/test/nm/ts/nm_option/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_option/tc.sh (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/ vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/tc.sh (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-dynamic.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-external.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-format-bsd.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-format-posix.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-format-sysv.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-print-file-name.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-print-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-radix-hexa.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-radix-octal.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-sort-no.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-sort-num.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-sort-reverse-no.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-sort-reverse-num.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-sort-reverse-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-sort-reverse.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-sort-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so-undef.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object1/test_so.uu vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/ vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/tc.sh (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-dynamic.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-external.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-format-bsd.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-format-posix.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-format-sysv.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-print-file-name.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-print-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-radix-hexa.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-radix-octal.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-sort-no.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-sort-num.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-sort-reverse-no.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-sort-reverse-num.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-sort-reverse-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-sort-reverse.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-sort-size.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko-undef.txt (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/nm_shared_object2/test_ko.uu vendor/elftoolchain/dist/test/nm/ts/vector_str/ vendor/elftoolchain/dist/test/nm/ts/vector_str/Makefile (contents, props changed) vendor/elftoolchain/dist/test/nm/ts/vector_str/vector_str-tc.c (contents, props changed) vendor/elftoolchain/dist/test/tet/ vendor/elftoolchain/dist/test/tet/Makefile (contents, props changed) vendor/elftoolchain/dist/test/tet/bin/ vendor/elftoolchain/dist/test/tet/bin/munge-ts (contents, props changed) vendor/elftoolchain/dist/test/tet/common/ vendor/elftoolchain/dist/test/tet/common/elfts.m4 vendor/elftoolchain/dist/test/tet/patches/ vendor/elftoolchain/dist/test/tet/patches/configure.patch vendor/elftoolchain/dist/test/tet/patches/defines.linux.patch vendor/elftoolchain/dist/test/tet/patches/guessos.patch vendor/elftoolchain/dist/tools/ vendor/elftoolchain/dist/tools/Makefile (contents, props changed) vendor/elftoolchain/dist/tools/build-automation/ vendor/elftoolchain/dist/tools/build-automation/Makefile (contents, props changed) vendor/elftoolchain/dist/tools/build-automation/Makefile.documentation (contents, props changed) vendor/elftoolchain/dist/tools/build-automation/Makefile.manuals (contents, props changed) vendor/elftoolchain/dist/tools/build-automation/Makefile.program (contents, props changed) vendor/elftoolchain/dist/tools/build-automation/README vendor/elftoolchain/dist/tools/build-automation/build-system.post.nw vendor/elftoolchain/dist/tools/build-automation/build-system.pre.nw vendor/elftoolchain/dist/tools/build-automation/implementation.nw vendor/elftoolchain/dist/tools/build-automation/introduction.nw vendor/elftoolchain/dist/tools/build-automation/master.nw vendor/elftoolchain/dist/tools/build-automation/slave.nw vendor/elftoolchain/dist/tools/build-automation/userguide.nw vendor/elftoolchain/dist/tools/build-automation/utilities.nw vendor/elftoolchain/dist/tools/build-automation/yabs-slave.1 (contents, props changed) vendor/elftoolchain/dist/tools/build-automation/yabs.1 (contents, props changed) Added: vendor/elftoolchain/dist/GNUmakefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/elftoolchain/dist/GNUmakefile Wed Jan 15 08:43:20 2014 (r260684) @@ -0,0 +1,22 @@ +# -*- mode: makefile; -*- +# +# Issue a useful error message if a user tries to build the project +# using GNU make. + +all: + $(error ERROR: This source tree needs to be built with BSD 'make'.) + +# Some GNU/Linux distributions offer pre-built packages of BSD 'make': +# +# - On Debian-derived distributions, the "pmake" package provides an +# older version of BSD 'make' that should suffice. +# - On Fedora, the 'bmake' package seems appropriate (untested). +# +# Portable source code for NetBSD 'make' may be found at: +# http://www.crufty.net/help/sjg/bmake.html +# +# +# Please also read the file "INSTALL" for additional information about +# building the project from source. +# +# $Id: GNUmakefile 2568 2012-09-04 12:13:21Z jkoshy $ Added: vendor/elftoolchain/dist/INSTALL ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/elftoolchain/dist/INSTALL Wed Jan 15 08:43:20 2014 (r260684) @@ -0,0 +1,283 @@ +Installation Instructions +========================= + +This file contains instructions on building and installing the +libraries and utilities in the elftoolchain project's sources. + +Supported Operating Systems +--------------------------- + +The source tree is currently built and tested on the following +operating systems. + + ================= ======== ======================= + Operating System Version Supported Architectures + ----------------- -------- ----------------------- + `DragonFly BSD`_ 2.10.1 i386 + FreeBSD_ v8.2 amd64 & i386 + Minix_ 3.0.2 i386 + NetBSD_ v5.0.2 i386 + OpenBSD_ v5.0 i386 + Ubuntu_ GNU/Linux 10.04LTS i386 & x86_64 + ================= ======== ======================= + +.. _DragonFly BSD: http://www.dragonflybsd.org/ +.. _FreeBSD: http://www.freebsd.org/ +.. _Minix: http://www.minix3.org/ +.. _NetBSD: http://www.netbsd.org/ +.. _OpenBSD: http://www.openbsd.org/ +.. _Ubuntu: http://www.ubuntu.com/ + +Building the Source Tree +======================== + +The core libraries and utilities that make up the software release are +always built by default. Builds of the project's test suites (in the +``test/`` subdirectory), and of additional documentation (in the +directory ``documentation/``) are optional and will only be attempted +if these directories are present. + +Prerequisites +------------- + +:DragonFly BSD 2.10.1: + - The core libraries and utilities should build out of the box on + a stock install of DragonFly BSD. + + - To build and run the test suite: + + #. The current release of the `Test Execution Toolkit`_ needs to + be downloaded and unpacked into the ``test/tet/`` directory. + + #. The ``py26-yaml`` package needs to be installed:: + + % sudo pkgin install py26-yaml + + - Building additional documentation is not currently supported + under DragonFly BSD. + +:FreeBSD 8.2: + - The core libraries and utilities should build out of the box on + a stock install of FreeBSD. + + - To build and run the test suite: + + #. The current release of the `Test Execution Toolkit`_ needs to + be downloaded and unpacked into the ``test/tet/`` directory. + + #. The ``py-yaml`` package needs to be installed:: + + % sudo pkg_add -r py-yaml + + - To build additional documentation, the ``latex-pgf`` package is + needed:: + + % sudo pkg_add -r latex-pgf + +:Minix 3.2.0: + - The following packages are pre-requisites for building the + sources on Minix 3.2.0: + + =================== ===================================== + **Package** **Description** + =================== ===================================== + ``gcc44`` The GNU C compiler. + =================== ===================================== + + The following command line may be used to install the necessary + pre-requisites:: + + # pkgin install gcc44 + + - The test suites cannot currently be built under Minix. + + - Building additional documentation is not currently supported + under Minix. + +:OpenBSD 5.0: + - The following packages are pre-requisites for building the + sources on OpenBSD 5.0: + + =================== ===================================== + **Package** **Description** + =================== ===================================== + ``libarchive`` An archive access library. + =================== ===================================== + + The following command line may be used to install the necessary + pre-requisites:: + + # pkg_add libarchive-2.8.4p0 + + - The test suites cannot currently be built under OpenBSD. + + - Building additional documentation is not currently supported + under OpenBSD. + +:NetBSD 5.0.2: + - The core libraries and utilities should build out of the box + on a stock install of NetBSD. + + - To build and run the test suite: + + #. The current release of the `Test Execution Toolkit`_, needs + to be downloaded and unpacked into the ``test/tet/`` + directory. + + #. The following additional package needs to be installed, as + listed in the example command line below :: + + % sudo pkg_add py26-yaml + + - Building additional documentation is not currently supported + under NetBSD. + +:Ubuntu GNU/Linux 10.04: + - The following packages are pre-requisites for building the + sources on Ubuntu GNU/Linux 10.04: + + =================== ===================================== + **Package** **Description** + =================== ===================================== + ``binutils`` Needed for the build. + ``bison`` Parser generator. + ``flex`` Lexical analyser. + ``gcc`` C compiler. + ``libarchive-dev`` Archive access library. + ``libc6-dev`` Files for C language development. + ``libexpat1-dev`` An XML processing library. + ``m4`` Macro processor. + ``pmake`` A ``make`` that uses BSD-make syntax. + ``python-yaml`` A YAML library for Python. + ``sharutils`` For ``uudecode``. + =================== ===================================== + + The following command line may be used to install the necessary + pre-requisites:: + + % sudo apt-get install binutils bison flex gcc libarchive-dev \ + libc6-dev m4 pmake + + - To build and run the test suite: + + #. The current release of the `Test Execution Toolkit`_, needs + to be downloaded and unpacked into the ``test/tet/`` + directory. + + #. The following additional packages need to be installed, as + listed in the example command line below:: + + % sudo apt-get install libexpat1-dev python-yaml sharutils + + - To build additional documentation, the ``pgf`` package is + needed:: + + % sudo apt-get install pgf + +:Ubuntu GNU/Linux 11.10: + - The following packages are pre-requisites for building the + sources on Ubuntu GNU/Linux 11.10: + + =================== ===================================== + **Package** **Description** + =================== ===================================== + ``bison`` Parser generator. + ``flex`` Lexical analyser. + ``gcc`` C compiler. + ``libarchive-dev`` Archive access library. + ``libexpat1-dev`` An XML processing library. + ``m4`` Macro processor. + ``pmake`` A ``make`` that uses BSD-make syntax. + ``python-yaml`` A YAML library for Python. + ``sharutils`` For ``uudecode``. + =================== ===================================== + + The following command line may be used to install the necessary + pre-requisites:: + + % sudo apt-get install bison flex gcc libarchive-dev \ + m4 pmake + + - To build and run the test suite: + + #. The current release of the `Test Execution Toolkit`_, needs + to be downloaded and unpacked into the ``test/tet/`` + directory. + + #. The following additional packages need to be installed, as + listed in the example command line below:: + + % sudo apt-get install libexpat1-dev python-yaml sharutils + + - Builds of additional documentation are not currently supported + under Ubuntu GNU/Linux 11.10. + +.. _Test Execution Toolkit: http://tetworks.opengroup.org/ +.. _OpenGroup: http://www.opengroup.org/ + + +Building the software +--------------------- + +The software may be built by running **make**. + +On `DragonFly BSD`_, FreeBSD_, Minix_, NetBSD_ and OpenBSD_, use:: + + % make + +On Ubuntu GNU/Linux with the **pmake** package installed, use:: + + % pmake + + +Testing the software +--------------------- + +The ``run-tests`` target in the top-level Makefile will build and +execute the test suites that are part of this software. + +On `DragonFly BSD`_, FreeBSD_ and NetBSD_, use:: + + % make run-tests + +On Ubuntu GNU/Linux with the **pmake** package installed, use:: + + % pmake run-tests + +Installing the Software +======================= + +The software may be installed using the ``install`` target. + +On `DragonFly BSD`_, FreeBSD_, Minix_, NetBSD_ and OpenBSD_ use:: + + % make install + +On Ubuntu GNU/Linux with the **pmake** package installed, use:: + + % pmake install + + +By default the ``install`` target will install utilities into +``/usr/bin/``, libraries into ``/usr/lib/`` and manual pages into +``/usr/share/man/man[0-9]/``. + +The installation directory may be changed using the ``DESTDIR`` +variable. For example:: + + % pmake DESTDIR=$HOME/local install + + +Additional Information +====================== + +Additional information about the project may be found on the `project +website`_. + +.. _project website: http://elftoolchain.sourceforge.net/ + +.. $Id: INSTALL 2777 2012-12-12 17:21:36Z jkoshy $ + +.. Local Variables: +.. mode: rst +.. End: Added: vendor/elftoolchain/dist/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/elftoolchain/dist/Makefile Wed Jan 15 08:43:20 2014 (r260684) @@ -0,0 +1,54 @@ +# $Id: Makefile 2872 2013-01-07 13:57:54Z jkoshy $ + +TOP= . + +.include "${TOP}/mk/elftoolchain.os.mk" + +# Build configuration information first. +SUBDIR += common + +# Build the base libraries next. +SUBDIR += libelf +SUBDIR += libdwarf + +# Build additional APIs. +SUBDIR += libelftc + +# Build the tools needed for the rest of the build. +SUBDIR += isa + +# Build tools after the libraries. +SUBDIR += addr2line +SUBDIR += ar +SUBDIR += brandelf +SUBDIR += cxxfilt +SUBDIR += elfcopy +SUBDIR += elfdump +SUBDIR += findtextrel +SUBDIR += nm +SUBDIR += readelf +SUBDIR += size +SUBDIR += strings +SUBDIR += tools + +# Build the test suites. +.if exists(${.CURDIR}/test) && defined(MKTESTS) && ${MKTESTS} == "yes" +SUBDIR += test +.endif + +# Build documentation at the end. +.if exists(${.CURDIR}/documentation) && defined(MKDOC) && ${MKDOC} == "yes" +SUBDIR += documentation +.endif + +.include "${TOP}/mk/elftoolchain.subdir.mk" + +# +# Special top-level targets. +# + +# Run the test suites. +.if exists(${.CURDIR}/test) && defined(MKTESTS) && ${MKTESTS} == "yes" +run-tests: all .PHONY + (cd ${.CURDIR}/test; ${MAKE} test) +.endif Added: vendor/elftoolchain/dist/README ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/elftoolchain/dist/README Wed Jan 15 08:43:20 2014 (r260684) @@ -0,0 +1,127 @@ +The Elftoolchain Project +======================== + +.. contents:: +.. + +Description +----------- + +This software implements essential compilation tools and libraries for: + +- managing program objects conforming to the ELF_ object format, and +- for managing DWARF_ debugging information in ELF objects. + +The project currently implements the following utilities and +libraries: + + =========== ============================================ + Name Description + =========== ============================================ + ar Archive manager. + addr2line Debug tool. + brandelf Manage the ELF brand on executables. + c++filt Translate encoded symbols. + elfcopy Copy and translate between object formats. + elfdump Diagnostic tool. + findtextrel Find undesired text relocations. + libdwarf DWARF access library. + libelf ELF access library. + mcs Manage comment sections. + nm List symbols in an ELF object. + ranlib Add archive symbol tables to an archive. + readelf Display ELF information. + size List object sizes. + strings Extract printable strings. + strip Discard information from ELF objects. + =========== ============================================ + +.. _ELF: http://en.wikipedia.org/wiki/Executable_and_Linkable_Format +.. _DWARF: http://www.dwarfstd.org/ + + +Project Documentation +--------------------- + +- Release notes for released versions of this software are present in + the file ``RELEASE-NOTES`` in the current directory. +- The file ``INSTALL`` in the current directory contains instructions + on building and installing this software. +- Reference documentation in the form of manual pages is provided for + the utilities and libraries developed by the project. +- Additional tutorial documentation is present in the + ``documentation`` directory. + + +Tracking Ongoing Development +---------------------------- + +The project uses subversion_ for its version control system. + +The subversion branch for the current set of sources may be accessed +at the following URL: + + https://elftoolchain.svn.sourceforge.net/svnroot/elftoolchain/trunk + +The project's source tree may be checked out from its repository by +using the ``svn checkout`` command:: + + % svn checkout https://elftoolchain.svn.sourceforge.net/svnroot/elftoolchain/trunk + +Checked-out sources may be kept upto-date by running ``svn update`` +inside the source directory:: + + % svn update + + +Instructions on building and installing the software are given in the +file ``INSTALL`` in the current directory. + +.. _Subversion: + +Downloading Released Software +----------------------------- + +Released versions of the project's software may also be downloaded +from SourceForge's `file release system`_. + +.. _file release system: http://sourceforge.net/projects/elftoolchain/files/ + +Copyright and License +--------------------- + +This code is copyright its authors, and is distributed under the `BSD +License`_. + +.. _BSD License: http://www.opensource.org/licenses/bsd-license.php + + +Developer Community +------------------- + +The project's developers may be contacted using the mailing list: +````. + + +Reporting Bugs +-------------- + +Please use our `Trac instance`_ for viewing existing bug reports and +for submitting new bug reports. + +.. _`Trac instance`: http://sourceforge.net/apps/trac/elftoolchain/report + + +Additional Information +---------------------- + +Additional information about the project may be found on the `project +website`_. + +.. _project website: http://elftoolchain.sourceforge.net/ + +.. $Id: README 2146 2011-11-11 09:39:00Z jkoshy $ + +.. Local Variables: +.. mode: rst +.. End: Added: vendor/elftoolchain/dist/RELEASE-NOTES ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/elftoolchain/dist/RELEASE-NOTES Wed Jan 15 08:43:20 2014 (r260684) @@ -0,0 +1,206 @@ +.. $Id: RELEASE-NOTES 2599 2012-09-25 06:25:51Z jkoshy $ + +.. This file contains a template for use when writing release notes. +.. It needs to be updated with release-specific content prior to +.. cutting a release. RST comments (such as this one) also need to be +.. removed prior to the release. + +.. The tokens '%.*%' need be replaced with actual content. + +Release Notes for Elftoolchain Software Version %.%.% +===================================================== + +About The Project +----------------- + +The `Elftoolchain project`_ develops BSD-licensed implementations of +essential compilation tools and libraries for handling ELF based program +objects. + +About The Release +----------------- + +.. Describe the rationale for the release (e.g. new features, +.. significant bug fixes, etc.). + +Libraries and Utilities +~~~~~~~~~~~~~~~~~~~~~~~ + +This release comprises the following libraries and utilities. + + ================= ========================================== + **Name** **Description** + ================= ========================================== + **ar** Archive manager. + **addr2line** Debug tool. + **brandelf** Manage the ELF brand on executables. + **c++filt** Translate encoded symbols. + **elfcopy** Copy and translate between object formats. + **elfdump** Diagnostic tool. + **findtextrel** Find undesired text relocations. + **libdwarf** DWARF access library. + **libelf** ELF access library. + **mcs** Manage comment sections. + **nm** List symbols in an ELF object. + **ranlib** Add archive symbol tables to an archive. + **readelf** Display ELF information. + **size** List object sizes. + **strings** Extract printable strings. + **strip** Discard information from ELF objects. + ================= ========================================== + +Documentation +~~~~~~~~~~~~~ + +Each public API and invocable utility has a reference manual entry. +We currently offer %NENTRIES% manual entries, documented in %NFILES% +manual pages. + +Additionally, this release contains the following documentation: + + ================= ========================================== + **Name** **Description** + ================= ========================================== + libelf-by-example A tutorial introduction to **libelf**. + ================= ========================================== + +Test Suites +~~~~~~~~~~~ + +The release contains the following test suites: + + ================= ========================================== + **Name** **Description** + ================= ========================================== + ar Test the **ar** utility. + elfcopy Test the **elfcopy** utility. + elfdump Test the **elfdump** utility. + libdwarf Test the **libdwarf** library. + libelf Test the **libelf** library. + nm Test the **nm** utility. + ================= ========================================== + + +System Requirements +------------------- + +.. Hardware and software requirements for using this software. + +This software is designed to run on Unix(TM)-like operating systems +such as the BSD-family of operating systems and GNU/Linux. + +This release has been built and tested on the following operating +systems: + + ==================== =========== =========================== + **Operating System** **Version** **Supported Architectures** + -------------------- ----------- --------------------------- + `DragonFly BSD`_ 2.10.1 i386 + FreeBSD_ v8.2 amd64 & i386 + Minix_ 3.2.0 i386 + NetBSD_ v5.0.2 i386 + OpenBSD_ v5.0 i386 + Ubuntu_ GNU/Linux 10.04LTS i386 & x86_64 + ==================== =========== =========================== + + +Installation and Upgrades +========================= + +Installation +------------ + +Instructions for building and installing this software from source are +described in the file "INSTALL". + +Upgrading +--------- + +.. Special notes about upgrading this software from a prior release. +.. For example, if we introduce any backwards-incompatible behaviour, +.. or if we deprecate existing behaviour. + + +Release Information +=================== + +Changes in this release +----------------------- + +.. A list of significant changes in the release. + +Outstanding Issues +------------------ + +.. Problems discovered when testing the release. + +Known Limitations +----------------- + +.. Known limitations. + +Test Statistics +--------------- + +The test summary for this release is presented below: + + ========= ========= ================ =============== ================ =================== + **Suite** **Tests** **DragonFlyBSD** **FreeBSD** **NetBSD** **Ubuntu 10.04LTS** + ========= ========= ================ =============== ================ =================== + ar + elfcopy + elfdump + libdwarf + libelf + nm + ========= ========= ================ =============== ================ =================== + +Key: + + :P: + Test successes. + :F: + Test failures. + :U: + Unresolved tests. + +Notes +~~~~~ + +More Information +================ + +The project's website is at http://elftoolchain.sourceforge.net/. + +Developer Community +------------------- + +The project's developers may be contacted using the mailing list: +````. + +Reporting Bugs +-------------- + +Please use our `Trac instance`_ for viewing existing bug reports and +for submitting new bug reports. + + +Copyright and License +===================== + +This software is copyright its authors, and is distributed under the +`BSD License`_. + +.. _BSD License: http://www.opensource.org/licenses/bsd-license.php +.. _DragonFly BSD: http://www.dragonflybsd.org/ +.. _Elftoolchain project: http://elftoolchain.sourceforge.net/ +.. _FreeBSD: http://www.freebsd.org/ +.. _Minix: http://www.minix3.org/ +.. _NetBSD: http://www.netbsd.org/ +.. _OpenBSD: http://www.openbsd.org/ +.. _`Trac instance`: http://sourceforge.net/apps/trac/elftoolchain/report +.. _Ubuntu: http://www.ubuntu.com/ + +.. Local Variables: +.. mode: rst +.. End: Added: vendor/elftoolchain/dist/addr2line/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/elftoolchain/dist/addr2line/Makefile Wed Jan 15 08:43:20 2014 (r260684) @@ -0,0 +1,15 @@ +# $Id: Makefile 2066 2011-10-26 15:40:28Z jkoshy $ + +TOP= .. + +PROG= addr2line +SRCS= addr2line.c + +WARNS?= 6 + +DPADD= ${LIBELF} ${LIBELFTC} ${LIBDWARF} +LDADD= -lelftc -ldwarf -lelf + +MAN1= addr2line.1 + +.include "${TOP}/mk/elftoolchain.prog.mk" Added: vendor/elftoolchain/dist/addr2line/addr2line.1 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/elftoolchain/dist/addr2line/addr2line.1 Wed Jan 15 08:43:20 2014 (r260684) @@ -0,0 +1,159 @@ +.\" Copyright (c) 2009,2010 Joseph Koshy +.\" 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 +.\" in this position and unchanged. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 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. +.\" +.\" $Id: addr2line.1 2066 2011-10-26 15:40:28Z jkoshy $ +.\" +.Dd July 25, 2010 +.Os +.Dt ADDR2LINE 1 +.Sh NAME +.Nm addr2line +.Nd translate program addresses to source file names and line numbers +.Sh SYNOPSIS +.Nm +.Op Fl b Ar target | Fl -target Ns = Ns Ar target +.Op Fl e Ar pathname | Fl -exe Ns = Ns Ar pathname +.Op Fl f | Fl -functions +.Op Fl j Ar sectionname | Fl -section Ns = Ns Ar sectionname +.Op Fl s | Fl -basename +.Op Fl C | Fl -demangle +.Op Fl H | Fl -help +.Op Fl V | Fl -version +.Op Ar hexaddress Ns ... +.Sh DESCRIPTION +The +.Nm +utility translates program addresses specified by the command line +arguments +.Ar hexaddress +to their corresponding source file names and line numbers. +If no arguments are given to +.Nm , +it will read these addresses from standard input. +.Pp +Program addresses specified by arguments +.Ar hexaddress +are encoded using the conventions accepted by +.Xr strtoull 3 . +.Pp +By default, +.Nm +will use the executable +.Dq Pa a.out . +The +.Fl e +option may be used to specified a different ELF object. +.Pp +The +.Nm +utility recognizes the following options: +.Bl -tag -width indent +.It Fl b Ar target | Fl -target Ns = Ns Ar target +This option is recognized by +.Nm +but is ignored. +It is supported for compatibility with GNU binutils. +.It Fl e Ar pathname | Fl -exe Ns = Ns Ar pathname +Use the ELF object specified by argument +.Ar pathname +to translate addresses. +If this option is not specified, +.Nm +will use the file +.Dq Pa a.out . +.It Fl f | Fl -functions +Display function names in addition to file and line number information. +.It Fl j Ar sectionname | Fl -section Ns = Ns Ar sectionname +The values specified by arguments +.Ar hexaddress +are to be treated as offsets into the section named +.Ar sectionname . +.It Fl s | -basename +Display only the base name for each file name. +.It Fl C | Fl -demangle +Demangle C++ names. +.It Fl H | Fl -help +Print a help message. +.It Fl V | Fl -version +Print a version identifier and exit. +.El +.Sh OUTPUT FORMAT +If the +.Fl f +option was not specified, +.Nm +will print the file name and line number for each address specified +on a separate line. +.Pp +If the +.Fl f +option was specified, +.Nm +will print a line containing the name of the function corresponding +to program address +.Ar hexaddress , +followed by a line with the file name and line number. +.Pp +The +.Nm +utility prints the file name and line number using the format +.Dq FILENAME:LINENUMBER . +.Pp +If a file or function name could not be determined, +.Nm +will print a question mark in their place. +If the line number could not be determined, +.Nm +will print a zero in its place. +.Sh EXAMPLES +To map address 080483c4 in the default executable +.Pa a.out +to a source file name and line number use: +.D1 "% addr2line 080483c4" +.Pp +To map address 080483c4 in executable +.Pa helloworld , +use: +.D1 "% addr2line -e helloworld 080483c4" +.Pp +To have +.Nm +act as a filter reading addresses from its standard input use: +.D1 "% addr2line" +.Pp +To print the function name corresponding to an address in addition to +its source file and line number use: +.D1 "% addr2line -f 080483c4" +.Sh EXIT STATUS +.Ex -std +.Sh SEE ALSO +.Xr nm 1 , +.Xr elfdump 1 , +.Xr elfcopy 1 , +.Xr strtoull 3 +.Sh AUTHORS +The +.Nm +utility was written by +.An "Kai Wang" Aq kaiwang27@users.sourceforge.net . Added: vendor/elftoolchain/dist/addr2line/addr2line.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/elftoolchain/dist/addr2line/addr2line.c Wed Jan 15 08:43:20 2014 (r260684) @@ -0,0 +1,410 @@ +/*- + * Copyright (c) 2009 Kai Wang + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "_elftc.h" + +ELFTC_VCSID("$Id: addr2line.c 2185 2011-11-19 16:07:16Z jkoshy $"); + +static struct option longopts[] = { + {"target" , required_argument, NULL, 'b'}, + {"demangle", no_argument, NULL, 'C'}, + {"exe", required_argument, NULL, 'e'}, + {"functions", no_argument, NULL, 'f'}, + {"section", required_argument, NULL, 'j'}, + {"basename", no_argument, NULL, 's'}, + {"help", no_argument, NULL, 'H'}, + {"version", no_argument, NULL, 'V'}, + {NULL, 0, NULL, 0} +}; +static int demangle, func, base; +static char unknown[] = { '?', '?', '\0' }; +static Dwarf_Addr section_base; + +#define USAGE_MESSAGE "\ +Usage: %s [options] hexaddress...\n\ + Map program addresses to source file names and line numbers.\n\n\ + Options:\n\ + -b TGT | --target=TGT (Accepted but ignored).\n\ + -e EXE | --exec=EXE Use program \"EXE\" to translate addresses.\n\ + -f | --functions Display function names.\n\ + -j NAME | --section=NAME Values are offsets into section \"NAME\".\n\ + -s | --basename Only show the base name for each file name.\n\ + -C | --demangle Demangle C++ names.\n\ + -H | --help Print a help message.\n\ + -V | --version Print a version identifier and exit.\n" + +static void +usage(void) +{ + (void) fprintf(stderr, USAGE_MESSAGE, ELFTC_GETPROGNAME()); + exit(1); +} + +static void +version(void) +{ + + fprintf(stderr, "%s (%s)\n", ELFTC_GETPROGNAME(), elftc_version()); + exit(0); +} + +static void +search_func(Dwarf_Debug dbg, Dwarf_Die die, Dwarf_Addr addr, + const char **rlt_func) +{ + Dwarf_Die ret_die, spec_die; + Dwarf_Error de; + Dwarf_Half tag; + Dwarf_Unsigned lopc, hipc; + Dwarf_Off ref; + Dwarf_Attribute sub_at, spec_at; + char *func0; + int ret; + + if (*rlt_func != NULL) + return; + + if (dwarf_tag(die, &tag, &de)) { + warnx("dwarf_tag: %s", dwarf_errmsg(de)); + goto cont_search; + } + if (tag == DW_TAG_subprogram) { + if (dwarf_attrval_unsigned(die, DW_AT_low_pc, &lopc, &de) || + dwarf_attrval_unsigned(die, DW_AT_high_pc, &hipc, &de)) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 08:47:58 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8AC0A1E5; Wed, 15 Jan 2014 08:47:58 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5B7C81935; Wed, 15 Jan 2014 08:47:58 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F8lwKu041205; Wed, 15 Jan 2014 08:47:58 GMT (envelope-from kaiw@svn.freebsd.org) Received: (from kaiw@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F8lwwM041204; Wed, 15 Jan 2014 08:47:58 GMT (envelope-from kaiw@svn.freebsd.org) Message-Id: <201401150847.s0F8lwwM041204@svn.freebsd.org> From: Kai Wang Date: Wed, 15 Jan 2014 08:47:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r260685 - vendor/elftoolchain/elftoolchain-r2974 X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 08:47:58 -0000 Author: kaiw Date: Wed Jan 15 08:47:57 2014 New Revision: 260685 URL: http://svnweb.freebsd.org/changeset/base/260685 Log: Tag elftoolchain-r2974. Added: vendor/elftoolchain/elftoolchain-r2974/ - copied from r260684, vendor/elftoolchain/dist/ From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 08:49:48 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 468933FE; Wed, 15 Jan 2014 08:49:48 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 190CE1954; Wed, 15 Jan 2014 08:49:48 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0F8nl3J041534; Wed, 15 Jan 2014 08:49:47 GMT (envelope-from kaiw@svn.freebsd.org) Received: (from kaiw@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0F8nlUF041533; Wed, 15 Jan 2014 08:49:47 GMT (envelope-from kaiw@svn.freebsd.org) Message-Id: <201401150849.s0F8nlUF041533@svn.freebsd.org> From: Kai Wang Date: Wed, 15 Jan 2014 08:49:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-svnadmin@freebsd.org Subject: svn commit: r260686 - svnadmin/conf X-SVN-Group: svnadmin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 08:49:48 -0000 Author: kaiw Date: Wed Jan 15 08:49:47 2014 New Revision: 260686 URL: http://svnweb.freebsd.org/changeset/base/260686 Log: Remove myself after the import was done. Modified: svnadmin/conf/sizelimit.conf Modified: svnadmin/conf/sizelimit.conf ============================================================================== --- svnadmin/conf/sizelimit.conf Wed Jan 15 08:47:57 2014 (r260685) +++ svnadmin/conf/sizelimit.conf Wed Jan 15 08:49:47 2014 (r260686) @@ -36,4 +36,3 @@ rwatson sam stas thompsa -kaiw From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 12:35:29 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8F67EDF; Wed, 15 Jan 2014 12:35:29 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7BB3D1F8F; Wed, 15 Jan 2014 12:35:29 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0FCZT32028019; Wed, 15 Jan 2014 12:35:29 GMT (envelope-from ray@svn.freebsd.org) Received: (from ray@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0FCZTX1028018; Wed, 15 Jan 2014 12:35:29 GMT (envelope-from ray@svn.freebsd.org) Message-Id: <201401151235.s0FCZTX1028018@svn.freebsd.org> From: Aleksandr Rybalko Date: Wed, 15 Jan 2014 12:35:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260688 - head/sys/dev/vt/hw/xboxfb X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 12:35:29 -0000 Author: ray Date: Wed Jan 15 12:35:28 2014 New Revision: 260688 URL: http://svnweb.freebsd.org/changeset/base/260688 Log: Update xboxfb driver to actual state. NOTE: Not tested. Sponsored by: The FreeBSD Foundation Modified: head/sys/dev/vt/hw/xboxfb/xboxfb.c Modified: head/sys/dev/vt/hw/xboxfb/xboxfb.c ============================================================================== --- head/sys/dev/vt/hw/xboxfb/xboxfb.c Wed Jan 15 09:01:04 2014 (r260687) +++ head/sys/dev/vt/hw/xboxfb/xboxfb.c Wed Jan 15 12:35:28 2014 (r260688) @@ -1,12 +1,9 @@ /*- - * Copyright (c) 2005 Rink Springer + * Copyright (c) 2013 The FreeBSD Foundation * All rights reserved. * - * Copyright (c) 2009 The FreeBSD Foundation - * All rights reserved. - * - * Portions of this software were developed by Ed Schouten - * under sponsorship from the FreeBSD Foundation. + * This software was developed by Aleksandr Rybalko under sponsorship from the + * FreeBSD Foundation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -28,16 +25,23 @@ * 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$ */ #include __FBSDID("$FreeBSD$"); #include -#include #include +#include +#include + +#include "opt_platform.h" #include +#include +#include #include #include @@ -47,110 +51,32 @@ __FBSDID("$FreeBSD$"); #include #include -struct xbox_softc { - bus_space_tag_t xbox_fb_tag; - bus_space_handle_t xbox_fb_handle; -}; - -/* Convenience macros. */ -#define MEM_WRITE4(sc, ofs, val) \ - bus_space_write_4(sc->xbox_fb_tag, sc->xbox_fb_handle, ofs, val) - #define VT_XBOX_WIDTH 640 #define VT_XBOX_HEIGHT 480 -static vd_init_t xbox_init; -static vd_blank_t xbox_blank; -static vd_bitbltchr_t xbox_bitbltchr; - -static const struct vt_driver vt_xbox_driver = { - .vd_init = xbox_init, - .vd_blank = xbox_blank, - .vd_bitbltchr = xbox_bitbltchr, - .vd_priority = VD_PRIORITY_GENERIC+1, -}; +static vd_init_t xboxfb_init; -static struct xbox_softc xbox_conssoftc; -VT_CONSDEV_DECLARE(vt_xbox_driver, PIXEL_WIDTH(VT_XBOX_WIDTH), - PIXEL_HEIGHT(VT_XBOX_HEIGHT), &xbox_conssoftc); - -static const uint32_t colormap[] = { - 0x00000000, /* Black */ - 0x00ff0000, /* Red */ - 0x0000ff00, /* Green */ - 0x00c0c000, /* Brown */ - 0x000000ff, /* Blue */ - 0x00c000c0, /* Magenta */ - 0x0000c0c0, /* Cyan */ - 0x00c0c0c0, /* Light grey */ - 0x00808080, /* Dark grey */ - 0x00ff8080, /* Light red */ - 0x0080ff80, /* Light green */ - 0x00ffff80, /* Yellow */ - 0x008080ff, /* Light blue */ - 0x00ff80ff, /* Light magenta */ - 0x0080ffff, /* Light cyan */ - 0x00ffffff, /* White */ +static struct vt_driver xboxfb_driver = { + .vd_init = xboxfb_init, + .vd_blank = vt_fb_blank, + .vd_bitbltchr = vt_fb_bitbltchr, + .vd_priority = VD_PRIORITY_GENERIC, }; -static void -xbox_blank(struct vt_device *vd, term_color_t color) -{ - struct xbox_softc *sc = vd->vd_softc; - u_int ofs; - uint32_t c; - - c = colormap[color]; - for (ofs = 0; ofs < (VT_XBOX_WIDTH * VT_XBOX_HEIGHT) * 4; ofs += 4) - MEM_WRITE4(sc, ofs, c); -} - -static void -xbox_bitbltchr(struct vt_device *vd, const uint8_t *src, const uint8_t *mask, - int bpl, vt_axis_t top, vt_axis_t left, unsigned int width, - unsigned int height, term_color_t fg, term_color_t bg) -{ - struct xbox_softc *sc = vd->vd_softc; - u_long line; - uint32_t fgc, bgc; - int c; - uint8_t b, m; - - fgc = colormap[fg]; - bgc = colormap[bg]; - - /* Don't try to put off screen pixels */ - if (((left + width) > info->fb_width) || ((top + height) > - info->fb_height)) - return; - - line = (VT_XBOX_WIDTH * top + left) * 4; - for (; height > 0; height--) { - for (c = 0; c < width; c++) { - if (c % 8 == 0) - b = *src++; - else - b <<= 1; - if (mask != NULL) { - if (c % 8 == 0) - m = *mask++; - else - m <<= 1; - /* Skip pixel write, if mask has no bit set. */ - if ((m & 0x80) == 0) - continue; - } - MEM_WRITE4(sc, line + c * 4, b & 0x80 ? fgc : bgc); - } - line += VT_XBOX_WIDTH * 4; - } -} +static struct fb_info xboxfb_info; +VT_CONSDEV_DECLARE(xboxfb_driver, PIXEL_WIDTH(VT_XBOX_WIDTH), + PIXEL_HEIGHT(VT_XBOX_HEIGHT), &xboxfb_info); -static void -xbox_initialize(struct vt_device *vd) +static int +xboxfb_init(struct vt_device *vd) { + struct fb_info *info; int i; + if (!arch_i386_is_xbox) + return (CN_DEAD); + + info = &xboxfb_info; /* * We must make a mapping from video framebuffer memory * to real. This is very crude: we map the entire @@ -175,25 +101,27 @@ xbox_initialize(struct vt_device *vd) *(uint32_t *)((i + 1) * PAGE_SIZE + XBOX_FB_START_PTR % PAGE_SIZE) = XBOX_FB_START; - /* Clear the screen. */ - xbox_blank(vd, TC_BLACK); -} - -static int -xbox_init(struct vt_device *vd) -{ - struct xbox_softc *sc = vd->vd_softc; - - if (!arch_i386_is_xbox) - return (CN_DEAD); + /* Initialize fb_info. */ + info = vd->vd_softc; - sc->xbox_fb_tag = X86_BUS_SPACE_MEM; - sc->xbox_fb_handle = PAGE_SIZE; + info->fb_width = VT_XBOX_WIDTH; + info->fb_height = VT_XBOX_HEIGHT; - vd->vd_width = VT_XBOX_WIDTH; - vd->vd_height = VT_XBOX_HEIGHT; + info->fb_size = XBOX_FB_SIZE; + info->fb_stride = VT_XBOX_WIDTH * 4; /* 32bits per pixel. */ - xbox_initialize(vd); + info->fb_vbase = PAGE_SIZE; + info->fb_pbase = XBOX_FB_START_PTR; + + /* Get pixel storage size. */ + info->fb_bpp = 32; + /* Get color depth. */ + info->fb_depth = 24; + + vt_generate_vga_palette(info->fb_cmap, COLOR_FORMAT_RGB, 255, 0, 255, + 8, 255, 16); + fb_probe(info); + vt_fb_init(vd); return (CN_INTERNAL); } @@ -201,12 +129,13 @@ xbox_init(struct vt_device *vd) static void xbox_remap(void *unused) { + struct fb_info *info; if (!arch_i386_is_xbox) return; - xbox_conssoftc.xbox_fb_handle = - (bus_space_handle_t)pmap_mapdev(XBOX_FB_START, XBOX_FB_SIZE); + info = &xboxfb_info; + info->fb_vbase = (intptr_t)pmap_mapdev(info->fb_pbase, info->fb_size); } SYSINIT(xboxfb, SI_SUB_DRIVERS, SI_ORDER_ANY, xbox_remap, NULL); From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 15:16:12 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 449E0A9C; Wed, 15 Jan 2014 15:16:12 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 163801D23; Wed, 15 Jan 2014 15:16:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0FFGB2a088449; Wed, 15 Jan 2014 15:16:11 GMT (envelope-from skreuzer@svn.freebsd.org) Received: (from skreuzer@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0FFGBkM088448; Wed, 15 Jan 2014 15:16:11 GMT (envelope-from skreuzer@svn.freebsd.org) Message-Id: <201401151516.s0FFGBkM088448@svn.freebsd.org> From: Steven Kreuzer Date: Wed, 15 Jan 2014 15:16:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260689 - head/release/doc/en_US.ISO8859-1/relnotes X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 15:16:12 -0000 Author: skreuzer (ports committer) Date: Wed Jan 15 15:16:11 2014 New Revision: 260689 URL: http://svnweb.freebsd.org/changeset/base/260689 Log: Remove reference to FreeBSD 6.2-RELEASE from 'Upgrading from previous releases' paragraph since all supported version of FreeBSD now support binary upgrades Remove 'of course,' from foot note reminding to create a backup before attempting a binary update Approved by: hrs (mentor) Modified: head/release/doc/en_US.ISO8859-1/relnotes/article.xml Modified: head/release/doc/en_US.ISO8859-1/relnotes/article.xml ============================================================================== --- head/release/doc/en_US.ISO8859-1/relnotes/article.xml Wed Jan 15 12:35:28 2014 (r260688) +++ head/release/doc/en_US.ISO8859-1/relnotes/article.xml Wed Jan 15 15:16:11 2014 (r260689) @@ -723,14 +723,13 @@ hv_vmbus_load="YES" Al Upgrading from previous releases of &os; - Beginning with &os; 6.2-RELEASE, - binary upgrades between RELEASE versions (and snapshots of the - various security branches) are supported using the - &man.freebsd-update.8; utility. The binary upgrade procedure will - update unmodified userland utilities, as well as unmodified GENERIC or - SMP kernels distributed as a part of an official &os; release. - The &man.freebsd-update.8; utility requires that the host being - upgraded have Internet connectivity. + Binary upgrades between RELEASE versions + (and snapshots of the various security branches) are supported + using the &man.freebsd-update.8; utility. The binary upgrade + procedure will update unmodified userland utilities, as well as + unmodified GENERIC kernels distributed as a part of an official + &os; release. The &man.freebsd-update.8; utility requires that + the host being upgraded have Internet connectivity. Source-based upgrades (those based on recompiling the &os; base system from source code) from previous versions are @@ -738,7 +737,7 @@ hv_vmbus_load="YES" Al /usr/src/UPDATING. - Upgrading &os; should, of course, only be attempted after + Upgrading &os; should only be attempted after backing up all data and configuration files. From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 17:06:11 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3105F6AF; Wed, 15 Jan 2014 17:06:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1DA641AD5; Wed, 15 Jan 2014 17:06:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0FH6AnB031234; Wed, 15 Jan 2014 17:06:10 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0FH6Aeb031232; Wed, 15 Jan 2014 17:06:10 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201401151706.s0FH6Aeb031232@svn.freebsd.org> From: Neel Natu Date: Wed, 15 Jan 2014 17:06:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-svnadmin@freebsd.org Subject: svn commit: r260690 - svnadmin/conf X-SVN-Group: svnadmin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 17:06:11 -0000 Author: neel Date: Wed Jan 15 17:06:10 2014 New Revision: 260690 URL: http://svnweb.freebsd.org/changeset/base/260690 Log: Welcome Tycho Nightingale (tychon@) as a new src committer. Tycho will be working on bhyve initially. Co-mentored by grehan@ and neel@. Approved by: core Modified: svnadmin/conf/access svnadmin/conf/mentors Modified: svnadmin/conf/access ============================================================================== --- svnadmin/conf/access Wed Jan 15 15:16:11 2014 (r260689) +++ svnadmin/conf/access Wed Jan 15 17:06:10 2014 (r260690) @@ -215,6 +215,7 @@ trhodes trociny truckman tuexen +tychon ume ups ups_old@stups.com uqs Modified: svnadmin/conf/mentors ============================================================================== --- svnadmin/conf/mentors Wed Jan 15 15:16:11 2014 (r260689) +++ svnadmin/conf/mentors Wed Jan 15 17:06:10 2014 (r260690) @@ -32,4 +32,5 @@ odeds jhb Co-mentor: alfred peterj jhb Co-mentor: grog royger gibbs snb dwmalone +tychon neel Co-mentor: grehan versus gavin Co-mentor: fjoe From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 17:34:22 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 184EE905; Wed, 15 Jan 2014 17:34:22 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id EC2EE1F2B; Wed, 15 Jan 2014 17:34:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0FHYLAY042854; Wed, 15 Jan 2014 17:34:21 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0FHYL0a042853; Wed, 15 Jan 2014 17:34:21 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201401151734.s0FHYL0a042853@svn.freebsd.org> From: Hiroki Sato Date: Wed, 15 Jan 2014 17:34:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260691 - head/release/doc/en_US.ISO8859-1/errata X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 17:34:22 -0000 Author: hrs Date: Wed Jan 15 17:34:21 2014 New Revision: 260691 URL: http://svnweb.freebsd.org/changeset/base/260691 Log: - Fix indent. - Minor clean up after DB5 migration. Modified: head/release/doc/en_US.ISO8859-1/errata/article.xml Modified: head/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- head/release/doc/en_US.ISO8859-1/errata/article.xml Wed Jan 15 17:06:10 2014 (r260690) +++ head/release/doc/en_US.ISO8859-1/errata/article.xml Wed Jan 15 17:34:21 2014 (r260691) @@ -1,45 +1,24 @@ + "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd" [ + %release; ]> - -

- &os; &release; Errata - - - - The &os; Project - + +
+ + &os; &release; Errata + + The &os; Project $FreeBSD$ - 2000 - 2001 - 2002 - 2003 - 2004 - 2005 - 2006 - 2007 - 2008 - 2009 - 2010 - 2011 - 2012 - 2013 + 2014 + The &os; Documentation Project @@ -50,20 +29,20 @@ &tm-attrib.general; - - This document lists errata items for &os; &release;, - containing significant information discovered after the release - or too late in the release cycle to be otherwise included in the - release documentation. - This information includes security advisories, as well as news - relating to the software or documentation that could affect its - operation or usability. An up-to-date version of this document - should always be consulted before installing this version of - &os;. - - This errata document for &os; &release; - will be maintained until the release of &os; &release.next;. - + + This document lists errata items for &os; &release;, + containing significant information discovered after the release + or too late in the release cycle to be otherwise included in the + release documentation. + This information includes security advisories, as well as news + relating to the software or documentation that could affect its + operation or usability. An up-to-date version of this document + should always be consulted before installing this version of + &os;. + + This errata document for &os; &release; + will be maintained until the release of &os; &release.next;. + @@ -80,44 +59,35 @@ out of date by definition, but other copies are kept updated on the Internet and should be consulted as the current errata for this release. These other copies of the - errata are located at http://www.FreeBSD.org/releases/, plus any sites + errata are located at + , + plus any sites which keep up-to-date mirrors of this location. Source and binary snapshots of &os; &release.branch; also contain up-to-date copies of this document (as of the time of the snapshot). - For a list of all &os; CERT security advisories, see http://www.FreeBSD.org/security/ or ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/. - + For a list of all &os; CERT security advisories, see + + or . Security Advisories - No advisories. - - No advisories. - - No advisories. + No advisory. Open Issues - No open issues. - - No open issues. - - No open issues. + No open issues. Late-Breaking News - No news. - - No news. - - No news. + No news.
From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 17:51:50 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 110D41B6; Wed, 15 Jan 2014 17:51:50 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E5AC11144; Wed, 15 Jan 2014 17:51:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0FHpnAV049940; Wed, 15 Jan 2014 17:51:49 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0FHpnpJ049939; Wed, 15 Jan 2014 17:51:49 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201401151751.s0FHpnpJ049939@svn.freebsd.org> From: Hiroki Sato Date: Wed, 15 Jan 2014 17:51:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260692 - stable/10/release/doc/en_US.ISO8859-1/errata X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 17:51:50 -0000 Author: hrs Date: Wed Jan 15 17:51:49 2014 New Revision: 260692 URL: http://svnweb.freebsd.org/changeset/base/260692 Log: MFC of r260691: - Fix indent. - Minor clean up after DB5 migration. Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Directory Properties: stable/10/ (props changed) Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Wed Jan 15 17:34:21 2014 (r260691) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Wed Jan 15 17:51:49 2014 (r260692) @@ -1,32 +1,24 @@ + "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd" [ + %release; ]> - -
- &os; &release.prev; Errata - - - - The &os; Project - + +
+ + &os; &release.prev; Errata + + The &os; Project $FreeBSD$ 2014 + The &os; Documentation Project @@ -37,20 +29,20 @@ &tm-attrib.general; - - This document lists errata items for &os; &release.prev;, - containing significant information discovered after the release - or too late in the release cycle to be otherwise included in the - release documentation. - This information includes security advisories, as well as news - relating to the software or documentation that could affect its - operation or usability. An up-to-date version of this document - should always be consulted before installing this version of - &os;. - - This errata document for &os; &release.prev; - will be maintained until the release of &os; &release.next;. - + + This document lists errata items for &os; &release.prev;, + containing significant information discovered after the release + or too late in the release cycle to be otherwise included in the + release documentation. + This information includes security advisories, as well as news + relating to the software or documentation that could affect its + operation or usability. An up-to-date version of this document + should always be consulted before installing this version of + &os;. + + This errata document for &os; &release.prev; + will be maintained until the release of &os; &release.next;. + @@ -67,44 +59,96 @@ out of date by definition, but other copies are kept updated on the Internet and should be consulted as the current errata for this release. These other copies of the - errata are located at http://www.FreeBSD.org/releases/, plus any sites + errata are located at + , + plus any sites which keep up-to-date mirrors of this location. Source and binary snapshots of &os; &release.branch; also contain up-to-date copies of this document (as of the time of the snapshot). - For a list of all &os; CERT security advisories, see http://www.FreeBSD.org/security/ or ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/. - + For a list of all &os; CERT security advisories, see + + or . Security Advisories - No advisories. - - No advisories. - - No advisories. + + + + + + + + Advisory + Date + Topic + + + + + + SA-13:14.openssh + + 19 November 2013 + + OpenSSH AES-GCM memory corruption + vulnerability + + + + SA-14:01.bsnmpd + + 14 January 2014 + + bsnmpd remote denial of service vulnerability + + + + SA-14:02.ntpd + + 14 January 2014 + + ntpd distributed reflection Denial of Service vulnerability + + + + SA-14:03.openssl + + 14 January 2014 + + OpenSSL multiple vulnerabilities + + + + SA-14:04.bind + + 14 January 2014 + + BIND remote denial of service vulnerability + + + + Open Issues - No open issues. - - No open issues. - - No open issues. + No open issues. Late-Breaking News - No news. - - No news. - - No news. + No news.
From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 18:48:35 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2FB0EA20; Wed, 15 Jan 2014 18:48:35 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1B9261905; Wed, 15 Jan 2014 18:48:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0FImYlj070260; Wed, 15 Jan 2014 18:48:34 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0FImY1O070259; Wed, 15 Jan 2014 18:48:34 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201401151848.s0FImY1O070259@svn.freebsd.org> From: Hiroki Sato Date: Wed, 15 Jan 2014 18:48:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260693 - stable/10/release/doc/en_US.ISO8859-1/errata X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 18:48:35 -0000 Author: hrs Date: Wed Jan 15 18:48:34 2014 New Revision: 260693 URL: http://svnweb.freebsd.org/changeset/base/260693 Log: Document an issue of FreeBSD/i386 on VirtualBox. Discussed with: glebius and delphij Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Wed Jan 15 17:51:49 2014 (r260692) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Wed Jan 15 18:48:34 2014 (r260693) @@ -143,7 +143,32 @@ Open Issues - No open issues. + + + &os;/&arch.i386; &release.prev; running as a guest + operating system on VirtualBox + can have a problem with disk I/O access. It depends on some + specific hardware configuration and does not depend on a + specific version of VitrualBox or + host operating system. + + It causes various errors and makes &os; quite unstable. + Although the cause is still unclear, disabling unmapped I/O + works as a workaround. To disable it, choose Escape to + loader prompt in the boot menu and enter the following + lines from &man.loader.8; prompt, after + an OK: + + set vfs.unmapped_buf_allowed=0 +boot + + Note that the following line has to be added to + /boot/loader.conf after a boot. + It disables unmapped I/O at every boot: + + vfs.unmapped_buf_allowed=0 + + From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 19:09:11 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D3E5E6F9; Wed, 15 Jan 2014 19:09:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BE4E71A99; Wed, 15 Jan 2014 19:09:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0FJ9Bee078280; Wed, 15 Jan 2014 19:09:11 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0FJ9Bw3078279; Wed, 15 Jan 2014 19:09:11 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201401151909.s0FJ9Bw3078279@svn.freebsd.org> From: Hiroki Sato Date: Wed, 15 Jan 2014 19:09:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260694 - stable/10/release/doc/en_US.ISO8859-1/errata X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 19:09:11 -0000 Author: hrs Date: Wed Jan 15 19:09:11 2014 New Revision: 260694 URL: http://svnweb.freebsd.org/changeset/base/260694 Log: Document a Heimdal fix and interoperability. Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Wed Jan 15 18:48:34 2014 (r260693) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Wed Jan 15 19:09:11 2014 (r260694) @@ -168,6 +168,21 @@ boot vfs.unmapped_buf_allowed=0 + + + A bug in Heimdal (an + implementation of Kerberos + authentication in &os; base system) has been fixed. It + could cause an interoperability issue between + Heimdal and the other + implementations including MIT + Kerberos. However, due to this fix, + Heimdal and some applications + which depend on it in the previous &os; releases do not work + with one in &release.prev; in certain cases. Errata Notice + for the supported releases to fix it will be + released. + From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 19:49:13 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0CE504E6; Wed, 15 Jan 2014 19:49:13 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id ED5DE1F4B; Wed, 15 Jan 2014 19:49:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0FJnCmX094220; Wed, 15 Jan 2014 19:49:12 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0FJnC6d094219; Wed, 15 Jan 2014 19:49:12 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201401151949.s0FJnC6d094219@svn.freebsd.org> From: Warner Losh Date: Wed, 15 Jan 2014 19:49:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260695 - head/sys/arm/at91 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 19:49:13 -0000 Author: imp Date: Wed Jan 15 19:49:12 2014 New Revision: 260695 URL: http://svnweb.freebsd.org/changeset/base/260695 Log: Provide a simplified way to specify GPIO pins for the Atmel port. Added: head/sys/arm/at91/at91_gpio.h (contents, props changed) Added: head/sys/arm/at91/at91_gpio.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/arm/at91/at91_gpio.h Wed Jan 15 19:49:12 2014 (r260695) @@ -0,0 +1,296 @@ +/*- + * Copyright (c) 2014 M. Warner Losh. 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 AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + * 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 ARM_AT91_AT91_GPIO_H +#define ARM_AT91_AT91_GPIO_H + +typedef uint32_t at91_pin_t; + +#define AT91_PIN_NONE 0xfffffffful /* No pin / Not GPIO controlled */ + +/* + * Map Atmel PIO pins to a unique number. They are just numbered sequentially. + */ + +#define AT91_PIN_PA0 (at91_pin_t)0 +#define AT91_PIN_PA1 (at91_pin_t)1 +#define AT91_PIN_PA2 (at91_pin_t)2 +#define AT91_PIN_PA3 (at91_pin_t)3 +#define AT91_PIN_PA4 (at91_pin_t)4 +#define AT91_PIN_PA5 (at91_pin_t)5 +#define AT91_PIN_PA6 (at91_pin_t)6 +#define AT91_PIN_PA7 (at91_pin_t)7 +#define AT91_PIN_PA8 (at91_pin_t)8 +#define AT91_PIN_PA9 (at91_pin_t)9 +#define AT91_PIN_PA10 (at91_pin_t)10 +#define AT91_PIN_PA11 (at91_pin_t)11 +#define AT91_PIN_PA12 (at91_pin_t)12 +#define AT91_PIN_PA13 (at91_pin_t)13 +#define AT91_PIN_PA14 (at91_pin_t)14 +#define AT91_PIN_PA15 (at91_pin_t)15 +#define AT91_PIN_PA16 (at91_pin_t)16 +#define AT91_PIN_PA17 (at91_pin_t)17 +#define AT91_PIN_PA18 (at91_pin_t)18 +#define AT91_PIN_PA19 (at91_pin_t)19 +#define AT91_PIN_PA20 (at91_pin_t)20 +#define AT91_PIN_PA21 (at91_pin_t)21 +#define AT91_PIN_PA22 (at91_pin_t)22 +#define AT91_PIN_PA23 (at91_pin_t)23 +#define AT91_PIN_PA24 (at91_pin_t)24 +#define AT91_PIN_PA25 (at91_pin_t)25 +#define AT91_PIN_PA26 (at91_pin_t)26 +#define AT91_PIN_PA27 (at91_pin_t)27 +#define AT91_PIN_PA28 (at91_pin_t)28 +#define AT91_PIN_PA29 (at91_pin_t)29 +#define AT91_PIN_PA30 (at91_pin_t)30 +#define AT91_PIN_PA31 (at91_pin_t)31 +#define AT91_PIN_PB0 (at91_pin_t)32 +#define AT91_PIN_PB1 (at91_pin_t)33 +#define AT91_PIN_PB2 (at91_pin_t)34 +#define AT91_PIN_PB3 (at91_pin_t)35 +#define AT91_PIN_PB4 (at91_pin_t)36 +#define AT91_PIN_PB5 (at91_pin_t)37 +#define AT91_PIN_PB6 (at91_pin_t)38 +#define AT91_PIN_PB7 (at91_pin_t)39 +#define AT91_PIN_PB8 (at91_pin_t)40 +#define AT91_PIN_PB9 (at91_pin_t)41 +#define AT91_PIN_PB10 (at91_pin_t)42 +#define AT91_PIN_PB11 (at91_pin_t)43 +#define AT91_PIN_PB12 (at91_pin_t)44 +#define AT91_PIN_PB13 (at91_pin_t)45 +#define AT91_PIN_PB14 (at91_pin_t)46 +#define AT91_PIN_PB15 (at91_pin_t)47 +#define AT91_PIN_PB16 (at91_pin_t)48 +#define AT91_PIN_PB17 (at91_pin_t)49 +#define AT91_PIN_PB18 (at91_pin_t)50 +#define AT91_PIN_PB19 (at91_pin_t)51 +#define AT91_PIN_PB20 (at91_pin_t)52 +#define AT91_PIN_PB21 (at91_pin_t)53 +#define AT91_PIN_PB22 (at91_pin_t)54 +#define AT91_PIN_PB23 (at91_pin_t)55 +#define AT91_PIN_PB24 (at91_pin_t)56 +#define AT91_PIN_PB25 (at91_pin_t)57 +#define AT91_PIN_PB26 (at91_pin_t)58 +#define AT91_PIN_PB27 (at91_pin_t)59 +#define AT91_PIN_PB28 (at91_pin_t)60 +#define AT91_PIN_PB29 (at91_pin_t)61 +#define AT91_PIN_PB30 (at91_pin_t)62 +#define AT91_PIN_PB31 (at91_pin_t)63 +#define AT91_PIN_PC0 (at91_pin_t)64 +#define AT91_PIN_PC1 (at91_pin_t)65 +#define AT91_PIN_PC2 (at91_pin_t)66 +#define AT91_PIN_PC3 (at91_pin_t)67 +#define AT91_PIN_PC4 (at91_pin_t)68 +#define AT91_PIN_PC5 (at91_pin_t)69 +#define AT91_PIN_PC6 (at91_pin_t)70 +#define AT91_PIN_PC7 (at91_pin_t)71 +#define AT91_PIN_PC8 (at91_pin_t)72 +#define AT91_PIN_PC9 (at91_pin_t)73 +#define AT91_PIN_PC10 (at91_pin_t)74 +#define AT91_PIN_PC11 (at91_pin_t)75 +#define AT91_PIN_PC12 (at91_pin_t)76 +#define AT91_PIN_PC13 (at91_pin_t)77 +#define AT91_PIN_PC14 (at91_pin_t)78 +#define AT91_PIN_PC15 (at91_pin_t)79 +#define AT91_PIN_PC16 (at91_pin_t)80 +#define AT91_PIN_PC17 (at91_pin_t)81 +#define AT91_PIN_PC18 (at91_pin_t)82 +#define AT91_PIN_PC19 (at91_pin_t)83 +#define AT91_PIN_PC20 (at91_pin_t)84 +#define AT91_PIN_PC21 (at91_pin_t)85 +#define AT91_PIN_PC22 (at91_pin_t)86 +#define AT91_PIN_PC23 (at91_pin_t)87 +#define AT91_PIN_PC24 (at91_pin_t)88 +#define AT91_PIN_PC25 (at91_pin_t)89 +#define AT91_PIN_PC26 (at91_pin_t)90 +#define AT91_PIN_PC27 (at91_pin_t)91 +#define AT91_PIN_PC28 (at91_pin_t)92 +#define AT91_PIN_PC29 (at91_pin_t)93 +#define AT91_PIN_PC30 (at91_pin_t)94 +#define AT91_PIN_PC31 (at91_pin_t)95 +#define AT91_PIN_PD0 (at91_pin_t)96 +#define AT91_PIN_PD1 (at91_pin_t)97 +#define AT91_PIN_PD2 (at91_pin_t)98 +#define AT91_PIN_PD3 (at91_pin_t)99 +#define AT91_PIN_PD4 (at91_pin_t)100 +#define AT91_PIN_PD5 (at91_pin_t)101 +#define AT91_PIN_PD6 (at91_pin_t)102 +#define AT91_PIN_PD7 (at91_pin_t)103 +#define AT91_PIN_PD8 (at91_pin_t)104 +#define AT91_PIN_PD9 (at91_pin_t)105 +#define AT91_PIN_PD10 (at91_pin_t)106 +#define AT91_PIN_PD11 (at91_pin_t)107 +#define AT91_PIN_PD12 (at91_pin_t)108 +#define AT91_PIN_PD13 (at91_pin_t)109 +#define AT91_PIN_PD14 (at91_pin_t)110 +#define AT91_PIN_PD15 (at91_pin_t)111 +#define AT91_PIN_PD16 (at91_pin_t)112 +#define AT91_PIN_PD17 (at91_pin_t)113 +#define AT91_PIN_PD18 (at91_pin_t)114 +#define AT91_PIN_PD19 (at91_pin_t)115 +#define AT91_PIN_PD20 (at91_pin_t)116 +#define AT91_PIN_PD21 (at91_pin_t)117 +#define AT91_PIN_PD22 (at91_pin_t)118 +#define AT91_PIN_PD23 (at91_pin_t)119 +#define AT91_PIN_PD24 (at91_pin_t)120 +#define AT91_PIN_PD25 (at91_pin_t)121 +#define AT91_PIN_PD26 (at91_pin_t)122 +#define AT91_PIN_PD27 (at91_pin_t)123 +#define AT91_PIN_PD28 (at91_pin_t)124 +#define AT91_PIN_PD29 (at91_pin_t)125 +#define AT91_PIN_PD30 (at91_pin_t)126 +#define AT91_PIN_PD31 (at91_pin_t)127 +#define AT91_PIN_PE0 (at91_pin_t)128 +#define AT91_PIN_PE1 (at91_pin_t)129 +#define AT91_PIN_PE2 (at91_pin_t)130 +#define AT91_PIN_PE3 (at91_pin_t)131 +#define AT91_PIN_PE4 (at91_pin_t)132 +#define AT91_PIN_PE5 (at91_pin_t)133 +#define AT91_PIN_PE6 (at91_pin_t)134 +#define AT91_PIN_PE7 (at91_pin_t)135 +#define AT91_PIN_PE8 (at91_pin_t)136 +#define AT91_PIN_PE9 (at91_pin_t)137 +#define AT91_PIN_PE10 (at91_pin_t)138 +#define AT91_PIN_PE11 (at91_pin_t)139 +#define AT91_PIN_PE12 (at91_pin_t)140 +#define AT91_PIN_PE13 (at91_pin_t)141 +#define AT91_PIN_PE14 (at91_pin_t)142 +#define AT91_PIN_PE15 (at91_pin_t)143 +#define AT91_PIN_PE16 (at91_pin_t)144 +#define AT91_PIN_PE17 (at91_pin_t)145 +#define AT91_PIN_PE18 (at91_pin_t)146 +#define AT91_PIN_PE19 (at91_pin_t)147 +#define AT91_PIN_PE20 (at91_pin_t)148 +#define AT91_PIN_PE21 (at91_pin_t)149 +#define AT91_PIN_PE22 (at91_pin_t)150 +#define AT91_PIN_PE23 (at91_pin_t)151 +#define AT91_PIN_PE24 (at91_pin_t)152 +#define AT91_PIN_PE25 (at91_pin_t)153 +#define AT91_PIN_PE26 (at91_pin_t)154 +#define AT91_PIN_PE27 (at91_pin_t)155 +#define AT91_PIN_PE28 (at91_pin_t)156 +#define AT91_PIN_PE29 (at91_pin_t)157 +#define AT91_PIN_PE30 (at91_pin_t)158 +#define AT91_PIN_PE31 (at91_pin_t)159 +#define AT91_PIN_PF0 (at91_pin_t)160 +#define AT91_PIN_PF1 (at91_pin_t)161 +#define AT91_PIN_PF2 (at91_pin_t)162 +#define AT91_PIN_PF3 (at91_pin_t)163 +#define AT91_PIN_PF4 (at91_pin_t)164 +#define AT91_PIN_PF5 (at91_pin_t)165 +#define AT91_PIN_PF6 (at91_pin_t)166 +#define AT91_PIN_PF7 (at91_pin_t)167 +#define AT91_PIN_PF8 (at91_pin_t)168 +#define AT91_PIN_PF9 (at91_pin_t)169 +#define AT91_PIN_PF10 (at91_pin_t)170 +#define AT91_PIN_PF11 (at91_pin_t)171 +#define AT91_PIN_PF12 (at91_pin_t)172 +#define AT91_PIN_PF13 (at91_pin_t)173 +#define AT91_PIN_PF14 (at91_pin_t)174 +#define AT91_PIN_PF15 (at91_pin_t)175 +#define AT91_PIN_PF16 (at91_pin_t)176 +#define AT91_PIN_PF17 (at91_pin_t)177 +#define AT91_PIN_PF18 (at91_pin_t)178 +#define AT91_PIN_PF19 (at91_pin_t)179 +#define AT91_PIN_PF20 (at91_pin_t)180 +#define AT91_PIN_PF21 (at91_pin_t)181 +#define AT91_PIN_PF22 (at91_pin_t)182 +#define AT91_PIN_PF23 (at91_pin_t)183 +#define AT91_PIN_PF24 (at91_pin_t)184 +#define AT91_PIN_PF25 (at91_pin_t)185 +#define AT91_PIN_PF26 (at91_pin_t)186 +#define AT91_PIN_PF27 (at91_pin_t)187 +#define AT91_PIN_PF28 (at91_pin_t)188 +#define AT91_PIN_PF29 (at91_pin_t)189 +#define AT91_PIN_PF30 (at91_pin_t)190 +#define AT91_PIN_PF31 (at91_pin_t)191 +#define AT91_PIN_PG0 (at91_pin_t)192 +#define AT91_PIN_PG1 (at91_pin_t)193 +#define AT91_PIN_PG2 (at91_pin_t)194 +#define AT91_PIN_PG3 (at91_pin_t)195 +#define AT91_PIN_PG4 (at91_pin_t)196 +#define AT91_PIN_PG5 (at91_pin_t)197 +#define AT91_PIN_PG6 (at91_pin_t)198 +#define AT91_PIN_PG7 (at91_pin_t)199 +#define AT91_PIN_PG8 (at91_pin_t)200 +#define AT91_PIN_PG9 (at91_pin_t)201 +#define AT91_PIN_PG10 (at91_pin_t)202 +#define AT91_PIN_PG11 (at91_pin_t)203 +#define AT91_PIN_PG12 (at91_pin_t)204 +#define AT91_PIN_PG13 (at91_pin_t)205 +#define AT91_PIN_PG14 (at91_pin_t)206 +#define AT91_PIN_PG15 (at91_pin_t)207 +#define AT91_PIN_PG16 (at91_pin_t)208 +#define AT91_PIN_PG17 (at91_pin_t)209 +#define AT91_PIN_PG18 (at91_pin_t)210 +#define AT91_PIN_PG19 (at91_pin_t)211 +#define AT91_PIN_PG20 (at91_pin_t)212 +#define AT91_PIN_PG21 (at91_pin_t)213 +#define AT91_PIN_PG22 (at91_pin_t)214 +#define AT91_PIN_PG23 (at91_pin_t)215 +#define AT91_PIN_PG24 (at91_pin_t)216 +#define AT91_PIN_PG25 (at91_pin_t)217 +#define AT91_PIN_PG26 (at91_pin_t)218 +#define AT91_PIN_PG27 (at91_pin_t)219 +#define AT91_PIN_PG28 (at91_pin_t)220 +#define AT91_PIN_PG29 (at91_pin_t)221 +#define AT91_PIN_PG30 (at91_pin_t)222 +#define AT91_PIN_PG31 (at91_pin_t)223 +#define AT91_PIN_PH0 (at91_pin_t)224 +#define AT91_PIN_PH1 (at91_pin_t)225 +#define AT91_PIN_PH2 (at91_pin_t)226 +#define AT91_PIN_PH3 (at91_pin_t)227 +#define AT91_PIN_PH4 (at91_pin_t)228 +#define AT91_PIN_PH5 (at91_pin_t)229 +#define AT91_PIN_PH6 (at91_pin_t)230 +#define AT91_PIN_PH7 (at91_pin_t)231 +#define AT91_PIN_PH8 (at91_pin_t)232 +#define AT91_PIN_PH9 (at91_pin_t)233 +#define AT91_PIN_PH10 (at91_pin_t)234 +#define AT91_PIN_PH11 (at91_pin_t)235 +#define AT91_PIN_PH12 (at91_pin_t)236 +#define AT91_PIN_PH13 (at91_pin_t)237 +#define AT91_PIN_PH14 (at91_pin_t)238 +#define AT91_PIN_PH15 (at91_pin_t)239 +#define AT91_PIN_PH16 (at91_pin_t)240 +#define AT91_PIN_PH17 (at91_pin_t)241 +#define AT91_PIN_PH18 (at91_pin_t)242 +#define AT91_PIN_PH19 (at91_pin_t)243 +#define AT91_PIN_PH20 (at91_pin_t)244 +#define AT91_PIN_PH21 (at91_pin_t)245 +#define AT91_PIN_PH22 (at91_pin_t)246 +#define AT91_PIN_PH23 (at91_pin_t)247 +#define AT91_PIN_PH24 (at91_pin_t)248 +#define AT91_PIN_PH25 (at91_pin_t)249 +#define AT91_PIN_PH26 (at91_pin_t)250 +#define AT91_PIN_PH27 (at91_pin_t)251 +#define AT91_PIN_PH28 (at91_pin_t)252 +#define AT91_PIN_PH29 (at91_pin_t)253 +#define AT91_PIN_PH30 (at91_pin_t)254 +#define AT91_PIN_PH31 (at91_pin_t)255 + +#endif /* ARM_AT91_AT91_GPIO_H */ From owner-svn-src-all@FreeBSD.ORG Wed Jan 15 19:53:38 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 052518AC; Wed, 15 Jan 2014 19:53:38 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D96DE1FD7; Wed, 15 Jan 2014 19:53:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0FJrbb3097534; Wed, 15 Jan 2014 19:53:37 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0FJraal097526; Wed, 15 Jan 2014 19:53:36 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201401151953.s0FJraal097526@svn.freebsd.org> From: Warner Losh Date: Wed, 15 Jan 2014 19:53:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260696 - head/sys/arm/at91 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jan 2014 19:53:38 -0000 Author: imp Date: Wed Jan 15 19:53:36 2014 New Revision: 260696 URL: http://svnweb.freebsd.org/changeset/base/260696 Log: Add data so we can convert a PIO unit number into a base address. Modified: head/sys/arm/at91/at91rm9200.c head/sys/arm/at91/at91sam9260.c head/sys/arm/at91/at91sam9g20.c head/sys/arm/at91/at91sam9g45.c head/sys/arm/at91/at91sam9x5.c head/sys/arm/at91/at91var.h Modified: head/sys/arm/at91/at91rm9200.c ============================================================================== --- head/sys/arm/at91/at91rm9200.c Wed Jan 15 19:49:12 2014 (r260695) +++ head/sys/arm/at91/at91rm9200.c Wed Jan 15 19:53:36 2014 (r260696) @@ -88,6 +88,13 @@ static const int at91_irq_prio[32] = 0 /* Advanced Interrupt Controller (IRQ6) */ }; +static const uint32_t at91_pio_base[] = { + AT91RM92_PIOA_BASE, + AT91RM92_PIOB_BASE, + AT91RM92_PIOC_BASE, + AT91RM92_PIOD_BASE, +}; + #define DEVICE(_name, _id, _unit) \ { \ _name, _unit, \ @@ -195,6 +202,8 @@ static struct at91_soc_data soc_data = { .soc_clock_init = at91_clock_init, .soc_irq_prio = at91_irq_prio, .soc_children = at91_devs, + .soc_pio_base = at91_pio_base, + .soc_pio_count = nitems(at91_pio_base), }; AT91_SOC(AT91_T_RM9200, &soc_data); Modified: head/sys/arm/at91/at91sam9260.c ============================================================================== --- head/sys/arm/at91/at91sam9260.c Wed Jan 15 19:49:12 2014 (r260695) +++ head/sys/arm/at91/at91sam9260.c Wed Jan 15 19:53:36 2014 (r260696) @@ -87,6 +87,12 @@ static const int at91_irq_prio[32] = 0, /* Advanced Interrupt Controller IRQ2 */ }; +static const uint32_t at91_pio_base[] = { + AT91SAM9260_PIOA_BASE, + AT91SAM9260_PIOB_BASE, + AT91SAM9260_PIOC_BASE, +}; + #define DEVICE(_name, _id, _unit) \ { \ _name, _unit, \ @@ -204,6 +210,8 @@ static struct at91_soc_data soc_data = { .soc_clock_init = at91_clock_init, .soc_irq_prio = at91_irq_prio, .soc_children = at91_devs, + .soc_pio_base = at91_pio_base, + .soc_pio_count = nitems(at91_pio_base), }; AT91_SOC(AT91_T_SAM9260, &soc_data); Modified: head/sys/arm/at91/at91sam9g20.c ============================================================================== --- head/sys/arm/at91/at91sam9g20.c Wed Jan 15 19:49:12 2014 (r260695) +++ head/sys/arm/at91/at91sam9g20.c Wed Jan 15 19:53:36 2014 (r260696) @@ -87,6 +87,12 @@ static const int at91_irq_prio[32] = 0, /* Advanced Interrupt Controller IRQ2 */ }; +static const uint32_t at91_pio_base[] = { + AT91SAM9G20_PIOA_BASE, + AT91SAM9G20_PIOB_BASE, + AT91SAM9G20_PIOC_BASE, +}; + #define DEVICE(_name, _id, _unit) \ { \ _name, _unit, \ @@ -169,6 +175,8 @@ static struct at91_soc_data soc_data = { .soc_clock_init = at91_clock_init, .soc_irq_prio = at91_irq_prio, .soc_children = at91_devs, + .soc_pio_base = at91_pio_base, + .soc_pio_count = nitems(at91_pio_base), }; AT91_SOC(AT91_T_SAM9G20, &soc_data); Modified: head/sys/arm/at91/at91sam9g45.c ============================================================================== --- head/sys/arm/at91/at91sam9g45.c Wed Jan 15 19:49:12 2014 (r260695) +++ head/sys/arm/at91/at91sam9g45.c Wed Jan 15 19:53:36 2014 (r260696) @@ -88,6 +88,14 @@ static const int at91_irq_prio[32] = 0, /* Advanced Interrupt Controller IRQ0 */ }; +static const uint32_t at91_pio_base[] = { + AT91SAM9G45_PIOA_BASE, + AT91SAM9G45_PIOB_BASE, + AT91SAM9G45_PIOC_BASE, + AT91SAM9G45_PIOD_BASE, + AT91SAM9G45_PIOE_BASE, +}; + #define DEVICE(_name, _id, _unit) \ { \ _name, _unit, \ @@ -155,6 +163,8 @@ static struct at91_soc_data soc_data = { .soc_clock_init = at91_clock_init, .soc_irq_prio = at91_irq_prio, .soc_children = at91_devs, + .soc_pio_base = at91_pio_base, + .soc_pio_count = nitems(at91_pio_base), }; AT91_SOC(AT91_T_SAM9G45, &soc_data); Modified: head/sys/arm/at91/at91sam9x5.c ============================================================================== --- head/sys/arm/at91/at91sam9x5.c Wed Jan 15 19:49:12 2014 (r260695) +++ head/sys/arm/at91/at91sam9x5.c Wed Jan 15 19:53:36 2014 (r260696) @@ -87,6 +87,13 @@ static const int at91_irq_prio[32] = 0, /* Advanced Interrupt Controller (IRQ0) */ }; +static const uint32_t at91_pio_base[] = { + AT91SAM9X25_PIOA_BASE, + AT91SAM9X25_PIOB_BASE, + AT91SAM9X25_PIOC_BASE, + AT91SAM9X25_PIOD_BASE, +}; + #define DEVICE(_name, _id, _unit) \ { \ _name, _unit, \ @@ -172,6 +179,8 @@ static struct at91_soc_data soc_data = { .soc_clock_init = at91_clock_init, .soc_irq_prio = at91_irq_prio, .soc_children = at91_devs, + .soc_pio_base = at91_pio_base, + .soc_pio_count = nitems(at91_pio_base), }; AT91_SOC_SUB(AT91_T_SAM9X5, AT91_ST_SAM9X25, &soc_data); Modified: head/sys/arm/at91/at91var.h ============================================================================== --- head/sys/arm/at91/at91var.h Wed Jan 15 19:49:12 2014 (r260695) +++ head/sys/arm/at91/at91var.h Wed Jan 15 19:53:36 2014 (r260696) @@ -107,11 +107,13 @@ typedef void (*cpu_reset_t)(void); typedef void (*clk_init_t)(void); struct at91_soc_data { - DELAY_t soc_delay; - cpu_reset_t soc_reset; - clk_init_t soc_clock_init; - const int *soc_irq_prio; - const struct cpu_devs *soc_children; + DELAY_t soc_delay; /* SoC specific delay function */ + cpu_reset_t soc_reset; /* SoC specific reset function */ + clk_init_t soc_clock_init; /* SoC specific clock init function */ + const int *soc_irq_prio; /* SoC specific IRQ priorities */ + const struct cpu_devs *soc_children; /* SoC specific children list */ + const uint32_t *soc_pio_base; /* SoC specific PIO base registers */ + size_t soc_pio_count; /* Count of PIO units (not pins) in SoC */ }; struct at91_soc_info { From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 00:20:44 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 46AEF1B9; Thu, 16 Jan 2014 00:20:44 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 30B5C1660; Thu, 16 Jan 2014 00:20:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0G0KiWN004091; Thu, 16 Jan 2014 00:20:44 GMT (envelope-from luigi@svn.freebsd.org) Received: (from luigi@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0G0KgwY004039; Thu, 16 Jan 2014 00:20:42 GMT (envelope-from luigi@svn.freebsd.org) Message-Id: <201401160020.s0G0KgwY004039@svn.freebsd.org> From: Luigi Rizzo Date: Thu, 16 Jan 2014 00:20:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260700 - in head: sys/dev/netmap tools/tools/netmap X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 00:20:44 -0000 Author: luigi Date: Thu Jan 16 00:20:42 2014 New Revision: 260700 URL: http://svnweb.freebsd.org/changeset/base/260700 Log: netmap_user.h: add separate rx/tx ring indexes add ring specifier in nm_open device name netmap.c, netmap_vale.c more consistent errno numbers netmap_generic.c correctly handle failure in registering interfaces. tools/tools/netmap/ massive cleanup of the example programs (a lot of common code is now in netmap_user.h.) nm_util.[ch] are going away soon. pcap.c will also go when i commit the native netmap support for libpcap. Modified: head/sys/dev/netmap/netmap.c head/sys/dev/netmap/netmap_generic.c head/sys/dev/netmap/netmap_vale.c head/tools/tools/netmap/Makefile head/tools/tools/netmap/bridge.c head/tools/tools/netmap/nm_util.c head/tools/tools/netmap/nm_util.h head/tools/tools/netmap/pcap.c head/tools/tools/netmap/pkt-gen.c head/tools/tools/netmap/vale-ctl.c Modified: head/sys/dev/netmap/netmap.c ============================================================================== --- head/sys/dev/netmap/netmap.c Wed Jan 15 22:47:53 2014 (r260699) +++ head/sys/dev/netmap/netmap.c Thu Jan 16 00:20:42 2014 (r260700) @@ -1052,7 +1052,7 @@ netmap_get_hw_na(struct ifnet *ifp, stru * to use generic adapters, we cannot satisfy the request. */ if (!NETMAP_CAPABLE(ifp) && i == NETMAP_ADMODE_NATIVE) - return EINVAL; + return EOPNOTSUPP; /* Otherwise, create a generic adapter and return it, * saving the previously used netmap adapter, if any. @@ -1090,22 +1090,19 @@ netmap_get_hw_na(struct ifnet *ifp, stru /* * MUST BE CALLED UNDER NMG_LOCK() * - * get a refcounted reference to an interface. + * Get a refcounted reference to a netmap adapter attached + * to the interface specified by nmr. * This is always called in the execution of an ioctl(). * - * Return ENXIO if the interface does not exist, EINVAL if netmap - * is not supported by the interface. - * If successful, hold a reference. - * - * When the NIC is attached to a bridge, reference is managed - * at na->na_bdg_refcount using ADD/DROP_BDG_REF() as well as - * virtual ports. Hence, on the final DROP_BDG_REF(), the NIC - * is detached from the bridge, then ifp's refcount is dropped (this - * is equivalent to that ifp is destroyed in case of virtual ports. - * - * This function uses if_rele() when we want to prevent the NIC from - * being detached from the bridge in error handling. But once refcount - * is acquired by this function, it must be released using nm_if_rele(). + * Return ENXIO if the interface specified by the request does + * not exist, ENOTSUP if netmap is not supported by the interface, + * EBUSY if the interface is already attached to a bridge, + * EINVAL if parameters are invalid, ENOMEM if needed resources + * could not be allocated. + * If successful, hold a reference to the netmap adapter. + * + * No reference is kept on the real interface, which may then + * disappear at any time. */ int netmap_get_na(struct nmreq *nmr, struct netmap_adapter **na, int create) @@ -1135,7 +1132,7 @@ netmap_get_na(struct nmreq *nmr, struct if (ret != NULL) { /* Users cannot use the NIC attached to a bridge directly */ if (NETMAP_OWNED_BY_KERN(ret)) { - error = EINVAL; + error = EBUSY; goto out; } error = 0; Modified: head/sys/dev/netmap/netmap_generic.c ============================================================================== --- head/sys/dev/netmap/netmap_generic.c Wed Jan 15 22:47:53 2014 (r260699) +++ head/sys/dev/netmap/netmap_generic.c Thu Jan 16 00:20:42 2014 (r260700) @@ -261,7 +261,7 @@ generic_netmap_register(struct netmap_ad /* Prepare to intercept incoming traffic. */ error = netmap_catch_rx(na, 1); if (error) { - D("netdev_rx_handler_register() failed"); + D("netdev_rx_handler_register() failed (%d)", error); goto register_handler; } ifp->if_capenable |= IFCAP_NETMAP; @@ -283,7 +283,11 @@ generic_netmap_register(struct netmap_ad rate_ctx.refcount++; #endif /* RATE */ - } else { /* Disable netmap mode. */ + } else if (na->tx_rings[0].tx_pool) { + /* Disable netmap mode. We enter here only if the previous + generic_netmap_register(na, 1) was successfull. + If it was not, na->tx_rings[0].tx_pool was set to NULL by the + error handling code below. */ rtnl_lock(); ifp->if_capenable &= ~IFCAP_NETMAP; @@ -322,7 +326,7 @@ generic_netmap_register(struct netmap_ad #ifdef REG_RESET error = ifp->netdev_ops->ndo_open(ifp); if (error) { - goto alloc_tx_pool; + goto free_tx_pools; } #endif @@ -338,6 +342,11 @@ free_tx_pools: if (na->tx_rings[r].tx_pool[i]) m_freem(na->tx_rings[r].tx_pool[i]); free(na->tx_rings[r].tx_pool, M_DEVBUF); + na->tx_rings[r].tx_pool = NULL; + } + netmap_mitigation_cleanup(gna); + for (r=0; rnum_rx_rings; r++) { + mbq_safe_destroy(&na->rx_rings[r].rx_queue); } return error; Modified: head/sys/dev/netmap/netmap_vale.c ============================================================================== --- head/sys/dev/netmap/netmap_vale.c Wed Jan 15 22:47:53 2014 (r260699) +++ head/sys/dev/netmap/netmap_vale.c Thu Jan 16 00:20:42 2014 (r260700) @@ -515,7 +515,7 @@ netmap_get_bdg_na(struct nmreq *nmr, str b = nm_find_bridge(name, create); if (b == NULL) { D("no bridges available for '%s'", name); - return (ENXIO); + return (create ? ENOMEM : ENXIO); } /* Now we are sure that name starts with the bridge's name, @@ -547,7 +547,7 @@ netmap_get_bdg_na(struct nmreq *nmr, str needed = 2; /* in some cases we only need 1 */ if (b->bdg_active_ports + needed >= NM_BDG_MAXPORTS) { D("bridge full %d, cannot create new port", b->bdg_active_ports); - return EINVAL; + return ENOMEM; } /* record the next two ports available, but do not allocate yet */ cand = b->bdg_port_index[b->bdg_active_ports]; @@ -594,7 +594,7 @@ netmap_get_bdg_na(struct nmreq *nmr, str if (NETMAP_OWNED_BY_ANY(ret)) { D("NIC %s busy, cannot attach to bridge", NM_IFPNAME(ifp)); - error = EINVAL; + error = EBUSY; goto out; } /* create a fake interface */ @@ -658,11 +658,13 @@ nm_bdg_attach(struct nmreq *nmr) npriv = malloc(sizeof(*npriv), M_DEVBUF, M_NOWAIT|M_ZERO); if (npriv == NULL) return ENOMEM; + NMG_LOCK(); - /* XXX probably netmap_get_bdg_na() */ + error = netmap_get_bdg_na(nmr, &na, 1 /* create if not exists */); if (error) /* no device, or another bridge or user owns the device */ goto unlock_exit; + if (na == NULL) { /* VALE prefix missing */ error = EINVAL; goto unlock_exit; @@ -707,6 +709,7 @@ nm_bdg_detach(struct nmreq *nmr) if (error) { /* no device, or another bridge or user owns the device */ goto unlock_exit; } + if (na == NULL) { /* VALE prefix missing */ error = EINVAL; goto unlock_exit; @@ -1945,7 +1948,7 @@ netmap_bwrap_notify(struct netmap_adapte int error = 0; if (tx == NR_TX) - return ENXIO; + return EINVAL; kring = &na->rx_rings[ring_n]; hw_kring = &hwna->tx_rings[ring_n]; @@ -1999,7 +2002,7 @@ netmap_bwrap_host_notify(struct netmap_a struct netmap_bwrap_adapter *bna = na->na_private; struct netmap_adapter *port_na = &bna->up.up; if (tx == NR_TX || ring_n != 0) - return ENXIO; + return EINVAL; return netmap_bwrap_notify(port_na, port_na->num_rx_rings, NR_RX, flags); } Modified: head/tools/tools/netmap/Makefile ============================================================================== --- head/tools/tools/netmap/Makefile Wed Jan 15 22:47:53 2014 (r260699) +++ head/tools/tools/netmap/Makefile Thu Jan 16 00:20:42 2014 (r260700) @@ -10,7 +10,12 @@ NO_MAN= CFLAGS += -Werror -Wall -nostdinc -I/usr/include -I../../../sys CFLAGS += -Wextra -LDFLAGS += -lpthread -lpcap +LDFLAGS += -lpthread +.ifdef WITHOUT_PCAP +CFLAGS += -DNO_PCAP +.else +LDFLAGS += -lpcap +.endif .include .include Modified: head/tools/tools/netmap/bridge.c ============================================================================== --- head/tools/tools/netmap/bridge.c Wed Jan 15 22:47:53 2014 (r260699) +++ head/tools/tools/netmap/bridge.c Thu Jan 16 00:20:42 2014 (r260700) @@ -96,16 +96,16 @@ process_rings(struct netmap_ring *rxring /* move packts from src to destination */ static int -move(struct my_ring *src, struct my_ring *dst, u_int limit) +move(struct nm_desc_t *src, struct nm_desc_t *dst, u_int limit) { struct netmap_ring *txring, *rxring; - u_int m = 0, si = src->begin, di = dst->begin; - const char *msg = (src->queueid & NETMAP_SW_RING) ? + u_int m = 0, si = src->first_rx_ring, di = dst->first_tx_ring; + const char *msg = (src->req.nr_ringid & NETMAP_SW_RING) ? "host->net" : "net->host"; - while (si < src->end && di < dst->end) { - rxring = NETMAP_RXRING(src->nifp, si); - txring = NETMAP_TXRING(dst->nifp, di); + while (si <= src->last_rx_ring && di <= dst->last_tx_ring) { + rxring = src->tx + si; + txring = dst->tx + di; ND("txring %p rxring %p", txring, rxring); if (nm_ring_empty(rxring)) { si++; @@ -121,28 +121,6 @@ move(struct my_ring *src, struct my_ring return (m); } -/* - * how many packets on this set of queues ? - */ -static int -pkt_queued(struct my_ring *me, int tx) -{ - u_int i, tot = 0; - - ND("me %p begin %d end %d", me, me->begin, me->end); - for (i = me->begin; i < me->end; i++) { - struct netmap_ring *ring = tx ? - NETMAP_TXRING(me->nifp, i) : NETMAP_RXRING(me->nifp, i); - tot += nm_ring_space(ring); - } - if (0 && verbose && tot && !tx) - D("ring %s %s %s has %d avail at %d", - me->ifname, tx ? "tx": "rx", - me->end >= me->nifp->ni_tx_rings ? // XXX who comes first ? - "host":"net", - tot, NETMAP_TXRING(me->nifp, me->begin)->cur); - return tot; -} static void usage(void) @@ -165,14 +143,12 @@ main(int argc, char **argv) struct pollfd pollfd[2]; int i, ch; u_int burst = 1024, wait_link = 4; - struct my_ring me[2]; + struct nm_desc_t *pa = NULL, *pb = NULL; char *ifa = NULL, *ifb = NULL; fprintf(stderr, "%s %s built %s %s\n", argv[0], version, __DATE__, __TIME__); - bzero(me, sizeof(me)); - while ( (ch = getopt(argc, argv, "b:i:vw:")) != -1) { switch (ch) { default: @@ -224,9 +200,6 @@ main(int argc, char **argv) D("invalid wait_link %d, set to 4", wait_link); wait_link = 4; } - /* setup netmap interface #1. */ - me[0].ifname = ifa; - me[1].ifname = ifb; if (!strcmp(ifa, ifb)) { D("same interface, endpoint 0 goes to host"); i = NETMAP_SW_RING; @@ -234,24 +207,26 @@ main(int argc, char **argv) /* two different interfaces. Take all rings on if1 */ i = 0; // all hw rings } - if (netmap_open(me, i, 1)) + pa = netmap_open(ifa, i, 1); + if (pa == NULL) return (1); - me[1].mem = me[0].mem; /* copy the pointer, so only one mmap */ - if (netmap_open(me+1, 0, 1)) + // XXX use a single mmap ? + pb = netmap_open(ifb, 0, 1); + if (pb == NULL) { + nm_close(pa); return (1); + } /* setup poll(2) variables. */ memset(pollfd, 0, sizeof(pollfd)); - for (i = 0; i < 2; i++) { - pollfd[i].fd = me[i].fd; - pollfd[i].events = (POLLIN); - } + pollfd[0].fd = pa->fd; + pollfd[1].fd = pb->fd; D("Wait %d secs for link to come up...", wait_link); sleep(wait_link); D("Ready to go, %s 0x%x/%d <-> %s 0x%x/%d.", - me[0].ifname, me[0].queueid, me[0].nifp->ni_rx_rings, - me[1].ifname, me[1].queueid, me[1].nifp->ni_rx_rings); + pa->req.nr_name, pa->first_rx_ring, pa->req.nr_rx_rings, + pb->req.nr_name, pb->first_rx_ring, pb->req.nr_rx_rings); /* main loop */ signal(SIGINT, sigint_h); @@ -259,8 +234,8 @@ main(int argc, char **argv) int n0, n1, ret; pollfd[0].events = pollfd[1].events = 0; pollfd[0].revents = pollfd[1].revents = 0; - n0 = pkt_queued(me, 0); - n1 = pkt_queued(me + 1, 0); + n0 = pkt_queued(pa, 0); + n1 = pkt_queued(pb, 0); if (n0) pollfd[1].events |= POLLOUT; else @@ -276,39 +251,39 @@ main(int argc, char **argv) ret <= 0 ? "timeout" : "ok", pollfd[0].events, pollfd[0].revents, - pkt_queued(me, 0), - me[0].rx->cur, - pkt_queued(me, 1), + pkt_queued(pa, 0), + pa->rx->cur, + pkt_queued(pa, 1), pollfd[1].events, pollfd[1].revents, - pkt_queued(me+1, 0), - me[1].rx->cur, - pkt_queued(me+1, 1) + pkt_queued(pb, 0), + pb->rx->cur, + pkt_queued(pb, 1) ); if (ret < 0) continue; if (pollfd[0].revents & POLLERR) { D("error on fd0, rx [%d,%d)", - me[0].rx->cur, me[0].rx->tail); + pa->rx->cur, pa->rx->tail); } if (pollfd[1].revents & POLLERR) { D("error on fd1, rx [%d,%d)", - me[1].rx->cur, me[1].rx->tail); + pb->rx->cur, pb->rx->tail); } if (pollfd[0].revents & POLLOUT) { - move(me + 1, me, burst); + move(pb, pa, burst); // XXX we don't need the ioctl */ // ioctl(me[0].fd, NIOCTXSYNC, NULL); } if (pollfd[1].revents & POLLOUT) { - move(me, me + 1, burst); + move(pa, pb, burst); // XXX we don't need the ioctl */ // ioctl(me[1].fd, NIOCTXSYNC, NULL); } } D("exiting"); - netmap_close(me + 1); - netmap_close(me + 0); + nm_close(pb); + nm_close(pa); return (0); } Modified: head/tools/tools/netmap/nm_util.c ============================================================================== --- head/tools/tools/netmap/nm_util.c Wed Jan 15 22:47:53 2014 (r260699) +++ head/tools/tools/netmap/nm_util.c Thu Jan 16 00:20:42 2014 (r260700) @@ -37,16 +37,21 @@ extern int verbose; int -nm_do_ioctl(struct my_ring *me, u_long what, int subcmd) +nm_do_ioctl(struct nm_desc_t *me, u_long what, int subcmd) { struct ifreq ifr; int error; + int fd; + #if defined( __FreeBSD__ ) || defined (__APPLE__) - int fd = me->fd; + (void)subcmd; // only used on Linux + fd = me->fd; #endif + #ifdef linux struct ethtool_value eval; - int fd; + + bzero(&eval, sizeof(eval)); fd = socket(AF_INET, SOCK_DGRAM, 0); if (fd < 0) { printf("Error: cannot get device control socket.\n"); @@ -54,9 +59,8 @@ nm_do_ioctl(struct my_ring *me, u_long w } #endif /* linux */ - (void)subcmd; // unused bzero(&ifr, sizeof(ifr)); - strncpy(ifr.ifr_name, me->ifname, sizeof(ifr.ifr_name)); + strncpy(ifr.ifr_name, me->req.nr_name, sizeof(ifr.ifr_name)); switch (what) { case SIOCSIFFLAGS: #ifndef __APPLE__ @@ -71,6 +75,7 @@ nm_do_ioctl(struct my_ring *me, u_long w ifr.ifr_curcap = me->if_curcap; break; #endif + #ifdef linux case SIOCETHTOOL: eval.cmd = subcmd; @@ -115,108 +120,47 @@ done: * Returns the file descriptor. * The extra flag checks configures promisc mode. */ -int -netmap_open(struct my_ring *me, int ringid, int promisc) +struct nm_desc_t * +netmap_open(const char *name, int ringid, int promisc) { - int fd, err, l; - struct nmreq req; + struct nm_desc_t *d = nm_open(name, NULL, ringid, 0); - me->fd = fd = open("/dev/netmap", O_RDWR); - if (fd < 0) { - D("Unable to open /dev/netmap"); - return (-1); - } - bzero(&req, sizeof(req)); - req.nr_version = NETMAP_API; - strncpy(req.nr_name, me->ifname, sizeof(req.nr_name)); - req.nr_ringid = ringid; - err = ioctl(fd, NIOCREGIF, &req); - if (err) { - D("Unable to register %s", me->ifname); - goto error; - } - me->memsize = l = req.nr_memsize; - if (verbose) - D("memsize is %d MB", l>>20); - - if (me->mem == NULL) { - me->mem = mmap(0, l, PROT_WRITE | PROT_READ, MAP_SHARED, fd, 0); - if (me->mem == MAP_FAILED) { - D("Unable to mmap"); - me->mem = NULL; - goto error; - } - } + if (d == NULL) + return d; + if (verbose) + D("memsize is %d MB", d->req.nr_memsize>>20); /* Set the operating mode. */ if (ringid != NETMAP_SW_RING) { - nm_do_ioctl(me, SIOCGIFFLAGS, 0); - if ((me[0].if_flags & IFF_UP) == 0) { - D("%s is down, bringing up...", me[0].ifname); - me[0].if_flags |= IFF_UP; + nm_do_ioctl(d, SIOCGIFFLAGS, 0); + if ((d->if_flags & IFF_UP) == 0) { + D("%s is down, bringing up...", name); + d->if_flags |= IFF_UP; } if (promisc) { - me[0].if_flags |= IFF_PPROMISC; - nm_do_ioctl(me, SIOCSIFFLAGS, 0); + d->if_flags |= IFF_PPROMISC; + nm_do_ioctl(d, SIOCSIFFLAGS, 0); } + /* disable GSO, TSO, RXCSUM, TXCSUM... + * TODO: set them back when done. + */ #ifdef __FreeBSD__ - /* also disable checksums etc. */ - nm_do_ioctl(me, SIOCGIFCAP, 0); - me[0].if_reqcap = me[0].if_curcap; - me[0].if_reqcap &= ~(IFCAP_HWCSUM | IFCAP_TSO | IFCAP_TOE); - nm_do_ioctl(me+0, SIOCSIFCAP, 0); + nm_do_ioctl(d, SIOCGIFCAP, 0); + d->if_reqcap = d->if_curcap; + d->if_reqcap &= ~(IFCAP_HWCSUM | IFCAP_TSO | IFCAP_TOE); + nm_do_ioctl(d, SIOCSIFCAP, 0); #endif #ifdef linux - /* disable: - * - generic-segmentation-offload - * - tcp-segmentation-offload - * - rx-checksumming - * - tx-checksumming - * XXX check how to set back the caps. - */ - nm_do_ioctl(me, SIOCETHTOOL, ETHTOOL_SGSO); - nm_do_ioctl(me, SIOCETHTOOL, ETHTOOL_STSO); - nm_do_ioctl(me, SIOCETHTOOL, ETHTOOL_SRXCSUM); - nm_do_ioctl(me, SIOCETHTOOL, ETHTOOL_STXCSUM); + nm_do_ioctl(d, SIOCETHTOOL, ETHTOOL_SGSO); + nm_do_ioctl(d, SIOCETHTOOL, ETHTOOL_STSO); + nm_do_ioctl(d, SIOCETHTOOL, ETHTOOL_SRXCSUM); + nm_do_ioctl(d, SIOCETHTOOL, ETHTOOL_STXCSUM); #endif /* linux */ } - me->nifp = NETMAP_IF(me->mem, req.nr_offset); - me->queueid = ringid; - if (ringid & NETMAP_SW_RING) { - me->begin = req.nr_rx_rings; - me->end = me->begin + 1; - me->tx = NETMAP_TXRING(me->nifp, req.nr_tx_rings); - me->rx = NETMAP_RXRING(me->nifp, req.nr_rx_rings); - } else if (ringid & NETMAP_HW_RING) { - D("XXX check multiple threads"); - me->begin = ringid & NETMAP_RING_MASK; - me->end = me->begin + 1; - me->tx = NETMAP_TXRING(me->nifp, me->begin); - me->rx = NETMAP_RXRING(me->nifp, me->begin); - } else { - me->begin = 0; - me->end = req.nr_rx_rings; // XXX max of the two - me->tx = NETMAP_TXRING(me->nifp, 0); - me->rx = NETMAP_RXRING(me->nifp, 0); - } - return (0); -error: - close(me->fd); - return -1; -} - - -int -netmap_close(struct my_ring *me) -{ - D(""); - if (me->mem) - munmap(me->mem, me->memsize); - close(me->fd); - return (0); + return d; } @@ -224,22 +168,18 @@ netmap_close(struct my_ring *me) * how many packets on this set of queues ? */ int -pkt_queued(struct my_ring *me, int tx) +pkt_queued(struct nm_desc_t *d, int tx) { u_int i, tot = 0; ND("me %p begin %d end %d", me, me->begin, me->end); - for (i = me->begin; i < me->end; i++) { - struct netmap_ring *ring = tx ? - NETMAP_TXRING(me->nifp, i) : NETMAP_RXRING(me->nifp, i); - tot += nm_ring_space(ring); + if (tx) { + for (i = d->first_tx_ring; i <= d->last_tx_ring; i++) + tot += nm_ring_space(d->tx + i); + } else { + for (i = d->first_rx_ring; i <= d->last_rx_ring; i++) + tot += nm_ring_space(d->rx + i); } - if (0 && verbose && tot && !tx) - D("ring %s %s %s has %d avail at %d", - me->ifname, tx ? "tx": "rx", - me->end >= me->nifp->ni_tx_rings ? // XXX who comes first ? - "host":"net", - tot, NETMAP_TXRING(me->nifp, me->begin)->cur); return tot; } @@ -258,7 +198,7 @@ Helper routines for multiple readers fro In particular we have a shared head+tail pointers that work together with cur and available ON RETURN FROM THE SYSCALL: - shadow->head = ring->cur + shadow->cur = ring->cur shadow->tail = ring->tail shadow->link[i] = i for all slots // mark invalid @@ -267,7 +207,7 @@ Helper routines for multiple readers fro struct nm_q_arg { u_int want; /* Input */ u_int have; /* Output, 0 on error */ - u_int head; + u_int cur; u_int tail; struct netmap_ring *ring; }; @@ -280,24 +220,26 @@ my_grab(struct nm_q_arg q) { const u_int ns = q.ring->num_slots; + // lock(ring); for (;;) { - q.head = (volatile u_int)q.ring->head; + q.cur = (volatile u_int)q.ring->head; q.have = ns + q.head - (volatile u_int)q.ring->tail; if (q.have >= ns) q.have -= ns; - if (q.have == 0) /* no space */ + if (q.have == 0) /* no space; caller may ioctl/retry */ break; if (q.want < q.have) q.have = q.want; - q.tail = q.head + q.have; + q.tail = q.cur + q.have; if (q.tail >= ns) q.tail -= ns; - if (atomic_cmpset_int(&q.ring->head, q.head, q.tail) + if (atomic_cmpset_int(&q.ring->cur, q.cur, q.tail) break; /* success */ } + // unlock(ring); D("returns %d out of %d at %d,%d", - q.have, q.want, q.head, q.tail); + q.have, q.want, q.cur, q.tail); /* the last one can clear avail ? */ return q; } @@ -306,16 +248,18 @@ my_grab(struct nm_q_arg q) int my_release(struct nm_q_arg q) { - u_int head = q.head, tail = q.tail, i; + u_int cur = q.cur, tail = q.tail, i; struct netmap_ring *r = q.ring; /* link the block to the next one. * there is no race here because the location is mine. */ - r->slot[head].ptr = tail; /* this is mine */ + r->slot[cur].ptr = tail; /* this is mine */ + r->slot[cur].flags |= NM_SLOT_PTR; // points to next block // memory barrier - if (r->head != head) - return; /* not my turn to release */ + // lock(ring); + if (r->head != cur) + goto done; for (;;) { // advance head r->head = head = r->slot[head].ptr; @@ -327,5 +271,8 @@ my_release(struct nm_q_arg q) * further down. */ // do an ioctl/poll to flush. +done: + // unlock(ring); + return; /* not my turn to release */ } #endif /* unused */ Modified: head/tools/tools/netmap/nm_util.h ============================================================================== --- head/tools/tools/netmap/nm_util.h Wed Jan 15 22:47:53 2014 (r260699) +++ head/tools/tools/netmap/nm_util.h Thu Jan 16 00:20:42 2014 (r260700) @@ -35,60 +35,31 @@ #define _GNU_SOURCE /* for CPU_SET() */ -#include -#include /* signal */ -#include -#include +#include /* fprintf */ +#include /* POLLIN */ #include /* PRI* macros */ -#include /* strcmp */ -#include /* open */ -#include /* close */ -#include /* getifaddrs */ +#include /* u_char */ -#include /* PROT_* */ -#include /* ioctl */ -#include -#include /* sockaddr.. */ #include /* ntohs */ -#include #include /* sysctl */ -#include /* timersub */ - -#include -#include /* ifreq */ +#include /* getifaddrs */ +#include /* ETHERTYPE_IP */ +#include /* IPPROTO_* */ +#include /* struct ip */ +#include /* struct udp */ -#include -#include -#include -#include +#define NETMAP_WITH_LIBS #include -#ifndef MY_PCAP /* use the system's pcap if available */ - -#ifdef NO_PCAP -#define PCAP_ERRBUF_SIZE 512 -typedef void pcap_t; -struct pcap_pkthdr; -#define pcap_inject(a,b,c) ((void)a, (void)b, (void)c, -1) -#define pcap_dispatch(a, b, c, d) (void)c -#define pcap_open_live(a, b, c, d, e) ((void)e, NULL) -#else /* !NO_PCAP */ -#include // XXX do we need it ? -#endif /* !NO_PCAP */ - -#endif // XXX hack - #include /* pthread_* */ #ifdef linux #define cpuset_t cpu_set_t -#define ifr_flagshigh ifr_flags -#define ifr_curcap ifr_flags -#define ifr_reqcap ifr_flags -#define IFF_PPROMISC IFF_PROMISC +#define ifr_flagshigh ifr_flags /* only the low 16 bits here */ +#define IFF_PPROMISC IFF_PROMISC /* IFF_PPROMISC does not exist */ #include #include @@ -107,6 +78,20 @@ struct pcap_pkthdr; #endif /* __FreeBSD__ */ #ifdef __APPLE__ + +#define cpuset_t uint64_t // XXX +static inline void CPU_ZERO(cpuset_t *p) +{ + *p = 0; +} + +static inline void CPU_SET(uint32_t i, cpuset_t *p) +{ + *p |= 1<< (i & 0x3f); +} + +#define pthread_setaffinity_np(a, b, c) ((void)a, 0) + #define ifr_flagshigh ifr_flags // XXX #define IFF_PPROMISC IFF_PROMISC #include /* LLADDR */ @@ -136,54 +121,7 @@ extern int time_second; -// XXX does it work on 32-bit machines ? -static inline void prefetch (const void *x) -{ - __asm volatile("prefetcht0 %0" :: "m" (*(const unsigned long *)x)); -} - -// XXX only for multiples of 64 bytes, non overlapped. -static inline void -pkt_copy(const void *_src, void *_dst, int l) -{ - const uint64_t *src = _src; - uint64_t *dst = _dst; -#define likely(x) __builtin_expect(!!(x), 1) -#define unlikely(x) __builtin_expect(!!(x), 0) - if (unlikely(l >= 1024)) { - bcopy(src, dst, l); - return; - } - for (; l > 0; l-=64) { - *dst++ = *src++; - *dst++ = *src++; - *dst++ = *src++; - *dst++ = *src++; - *dst++ = *src++; - *dst++ = *src++; - *dst++ = *src++; - *dst++ = *src++; - } -} - -/* - * info on a ring we handle - */ -struct my_ring { - const char *ifname; - int fd; - char *mem; /* userspace mmap address */ - u_int memsize; - u_int queueid; - u_int begin, end; /* first..last+1 rings to check */ - struct netmap_if *nifp; - struct netmap_ring *tx, *rx; /* shortcuts */ - - uint32_t if_flags; - uint32_t if_reqcap; - uint32_t if_curcap; -}; -int netmap_open(struct my_ring *me, int ringid, int promisc); -int netmap_close(struct my_ring *me); -int nm_do_ioctl(struct my_ring *me, u_long what, int subcmd); +struct nm_desc_t * netmap_open(const char *name, int ringid, int promisc); +int nm_do_ioctl(struct nm_desc_t *me, u_long what, int subcmd); +int pkt_queued(struct nm_desc_t *d, int tx); #endif /* _NM_UTIL_H */ Modified: head/tools/tools/netmap/pcap.c ============================================================================== --- head/tools/tools/netmap/pcap.c Wed Jan 15 22:47:53 2014 (r260699) +++ head/tools/tools/netmap/pcap.c Thu Jan 16 00:20:42 2014 (r260700) @@ -65,7 +65,7 @@ struct pcap_stat { #endif /* WIN32 */ }; -typedef void pcap_t; +typedef struct nm_desc_t pcap_t; typedef enum { PCAP_D_INOUT = 0, PCAP_D_IN, @@ -107,41 +107,6 @@ struct eproto { char pcap_version[] = "libnetmap version 0.3"; -/* - * Our equivalent of pcap_t - */ -struct pcap_ring { - struct my_ring me; -#if 0 - const char *ifname; - - //struct nmreq nmr; - - int fd; - char *mem; /* userspace mmap address */ - u_int memsize; - u_int queueid; - u_int begin, end; /* first..last+1 rings to check */ - struct netmap_if *nifp; - - uint32_t if_flags; - uint32_t if_reqcap; - uint32_t if_curcap; -#endif - int snaplen; - char *errbuf; - int promisc; - int to_ms; - - struct pcap_pkthdr hdr; - - - struct pcap_stat st; - - char msg[PCAP_ERRBUF_SIZE]; -}; - - /* * There is a set of functions that tcpdump expects even if probably @@ -279,7 +244,7 @@ pcap_can_set_rfmon(pcap_t *p) int pcap_set_snaplen(pcap_t *p, int snaplen) { - struct pcap_ring *me = p; + struct nm_desc_t *me = p; D("len %d", snaplen); me->snaplen = snaplen; @@ -289,7 +254,7 @@ pcap_set_snaplen(pcap_t *p, int snaplen) int pcap_snapshot(pcap_t *p) { - struct pcap_ring *me = p; + struct nm_desc_t *me = p; D("len %d", me->snaplen); return me->snaplen; @@ -310,17 +275,15 @@ pcap_lookupnet(const char *device, uint3 int pcap_set_promisc(pcap_t *p, int promisc) { - struct pcap_ring *me = p; - D("promisc %d", promisc); - if (nm_do_ioctl(&me->me, SIOCGIFFLAGS, 0)) + if (nm_do_ioctl(p, SIOCGIFFLAGS, 0)) D("SIOCGIFFLAGS failed"); if (promisc) { - me->me.if_flags |= IFF_PPROMISC; + p->if_flags |= IFF_PPROMISC; } else { - me->me.if_flags &= ~IFF_PPROMISC; + p->if_flags &= ~IFF_PPROMISC; } - if (nm_do_ioctl(&me->me, SIOCSIFFLAGS, 0)) + if (nm_do_ioctl(p, SIOCSIFFLAGS, 0)) D("SIOCSIFFLAGS failed"); return 0; } @@ -328,10 +291,8 @@ pcap_set_promisc(pcap_t *p, int promisc) int pcap_set_timeout(pcap_t *p, int to_ms) { - struct pcap_ring *me = p; - D("%d ms", to_ms); - me->to_ms = to_ms; + p->to_ms = to_ms; return 0; } @@ -384,31 +345,24 @@ struct pcap_stat; int pcap_stats(pcap_t *p, struct pcap_stat *ps) { - struct pcap_ring *me = p; - ND(""); - - *ps = me->st; + *ps = *(struct pcap_stat *)(void *)&(p->st); return 0; /* accumulate from pcap_dispatch() */ }; char * pcap_geterr(pcap_t *p) { - struct pcap_ring *me = p; - D(""); - return me->msg; + return p->msg; } pcap_t * pcap_open_live(const char *device, int snaplen, int promisc, int to_ms, char *errbuf) { - struct pcap_ring *me; + struct nm_desc_t *d; int l; - (void)snaplen; /* UNUSED */ - (void)errbuf; /* UNUSED */ if (!device) { D("missing device name"); return NULL; @@ -417,54 +371,40 @@ pcap_open_live(const char *device, int s l = strlen(device) + 1; D("request to open %s snaplen %d promisc %d timeout %dms", device, snaplen, promisc, to_ms); - me = calloc(1, sizeof(*me) + l); - if (me == NULL) { - D("failed to allocate struct for %s", device); - return NULL; - } - me->me.ifname = (char *)(me + 1); - strcpy((char *)me->me.ifname, device); - if (netmap_open(&me->me, 0, promisc)) { + d = nm_open(device, NULL, 0, 0); + if (d == NULL) { D("error opening %s", device); - free(me); return NULL; } - me->to_ms = to_ms; + d->to_ms = to_ms; + d->snaplen = snaplen; + d->errbuf = errbuf; + d->promisc = promisc; - return (pcap_t *)me; + return d; } void pcap_close(pcap_t *p) { - struct my_ring *me = p; - - D(""); - if (!me) - return; - if (me->mem) - munmap(me->mem, me->memsize); + nm_close(p); /* restore original flags ? */ - close(me->fd); - bzero(me, sizeof(*me)); - free(me); } int pcap_fileno(pcap_t *p) { - struct my_ring *me = p; - D("returns %d", me->fd); - return me->fd; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 06:26:05 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 94484B38; Thu, 16 Jan 2014 06:26:05 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 80E4A11EC; Thu, 16 Jan 2014 06:26:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0G6Q3eC047120; Thu, 16 Jan 2014 06:26:03 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0G6Q3cK047119; Thu, 16 Jan 2014 06:26:03 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201401160626.s0G6Q3cK047119@svn.freebsd.org> From: Marcel Moolenaar Date: Thu, 16 Jan 2014 06:26:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260701 - head/lib/libkvm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 06:26:05 -0000 Author: marcel Date: Thu Jan 16 06:26:03 2014 New Revision: 260701 URL: http://svnweb.freebsd.org/changeset/base/260701 Log: Handle truncation of the size returned by _kvm_kvatop(). Cores can have segments larger than INT_MAX. Modified: head/lib/libkvm/kvm_ia64.c Modified: head/lib/libkvm/kvm_ia64.c ============================================================================== --- head/lib/libkvm/kvm_ia64.c Thu Jan 16 00:20:42 2014 (r260700) +++ head/lib/libkvm/kvm_ia64.c Thu Jan 16 06:26:03 2014 (r260701) @@ -371,5 +371,5 @@ _kvm_kvatop(kvm_t *kd, u_long va, off_t size_t sz; sz = kd->vmst->kvatop(kd, va, ofs); - return (sz); + return ((sz > INT_MAX) ? INT_MAX : sz); } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 11:50:01 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 954D9727; Thu, 16 Jan 2014 11:50:01 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 81B401F77; Thu, 16 Jan 2014 11:50:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GBo1Ea069640; Thu, 16 Jan 2014 11:50:01 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GBo1c1069638; Thu, 16 Jan 2014 11:50:01 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401161150.s0GBo1c1069638@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Thu, 16 Jan 2014 11:50:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260702 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 11:50:01 -0000 Author: melifaro Date: Thu Jan 16 11:50:00 2014 New Revision: 260702 URL: http://svnweb.freebsd.org/changeset/base/260702 Log: Fix ipfw fwd for IPv4 traffic broken by r249894. Problem case: Original lookup returns route with GW set, so gw points to rte->rt_gateway. After that we're changing dst and performing lookup another time. Since fwd host is most probably directly reachable, resulting rte does not contain rt_gateway, so gw is not set. Finally, we end with packet transmitted to proper interface but wrong link-layer address. Found by: lstewart Discussed with: ae,lstewart MFC after: 2 weeks Sponsored by: Yandex LLC Modified: head/sys/netinet/ip_output.c Modified: head/sys/netinet/ip_output.c ============================================================================== --- head/sys/netinet/ip_output.c Thu Jan 16 06:26:03 2014 (r260701) +++ head/sys/netinet/ip_output.c Thu Jan 16 11:50:00 2014 (r260702) @@ -202,6 +202,13 @@ ip_output(struct mbuf *m, struct mbuf *o hlen = ip->ip_hl << 2; } + /* + * dst/gw handling: + * + * dst can be rewritten but always point to &ro->ro_dst + * gw is readonly but can be pointed either to dst OR rt_gatewy + * therefore we need restore GW if we're re-doing lookup + */ gw = dst = (struct sockaddr_in *)&ro->ro_dst; again: ia = NULL; @@ -221,6 +228,7 @@ again: RO_RTFREE(ro); ro->ro_lle = NULL; rte = NULL; + gw = dst; } if (rte == NULL && fwd_tag == NULL) { bzero(dst, sizeof(*dst)); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 12:21:21 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CE8CEF04; Thu, 16 Jan 2014 12:21:21 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BA5BF12C8; Thu, 16 Jan 2014 12:21:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GCLLQW083859; Thu, 16 Jan 2014 12:21:21 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GCLLP9083857; Thu, 16 Jan 2014 12:21:21 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161221.s0GCLLP9083857@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 12:21:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260703 - in head/cddl: contrib/opensolaris/cmd/zinject usr.bin/zinject X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 12:21:21 -0000 Author: avg Date: Thu Jan 16 12:21:21 2014 New Revision: 260703 URL: http://svnweb.freebsd.org/changeset/base/260703 Log: zinject must use ioctl(2) compatibility wrapper MFC after: 8 days Sponsored by: HybridCluster Modified: head/cddl/contrib/opensolaris/cmd/zinject/zinject.c head/cddl/usr.bin/zinject/Makefile Modified: head/cddl/contrib/opensolaris/cmd/zinject/zinject.c ============================================================================== --- head/cddl/contrib/opensolaris/cmd/zinject/zinject.c Thu Jan 16 11:50:00 2014 (r260702) +++ head/cddl/contrib/opensolaris/cmd/zinject/zinject.c Thu Jan 16 12:21:21 2014 (r260703) @@ -148,6 +148,7 @@ #include #include +#include #undef verify /* both libzfs.h and zfs_context.h want to define this */ Modified: head/cddl/usr.bin/zinject/Makefile ============================================================================== --- head/cddl/usr.bin/zinject/Makefile Thu Jan 16 11:50:00 2014 (r260702) +++ head/cddl/usr.bin/zinject/Makefile Thu Jan 16 12:21:21 2014 (r260703) @@ -16,6 +16,7 @@ CFLAGS+= -I${.CURDIR}/../../contrib/open CFLAGS+= -I${.CURDIR}/../../../sys/cddl/contrib/opensolaris/uts/common/fs/zfs CFLAGS+= -I${.CURDIR}/../../../sys/cddl/contrib/opensolaris/uts/common/sys CFLAGS+= -I${.CURDIR}/../../../sys/cddl/contrib/opensolaris/uts/common +CFLAGS+= -I${.CURDIR}/../../../sys/cddl/contrib/opensolaris/common/zfs/ CFLAGS+= -I${.CURDIR}/../../contrib/opensolaris/head CFLAGS+= -I${.CURDIR}/../../lib/libumem From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 12:22:47 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 36A6C100; Thu, 16 Jan 2014 12:22:47 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 216F712DD; Thu, 16 Jan 2014 12:22:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GCMkBY084090; Thu, 16 Jan 2014 12:22:46 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GCMkjM084087; Thu, 16 Jan 2014 12:22:46 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161222.s0GCMkjM084087@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 12:22:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260704 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 12:22:47 -0000 Author: avg Date: Thu Jan 16 12:22:46 2014 New Revision: 260704 URL: http://svnweb.freebsd.org/changeset/base/260704 Log: zfs: getnewvnode_reserve must be called outside of a zfs transaction Otherwise we could run into the following deadlock. A thread has a transaction open and assigned to a transaction group. That would prevent the transaction group from be quiesced and synced. The thread is blocked in getnewvnode_reserve waiting for a vnode to a be reclaimed. vnlru thread is blocked trying to enter ZFS VOP because a filesystem is suspended by an ongoing rollback or receive operation. In its turn the operation is waiting for the current transaction group to be synced. zfs_zget is always used outside of active transactions, but zfs_mknode is always used in a transaction context. Thus, we hoist getnewvnode_reserve from zfs_mknode to its callers. While there, assert that ZFS always calls getnewvnode while having a vnode reserved. Reported by: adrian Tested by: adrian MFC after: 17 days Sponsored by: HybridCluster Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c Thu Jan 16 12:21:21 2014 (r260703) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c Thu Jan 16 12:22:46 2014 (r260704) @@ -951,6 +951,8 @@ zfs_make_xattrdir(znode_t *zp, vattr_t * return (SET_ERROR(EDQUOT)); } + getnewvnode_reserve(1); + tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_sa_create(tx, acl_ids.z_aclp->z_acl_bytes + ZFS_SA_BASE_ATTR_SIZE); @@ -985,6 +987,8 @@ zfs_make_xattrdir(znode_t *zp, vattr_t * zfs_acl_ids_free(&acl_ids); dmu_tx_commit(tx); + getnewvnode_drop_reserve(); + *xvpp = ZTOV(xzp); return (0); Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 12:21:21 2014 (r260703) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 12:22:46 2014 (r260704) @@ -1625,6 +1625,9 @@ zfs_create(vnode_t *dvp, char *name, vat return (error); } } + + getnewvnode_reserve(1); + top: *vpp = NULL; @@ -1653,6 +1656,7 @@ top: zfs_acl_ids_free(&acl_ids); if (strcmp(name, "..") == 0) error = SET_ERROR(EISDIR); + getnewvnode_drop_reserve(); ZFS_EXIT(zfsvfs); return (error); } @@ -1721,6 +1725,7 @@ top: } zfs_acl_ids_free(&acl_ids); dmu_tx_abort(tx); + getnewvnode_drop_reserve(); ZFS_EXIT(zfsvfs); return (error); } @@ -1787,6 +1792,7 @@ top: } } out: + getnewvnode_drop_reserve(); if (dl) zfs_dirent_unlock(dl); @@ -2130,6 +2136,9 @@ zfs_mkdir(vnode_t *dvp, char *dirname, v ZFS_EXIT(zfsvfs); return (error); } + + getnewvnode_reserve(1); + /* * First make sure the new directory doesn't exist. * @@ -2143,6 +2152,7 @@ top: if (error = zfs_dirent_lock(&dl, dzp, dirname, &zp, zf, NULL, NULL)) { zfs_acl_ids_free(&acl_ids); + getnewvnode_drop_reserve(); ZFS_EXIT(zfsvfs); return (error); } @@ -2150,6 +2160,7 @@ top: if (error = zfs_zaccess(dzp, ACE_ADD_SUBDIRECTORY, 0, B_FALSE, cr)) { zfs_acl_ids_free(&acl_ids); zfs_dirent_unlock(dl); + getnewvnode_drop_reserve(); ZFS_EXIT(zfsvfs); return (error); } @@ -2157,6 +2168,7 @@ top: if (zfs_acl_ids_overquota(zfsvfs, &acl_ids)) { zfs_acl_ids_free(&acl_ids); zfs_dirent_unlock(dl); + getnewvnode_drop_reserve(); ZFS_EXIT(zfsvfs); return (SET_ERROR(EDQUOT)); } @@ -2189,6 +2201,7 @@ top: } zfs_acl_ids_free(&acl_ids); dmu_tx_abort(tx); + getnewvnode_drop_reserve(); ZFS_EXIT(zfsvfs); return (error); } @@ -2218,6 +2231,8 @@ top: dmu_tx_commit(tx); + getnewvnode_drop_reserve(); + zfs_dirent_unlock(dl); if (zfsvfs->z_os->os_sync == ZFS_SYNC_ALWAYS) @@ -4109,6 +4124,9 @@ zfs_symlink(vnode_t *dvp, vnode_t **vpp, ZFS_EXIT(zfsvfs); return (error); } + + getnewvnode_reserve(1); + top: /* * Attempt to lock directory; fail if entry already exists. @@ -4116,6 +4134,7 @@ top: error = zfs_dirent_lock(&dl, dzp, name, &zp, zflg, NULL, NULL); if (error) { zfs_acl_ids_free(&acl_ids); + getnewvnode_drop_reserve(); ZFS_EXIT(zfsvfs); return (error); } @@ -4123,6 +4142,7 @@ top: if (error = zfs_zaccess(dzp, ACE_ADD_FILE, 0, B_FALSE, cr)) { zfs_acl_ids_free(&acl_ids); zfs_dirent_unlock(dl); + getnewvnode_drop_reserve(); ZFS_EXIT(zfsvfs); return (error); } @@ -4130,6 +4150,7 @@ top: if (zfs_acl_ids_overquota(zfsvfs, &acl_ids)) { zfs_acl_ids_free(&acl_ids); zfs_dirent_unlock(dl); + getnewvnode_drop_reserve(); ZFS_EXIT(zfsvfs); return (SET_ERROR(EDQUOT)); } @@ -4157,6 +4178,7 @@ top: } zfs_acl_ids_free(&acl_ids); dmu_tx_abort(tx); + getnewvnode_drop_reserve(); ZFS_EXIT(zfsvfs); return (error); } @@ -4195,6 +4217,8 @@ top: dmu_tx_commit(tx); + getnewvnode_drop_reserve(); + zfs_dirent_unlock(dl); if (zfsvfs->z_os->os_sync == ZFS_SYNC_ALWAYS) Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jan 16 12:21:21 2014 (r260703) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jan 16 12:22:46 2014 (r260704) @@ -624,6 +624,8 @@ zfs_znode_alloc(zfsvfs_t *zfsvfs, dmu_bu zp = kmem_cache_alloc(znode_cache, KM_SLEEP); + KASSERT(td->td_vp_reserv > 0, + ("zfs_znode_alloc: getnewvnode without any vnodes reserved")); error = getnewvnode("zfs", zfsvfs->z_parent->z_vfs, &zfs_vnodeops, &vp); if (error != 0) { kmem_cache_free(znode_cache, zp); @@ -830,7 +832,6 @@ zfs_mknode(znode_t *dzp, vattr_t *vap, d } } - getnewvnode_reserve(1); ZFS_OBJ_HOLD_ENTER(zfsvfs, obj); VERIFY(0 == sa_buf_hold(zfsvfs->z_os, obj, NULL, &db)); @@ -1016,7 +1017,6 @@ zfs_mknode(znode_t *dzp, vattr_t *vap, d KASSERT(err == 0, ("insmntque() failed: error %d", err)); } ZFS_OBJ_HOLD_EXIT(zfsvfs, obj); - getnewvnode_drop_reserve(); } /* From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 12:26:54 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CA395340; Thu, 16 Jan 2014 12:26:54 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B5EAF1311; Thu, 16 Jan 2014 12:26:54 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GCQsxi084558; Thu, 16 Jan 2014 12:26:54 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GCQsKO084557; Thu, 16 Jan 2014 12:26:54 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161226.s0GCQsKO084557@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 12:26:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260705 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 12:26:54 -0000 Author: avg Date: Thu Jan 16 12:26:54 2014 New Revision: 260705 URL: http://svnweb.freebsd.org/changeset/base/260705 Log: fix a bug in ZFS mirror code for handling multiple DVAa The bug was introduced in r256956 "Improve ZFS N-way mirror read performance". The code in vdev_mirror_dva_select erroneously considers already tried DVAs for the next attempt. Thus, it is possible that a failing DVA would be retried forever. As a secondary effect, if the attempts fail with checksum error, then checksum error reports are accumulated until the original request ultimately fails or succeeds. But because retrying is going on indefinitely the cheksum reports accumulation will effectively be a memory leak. Reviewed by: gibbs MFC after: 13 days Sponsored by: HybridCluster Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c Thu Jan 16 12:22:46 2014 (r260704) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c Thu Jan 16 12:26:54 2014 (r260705) @@ -317,9 +317,13 @@ vdev_mirror_dva_select(zio_t *zio, int p { dva_t *dva = zio->io_bp->blk_dva; mirror_map_t *mm = zio->io_vsd; + mirror_child_t *mc; int c; for (c = preferred - 1; c >= 0; c--) { + mc = &mm->mm_child[c]; + if (mc->mc_tried || mc->mc_skipped) + continue; if (DVA_GET_VDEV(&dva[c]) == DVA_GET_VDEV(&dva[preferred])) preferred = c; } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 12:31:27 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E56D85B7; Thu, 16 Jan 2014 12:31:27 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D183A1390; Thu, 16 Jan 2014 12:31:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GCVRvk087725; Thu, 16 Jan 2014 12:31:27 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GCVRuO087724; Thu, 16 Jan 2014 12:31:27 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161231.s0GCVRuO087724@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 12:31:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260706 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 12:31:28 -0000 Author: avg Date: Thu Jan 16 12:31:27 2014 New Revision: 260706 URL: http://svnweb.freebsd.org/changeset/base/260706 Log: zfs_deleteextattr: name buffer from namei is needed by zfs_rename If we prematurely free the name buffer and it gets quickly recycled, then zfs_rename may see data from another lookup or even unmapped memory via cn_nameptr. MFC after: 6 days Sponsored by: HybridCluster Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 12:26:54 2014 (r260705) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 12:31:27 2014 (r260706) @@ -6774,14 +6774,16 @@ vop_deleteextattr { UIO_SYSSPACE, attrname, xvp, td); error = namei(&nd); vp = nd.ni_vp; - NDFREE(&nd, NDF_ONLY_PNBUF); if (error != 0) { ZFS_EXIT(zfsvfs); + NDFREE(&nd, NDF_ONLY_PNBUF); if (error == ENOENT) error = ENOATTR; return (error); } + error = VOP_REMOVE(nd.ni_dvp, vp, &nd.ni_cnd); + NDFREE(&nd, NDF_ONLY_PNBUF); vput(nd.ni_dvp); if (vp == nd.ni_dvp) From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 12:35:19 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 12A3F81A; Thu, 16 Jan 2014 12:35:19 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F326913C8; Thu, 16 Jan 2014 12:35:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GCZI9E088225; Thu, 16 Jan 2014 12:35:18 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GCZIL8088224; Thu, 16 Jan 2014 12:35:18 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401161235.s0GCZIL8088224@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Thu, 16 Jan 2014 12:35:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260707 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 12:35:19 -0000 Author: melifaro Date: Thu Jan 16 12:35:18 2014 New Revision: 260707 URL: http://svnweb.freebsd.org/changeset/base/260707 Log: Fix refcount leak on netinet ifa. Reviewed by: glebius MFC after: 2 weeks Sponsored by: Yandex LLC Modified: head/sys/netinet/in.c Modified: head/sys/netinet/in.c ============================================================================== --- head/sys/netinet/in.c Thu Jan 16 12:31:27 2014 (r260706) +++ head/sys/netinet/in.c Thu Jan 16 12:35:18 2014 (r260707) @@ -408,7 +408,7 @@ in_aifaddr_ioctl(u_long cmd, caddr_t dat if (ifp->if_flags & IFF_LOOPBACK) ia->ia_dstaddr = ia->ia_addr; - ifa_ref(ifa); /* if_addrhead */ + /* if_addrhead is already referenced by ifa_alloc() */ IF_ADDR_WLOCK(ifp); TAILQ_INSERT_TAIL(&ifp->if_addrhead, ifa, ifa_link); IF_ADDR_WUNLOCK(ifp); @@ -495,13 +495,13 @@ fail1: IF_ADDR_WLOCK(ifp); TAILQ_REMOVE(&ifp->if_addrhead, &ia->ia_ifa, ifa_link); IF_ADDR_WUNLOCK(ifp); - ifa_free(&ia->ia_ifa); + ifa_free(&ia->ia_ifa); /* if_addrhead */ IN_IFADDR_WLOCK(); TAILQ_REMOVE(&V_in_ifaddrhead, ia, ia_link); LIST_REMOVE(ia, ia_hash); IN_IFADDR_WUNLOCK(); - ifa_free(&ia->ia_ifa); + ifa_free(&ia->ia_ifa); /* in_ifaddrhead */ return (error); } @@ -565,7 +565,6 @@ in_difaddr_ioctl(caddr_t data, struct if TAILQ_REMOVE(&V_in_ifaddrhead, ia, ia_link); LIST_REMOVE(ia, ia_hash); IN_IFADDR_WUNLOCK(); - ifa_free(&ia->ia_ifa); /* in_ifaddrhead */ /* * in_scrubprefix() kills the interface route. @@ -601,6 +600,7 @@ in_difaddr_ioctl(caddr_t data, struct if } EVENTHANDLER_INVOKE(ifaddr_event, ifp); + ifa_free(&ia->ia_ifa); /* in_ifaddrhead */ return (0); } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 12:53:02 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 13AD3EDB; Thu, 16 Jan 2014 12:53:02 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F3C8915BB; Thu, 16 Jan 2014 12:53:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GCr1RZ095595; Thu, 16 Jan 2014 12:53:01 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GCr1h9095594; Thu, 16 Jan 2014 12:53:01 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161253.s0GCr1h9095594@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 12:53:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r260708 - vendor-sys/illumos/dist/uts/common/dtrace X-SVN-Group: vendor-sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 12:53:02 -0000 Author: avg Date: Thu Jan 16 12:53:01 2014 New Revision: 260708 URL: http://svnweb.freebsd.org/changeset/base/260708 Log: 4427 pid provider rejects probes with valid UTF-8 names illumos/illumos-gate@1444d846b126463eb1059a572ff114d51f7562e5 Modified: vendor-sys/illumos/dist/uts/common/dtrace/fasttrap.c Modified: vendor-sys/illumos/dist/uts/common/dtrace/fasttrap.c ============================================================================== --- vendor-sys/illumos/dist/uts/common/dtrace/fasttrap.c Thu Jan 16 12:35:18 2014 (r260707) +++ vendor-sys/illumos/dist/uts/common/dtrace/fasttrap.c Thu Jan 16 12:53:01 2014 (r260708) @@ -25,7 +25,7 @@ */ /* - * Copyright (c) 2011, Joyent, Inc. All rights reserved. + * Copyright (c) 2013, Joyent, Inc. All rights reserved. */ #include @@ -1936,8 +1936,7 @@ fasttrap_ioctl(dev_t dev, int cmd, intpt fasttrap_probe_spec_t *probe; uint64_t noffs; size_t size; - int ret; - char *c; + int ret, err; if (copyin(&uprobe->ftps_noffs, &noffs, sizeof (uprobe->ftps_noffs))) @@ -1967,18 +1966,16 @@ fasttrap_ioctl(dev_t dev, int cmd, intpt * Verify that the function and module strings contain no * funny characters. */ - for (c = &probe->ftps_func[0]; *c != '\0'; c++) { - if (*c < 0x20 || 0x7f <= *c) { - ret = EINVAL; - goto err; - } + if (u8_validate(probe->ftps_func, strlen(probe->ftps_func), + NULL, U8_VALIDATE_ENTIRE, &err) < 0) { + ret = EINVAL; + goto err; } - for (c = &probe->ftps_mod[0]; *c != '\0'; c++) { - if (*c < 0x20 || 0x7f <= *c) { - ret = EINVAL; - goto err; - } + if (u8_validate(probe->ftps_mod, strlen(probe->ftps_mod), + NULL, U8_VALIDATE_ENTIRE, &err) < 0) { + ret = EINVAL; + goto err; } if (!PRIV_POLICY_CHOICE(cr, PRIV_ALL, B_FALSE)) { From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 12:58:04 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7ADCB128; Thu, 16 Jan 2014 12:58:04 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5AF9615E5; Thu, 16 Jan 2014 12:58:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GCw4Tu096288; Thu, 16 Jan 2014 12:58:04 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GCw4eM096287; Thu, 16 Jan 2014 12:58:04 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201401161258.s0GCw4eM096287@svn.freebsd.org> From: Gleb Smirnoff Date: Thu, 16 Jan 2014 12:58:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260709 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 12:58:04 -0000 Author: glebius Date: Thu Jan 16 12:58:03 2014 New Revision: 260709 URL: http://svnweb.freebsd.org/changeset/base/260709 Log: Cleanup comments and whitespace. No functional changes. Modified: head/sys/netinet/ip_output.c Modified: head/sys/netinet/ip_output.c ============================================================================== --- head/sys/netinet/ip_output.c Thu Jan 16 12:53:01 2014 (r260708) +++ head/sys/netinet/ip_output.c Thu Jan 16 12:58:03 2014 (r260709) @@ -123,9 +123,6 @@ ip_output(struct mbuf *m, struct mbuf *o struct mbuf *m0; int hlen = sizeof (struct ip); int mtu; -#if 0 - int n; /* scratchpad */ -#endif int error = 0; struct sockaddr_in *dst; const struct sockaddr_in *gw; @@ -158,7 +155,7 @@ ip_output(struct mbuf *m, struct mbuf *o #ifdef FLOWTABLE if (ro->ro_rt == NULL) { struct flentry *fle; - + /* * The flow table returns route entries valid for up to 30 * seconds; we rely on the remainder of ip_output() taking no @@ -205,19 +202,18 @@ ip_output(struct mbuf *m, struct mbuf *o /* * dst/gw handling: * - * dst can be rewritten but always point to &ro->ro_dst - * gw is readonly but can be pointed either to dst OR rt_gatewy - * therefore we need restore GW if we're re-doing lookup + * dst can be rewritten but always points to &ro->ro_dst. + * gw is readonly but can point either to dst OR rt_gateway, + * therefore we need restore gw if we're redoing lookup. */ gw = dst = (struct sockaddr_in *)&ro->ro_dst; again: ia = NULL; /* - * If there is a cached route, - * check that it is to the same destination - * and is still up. If not, free it and try again. - * The address family should also be checked in case of sharing the - * cache with IPv6. + * If there is a cached route, check that it is to the same + * destination and is still up. If not, free it and try again. + * The address family should also be checked in case of sharing + * the cache with IPv6. */ rte = ro->ro_rt; if (rte && ((rte->rt_flags & RTF_UP) == 0 || @@ -770,10 +766,10 @@ ip_fragment(struct ip *ip, struct mbuf * } #endif if (len > PAGE_SIZE) { - /* - * Fragment large datagrams such that each segment - * contains a multiple of PAGE_SIZE amount of data, - * plus headers. This enables a receiver to perform + /* + * Fragment large datagrams such that each segment + * contains a multiple of PAGE_SIZE amount of data, + * plus headers. This enables a receiver to perform * page-flipping zero-copy optimizations. * * XXX When does this help given that sender and receiver @@ -787,7 +783,7 @@ ip_fragment(struct ip *ip, struct mbuf * off += m->m_len; /* - * firstlen (off - hlen) must be aligned on an + * firstlen (off - hlen) must be aligned on an * 8-byte boundary */ if (off < hlen) @@ -1172,7 +1168,7 @@ ip_ctloutput(struct socket *so, struct s case IP_OPTIONS: case IP_RETOPTS: if (inp->inp_options) - error = sooptcopyout(sopt, + error = sooptcopyout(sopt, mtod(inp->inp_options, char *), inp->inp_options->m_len); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 13:12:07 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2653ED2A; Thu, 16 Jan 2014 13:12:07 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 061831A5D; Thu, 16 Jan 2014 13:12:07 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GDC67N004179; Thu, 16 Jan 2014 13:12:06 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GDC6pM004177; Thu, 16 Jan 2014 13:12:06 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161312.s0GDC6pM004177@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 13:12:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r260710 - vendor/illumos/dist/lib/libnvpair X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 13:12:07 -0000 Author: avg Date: Thu Jan 16 13:12:06 2014 New Revision: 260710 URL: http://svnweb.freebsd.org/changeset/base/260710 Log: 4304 fmdump shall emit JSON illumos/illumos-gate@2db6d663182655cb393dc2c15668bc9293364594 NB: this adds JSON output support to libnvpair Added: vendor/illumos/dist/lib/libnvpair/nvpair_json.c (contents, props changed) Modified: vendor/illumos/dist/lib/libnvpair/libnvpair.h Modified: vendor/illumos/dist/lib/libnvpair/libnvpair.h ============================================================================== --- vendor/illumos/dist/lib/libnvpair/libnvpair.h Thu Jan 16 12:58:03 2014 (r260709) +++ vendor/illumos/dist/lib/libnvpair/libnvpair.h Thu Jan 16 13:12:06 2014 (r260710) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, Joyent, Inc. All rights reserved. */ #ifndef _LIBNVPAIR_H @@ -46,6 +47,7 @@ extern int nvpair_value_match_regex(nvpa char **); extern void nvlist_print(FILE *, nvlist_t *); +extern int nvlist_print_json(FILE *, nvlist_t *); extern void dump_nvlist(nvlist_t *, int); /* Added: vendor/illumos/dist/lib/libnvpair/nvpair_json.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/lib/libnvpair/nvpair_json.c Thu Jan 16 13:12:06 2014 (r260710) @@ -0,0 +1,401 @@ +/* + * 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. + */ +/* + * Copyright (c) 2013, Joyent, Inc. All rights reserved. + */ + +#include +#include +#include +#include +#include + +#include "libnvpair.h" + +#define FPRINTF(fp, ...) \ + if (fprintf(fp, __VA_ARGS__) < 0) \ + return (-1) \ + +/* + * When formatting a string for JSON output we must escape certain characters, + * as described in RFC4627. This applies to both member names and + * DATA_TYPE_STRING values. + * + * This function will only operate correctly if the following conditions are + * met: + * + * 1. The input String is encoded in the current locale. + * + * 2. The current locale includes the Basic Multilingual Plane (plane 0) + * as defined in the Unicode standard. + * + * The output will be entirely 7-bit ASCII (as a subset of UTF-8) with all + * representable Unicode characters included in their escaped numeric form. + */ +static int +nvlist_print_json_string(FILE *fp, const char *input) +{ + mbstate_t mbr; + wchar_t c; + size_t sz; + + bzero(&mbr, sizeof (mbr)); + + FPRINTF(fp, "\""); + while ((sz = mbrtowc(&c, input, MB_CUR_MAX, &mbr)) > 0) { + switch (c) { + case '"': + FPRINTF(fp, "\\\""); + break; + case '\n': + FPRINTF(fp, "\\n"); + break; + case '\r': + FPRINTF(fp, "\\r"); + break; + case '\\': + FPRINTF(fp, "\\\\"); + break; + case '\f': + FPRINTF(fp, "\\f"); + break; + case '\t': + FPRINTF(fp, "\\t"); + break; + case '\b': + FPRINTF(fp, "\\b"); + break; + default: + if ((c >= 0x00 && c <= 0x1f) || + (c > 0x7f && c <= 0xffff)) { + /* + * Render both Control Characters and Unicode + * characters in the Basic Multilingual Plane + * as JSON-escaped multibyte characters. + */ + FPRINTF(fp, "\\u%04x", (int)(0xffff & c)); + } else if (c >= 0x20 && c <= 0x7f) { + /* + * Render other 7-bit ASCII characters directly + * and drop other, unrepresentable characters. + */ + FPRINTF(fp, "%c", (int)(0xff & c)); + } + break; + } + input += sz; + } + + if (sz == (size_t)-1 || sz == (size_t)-2) { + /* + * We last read an invalid multibyte character sequence, + * so return an error. + */ + return (-1); + } + + FPRINTF(fp, "\""); + return (0); +} + +/* + * Dump a JSON-formatted representation of an nvlist to the provided FILE *. + * This routine does not output any new-lines or additional whitespace other + * than that contained in strings, nor does it call fflush(3C). + */ +int +nvlist_print_json(FILE *fp, nvlist_t *nvl) +{ + nvpair_t *curr; + boolean_t first = B_TRUE; + + FPRINTF(fp, "{"); + + for (curr = nvlist_next_nvpair(nvl, NULL); curr; + curr = nvlist_next_nvpair(nvl, curr)) { + data_type_t type = nvpair_type(curr); + + if (!first) + FPRINTF(fp, ","); + else + first = B_FALSE; + + if (nvlist_print_json_string(fp, nvpair_name(curr)) == -1) + return (-1); + FPRINTF(fp, ":"); + + switch (type) { + case DATA_TYPE_STRING: { + char *string = fnvpair_value_string(curr); + if (nvlist_print_json_string(fp, string) == -1) + return (-1); + break; + } + + case DATA_TYPE_BOOLEAN: { + FPRINTF(fp, "true"); + break; + } + + case DATA_TYPE_BOOLEAN_VALUE: { + FPRINTF(fp, "%s", fnvpair_value_boolean_value(curr) == + B_TRUE ? "true" : "false"); + break; + } + + case DATA_TYPE_BYTE: { + FPRINTF(fp, "%hhu", fnvpair_value_byte(curr)); + break; + } + + case DATA_TYPE_INT8: { + FPRINTF(fp, "%hhd", fnvpair_value_int8(curr)); + break; + } + + case DATA_TYPE_UINT8: { + FPRINTF(fp, "%hhu", fnvpair_value_uint8_t(curr)); + break; + } + + case DATA_TYPE_INT16: { + FPRINTF(fp, "%hd", fnvpair_value_int16(curr)); + break; + } + + case DATA_TYPE_UINT16: { + FPRINTF(fp, "%hu", fnvpair_value_uint16(curr)); + break; + } + + case DATA_TYPE_INT32: { + FPRINTF(fp, "%d", fnvpair_value_int32(curr)); + break; + } + + case DATA_TYPE_UINT32: { + FPRINTF(fp, "%u", fnvpair_value_uint32(curr)); + break; + } + + case DATA_TYPE_INT64: { + FPRINTF(fp, "%lld", + (long long)fnvpair_value_int64(curr)); + break; + } + + case DATA_TYPE_UINT64: { + FPRINTF(fp, "%llu", + (unsigned long long)fnvpair_value_uint64(curr)); + break; + } + + case DATA_TYPE_HRTIME: { + hrtime_t val; + VERIFY0(nvpair_value_hrtime(curr, &val)); + FPRINTF(fp, "%llu", (unsigned long long)val); + break; + } + + case DATA_TYPE_DOUBLE: { + double val; + VERIFY0(nvpair_value_double(curr, &val)); + FPRINTF(fp, "%f", val); + break; + } + + case DATA_TYPE_NVLIST: { + if (nvlist_print_json(fp, + fnvpair_value_nvlist(curr)) == -1) + return (-1); + break; + } + + case DATA_TYPE_STRING_ARRAY: { + char **val; + uint_t valsz, i; + VERIFY0(nvpair_value_string_array(curr, &val, &valsz)); + FPRINTF(fp, "["); + for (i = 0; i < valsz; i++) { + if (i > 0) + FPRINTF(fp, ","); + if (nvlist_print_json_string(fp, val[i]) == -1) + return (-1); + } + FPRINTF(fp, "]"); + break; + } + + case DATA_TYPE_NVLIST_ARRAY: { + nvlist_t **val; + uint_t valsz, i; + VERIFY0(nvpair_value_nvlist_array(curr, &val, &valsz)); + FPRINTF(fp, "["); + for (i = 0; i < valsz; i++) { + if (i > 0) + FPRINTF(fp, ","); + if (nvlist_print_json(fp, val[i]) == -1) + return (-1); + } + FPRINTF(fp, "]"); + break; + } + + case DATA_TYPE_BOOLEAN_ARRAY: { + boolean_t *val; + uint_t valsz, i; + VERIFY0(nvpair_value_boolean_array(curr, &val, &valsz)); + FPRINTF(fp, "["); + for (i = 0; i < valsz; i++) { + if (i > 0) + FPRINTF(fp, ","); + FPRINTF(fp, val[i] == B_TRUE ? + "true" : "false"); + } + FPRINTF(fp, "]"); + break; + } + + case DATA_TYPE_BYTE_ARRAY: { + uchar_t *val; + uint_t valsz, i; + VERIFY0(nvpair_value_byte_array(curr, &val, &valsz)); + FPRINTF(fp, "["); + for (i = 0; i < valsz; i++) { + if (i > 0) + FPRINTF(fp, ","); + FPRINTF(fp, "%hhu", val[i]); + } + FPRINTF(fp, "]"); + break; + } + + case DATA_TYPE_UINT8_ARRAY: { + uint8_t *val; + uint_t valsz, i; + VERIFY0(nvpair_value_uint8_array(curr, &val, &valsz)); + FPRINTF(fp, "["); + for (i = 0; i < valsz; i++) { + if (i > 0) + FPRINTF(fp, ","); + FPRINTF(fp, "%hhu", val[i]); + } + FPRINTF(fp, "]"); + break; + } + + case DATA_TYPE_INT8_ARRAY: { + int8_t *val; + uint_t valsz, i; + VERIFY0(nvpair_value_int8_array(curr, &val, &valsz)); + FPRINTF(fp, "["); + for (i = 0; i < valsz; i++) { + if (i > 0) + FPRINTF(fp, ","); + FPRINTF(fp, "%hd", val[i]); + } + FPRINTF(fp, "]"); + break; + } + + case DATA_TYPE_UINT16_ARRAY: { + uint16_t *val; + uint_t valsz, i; + VERIFY0(nvpair_value_uint16_array(curr, &val, &valsz)); + FPRINTF(fp, "["); + for (i = 0; i < valsz; i++) { + if (i > 0) + FPRINTF(fp, ","); + FPRINTF(fp, "%hu", val[i]); + } + FPRINTF(fp, "]"); + break; + } + + case DATA_TYPE_INT16_ARRAY: { + int16_t *val; + uint_t valsz, i; + VERIFY0(nvpair_value_int16_array(curr, &val, &valsz)); + FPRINTF(fp, "["); + for (i = 0; i < valsz; i++) { + if (i > 0) + FPRINTF(fp, ","); + FPRINTF(fp, "%hhd", val[i]); + } + FPRINTF(fp, "]"); + break; + } + + case DATA_TYPE_UINT32_ARRAY: { + uint32_t *val; + uint_t valsz, i; + VERIFY0(nvpair_value_uint32_array(curr, &val, &valsz)); + FPRINTF(fp, "["); + for (i = 0; i < valsz; i++) { + if (i > 0) + FPRINTF(fp, ","); + FPRINTF(fp, "%u", val[i]); + } + FPRINTF(fp, "]"); + break; + } + + case DATA_TYPE_INT32_ARRAY: { + int32_t *val; + uint_t valsz, i; + VERIFY0(nvpair_value_int32_array(curr, &val, &valsz)); + FPRINTF(fp, "["); + for (i = 0; i < valsz; i++) { + if (i > 0) + FPRINTF(fp, ","); + FPRINTF(fp, "%d", val[i]); + } + FPRINTF(fp, "]"); + break; + } + + case DATA_TYPE_UINT64_ARRAY: { + uint64_t *val; + uint_t valsz, i; + VERIFY0(nvpair_value_uint64_array(curr, &val, &valsz)); + FPRINTF(fp, "["); + for (i = 0; i < valsz; i++) { + if (i > 0) + FPRINTF(fp, ","); + FPRINTF(fp, "%llu", + (unsigned long long)val[i]); + } + FPRINTF(fp, "]"); + break; + } + + case DATA_TYPE_INT64_ARRAY: { + int64_t *val; + uint_t valsz, i; + VERIFY0(nvpair_value_int64_array(curr, &val, &valsz)); + FPRINTF(fp, "["); + for (i = 0; i < valsz; i++) { + if (i > 0) + FPRINTF(fp, ","); + FPRINTF(fp, "%lld", (long long)val[i]); + } + FPRINTF(fp, "]"); + break; + } + + case DATA_TYPE_UNKNOWN: + return (-1); + } + } + + FPRINTF(fp, "}"); + return (0); +} From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 13:20:21 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6D4F7FD4; Thu, 16 Jan 2014 13:20:21 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 59D0F1ABE; Thu, 16 Jan 2014 13:20:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GDKLAi007255; Thu, 16 Jan 2014 13:20:21 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GDKLKZ007254; Thu, 16 Jan 2014 13:20:21 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161320.s0GDKLKZ007254@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 13:20:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260711 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 13:20:21 -0000 Author: avg Date: Thu Jan 16 13:20:20 2014 New Revision: 260711 URL: http://svnweb.freebsd.org/changeset/base/260711 Log: Revert r260705: wrong patch committed by accident An earlier, less efficient version was committed by accident. Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c Thu Jan 16 13:12:06 2014 (r260710) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c Thu Jan 16 13:20:20 2014 (r260711) @@ -317,13 +317,9 @@ vdev_mirror_dva_select(zio_t *zio, int p { dva_t *dva = zio->io_bp->blk_dva; mirror_map_t *mm = zio->io_vsd; - mirror_child_t *mc; int c; for (c = preferred - 1; c >= 0; c--) { - mc = &mm->mm_child[c]; - if (mc->mc_tried || mc->mc_skipped) - continue; if (DVA_GET_VDEV(&dva[c]) == DVA_GET_VDEV(&dva[preferred])) preferred = c; } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 13:21:32 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AF1921B6; Thu, 16 Jan 2014 13:21:32 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9A06D1B18; Thu, 16 Jan 2014 13:21:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GDLWkp008066; Thu, 16 Jan 2014 13:21:32 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GDLW1T008065; Thu, 16 Jan 2014 13:21:32 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201401161321.s0GDLW1T008065@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Thu, 16 Jan 2014 13:21:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260712 - stable/10/sys/netinet6 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 13:21:32 -0000 Author: ae Date: Thu Jan 16 13:21:32 2014 New Revision: 260712 URL: http://svnweb.freebsd.org/changeset/base/260712 Log: MFC r260481: Add MRT6_DLOG() macro for debugging. Reduce number of MRT6DEBUG ifdefs and fix some broken format strings. Modified: stable/10/sys/netinet6/ip6_mroute.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet6/ip6_mroute.c ============================================================================== --- stable/10/sys/netinet6/ip6_mroute.c Thu Jan 16 13:20:20 2014 (r260711) +++ stable/10/sys/netinet6/ip6_mroute.c Thu Jan 16 13:21:32 2014 (r260712) @@ -221,6 +221,14 @@ static VNET_DEFINE(u_int, mrt6debug) = 0 #define DEBUG_XMIT 0x10 #define DEBUG_REG 0x20 #define DEBUG_PIM 0x40 +#define DEBUG_ERR 0x80 +#define DEBUG_ANY 0x7f +#define MRT6_DLOG(m, fmt, ...) \ + if (V_mrt6debug & (m)) \ + log(((m) & DEBUG_ERR) ? LOG_ERR: LOG_DEBUG, \ + "%s: " fmt "\n", __func__, ##__VA_ARGS__) +#else +#define MRT6_DLOG(m, fmt, ...) #endif static void expire_upcalls(void *); @@ -526,12 +534,8 @@ static int ip6_mrouter_init(struct socket *so, int v, int cmd) { -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, - "ip6_mrouter_init: so_type = %d, pr_protocol = %d\n", - so->so_type, so->so_proto->pr_protocol); -#endif + MRT6_DLOG(DEBUG_ANY, "so_type = %d, pr_protocol = %d", + so->so_type, so->so_proto->pr_protocol); if (so->so_type != SOCK_RAW || so->so_proto->pr_protocol != IPPROTO_ICMPV6) @@ -560,11 +564,7 @@ ip6_mrouter_init(struct socket *so, int expire_upcalls, NULL); MROUTER6_UNLOCK(); - -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, "ip6_mrouter_init\n"); -#endif + MRT6_DLOG(DEBUG_ANY, "finished"); return (0); } @@ -642,11 +642,7 @@ X_ip6_mrouter_done(void) V_ip6_mrouter_ver = 0; MROUTER6_UNLOCK(); - -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, "ip6_mrouter_done\n"); -#endif + MRT6_DLOG(DEBUG_ANY, "finished"); return (0); } @@ -727,14 +723,8 @@ add_m6if(struct mif6ctl *mifcp) nummifs = mifcp->mif6c_mifi + 1; MIF6_UNLOCK(); - -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, - "add_mif #%d, phyint %s\n", - mifcp->mif6c_mifi, - ifp->if_xname); -#endif + MRT6_DLOG(DEBUG_ANY, "mif #%d, phyint %s", mifcp->mif6c_mifi, + if_name(ifp)); return (0); } @@ -777,11 +767,7 @@ del_m6if_locked(mifi_t *mifip) if (mif6table[mifi - 1].m6_ifp) break; nummifs = mifi; - -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, "del_m6if %d, nummifs %d\n", *mifip, nummifs); -#endif + MRT6_DLOG(DEBUG_ANY, "mif %d, nummifs %d", *mifip, nummifs); return (0); } @@ -817,15 +803,10 @@ add_m6fc(struct mf6cctl *mfccp) /* If an entry already exists, just update the fields */ if (rt) { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_MFC) { - log(LOG_DEBUG, - "add_m6fc no upcall h %d o %s g %s p %x\n", - ip6_sprintf(ip6bufo, &mfccp->mf6cc_origin.sin6_addr), - ip6_sprintf(ip6bufg, &mfccp->mf6cc_mcastgrp.sin6_addr), - mfccp->mf6cc_parent); - } -#endif + MRT6_DLOG(DEBUG_MFC, "no upcall o %s g %s p %x", + ip6_sprintf(ip6bufo, &mfccp->mf6cc_origin.sin6_addr), + ip6_sprintf(ip6bufg, &mfccp->mf6cc_mcastgrp.sin6_addr), + mfccp->mf6cc_parent); rt->mf6c_parent = mfccp->mf6cc_parent; rt->mf6c_ifset = mfccp->mf6cc_ifset; @@ -856,16 +837,12 @@ add_m6fc(struct mf6cctl *mfccp) &mfccp->mf6cc_mcastgrp.sin6_addr), mfccp->mf6cc_parent, rt->mf6c_stall); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_MFC) - log(LOG_DEBUG, - "add_m6fc o %s g %s p %x dbg %x\n", - ip6_sprintf(ip6bufo, - &mfccp->mf6cc_origin.sin6_addr), - ip6_sprintf(ip6bufg, - &mfccp->mf6cc_mcastgrp.sin6_addr), - mfccp->mf6cc_parent, rt->mf6c_stall); -#endif + MRT6_DLOG(DEBUG_MFC, "o %s g %s p %x dbg %p", + ip6_sprintf(ip6bufo, + &mfccp->mf6cc_origin.sin6_addr), + ip6_sprintf(ip6bufg, + &mfccp->mf6cc_mcastgrp.sin6_addr), + mfccp->mf6cc_parent, rt->mf6c_stall); rt->mf6c_origin = mfccp->mf6cc_origin; rt->mf6c_mcastgrp = mfccp->mf6cc_mcastgrp; @@ -898,15 +875,10 @@ add_m6fc(struct mf6cctl *mfccp) * It is possible that an entry is being inserted without an upcall */ if (nstl == 0) { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_MFC) - log(LOG_DEBUG, - "add_mfc no upcall h %d o %s g %s p %x\n", - hash, - ip6_sprintf(ip6bufo, &mfccp->mf6cc_origin.sin6_addr), - ip6_sprintf(ip6bufg, &mfccp->mf6cc_mcastgrp.sin6_addr), - mfccp->mf6cc_parent); -#endif + MRT6_DLOG(DEBUG_MFC, "no upcall h %lu o %s g %s p %x", hash, + ip6_sprintf(ip6bufo, &mfccp->mf6cc_origin.sin6_addr), + ip6_sprintf(ip6bufg, &mfccp->mf6cc_mcastgrp.sin6_addr), + mfccp->mf6cc_parent); for (rt = mf6ctable[hash]; rt; rt = rt->mf6c_next) { @@ -992,6 +964,9 @@ collate(struct timeval *t) static int del_m6fc(struct mf6cctl *mfccp) { +#ifdef MRT6DEBUG + char ip6bufo[INET6_ADDRSTRLEN], ip6bufg[INET6_ADDRSTRLEN]; +#endif struct sockaddr_in6 origin; struct sockaddr_in6 mcastgrp; struct mf6c *rt; @@ -1002,14 +977,9 @@ del_m6fc(struct mf6cctl *mfccp) mcastgrp = mfccp->mf6cc_mcastgrp; hash = MF6CHASH(origin.sin6_addr, mcastgrp.sin6_addr); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_MFC) { - char ip6bufo[INET6_ADDRSTRLEN], ip6bufg[INET6_ADDRSTRLEN]; - log(LOG_DEBUG,"del_m6fc orig %s mcastgrp %s\n", - ip6_sprintf(ip6bufo, &origin.sin6_addr), - ip6_sprintf(ip6bufg, &mcastgrp.sin6_addr)); - } -#endif + MRT6_DLOG(DEBUG_MFC, "orig %s mcastgrp %s", + ip6_sprintf(ip6bufo, &origin.sin6_addr), + ip6_sprintf(ip6bufg, &mcastgrp.sin6_addr)); MFC6_LOCK(); @@ -1080,13 +1050,9 @@ X_ip6_mforward(struct ip6_hdr *ip6, stru mifi_t mifi; char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_FORWARD) - log(LOG_DEBUG, "ip6_mforward: src %s, dst %s, ifindex %d\n", - ip6_sprintf(ip6bufs, &ip6->ip6_src), - ip6_sprintf(ip6bufd, &ip6->ip6_dst), - ifp->if_index); -#endif + MRT6_DLOG(DEBUG_FORWARD, "src %s, dst %s, ifindex %d", + ip6_sprintf(ip6bufs, &ip6->ip6_src), + ip6_sprintf(ip6bufd, &ip6->ip6_dst), ifp->if_index); /* * Don't forward a packet with Hop limit of zero or one, @@ -1148,12 +1114,9 @@ X_ip6_mforward(struct ip6_hdr *ip6, stru #endif /* UPCALL_TIMING */ MRT6STAT_INC(mrt6s_no_route); -#ifdef MRT6DEBUG - if (V_mrt6debug & (DEBUG_FORWARD | DEBUG_MFC)) - log(LOG_DEBUG, "ip6_mforward: no rte s %s g %s\n", - ip6_sprintf(ip6bufs, &ip6->ip6_src), - ip6_sprintf(ip6bufd, &ip6->ip6_dst)); -#endif + MRT6_DLOG(DEBUG_FORWARD | DEBUG_MFC, "no rte s %s g %s", + ip6_sprintf(ip6bufs, &ip6->ip6_src), + ip6_sprintf(ip6bufd, &ip6->ip6_dst)); /* * Allocate mbufs early so that we don't do extra work if we @@ -1249,11 +1212,8 @@ X_ip6_mforward(struct ip6_hdr *ip6, stru return (EINVAL); } -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_FORWARD) - log(LOG_DEBUG, - "getting the iif info in the kernel\n"); -#endif + MRT6_DLOG(DEBUG_FORWARD, + "getting the iif info in the kernel"); for (mifp = mif6table, mifi = 0; mifi < nummifs && mifp->m6_ifp != ifp; @@ -1339,6 +1299,9 @@ X_ip6_mforward(struct ip6_hdr *ip6, stru static void expire_upcalls(void *unused) { +#ifdef MRT6DEBUG + char ip6bufo[INET6_ADDRSTRLEN], ip6bufg[INET6_ADDRSTRLEN]; +#endif struct rtdetq *rte; struct mf6c *mfc, **nptr; u_long i; @@ -1358,15 +1321,9 @@ expire_upcalls(void *unused) if (rte != NULL && mfc->mf6c_expire != 0 && --mfc->mf6c_expire == 0) { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_EXPIRE) { - char ip6bufo[INET6_ADDRSTRLEN]; - char ip6bufg[INET6_ADDRSTRLEN]; - log(LOG_DEBUG, "expire_upcalls: expiring (%s %s)\n", - ip6_sprintf(ip6bufo, &mfc->mf6c_origin.sin6_addr), - ip6_sprintf(ip6bufg, &mfc->mf6c_mcastgrp.sin6_addr)); - } -#endif + MRT6_DLOG(DEBUG_EXPIRE, "expiring (%s %s)", + ip6_sprintf(ip6bufo, &mfc->mf6c_origin.sin6_addr), + ip6_sprintf(ip6bufg, &mfc->mf6c_mcastgrp.sin6_addr)); /* * drop all the packets * free the mbuf with the pkt, if, timing info @@ -1426,13 +1383,9 @@ ip6_mdq(struct mbuf *m, struct ifnet *if mifi = rt->mf6c_parent; if ((mifi >= nummifs) || (mif6table[mifi].m6_ifp != ifp)) { /* came in the wrong interface */ -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_FORWARD) - log(LOG_DEBUG, - "wrong if: ifid %d mifi %d mififid %x\n", - ifp->if_index, mifi, - mif6table[mifi].m6_ifp->if_index); -#endif + MRT6_DLOG(DEBUG_FORWARD, + "wrong if: ifid %d mifi %d mififid %x", ifp->if_index, + mifi, mif6table[mifi].m6_ifp->if_index); MRT6STAT_INC(mrt6s_wrong_if); rt->mf6c_wrong_if++; /* @@ -1509,10 +1462,8 @@ ip6_mdq(struct mbuf *m, struct ifnet *if MRT6STAT_INC(mrt6s_upcalls); if (socket_send(V_ip6_mrouter, mm, &sin6) < 0) { -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_WARNING, "mdq, ip6_mrouter socket queue full\n"); -#endif + MRT6_DLOG(DEBUG_ANY, + "ip6_mrouter socket queue full"); MRT6STAT_INC(mrt6s_upq_sockfull); return (ENOBUFS); } /* if socket Q full */ @@ -1576,6 +1527,9 @@ ip6_mdq(struct mbuf *m, struct ifnet *if static void phyint_send(struct ip6_hdr *ip6, struct mif6 *mifp, struct mbuf *m) { +#ifdef MRT6DEBUG + char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; +#endif struct mbuf *mb_copy; struct ifnet *ifp = mifp->m6_ifp; int error = 0; @@ -1613,11 +1567,8 @@ phyint_send(struct ip6_hdr *ip6, struct error = ip6_output(mb_copy, NULL, NULL, IPV6_FORWARDING, &im6o, NULL, NULL); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_XMIT) - log(LOG_DEBUG, "phyint_send on mif %d err %d\n", - mifp - mif6table, error); -#endif + MRT6_DLOG(DEBUG_XMIT, "mif %u err %d", + (uint16_t)(mifp - mif6table), error); return; } @@ -1656,11 +1607,8 @@ phyint_send(struct ip6_hdr *ip6, struct m_clrprotoflags(m); /* Avoid confusing lower layers. */ error = (*ifp->if_output)(ifp, mb_copy, (struct sockaddr *)&dst6, NULL); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_XMIT) - log(LOG_DEBUG, "phyint_send on mif %d err %d\n", - mifp - mif6table, error); -#endif + MRT6_DLOG(DEBUG_XMIT, "mif %u err %d", + (uint16_t)(mifp - mif6table), error); } else { /* * pMTU discovery is intentionally disabled by default, since @@ -1670,19 +1618,11 @@ phyint_send(struct ip6_hdr *ip6, struct if (V_ip6_mcast_pmtu) icmp6_error(mb_copy, ICMP6_PACKET_TOO_BIG, 0, linkmtu); else { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_XMIT) { - char ip6bufs[INET6_ADDRSTRLEN]; - char ip6bufd[INET6_ADDRSTRLEN]; - log(LOG_DEBUG, - "phyint_send: packet too big on %s o %s " - "g %s size %d(discarded)\n", - if_name(ifp), - ip6_sprintf(ip6bufs, &ip6->ip6_src), - ip6_sprintf(ip6bufd, &ip6->ip6_dst), - mb_copy->m_pkthdr.len); - } -#endif /* MRT6DEBUG */ + MRT6_DLOG(DEBUG_XMIT, " packet too big on %s o %s " + "g %s size %d (discarded)", if_name(ifp), + ip6_sprintf(ip6bufs, &ip6->ip6_src), + ip6_sprintf(ip6bufd, &ip6->ip6_dst), + mb_copy->m_pkthdr.len); m_freem(mb_copy); /* simply discard the packet */ } } @@ -1691,19 +1631,17 @@ phyint_send(struct ip6_hdr *ip6, struct static int register_send(struct ip6_hdr *ip6, struct mif6 *mif, struct mbuf *m) { +#ifdef MRT6DEBUG + char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; +#endif struct mbuf *mm; int i, len = m->m_pkthdr.len; static struct sockaddr_in6 sin6 = { sizeof(sin6), AF_INET6 }; struct mrt6msg *im6; -#ifdef MRT6DEBUG - if (V_mrt6debug) { - char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; - log(LOG_DEBUG, "** IPv6 register_send **\n src %s dst %s\n", - ip6_sprintf(ip6bufs, &ip6->ip6_src), - ip6_sprintf(ip6bufd, &ip6->ip6_dst)); - } -#endif + MRT6_DLOG(DEBUG_ANY, "src %s dst %s", + ip6_sprintf(ip6bufs, &ip6->ip6_src), + ip6_sprintf(ip6bufd, &ip6->ip6_dst)); PIM6STAT_INC(pim6s_snd_registers); /* Make a copy of the packet to send to the user level process. */ @@ -1741,11 +1679,7 @@ register_send(struct ip6_hdr *ip6, struc MRT6STAT_INC(mrt6s_upcalls); if (socket_send(V_ip6_mrouter, mm, &sin6) < 0) { -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_WARNING, - "register_send: ip6_mrouter socket queue full\n"); -#endif + MRT6_DLOG(DEBUG_ANY, "ip6_mrouter socket queue full"); MRT6STAT_INC(mrt6s_upq_sockfull); return (ENOBUFS); } @@ -1797,10 +1731,7 @@ pim6_input(struct mbuf **mp, int *offp, */ if (pimlen < PIM_MINLEN) { PIM6STAT_INC(pim6s_rcv_tooshort); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG,"pim6_input: PIM packet too short\n"); -#endif + MRT6_DLOG(DEBUG_PIM, "PIM packet too short"); m_freem(m); return (IPPROTO_DONE); } @@ -1850,11 +1781,7 @@ pim6_input(struct mbuf **mp, int *offp, if (in6_cksum(m, IPPROTO_PIM, off, cksumlen)) { PIM6STAT_INC(pim6s_rcv_badsum); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG, - "pim6_input: invalid checksum\n"); -#endif + MRT6_DLOG(DEBUG_PIM, "invalid checksum"); m_freem(m); return (IPPROTO_DONE); } @@ -1864,11 +1791,9 @@ pim6_input(struct mbuf **mp, int *offp, /* PIM version check */ if (pim->pim_ver != PIM_VERSION) { PIM6STAT_INC(pim6s_rcv_badversion); -#ifdef MRT6DEBUG - log(LOG_ERR, - "pim6_input: incorrect version %d, expecting %d\n", + MRT6_DLOG(DEBUG_ANY | DEBUG_ERR, + "incorrect version %d, expecting %d", pim->pim_ver, PIM_VERSION); -#endif m_freem(m); return (IPPROTO_DONE); } @@ -1892,12 +1817,8 @@ pim6_input(struct mbuf **mp, int *offp, PIM6STAT_INC(pim6s_rcv_registers); if ((reg_mif_num >= nummifs) || (reg_mif_num == (mifi_t) -1)) { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG, - "pim6_input: register mif not set: %d\n", - reg_mif_num); -#endif + MRT6_DLOG(DEBUG_PIM, "register mif not set: %d", + reg_mif_num); m_freem(m); return (IPPROTO_DONE); } @@ -1913,35 +1834,25 @@ pim6_input(struct mbuf **mp, int *offp, if (pimlen < PIM6_REG_MINLEN) { PIM6STAT_INC(pim6s_rcv_tooshort); PIM6STAT_INC(pim6s_rcv_badregisters); -#ifdef MRT6DEBUG - log(LOG_ERR, - "pim6_input: register packet size too " - "small %d from %s\n", + MRT6_DLOG(DEBUG_ANY | DEBUG_ERR, "register packet " + "size too small %d from %s", pimlen, ip6_sprintf(ip6bufs, &ip6->ip6_src)); -#endif m_freem(m); return (IPPROTO_DONE); } eip6 = (struct ip6_hdr *) (reghdr + 1); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG, - "pim6_input[register], eip6: %s -> %s, " - "eip6 plen %d\n", - ip6_sprintf(ip6bufs, &eip6->ip6_src), - ip6_sprintf(ip6bufd, &eip6->ip6_dst), - ntohs(eip6->ip6_plen)); -#endif + MRT6_DLOG(DEBUG_PIM, "eip6: %s -> %s, eip6 plen %d", + ip6_sprintf(ip6bufs, &eip6->ip6_src), + ip6_sprintf(ip6bufd, &eip6->ip6_dst), + ntohs(eip6->ip6_plen)); /* verify the version number of the inner packet */ if ((eip6->ip6_vfc & IPV6_VERSION_MASK) != IPV6_VERSION) { PIM6STAT_INC(pim6s_rcv_badregisters); -#ifdef MRT6DEBUG - log(LOG_DEBUG, "pim6_input: invalid IP version (%d) " - "of the inner packet\n", + MRT6_DLOG(DEBUG_ANY, "invalid IP version (%d) " + "of the inner packet", (eip6->ip6_vfc & IPV6_VERSION)); -#endif m_freem(m); return (IPPROTO_NONE); } @@ -1949,13 +1860,9 @@ pim6_input(struct mbuf **mp, int *offp, /* verify the inner packet is destined to a mcast group */ if (!IN6_IS_ADDR_MULTICAST(&eip6->ip6_dst)) { PIM6STAT_INC(pim6s_rcv_badregisters); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG, - "pim6_input: inner packet of register " - "is not multicast %s\n", - ip6_sprintf(ip6bufd, &eip6->ip6_dst)); -#endif + MRT6_DLOG(DEBUG_PIM, "inner packet of register " + "is not multicast %s", + ip6_sprintf(ip6bufd, &eip6->ip6_dst)); m_freem(m); return (IPPROTO_DONE); } @@ -1965,11 +1872,8 @@ pim6_input(struct mbuf **mp, int *offp, */ mcp = m_copy(m, 0, off + PIM6_REG_MINLEN); if (mcp == NULL) { -#ifdef MRT6DEBUG - log(LOG_ERR, - "pim6_input: pim register: " - "could not copy register head\n"); -#endif + MRT6_DLOG(DEBUG_ANY | DEBUG_ERR, "pim register: " + "could not copy register head"); m_freem(m); return (IPPROTO_DONE); } @@ -1978,16 +1882,10 @@ pim6_input(struct mbuf **mp, int *offp, * forward the inner ip6 packet; point m_data at the inner ip6. */ m_adj(m, off + PIM_MINLEN); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) { - log(LOG_DEBUG, - "pim6_input: forwarding decapsulated register: " - "src %s, dst %s, mif %d\n", - ip6_sprintf(ip6bufs, &eip6->ip6_src), - ip6_sprintf(ip6bufd, &eip6->ip6_dst), - reg_mif_num); - } -#endif + MRT6_DLOG(DEBUG_PIM, "forwarding decapsulated register: " + "src %s, dst %s, mif %d", + ip6_sprintf(ip6bufs, &eip6->ip6_src), + ip6_sprintf(ip6bufd, &eip6->ip6_dst), reg_mif_num); rc = if_simloop(mif6table[reg_mif_num].m6_ifp, m, dst.sin6_family, 0); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 13:24:10 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E03B935F; Thu, 16 Jan 2014 13:24:10 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B374E1B34; Thu, 16 Jan 2014 13:24:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GDOA1w008513; Thu, 16 Jan 2014 13:24:10 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GDOADB008512; Thu, 16 Jan 2014 13:24:10 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161324.s0GDOADB008512@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 13:24:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260713 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 13:24:11 -0000 Author: avg Date: Thu Jan 16 13:24:10 2014 New Revision: 260713 URL: http://svnweb.freebsd.org/changeset/base/260713 Log: fix a bug in ZFS mirror code for handling multiple DVAa The bug was introduced in r256956 "Improve ZFS N-way mirror read performance". The code in vdev_mirror_dva_select erroneously considers already tried DVAs for the next attempt. Thus, it is possible that a failing DVA would be retried forever. As a secondary effect, if the attempts fail with checksum error, then checksum error reports are accumulated until the original request ultimately fails or succeeds. But because retrying is going on indefinitely the cheksum reports accumulation will effectively be a memory leak. Reviewed by: gibbs MFC after: 13 days Sponsored by: HybridCluster Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c Thu Jan 16 13:21:32 2014 (r260712) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c Thu Jan 16 13:24:10 2014 (r260713) @@ -313,13 +313,16 @@ vdev_mirror_scrub_done(zio_t *zio) * single-copy data. */ static int -vdev_mirror_dva_select(zio_t *zio, int preferred) +vdev_mirror_dva_select(zio_t *zio, int p) { dva_t *dva = zio->io_bp->blk_dva; mirror_map_t *mm = zio->io_vsd; + int preferred; int c; - for (c = preferred - 1; c >= 0; c--) { + preferred = mm->mm_preferred[p]; + for (p-- ; p >= 0; p--) { + c = mm->mm_preferred[p]; if (DVA_GET_VDEV(&dva[c]) == DVA_GET_VDEV(&dva[preferred])) preferred = c; } @@ -334,7 +337,7 @@ vdev_mirror_preferred_child_randomize(zi if (mm->mm_root) { p = spa_get_random(mm->mm_preferred_cnt); - return (vdev_mirror_dva_select(zio, mm->mm_preferred[p])); + return (vdev_mirror_dva_select(zio, p)); } /* From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 13:24:59 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 66C084C1; Thu, 16 Jan 2014 13:24:59 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 519901B3A; Thu, 16 Jan 2014 13:24:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GDOxqa008635; Thu, 16 Jan 2014 13:24:59 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GDOxlN008634; Thu, 16 Jan 2014 13:24:59 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201401161324.s0GDOxlN008634@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Thu, 16 Jan 2014 13:24:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260714 - stable/9/sys/netinet6 X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 13:24:59 -0000 Author: ae Date: Thu Jan 16 13:24:58 2014 New Revision: 260714 URL: http://svnweb.freebsd.org/changeset/base/260714 Log: MFC r260481: Add MRT6_DLOG() macro for debugging. Reduce number of MRT6DEBUG ifdefs and fix some broken format strings. Modified: stable/9/sys/netinet6/ip6_mroute.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/netinet6/ip6_mroute.c ============================================================================== --- stable/9/sys/netinet6/ip6_mroute.c Thu Jan 16 13:24:10 2014 (r260713) +++ stable/9/sys/netinet6/ip6_mroute.c Thu Jan 16 13:24:58 2014 (r260714) @@ -218,6 +218,14 @@ static VNET_DEFINE(u_int, mrt6debug) = 0 #define DEBUG_XMIT 0x10 #define DEBUG_REG 0x20 #define DEBUG_PIM 0x40 +#define DEBUG_ERR 0x80 +#define DEBUG_ANY 0x7f +#define MRT6_DLOG(m, fmt, ...) \ + if (V_mrt6debug & (m)) \ + log(((m) & DEBUG_ERR) ? LOG_ERR: LOG_DEBUG, \ + "%s: " fmt "\n", __func__, ##__VA_ARGS__) +#else +#define MRT6_DLOG(m, fmt, ...) #endif static void expire_upcalls(void *); @@ -523,12 +531,8 @@ static int ip6_mrouter_init(struct socket *so, int v, int cmd) { -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, - "ip6_mrouter_init: so_type = %d, pr_protocol = %d\n", - so->so_type, so->so_proto->pr_protocol); -#endif + MRT6_DLOG(DEBUG_ANY, "so_type = %d, pr_protocol = %d", + so->so_type, so->so_proto->pr_protocol); if (so->so_type != SOCK_RAW || so->so_proto->pr_protocol != IPPROTO_ICMPV6) @@ -557,11 +561,7 @@ ip6_mrouter_init(struct socket *so, int expire_upcalls, NULL); MROUTER6_UNLOCK(); - -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, "ip6_mrouter_init\n"); -#endif + MRT6_DLOG(DEBUG_ANY, "finished"); return (0); } @@ -639,11 +639,7 @@ X_ip6_mrouter_done(void) V_ip6_mrouter_ver = 0; MROUTER6_UNLOCK(); - -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, "ip6_mrouter_done\n"); -#endif + MRT6_DLOG(DEBUG_ANY, "finished"); return (0); } @@ -724,14 +720,8 @@ add_m6if(struct mif6ctl *mifcp) nummifs = mifcp->mif6c_mifi + 1; MIF6_UNLOCK(); - -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, - "add_mif #%d, phyint %s\n", - mifcp->mif6c_mifi, - ifp->if_xname); -#endif + MRT6_DLOG(DEBUG_ANY, "mif #%d, phyint %s", mifcp->mif6c_mifi, + if_name(ifp)); return (0); } @@ -774,11 +764,7 @@ del_m6if_locked(mifi_t *mifip) if (mif6table[mifi - 1].m6_ifp) break; nummifs = mifi; - -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, "del_m6if %d, nummifs %d\n", *mifip, nummifs); -#endif + MRT6_DLOG(DEBUG_ANY, "mif %d, nummifs %d", *mifip, nummifs); return (0); } @@ -814,15 +800,10 @@ add_m6fc(struct mf6cctl *mfccp) /* If an entry already exists, just update the fields */ if (rt) { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_MFC) { - log(LOG_DEBUG, - "add_m6fc no upcall h %d o %s g %s p %x\n", - ip6_sprintf(ip6bufo, &mfccp->mf6cc_origin.sin6_addr), - ip6_sprintf(ip6bufg, &mfccp->mf6cc_mcastgrp.sin6_addr), - mfccp->mf6cc_parent); - } -#endif + MRT6_DLOG(DEBUG_MFC, "no upcall o %s g %s p %x", + ip6_sprintf(ip6bufo, &mfccp->mf6cc_origin.sin6_addr), + ip6_sprintf(ip6bufg, &mfccp->mf6cc_mcastgrp.sin6_addr), + mfccp->mf6cc_parent); rt->mf6c_parent = mfccp->mf6cc_parent; rt->mf6c_ifset = mfccp->mf6cc_ifset; @@ -853,16 +834,12 @@ add_m6fc(struct mf6cctl *mfccp) &mfccp->mf6cc_mcastgrp.sin6_addr), mfccp->mf6cc_parent, rt->mf6c_stall); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_MFC) - log(LOG_DEBUG, - "add_m6fc o %s g %s p %x dbg %x\n", - ip6_sprintf(ip6bufo, - &mfccp->mf6cc_origin.sin6_addr), - ip6_sprintf(ip6bufg, - &mfccp->mf6cc_mcastgrp.sin6_addr), - mfccp->mf6cc_parent, rt->mf6c_stall); -#endif + MRT6_DLOG(DEBUG_MFC, "o %s g %s p %x dbg %p", + ip6_sprintf(ip6bufo, + &mfccp->mf6cc_origin.sin6_addr), + ip6_sprintf(ip6bufg, + &mfccp->mf6cc_mcastgrp.sin6_addr), + mfccp->mf6cc_parent, rt->mf6c_stall); rt->mf6c_origin = mfccp->mf6cc_origin; rt->mf6c_mcastgrp = mfccp->mf6cc_mcastgrp; @@ -895,15 +872,10 @@ add_m6fc(struct mf6cctl *mfccp) * It is possible that an entry is being inserted without an upcall */ if (nstl == 0) { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_MFC) - log(LOG_DEBUG, - "add_mfc no upcall h %d o %s g %s p %x\n", - hash, - ip6_sprintf(ip6bufo, &mfccp->mf6cc_origin.sin6_addr), - ip6_sprintf(ip6bufg, &mfccp->mf6cc_mcastgrp.sin6_addr), - mfccp->mf6cc_parent); -#endif + MRT6_DLOG(DEBUG_MFC, "no upcall h %lu o %s g %s p %x", hash, + ip6_sprintf(ip6bufo, &mfccp->mf6cc_origin.sin6_addr), + ip6_sprintf(ip6bufg, &mfccp->mf6cc_mcastgrp.sin6_addr), + mfccp->mf6cc_parent); for (rt = mf6ctable[hash]; rt; rt = rt->mf6c_next) { @@ -989,6 +961,9 @@ collate(struct timeval *t) static int del_m6fc(struct mf6cctl *mfccp) { +#ifdef MRT6DEBUG + char ip6bufo[INET6_ADDRSTRLEN], ip6bufg[INET6_ADDRSTRLEN]; +#endif struct sockaddr_in6 origin; struct sockaddr_in6 mcastgrp; struct mf6c *rt; @@ -999,14 +974,9 @@ del_m6fc(struct mf6cctl *mfccp) mcastgrp = mfccp->mf6cc_mcastgrp; hash = MF6CHASH(origin.sin6_addr, mcastgrp.sin6_addr); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_MFC) { - char ip6bufo[INET6_ADDRSTRLEN], ip6bufg[INET6_ADDRSTRLEN]; - log(LOG_DEBUG,"del_m6fc orig %s mcastgrp %s\n", - ip6_sprintf(ip6bufo, &origin.sin6_addr), - ip6_sprintf(ip6bufg, &mcastgrp.sin6_addr)); - } -#endif + MRT6_DLOG(DEBUG_MFC, "orig %s mcastgrp %s", + ip6_sprintf(ip6bufo, &origin.sin6_addr), + ip6_sprintf(ip6bufg, &mcastgrp.sin6_addr)); MFC6_LOCK(); @@ -1077,13 +1047,9 @@ X_ip6_mforward(struct ip6_hdr *ip6, stru mifi_t mifi; char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_FORWARD) - log(LOG_DEBUG, "ip6_mforward: src %s, dst %s, ifindex %d\n", - ip6_sprintf(ip6bufs, &ip6->ip6_src), - ip6_sprintf(ip6bufd, &ip6->ip6_dst), - ifp->if_index); -#endif + MRT6_DLOG(DEBUG_FORWARD, "src %s, dst %s, ifindex %d", + ip6_sprintf(ip6bufs, &ip6->ip6_src), + ip6_sprintf(ip6bufd, &ip6->ip6_dst), ifp->if_index); /* * Don't forward a packet with Hop limit of zero or one, @@ -1145,12 +1111,9 @@ X_ip6_mforward(struct ip6_hdr *ip6, stru #endif /* UPCALL_TIMING */ MRT6STAT_INC(mrt6s_no_route); -#ifdef MRT6DEBUG - if (V_mrt6debug & (DEBUG_FORWARD | DEBUG_MFC)) - log(LOG_DEBUG, "ip6_mforward: no rte s %s g %s\n", - ip6_sprintf(ip6bufs, &ip6->ip6_src), - ip6_sprintf(ip6bufd, &ip6->ip6_dst)); -#endif + MRT6_DLOG(DEBUG_FORWARD | DEBUG_MFC, "no rte s %s g %s", + ip6_sprintf(ip6bufs, &ip6->ip6_src), + ip6_sprintf(ip6bufd, &ip6->ip6_dst)); /* * Allocate mbufs early so that we don't do extra work if we @@ -1246,11 +1209,8 @@ X_ip6_mforward(struct ip6_hdr *ip6, stru return (EINVAL); } -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_FORWARD) - log(LOG_DEBUG, - "getting the iif info in the kernel\n"); -#endif + MRT6_DLOG(DEBUG_FORWARD, + "getting the iif info in the kernel"); for (mifp = mif6table, mifi = 0; mifi < nummifs && mifp->m6_ifp != ifp; @@ -1336,6 +1296,9 @@ X_ip6_mforward(struct ip6_hdr *ip6, stru static void expire_upcalls(void *unused) { +#ifdef MRT6DEBUG + char ip6bufo[INET6_ADDRSTRLEN], ip6bufg[INET6_ADDRSTRLEN]; +#endif struct rtdetq *rte; struct mf6c *mfc, **nptr; u_long i; @@ -1355,15 +1318,9 @@ expire_upcalls(void *unused) if (rte != NULL && mfc->mf6c_expire != 0 && --mfc->mf6c_expire == 0) { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_EXPIRE) { - char ip6bufo[INET6_ADDRSTRLEN]; - char ip6bufg[INET6_ADDRSTRLEN]; - log(LOG_DEBUG, "expire_upcalls: expiring (%s %s)\n", - ip6_sprintf(ip6bufo, &mfc->mf6c_origin.sin6_addr), - ip6_sprintf(ip6bufg, &mfc->mf6c_mcastgrp.sin6_addr)); - } -#endif + MRT6_DLOG(DEBUG_EXPIRE, "expiring (%s %s)", + ip6_sprintf(ip6bufo, &mfc->mf6c_origin.sin6_addr), + ip6_sprintf(ip6bufg, &mfc->mf6c_mcastgrp.sin6_addr)); /* * drop all the packets * free the mbuf with the pkt, if, timing info @@ -1423,13 +1380,9 @@ ip6_mdq(struct mbuf *m, struct ifnet *if mifi = rt->mf6c_parent; if ((mifi >= nummifs) || (mif6table[mifi].m6_ifp != ifp)) { /* came in the wrong interface */ -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_FORWARD) - log(LOG_DEBUG, - "wrong if: ifid %d mifi %d mififid %x\n", - ifp->if_index, mifi, - mif6table[mifi].m6_ifp->if_index); -#endif + MRT6_DLOG(DEBUG_FORWARD, + "wrong if: ifid %d mifi %d mififid %x", ifp->if_index, + mifi, mif6table[mifi].m6_ifp->if_index); MRT6STAT_INC(mrt6s_wrong_if); rt->mf6c_wrong_if++; /* @@ -1506,10 +1459,8 @@ ip6_mdq(struct mbuf *m, struct ifnet *if MRT6STAT_INC(mrt6s_upcalls); if (socket_send(V_ip6_mrouter, mm, &sin6) < 0) { -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_WARNING, "mdq, ip6_mrouter socket queue full\n"); -#endif + MRT6_DLOG(DEBUG_ANY, + "ip6_mrouter socket queue full"); MRT6STAT_INC(mrt6s_upq_sockfull); return (ENOBUFS); } /* if socket Q full */ @@ -1573,6 +1524,9 @@ ip6_mdq(struct mbuf *m, struct ifnet *if static void phyint_send(struct ip6_hdr *ip6, struct mif6 *mifp, struct mbuf *m) { +#ifdef MRT6DEBUG + char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; +#endif struct mbuf *mb_copy; struct ifnet *ifp = mifp->m6_ifp; int error = 0; @@ -1610,11 +1564,8 @@ phyint_send(struct ip6_hdr *ip6, struct error = ip6_output(mb_copy, NULL, NULL, IPV6_FORWARDING, &im6o, NULL, NULL); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_XMIT) - log(LOG_DEBUG, "phyint_send on mif %d err %d\n", - mifp - mif6table, error); -#endif + MRT6_DLOG(DEBUG_XMIT, "mif %u err %d", + (uint16_t)(mifp - mif6table), error); return; } @@ -1650,11 +1601,8 @@ phyint_send(struct ip6_hdr *ip6, struct */ error = (*ifp->if_output)(ifp, mb_copy, (struct sockaddr *)&dst6, NULL); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_XMIT) - log(LOG_DEBUG, "phyint_send on mif %d err %d\n", - mifp - mif6table, error); -#endif + MRT6_DLOG(DEBUG_XMIT, "mif %u err %d", + (uint16_t)(mifp - mif6table), error); } else { /* * pMTU discovery is intentionally disabled by default, since @@ -1664,19 +1612,11 @@ phyint_send(struct ip6_hdr *ip6, struct if (V_ip6_mcast_pmtu) icmp6_error(mb_copy, ICMP6_PACKET_TOO_BIG, 0, linkmtu); else { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_XMIT) { - char ip6bufs[INET6_ADDRSTRLEN]; - char ip6bufd[INET6_ADDRSTRLEN]; - log(LOG_DEBUG, - "phyint_send: packet too big on %s o %s " - "g %s size %d(discarded)\n", - if_name(ifp), - ip6_sprintf(ip6bufs, &ip6->ip6_src), - ip6_sprintf(ip6bufd, &ip6->ip6_dst), - mb_copy->m_pkthdr.len); - } -#endif /* MRT6DEBUG */ + MRT6_DLOG(DEBUG_XMIT, " packet too big on %s o %s " + "g %s size %d (discarded)", if_name(ifp), + ip6_sprintf(ip6bufs, &ip6->ip6_src), + ip6_sprintf(ip6bufd, &ip6->ip6_dst), + mb_copy->m_pkthdr.len); m_freem(mb_copy); /* simply discard the packet */ } } @@ -1685,19 +1625,17 @@ phyint_send(struct ip6_hdr *ip6, struct static int register_send(struct ip6_hdr *ip6, struct mif6 *mif, struct mbuf *m) { +#ifdef MRT6DEBUG + char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; +#endif struct mbuf *mm; int i, len = m->m_pkthdr.len; static struct sockaddr_in6 sin6 = { sizeof(sin6), AF_INET6 }; struct mrt6msg *im6; -#ifdef MRT6DEBUG - if (V_mrt6debug) { - char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; - log(LOG_DEBUG, "** IPv6 register_send **\n src %s dst %s\n", - ip6_sprintf(ip6bufs, &ip6->ip6_src), - ip6_sprintf(ip6bufd, &ip6->ip6_dst)); - } -#endif + MRT6_DLOG(DEBUG_ANY, "src %s dst %s", + ip6_sprintf(ip6bufs, &ip6->ip6_src), + ip6_sprintf(ip6bufd, &ip6->ip6_dst)); PIM6STAT_INC(pim6s_snd_registers); /* Make a copy of the packet to send to the user level process */ @@ -1736,11 +1674,7 @@ register_send(struct ip6_hdr *ip6, struc MRT6STAT_INC(mrt6s_upcalls); if (socket_send(V_ip6_mrouter, mm, &sin6) < 0) { -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_WARNING, - "register_send: ip6_mrouter socket queue full\n"); -#endif + MRT6_DLOG(DEBUG_ANY, "ip6_mrouter socket queue full"); MRT6STAT_INC(mrt6s_upq_sockfull); return (ENOBUFS); } @@ -1792,10 +1726,7 @@ pim6_input(struct mbuf **mp, int *offp, */ if (pimlen < PIM_MINLEN) { PIM6STAT_INC(pim6s_rcv_tooshort); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG,"pim6_input: PIM packet too short\n"); -#endif + MRT6_DLOG(DEBUG_PIM, "PIM packet too short"); m_freem(m); return (IPPROTO_DONE); } @@ -1845,11 +1776,7 @@ pim6_input(struct mbuf **mp, int *offp, if (in6_cksum(m, IPPROTO_PIM, off, cksumlen)) { PIM6STAT_INC(pim6s_rcv_badsum); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG, - "pim6_input: invalid checksum\n"); -#endif + MRT6_DLOG(DEBUG_PIM, "invalid checksum"); m_freem(m); return (IPPROTO_DONE); } @@ -1859,11 +1786,9 @@ pim6_input(struct mbuf **mp, int *offp, /* PIM version check */ if (pim->pim_ver != PIM_VERSION) { PIM6STAT_INC(pim6s_rcv_badversion); -#ifdef MRT6DEBUG - log(LOG_ERR, - "pim6_input: incorrect version %d, expecting %d\n", + MRT6_DLOG(DEBUG_ANY | DEBUG_ERR, + "incorrect version %d, expecting %d", pim->pim_ver, PIM_VERSION); -#endif m_freem(m); return (IPPROTO_DONE); } @@ -1887,12 +1812,8 @@ pim6_input(struct mbuf **mp, int *offp, PIM6STAT_INC(pim6s_rcv_registers); if ((reg_mif_num >= nummifs) || (reg_mif_num == (mifi_t) -1)) { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG, - "pim6_input: register mif not set: %d\n", - reg_mif_num); -#endif + MRT6_DLOG(DEBUG_PIM, "register mif not set: %d", + reg_mif_num); m_freem(m); return (IPPROTO_DONE); } @@ -1908,35 +1829,25 @@ pim6_input(struct mbuf **mp, int *offp, if (pimlen < PIM6_REG_MINLEN) { PIM6STAT_INC(pim6s_rcv_tooshort); PIM6STAT_INC(pim6s_rcv_badregisters); -#ifdef MRT6DEBUG - log(LOG_ERR, - "pim6_input: register packet size too " - "small %d from %s\n", + MRT6_DLOG(DEBUG_ANY | DEBUG_ERR, "register packet " + "size too small %d from %s", pimlen, ip6_sprintf(ip6bufs, &ip6->ip6_src)); -#endif m_freem(m); return (IPPROTO_DONE); } eip6 = (struct ip6_hdr *) (reghdr + 1); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG, - "pim6_input[register], eip6: %s -> %s, " - "eip6 plen %d\n", - ip6_sprintf(ip6bufs, &eip6->ip6_src), - ip6_sprintf(ip6bufd, &eip6->ip6_dst), - ntohs(eip6->ip6_plen)); -#endif + MRT6_DLOG(DEBUG_PIM, "eip6: %s -> %s, eip6 plen %d", + ip6_sprintf(ip6bufs, &eip6->ip6_src), + ip6_sprintf(ip6bufd, &eip6->ip6_dst), + ntohs(eip6->ip6_plen)); /* verify the version number of the inner packet */ if ((eip6->ip6_vfc & IPV6_VERSION_MASK) != IPV6_VERSION) { PIM6STAT_INC(pim6s_rcv_badregisters); -#ifdef MRT6DEBUG - log(LOG_DEBUG, "pim6_input: invalid IP version (%d) " - "of the inner packet\n", + MRT6_DLOG(DEBUG_ANY, "invalid IP version (%d) " + "of the inner packet", (eip6->ip6_vfc & IPV6_VERSION)); -#endif m_freem(m); return (IPPROTO_NONE); } @@ -1944,13 +1855,9 @@ pim6_input(struct mbuf **mp, int *offp, /* verify the inner packet is destined to a mcast group */ if (!IN6_IS_ADDR_MULTICAST(&eip6->ip6_dst)) { PIM6STAT_INC(pim6s_rcv_badregisters); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG, - "pim6_input: inner packet of register " - "is not multicast %s\n", - ip6_sprintf(ip6bufd, &eip6->ip6_dst)); -#endif + MRT6_DLOG(DEBUG_PIM, "inner packet of register " + "is not multicast %s", + ip6_sprintf(ip6bufd, &eip6->ip6_dst)); m_freem(m); return (IPPROTO_DONE); } @@ -1960,11 +1867,8 @@ pim6_input(struct mbuf **mp, int *offp, */ mcp = m_copy(m, 0, off + PIM6_REG_MINLEN); if (mcp == NULL) { -#ifdef MRT6DEBUG - log(LOG_ERR, - "pim6_input: pim register: " - "could not copy register head\n"); -#endif + MRT6_DLOG(DEBUG_ANY | DEBUG_ERR, "pim register: " + "could not copy register head"); m_freem(m); return (IPPROTO_DONE); } @@ -1973,16 +1877,10 @@ pim6_input(struct mbuf **mp, int *offp, * forward the inner ip6 packet; point m_data at the inner ip6. */ m_adj(m, off + PIM_MINLEN); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) { - log(LOG_DEBUG, - "pim6_input: forwarding decapsulated register: " - "src %s, dst %s, mif %d\n", - ip6_sprintf(ip6bufs, &eip6->ip6_src), - ip6_sprintf(ip6bufd, &eip6->ip6_dst), - reg_mif_num); - } -#endif + MRT6_DLOG(DEBUG_PIM, "forwarding decapsulated register: " + "src %s, dst %s, mif %d", + ip6_sprintf(ip6bufs, &eip6->ip6_src), + ip6_sprintf(ip6bufd, &eip6->ip6_dst), reg_mif_num); rc = if_simloop(mif6table[reg_mif_num].m6_ifp, m, dst.sin6_family, 0); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 13:42:15 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 12585BD0; Thu, 16 Jan 2014 13:42:15 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E73D31E01; Thu, 16 Jan 2014 13:42:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GDgENw015936; Thu, 16 Jan 2014 13:42:14 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GDgEiJ015934; Thu, 16 Jan 2014 13:42:14 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201401161342.s0GDgEiJ015934@svn.freebsd.org> From: Gleb Smirnoff Date: Thu, 16 Jan 2014 13:42:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260715 - head/sys/contrib/ipfilter/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 13:42:15 -0000 Author: glebius Date: Thu Jan 16 13:42:14 2014 New Revision: 260715 URL: http://svnweb.freebsd.org/changeset/base/260715 Log: Substitute flags from historical mbuf(9) allocator with modern ones. Sponsored by: Nginx, Inc. Modified: head/sys/contrib/ipfilter/netinet/ip_compat.h head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Modified: head/sys/contrib/ipfilter/netinet/ip_compat.h ============================================================================== --- head/sys/contrib/ipfilter/netinet/ip_compat.h Thu Jan 16 13:24:58 2014 (r260714) +++ head/sys/contrib/ipfilter/netinet/ip_compat.h Thu Jan 16 13:42:14 2014 (r260715) @@ -543,7 +543,7 @@ MALLOC_DECLARE(M_IPFILTER); # ifndef ALLOC_MB_T # ifdef MGETHDR # define ALLOC_MB_T(m,l) do { \ - MGETHDR((m), M_DONTWAIT, MT_HEADER); \ + MGETHDR((m), M_NOWAIT, MT_HEADER); \ if ((m) != NULL) { \ (m)->m_len = (l); \ (m)->m_pkthdr.len = (l); \ @@ -551,7 +551,7 @@ MALLOC_DECLARE(M_IPFILTER); } while (0) # else # define ALLOC_MB_T(m,l) do { \ - MGET((m), M_DONTWAIT, MT_HEADER); \ + MGET((m), M_NOWAIT, MT_HEADER); \ if ((m) != NULL) { \ (m)->m_len = (l); \ (m)->m_pkthdr.len = (l); \ Modified: head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c ============================================================================== --- head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Thu Jan 16 13:24:58 2014 (r260714) +++ head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c Thu Jan 16 13:42:14 2014 (r260715) @@ -368,14 +368,14 @@ ipf_send_reset(fin) hlen = sizeof(ip_t); #endif #ifdef MGETHDR - MGETHDR(m, M_DONTWAIT, MT_HEADER); + MGETHDR(m, M_NOWAIT, MT_HEADER); #else - MGET(m, M_DONTWAIT, MT_HEADER); + MGET(m, M_NOWAIT, MT_HEADER); #endif if (m == NULL) return -1; if (sizeof(*tcp2) + hlen > MLEN) { - MCLGET(m, M_DONTWAIT); + MCLGET(m, M_NOWAIT); if ((m->m_flags & M_EXT) == 0) { FREE_MB_T(m); return -1; @@ -543,9 +543,9 @@ ipf_send_icmp_err(type, fin, dst) if (ipf_checkl4sum(fin) == -1) return -1; #ifdef MGETHDR - MGETHDR(m, M_DONTWAIT, MT_HEADER); + MGETHDR(m, M_NOWAIT, MT_HEADER); #else - MGET(m, M_DONTWAIT, MT_HEADER); + MGET(m, M_NOWAIT, MT_HEADER); #endif if (m == NULL) return -1; @@ -599,7 +599,7 @@ ipf_send_icmp_err(type, fin, dst) code = icmptoicmp6unreach[code]; if (iclen + max_linkhdr + fin->fin_plen > avail) { - MCLGET(m, M_DONTWAIT); + MCLGET(m, M_NOWAIT); if ((m->m_flags & M_EXT) == 0) { FREE_MB_T(m); return -1; @@ -730,7 +730,7 @@ ipf_fastroute(m0, mpp, fin, fdp) * problem. */ if (M_WRITABLE(m) == 0) { - m0 = m_dup(m, M_DONTWAIT); + m0 = m_dup(m, M_NOWAIT); if (m0 != 0) { FREE_MB_T(m); m = m0; @@ -878,9 +878,9 @@ ipf_fastroute(m0, mpp, fin, fdp) mhlen = sizeof (struct ip); for (off = hlen + len; off < ntohs(ip->ip_len); off += len) { #ifdef MGETHDR - MGETHDR(m, M_DONTWAIT, MT_HEADER); + MGETHDR(m, M_NOWAIT, MT_HEADER); #else - MGET(m, M_DONTWAIT, MT_HEADER); + MGET(m, M_NOWAIT, MT_HEADER); #endif if (m == 0) { m = m0; From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 13:42:50 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B844ED2A; Thu, 16 Jan 2014 13:42:50 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A4C951E0F; Thu, 16 Jan 2014 13:42:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GDgoUs016023; Thu, 16 Jan 2014 13:42:50 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GDgonV016022; Thu, 16 Jan 2014 13:42:50 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201401161342.s0GDgonV016022@svn.freebsd.org> From: Gleb Smirnoff Date: Thu, 16 Jan 2014 13:42:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260716 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 13:42:50 -0000 Author: glebius Date: Thu Jan 16 13:42:50 2014 New Revision: 260716 URL: http://svnweb.freebsd.org/changeset/base/260716 Log: Remove historical macro. Sponsored by: Nginx, Inc. Modified: head/sys/kern/uipc_mbuf.c Modified: head/sys/kern/uipc_mbuf.c ============================================================================== --- head/sys/kern/uipc_mbuf.c Thu Jan 16 13:42:14 2014 (r260715) +++ head/sys/kern/uipc_mbuf.c Thu Jan 16 13:42:50 2014 (r260716) @@ -554,7 +554,7 @@ m_dup_pkthdr(struct mbuf *to, struct mbu to->m_data = to->m_pktdat; to->m_pkthdr = from->m_pkthdr; SLIST_INIT(&to->m_pkthdr.tags); - return (m_tag_copy_chain(to, from, MBTOM(how))); + return (m_tag_copy_chain(to, from, how)); } /* From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 13:44:38 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7E060E99; Thu, 16 Jan 2014 13:44:38 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6A0F71E22; Thu, 16 Jan 2014 13:44:38 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GDicb2016308; Thu, 16 Jan 2014 13:44:38 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GDic0j016307; Thu, 16 Jan 2014 13:44:38 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161344.s0GDic0j016307@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 13:44:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260717 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 13:44:38 -0000 Author: avg Date: Thu Jan 16 13:44:37 2014 New Revision: 260717 URL: http://svnweb.freebsd.org/changeset/base/260717 Log: fix a build problem with INVARIANTS enabled introduced in r260704 Reported by: glebius MFC after: 5 days X-MFC with: r260704 Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jan 16 13:42:50 2014 (r260716) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jan 16 13:44:37 2014 (r260717) @@ -624,7 +624,7 @@ zfs_znode_alloc(zfsvfs_t *zfsvfs, dmu_bu zp = kmem_cache_alloc(znode_cache, KM_SLEEP); - KASSERT(td->td_vp_reserv > 0, + KASSERT(curthread->td_vp_reserv > 0, ("zfs_znode_alloc: getnewvnode without any vnodes reserved")); error = getnewvnode("zfs", zfsvfs->z_parent->z_vfs, &zfs_vnodeops, &vp); if (error != 0) { From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 13:44:48 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A7C8BFD4; Thu, 16 Jan 2014 13:44:48 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 88D271E24; Thu, 16 Jan 2014 13:44:48 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GDimg7016364; Thu, 16 Jan 2014 13:44:48 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GDilSa016356; Thu, 16 Jan 2014 13:44:47 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201401161344.s0GDilSa016356@svn.freebsd.org> From: Gleb Smirnoff Date: Thu, 16 Jan 2014 13:44:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260718 - in head/sys: dev/altera/atse dev/bxe dev/hyperv/netvsc dev/qlxge net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 13:44:48 -0000 Author: glebius Date: Thu Jan 16 13:44:47 2014 New Revision: 260718 URL: http://svnweb.freebsd.org/changeset/base/260718 Log: Another round of removing historical mbuf(9) allocator flags. They are breeding! New ones arouse since last round. Sponsored by: Nginx, Inc. Modified: head/sys/dev/altera/atse/if_atse.c head/sys/dev/bxe/bxe.c head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c head/sys/dev/qlxge/qls_os.c head/sys/net80211/ieee80211_mesh.c Modified: head/sys/dev/altera/atse/if_atse.c ============================================================================== --- head/sys/dev/altera/atse/if_atse.c Thu Jan 16 13:44:37 2014 (r260717) +++ head/sys/dev/altera/atse/if_atse.c Thu Jan 16 13:44:47 2014 (r260718) @@ -1174,7 +1174,7 @@ outer: sc->atse_rx_cycles--; if (sc->atse_rx_m == NULL) { - m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR); + m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); if (m == NULL) return (rx_npkts); m->m_len = m->m_pkthdr.len = MCLBYTES; Modified: head/sys/dev/bxe/bxe.c ============================================================================== --- head/sys/dev/bxe/bxe.c Thu Jan 16 13:44:37 2014 (r260717) +++ head/sys/dev/bxe/bxe.c Thu Jan 16 13:44:47 2014 (r260718) @@ -5443,7 +5443,7 @@ bxe_tx_encap(struct bxe_fastpath *fp, st } else if (error == EFBIG) { /* possibly recoverable with defragmentation */ fp->eth_q_stats.mbuf_defrag_attempts++; - m0 = m_defrag(*m_head, M_DONTWAIT); + m0 = m_defrag(*m_head, M_NOWAIT); if (m0 == NULL) { fp->eth_q_stats.mbuf_defrag_failures++; rc = ENOBUFS; @@ -5504,7 +5504,7 @@ bxe_tx_encap(struct bxe_fastpath *fp, st /* lets try to defragment this mbuf */ fp->eth_q_stats.mbuf_defrag_attempts++; - m0 = m_defrag(*m_head, M_DONTWAIT); + m0 = m_defrag(*m_head, M_NOWAIT); if (m0 == NULL) { fp->eth_q_stats.mbuf_defrag_failures++; /* Ugh, just drop the frame... :( */ @@ -6564,7 +6564,7 @@ bxe_alloc_rx_bd_mbuf(struct bxe_fastpath rc = 0; /* allocate the new RX BD mbuf */ - m = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, fp->mbuf_alloc_size); + m = m_getjcl(M_NOWAIT, MT_DATA, M_PKTHDR, fp->mbuf_alloc_size); if (__predict_false(m == NULL)) { fp->eth_q_stats.mbuf_rx_bd_alloc_failed++; return (ENOBUFS); @@ -6645,7 +6645,7 @@ bxe_alloc_rx_tpa_mbuf(struct bxe_fastpat int rc = 0; /* allocate the new TPA mbuf */ - m = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, fp->mbuf_alloc_size); + m = m_getjcl(M_NOWAIT, MT_DATA, M_PKTHDR, fp->mbuf_alloc_size); if (__predict_false(m == NULL)) { fp->eth_q_stats.mbuf_rx_tpa_alloc_failed++; return (ENOBUFS); @@ -6707,7 +6707,7 @@ bxe_alloc_rx_sge_mbuf(struct bxe_fastpat int rc = 0; /* allocate a new SGE mbuf */ - m = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, SGE_PAGE_SIZE); + m = m_getjcl(M_NOWAIT, MT_DATA, M_PKTHDR, SGE_PAGE_SIZE); if (__predict_false(m == NULL)) { fp->eth_q_stats.mbuf_rx_sge_alloc_failed++; return (ENOMEM); @@ -6769,7 +6769,7 @@ bxe_alloc_fp_buffers(struct bxe_softc *s #if __FreeBSD_version >= 800000 fp->tx_br = buf_ring_alloc(BXE_BR_SIZE, M_DEVBUF, - M_DONTWAIT, &fp->tx_mtx); + M_NOWAIT, &fp->tx_mtx); if (fp->tx_br == NULL) { BLOGE(sc, "buf_ring alloc fail for fp[%02d]\n", i); goto bxe_alloc_fp_buffers_error; Modified: head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c ============================================================================== --- head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c Thu Jan 16 13:44:37 2014 (r260717) +++ head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c Thu Jan 16 13:44:47 2014 (r260718) @@ -485,7 +485,7 @@ hn_start_locked(struct ifnet *ifp) * bpf_mtap code has a chance to run. */ if (ifp->if_bpf) { - mc_head = m_copypacket(m_head, M_DONTWAIT); + mc_head = m_copypacket(m_head, M_NOWAIT); } retry_send: /* Set the completion routine */ @@ -594,7 +594,7 @@ hv_m_append(struct mbuf *m0, int len, c_ * Allocate a new mbuf; could check space * and allocate a cluster instead. */ - n = m_getjcl(M_DONTWAIT, m->m_type, 0, MJUMPAGESIZE); + n = m_getjcl(M_NOWAIT, m->m_type, 0, MJUMPAGESIZE); if (n == NULL) break; n->m_len = min(MJUMPAGESIZE, remainder); @@ -658,7 +658,7 @@ netvsc_recv(struct hv_device *device_ctx size = MJUMPAGESIZE; } - m_new = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, size); + m_new = m_getjcl(M_NOWAIT, MT_DATA, M_PKTHDR, size); if (m_new == NULL) return (0); Modified: head/sys/dev/qlxge/qls_os.c ============================================================================== --- head/sys/dev/qlxge/qls_os.c Thu Jan 16 13:44:37 2014 (r260717) +++ head/sys/dev/qlxge/qls_os.c Thu Jan 16 13:44:47 2014 (r260718) @@ -1158,7 +1158,7 @@ qls_send(qla_host_t *ha, struct mbuf **m QL_DPRINT8((ha->pci_dev, "%s: EFBIG [%d]\n", __func__, m_head->m_pkthdr.len)); - m = m_defrag(m_head, M_DONTWAIT); + m = m_defrag(m_head, M_NOWAIT); if (m == NULL) { ha->err_tx_defrag++; m_freem(m_head); @@ -1413,7 +1413,7 @@ qls_get_mbuf(qla_host_t *ha, qla_rx_buf_ if (mp == NULL) { - mp = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, ha->msize); + mp = m_getjcl(M_NOWAIT, MT_DATA, M_PKTHDR, ha->msize); if (mp == NULL) { Modified: head/sys/net80211/ieee80211_mesh.c ============================================================================== --- head/sys/net80211/ieee80211_mesh.c Thu Jan 16 13:44:37 2014 (r260717) +++ head/sys/net80211/ieee80211_mesh.c Thu Jan 16 13:44:47 2014 (r260718) @@ -2693,7 +2693,7 @@ mesh_send_action(struct ieee80211_node * return EIO; /* XXX */ } - M_PREPEND(m, sizeof(struct ieee80211_frame), M_DONTWAIT); + M_PREPEND(m, sizeof(struct ieee80211_frame), M_NOWAIT); if (m == NULL) { ieee80211_free_node(ni); return ENOMEM; From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 13:45:42 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C35C71C1; Thu, 16 Jan 2014 13:45:42 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 956251E39; Thu, 16 Jan 2014 13:45:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GDjgY9016548; Thu, 16 Jan 2014 13:45:42 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GDjgqM016546; Thu, 16 Jan 2014 13:45:42 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201401161345.s0GDjgqM016546@svn.freebsd.org> From: Gleb Smirnoff Date: Thu, 16 Jan 2014 13:45:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260719 - in head/sys: kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 13:45:42 -0000 Author: glebius Date: Thu Jan 16 13:45:41 2014 New Revision: 260719 URL: http://svnweb.freebsd.org/changeset/base/260719 Log: Simplify wait/nowait code, eventually killing last remnant of historical mbuf(9) allocator flag. Sponsored by: Nginx, Inc. Modified: head/sys/kern/uipc_socket.c head/sys/sys/mbuf.h Modified: head/sys/kern/uipc_socket.c ============================================================================== --- head/sys/kern/uipc_socket.c Thu Jan 16 13:44:47 2014 (r260718) +++ head/sys/kern/uipc_socket.c Thu Jan 16 13:45:41 2014 (r260719) @@ -1723,28 +1723,27 @@ dontblock: moff += len; else { if (mp != NULL) { - int copy_flag; - - if (flags & MSG_DONTWAIT) - copy_flag = M_NOWAIT; - else - copy_flag = M_WAIT; - if (copy_flag == M_WAITOK) + if (flags & MSG_DONTWAIT) { + *mp = m_copym(m, 0, len, + M_NOWAIT); + if (*mp == NULL) { + /* + * m_copym() couldn't + * allocate an mbuf. + * Adjust uio_resid back + * (it was adjusted + * down by len bytes, + * which we didn't end + * up "copying" over). + */ + uio->uio_resid += len; + break; + } + } else { SOCKBUF_UNLOCK(&so->so_rcv); - *mp = m_copym(m, 0, len, copy_flag); - if (copy_flag == M_WAITOK) + *mp = m_copym(m, 0, len, + M_WAITOK); SOCKBUF_LOCK(&so->so_rcv); - if (*mp == NULL) { - /* - * m_copym() couldn't - * allocate an mbuf. Adjust - * uio_resid back (it was - * adjusted down by len - * bytes, which we didn't end - * up "copying" over). - */ - uio->uio_resid += len; - break; } } m->m_data += len; Modified: head/sys/sys/mbuf.h ============================================================================== --- head/sys/sys/mbuf.h Thu Jan 16 13:44:47 2014 (r260718) +++ head/sys/sys/mbuf.h Thu Jan 16 13:45:41 2014 (r260719) @@ -466,14 +466,6 @@ struct mbuf { a non-initialized mbuf */ /* - * Compatibility with historic mbuf allocator. - */ -#define MBTOM(how) (how) -#define M_DONTWAIT M_NOWAIT -#define M_TRYWAIT M_WAITOK -#define M_WAIT M_WAITOK - -/* * String names of mbuf-related UMA(9) and malloc(9) types. Exposed to * !_KERNEL so that monitoring tools can look up the zones with * libmemstat(3). From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 13:47:36 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BF33333E; Thu, 16 Jan 2014 13:47:36 +0000 (UTC) Received: from cell.glebius.int.ru (glebius.int.ru [81.19.69.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 464391E51; Thu, 16 Jan 2014 13:47:35 +0000 (UTC) Received: from cell.glebius.int.ru (localhost [127.0.0.1]) by cell.glebius.int.ru (8.14.7/8.14.7) with ESMTP id s0GDlXWb038838 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 16 Jan 2014 17:47:33 +0400 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.7/8.14.7/Submit) id s0GDlXmw038837; Thu, 16 Jan 2014 17:47:33 +0400 (MSK) (envelope-from glebius@FreeBSD.org) X-Authentication-Warning: cell.glebius.int.ru: glebius set sender to glebius@FreeBSD.org using -f Date: Thu, 16 Jan 2014 17:47:33 +0400 From: Gleb Smirnoff To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r260719 - in head/sys: kern sys Message-ID: <20140116134733.GB32734@FreeBSD.org> References: <201401161345.s0GDjgqM016546@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201401161345.s0GDjgqM016546@svn.freebsd.org> User-Agent: Mutt/1.5.22 (2013-10-16) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 13:47:36 -0000 On Thu, Jan 16, 2014 at 01:45:42PM +0000, Gleb Smirnoff wrote: T> Author: glebius T> Date: Thu Jan 16 13:45:41 2014 T> New Revision: 260719 T> URL: http://svnweb.freebsd.org/changeset/base/260719 T> T> Log: T> Simplify wait/nowait code, eventually killing last remnant of T> historical mbuf(9) allocator flag. T> T> Sponsored by: Nginx, Inc. T> T> Modified: T> head/sys/kern/uipc_socket.c T> head/sys/sys/mbuf.h The mbuf.h should have been committed separately: T> Modified: head/sys/sys/mbuf.h T> ============================================================================== T> --- head/sys/sys/mbuf.h Thu Jan 16 13:44:47 2014 (r260718) T> +++ head/sys/sys/mbuf.h Thu Jan 16 13:45:41 2014 (r260719) T> @@ -466,14 +466,6 @@ struct mbuf { T> a non-initialized mbuf */ T> T> /* T> - * Compatibility with historic mbuf allocator. T> - */ T> -#define MBTOM(how) (how) T> -#define M_DONTWAIT M_NOWAIT T> -#define M_TRYWAIT M_WAITOK T> -#define M_WAIT M_WAITOK T> - T> -/* T> * String names of mbuf-related UMA(9) and malloc(9) types. Exposed to T> * !_KERNEL so that monitoring tools can look up the zones with T> * libmemstat(3). ... with a comment: Put an end to uncontrollable breeding of historical flags. -- Totus tuus, Glebius. From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 13:58:56 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3436C876; Thu, 16 Jan 2014 13:58:56 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 208241F26; Thu, 16 Jan 2014 13:58:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GDwtVB020751; Thu, 16 Jan 2014 13:58:55 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GDwtIH020749; Thu, 16 Jan 2014 13:58:55 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201401161358.s0GDwtIH020749@svn.freebsd.org> From: Gleb Smirnoff Date: Thu, 16 Jan 2014 13:58:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260720 - head/share/man/man9 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 13:58:56 -0000 Author: glebius Date: Thu Jan 16 13:58:55 2014 New Revision: 260720 URL: http://svnweb.freebsd.org/changeset/base/260720 Log: Remove notes about historical mbuf(9) allocator flags from documentation. Sponsored by: Nginx, Inc. Modified: head/share/man/man9/malloc.9 head/share/man/man9/mbuf.9 Modified: head/share/man/man9/malloc.9 ============================================================================== --- head/share/man/man9/malloc.9 Thu Jan 16 13:45:41 2014 (r260719) +++ head/share/man/man9/malloc.9 Thu Jan 16 13:58:55 2014 (r260720) @@ -29,7 +29,7 @@ .\" $NetBSD: malloc.9,v 1.3 1996/11/11 00:05:11 lukem Exp $ .\" $FreeBSD$ .\" -.Dd November 15, 2012 +.Dd January 16, 2014 .Dt MALLOC 9 .Os .Sh NAME @@ -214,17 +214,6 @@ of two for requests up to the size of a For larger requests, one or more pages is allocated. While it should not be relied upon, this information may be useful for optimizing the efficiency of memory use. -.Pp -Programmers should be careful not to confuse the malloc flags -.Dv M_NOWAIT -and -.Dv M_WAITOK -with the -.Xr mbuf 9 -flags -.Dv M_DONTWAIT -and -.Dv M_WAIT . .Sh CONTEXT .Fn malloc , .Fn realloc Modified: head/share/man/man9/mbuf.9 ============================================================================== --- head/share/man/man9/mbuf.9 Thu Jan 16 13:45:41 2014 (r260719) +++ head/share/man/man9/mbuf.9 Thu Jan 16 13:58:55 2014 (r260720) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 20, 2013 +.Dd January 16, 2014 .Dt MBUF 9 .Os .\" @@ -381,17 +381,6 @@ A number of other functions and macros r have the same argument because they may at some point need to allocate new .Vt mbufs . -.Pp -Historical -.Vt mbuf -allocator (See -.Sx HISTORY -section) used allocation flags -.Dv M_WAIT -and -.Dv M_DONTWAIT . -These constants are kept for compatibility -and their use in new code is discouraged. .It Fn MGETHDR mbuf how type Allocate an .Vt mbuf From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:05:08 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6E89CA3B; Thu, 16 Jan 2014 14:05:08 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 58A941FB2; Thu, 16 Jan 2014 14:05:08 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GE58Y2024489; Thu, 16 Jan 2014 14:05:08 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GE56Vh024476; Thu, 16 Jan 2014 14:05:06 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161405.s0GE56Vh024476@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:05:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260721 - in stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:05:08 -0000 Author: avg Date: Thu Jan 16 14:05:05 2014 New Revision: 260721 URL: http://svnweb.freebsd.org/changeset/base/260721 Log: MFC r253821,254753,256259 MFV r253783: 3834 incremental replication of 'holey' file systems is slow MFV r254747:4047 panic from dbuf_free_range() from dmu_free_object() while doing zfs receive MFV r255257: 4082 zfs receive gets EFBIG from dmu_tx_hold_free() Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Thu Jan 16 13:58:55 2014 (r260720) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Thu Jan 16 14:05:05 2014 (r260721) @@ -26,6 +26,7 @@ #include #include +#include #include #include #include @@ -38,6 +39,12 @@ #include #include +/* + * Number of times that zfs_free_range() took the slow path while doing + * a zfs receive. A nonzero value indicates a potential performance problem. + */ +uint64_t zfs_free_range_recv_miss; + static void dbuf_destroy(dmu_buf_impl_t *db); static boolean_t dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_t *tx); static void dbuf_write(dbuf_dirty_record_t *dr, arc_buf_t *data, dmu_tx_t *tx); @@ -793,9 +800,12 @@ dbuf_unoverride(dbuf_dirty_record_t *dr) /* * Evict (if its unreferenced) or clear (if its referenced) any level-0 * data blocks in the free range, so that any future readers will find - * empty blocks. Also, if we happen accross any level-1 dbufs in the + * empty blocks. Also, if we happen across any level-1 dbufs in the * range that have not already been marked dirty, mark them dirty so * they stay in memory. + * + * This is a no-op if the dataset is in the middle of an incremental + * receive; see comment below for details. */ void dbuf_free_range(dnode_t *dn, uint64_t start, uint64_t end, dmu_tx_t *tx) @@ -811,7 +821,23 @@ dbuf_free_range(dnode_t *dn, uint64_t st last_l1 = end >> epbs; } dprintf_dnode(dn, "start=%llu end=%llu\n", start, end); + mutex_enter(&dn->dn_dbufs_mtx); + if (start >= dn->dn_unlisted_l0_blkid * dn->dn_datablksz) { + /* There can't be any dbufs in this range; no need to search. */ + mutex_exit(&dn->dn_dbufs_mtx); + return; + } else if (dmu_objset_is_receiving(dn->dn_objset)) { + /* + * If we are receiving, we expect there to be no dbufs in + * the range to be freed, because receive modifies each + * block at most once, and in offset order. If this is + * not the case, it can lead to performance problems, + * so note that we unexpectedly took the slow path. + */ + atomic_inc_64(&zfs_free_range_recv_miss); + } + for (db = list_head(&dn->dn_dbufs); db; db = db_next) { db_next = list_next(&dn->dn_dbufs, db); ASSERT(db->db_blkid != DMU_BONUS_BLKID); @@ -1699,6 +1725,9 @@ dbuf_create(dnode_t *dn, uint8_t level, return (odb); } list_insert_head(&dn->dn_dbufs, db); + if (db->db_level == 0 && db->db_blkid >= + dn->dn_unlisted_l0_blkid) + dn->dn_unlisted_l0_blkid = db->db_blkid + 1; db->db_state = DB_UNCACHED; mutex_exit(&dn->dn_dbufs_mtx); arc_space_consume(sizeof (dmu_buf_impl_t), ARC_SPACE_OTHER); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 13:58:55 2014 (r260720) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 14:05:05 2014 (r260721) @@ -573,98 +573,93 @@ dmu_prefetch(objset_t *os, uint64_t obje * the end so that the file gets shorter over time (if we crashes in the * middle, this will leave us in a better state). We find allocated file * data by simply searching the allocated level 1 indirects. + * + * On input, *start should be the first offset that does not need to be + * freed (e.g. "offset + length"). On return, *start will be the first + * offset that should be freed. */ static int -get_next_chunk(dnode_t *dn, uint64_t *start, uint64_t limit) +get_next_chunk(dnode_t *dn, uint64_t *start, uint64_t minimum) { - uint64_t len = *start - limit; - uint64_t blkcnt = 0; - uint64_t maxblks = DMU_MAX_ACCESS / (1ULL << (dn->dn_indblkshift + 1)); + uint64_t maxblks = DMU_MAX_ACCESS >> (dn->dn_indblkshift + 1); + /* bytes of data covered by a level-1 indirect block */ uint64_t iblkrange = dn->dn_datablksz * EPB(dn->dn_indblkshift, SPA_BLKPTRSHIFT); - ASSERT(limit <= *start); + ASSERT3U(minimum, <=, *start); - if (len <= iblkrange * maxblks) { - *start = limit; + if (*start - minimum <= iblkrange * maxblks) { + *start = minimum; return (0); } ASSERT(ISP2(iblkrange)); - while (*start > limit && blkcnt < maxblks) { + for (uint64_t blks = 0; *start > minimum && blks < maxblks; blks++) { int err; - /* find next allocated L1 indirect */ + /* + * dnode_next_offset(BACKWARDS) will find an allocated L1 + * indirect block at or before the input offset. We must + * decrement *start so that it is at the end of the region + * to search. + */ + (*start)--; err = dnode_next_offset(dn, DNODE_FIND_BACKWARDS, start, 2, 1, 0); - /* if there are no more, then we are done */ + /* if there are no indirect blocks before start, we are done */ if (err == ESRCH) { - *start = limit; - return (0); - } else if (err) { + *start = minimum; + break; + } else if (err != 0) { return (err); } - blkcnt += 1; - /* reset offset to end of "next" block back */ + /* set start to the beginning of this L1 indirect */ *start = P2ALIGN(*start, iblkrange); - if (*start <= limit) - *start = limit; - else - *start -= 1; } + if (*start < minimum) + *start = minimum; return (0); } static int dmu_free_long_range_impl(objset_t *os, dnode_t *dn, uint64_t offset, - uint64_t length, boolean_t free_dnode) + uint64_t length) { - dmu_tx_t *tx; - uint64_t object_size, start, end, len; - boolean_t trunc = (length == DMU_OBJECT_END); - int align, err; - - align = 1 << dn->dn_datablkshift; - ASSERT(align > 0); - object_size = align == 1 ? dn->dn_datablksz : - (dn->dn_maxblkid + 1) << dn->dn_datablkshift; - - end = offset + length; - if (trunc || end > object_size) - end = object_size; - if (end <= offset) + uint64_t object_size = (dn->dn_maxblkid + 1) * dn->dn_datablksz; + int err; + + if (offset >= object_size) return (0); - length = end - offset; - while (length) { - start = end; - /* assert(offset <= start) */ - err = get_next_chunk(dn, &start, offset); + if (length == DMU_OBJECT_END || offset + length > object_size) + length = object_size - offset; + + while (length != 0) { + uint64_t chunk_end, chunk_begin; + + chunk_end = chunk_begin = offset + length; + + /* move chunk_begin backwards to the beginning of this chunk */ + err = get_next_chunk(dn, &chunk_begin, offset); if (err) return (err); - len = trunc ? DMU_OBJECT_END : end - start; + ASSERT3U(chunk_begin, >=, offset); + ASSERT3U(chunk_begin, <=, chunk_end); - tx = dmu_tx_create(os); - dmu_tx_hold_free(tx, dn->dn_object, start, len); + dmu_tx_t *tx = dmu_tx_create(os); + dmu_tx_hold_free(tx, dn->dn_object, + chunk_begin, chunk_end - chunk_begin); err = dmu_tx_assign(tx, TXG_WAIT); if (err) { dmu_tx_abort(tx); return (err); } - - dnode_free_range(dn, start, trunc ? -1 : len, tx); - - if (start == 0 && free_dnode) { - ASSERT(trunc); - dnode_free(dn, tx); - } - - length -= end - start; - + dnode_free_range(dn, chunk_begin, chunk_end - chunk_begin, tx); dmu_tx_commit(tx); - end = start; + + length -= chunk_end - chunk_begin; } return (0); } @@ -679,38 +674,42 @@ dmu_free_long_range(objset_t *os, uint64 err = dnode_hold(os, object, FTAG, &dn); if (err != 0) return (err); - err = dmu_free_long_range_impl(os, dn, offset, length, FALSE); + err = dmu_free_long_range_impl(os, dn, offset, length); + + /* + * It is important to zero out the maxblkid when freeing the entire + * file, so that (a) subsequent calls to dmu_free_long_range_impl() + * will take the fast path, and (b) dnode_reallocate() can verify + * that the entire file has been freed. + */ + if (offset == 0 && length == DMU_OBJECT_END) + dn->dn_maxblkid = 0; + dnode_rele(dn, FTAG); return (err); } int -dmu_free_object(objset_t *os, uint64_t object) +dmu_free_long_object(objset_t *os, uint64_t object) { - dnode_t *dn; dmu_tx_t *tx; int err; - err = dnode_hold_impl(os, object, DNODE_MUST_BE_ALLOCATED, - FTAG, &dn); + err = dmu_free_long_range(os, object, 0, DMU_OBJECT_END); if (err != 0) return (err); - if (dn->dn_nlevels == 1) { - tx = dmu_tx_create(os); - dmu_tx_hold_bonus(tx, object); - dmu_tx_hold_free(tx, dn->dn_object, 0, DMU_OBJECT_END); - err = dmu_tx_assign(tx, TXG_WAIT); - if (err == 0) { - dnode_free_range(dn, 0, DMU_OBJECT_END, tx); - dnode_free(dn, tx); - dmu_tx_commit(tx); - } else { - dmu_tx_abort(tx); - } + + tx = dmu_tx_create(os); + dmu_tx_hold_bonus(tx, object); + dmu_tx_hold_free(tx, object, 0, DMU_OBJECT_END); + err = dmu_tx_assign(tx, TXG_WAIT); + if (err == 0) { + err = dmu_object_free(os, object, tx); + dmu_tx_commit(tx); } else { - err = dmu_free_long_range_impl(os, dn, 0, DMU_OBJECT_END, TRUE); + dmu_tx_abort(tx); } - dnode_rele(dn, FTAG); + return (err); } Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Thu Jan 16 13:58:55 2014 (r260720) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Thu Jan 16 14:05:05 2014 (r260721) @@ -96,6 +96,32 @@ dump_free(dmu_sendarg_t *dsp, uint64_t o { struct drr_free *drrf = &(dsp->dsa_drr->drr_u.drr_free); + /* + * When we receive a free record, dbuf_free_range() assumes + * that the receiving system doesn't have any dbufs in the range + * being freed. This is always true because there is a one-record + * constraint: we only send one WRITE record for any given + * object+offset. We know that the one-record constraint is + * true because we always send data in increasing order by + * object,offset. + * + * If the increasing-order constraint ever changes, we should find + * another way to assert that the one-record constraint is still + * satisfied. + */ + ASSERT(object > dsp->dsa_last_data_object || + (object == dsp->dsa_last_data_object && + offset > dsp->dsa_last_data_offset)); + + /* + * If we are doing a non-incremental send, then there can't + * be any data in the dataset we're receiving into. Therefore + * a free record would simply be a no-op. Save space by not + * sending it to begin with. + */ + if (!dsp->dsa_incremental) + return (0); + if (length != -1ULL && offset + length < offset) length = -1ULL; @@ -162,6 +188,15 @@ dump_data(dmu_sendarg_t *dsp, dmu_object { struct drr_write *drrw = &(dsp->dsa_drr->drr_u.drr_write); + /* + * We send data in increasing object, offset order. + * See comment in dump_free() for details. + */ + ASSERT(object > dsp->dsa_last_data_object || + (object == dsp->dsa_last_data_object && + offset > dsp->dsa_last_data_offset)); + dsp->dsa_last_data_object = object; + dsp->dsa_last_data_offset = offset + blksz - 1; /* * If there is any kind of pending aggregation (currently either @@ -229,6 +264,10 @@ dump_freeobjects(dmu_sendarg_t *dsp, uin { struct drr_freeobjects *drrfo = &(dsp->dsa_drr->drr_u.drr_freeobjects); + /* See comment in dump_free(). */ + if (!dsp->dsa_incremental) + return (0); + /* * If there is a pending op, but it's not PENDING_FREEOBJECTS, * push it out, since free block aggregation can only be done for @@ -305,9 +344,9 @@ dump_dnode(dmu_sendarg_t *dsp, uint64_t if (dump_bytes(dsp, DN_BONUS(dnp), P2ROUNDUP(dnp->dn_bonuslen, 8)) != 0) return (SET_ERROR(EINTR)); - /* free anything past the end of the file */ + /* Free anything past the end of the file. */ if (dump_free(dsp, object, (dnp->dn_maxblkid + 1) * - (dnp->dn_datablkszsec << SPA_MINBLOCKSHIFT), -1ULL)) + (dnp->dn_datablkszsec << SPA_MINBLOCKSHIFT), -1ULL) != 0) return (SET_ERROR(EINTR)); if (dsp->dsa_err != 0) return (SET_ERROR(EINTR)); @@ -495,6 +534,7 @@ dmu_send_impl(void *tag, dsl_pool_t *dp, dsp->dsa_toguid = ds->ds_phys->ds_guid; ZIO_SET_CHECKSUM(&dsp->dsa_zc, 0, 0, 0, 0); dsp->dsa_pending_op = PENDING_NONE; + dsp->dsa_incremental = (fromtxg != 0); mutex_enter(&ds->ds_sendstream_lock); list_insert_head(&ds->ds_sendstreams, dsp); @@ -1238,7 +1278,7 @@ restore_freeobjects(struct restorearg *r if (dmu_object_info(os, obj, NULL) != 0) continue; - err = dmu_free_object(os, obj); + err = dmu_free_long_object(os, obj); if (err != 0) return (err); } @@ -1764,3 +1804,13 @@ dmu_recv_end(dmu_recv_cookie_t *drc, voi else return (dmu_recv_existing_end(drc)); } + +/* + * Return TRUE if this objset is currently being received into. + */ +boolean_t +dmu_objset_is_receiving(objset_t *os) +{ + return (os->os_dsl_dataset != NULL && + os->os_dsl_dataset->ds_owner == dmu_recv_tag); +} Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Thu Jan 16 13:58:55 2014 (r260720) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Thu Jan 16 14:05:05 2014 (r260721) @@ -587,8 +587,7 @@ dmu_tx_hold_free(dmu_tx_t *tx, uint64_t { dmu_tx_hold_t *txh; dnode_t *dn; - uint64_t start, end, i; - int err, shift; + int err; zio_t *zio; ASSERT(tx->tx_txg == 0); @@ -599,34 +598,49 @@ dmu_tx_hold_free(dmu_tx_t *tx, uint64_t return; dn = txh->txh_dnode; - /* first block */ - if (off != 0) - dmu_tx_count_write(txh, off, 1); - /* last block */ - if (len != DMU_OBJECT_END) - dmu_tx_count_write(txh, off+len, 1); - - dmu_tx_count_dnode(txh); - if (off >= (dn->dn_maxblkid+1) * dn->dn_datablksz) return; if (len == DMU_OBJECT_END) len = (dn->dn_maxblkid+1) * dn->dn_datablksz - off; + dmu_tx_count_dnode(txh); + /* - * For i/o error checking, read the first and last level-0 - * blocks, and all the level-1 blocks. The above count_write's - * have already taken care of the level-0 blocks. + * For i/o error checking, we read the first and last level-0 + * blocks if they are not aligned, and all the level-1 blocks. + * + * Note: dbuf_free_range() assumes that we have not instantiated + * any level-0 dbufs that will be completely freed. Therefore we must + * exercise care to not read or count the first and last blocks + * if they are blocksize-aligned. + */ + if (dn->dn_datablkshift == 0) { + if (off != 0 || len < dn->dn_datablksz) + dmu_tx_count_write(txh, 0, dn->dn_datablksz); + } else { + /* first block will be modified if it is not aligned */ + if (!IS_P2ALIGNED(off, 1 << dn->dn_datablkshift)) + dmu_tx_count_write(txh, off, 1); + /* last block will be modified if it is not aligned */ + if (!IS_P2ALIGNED(off + len, 1 << dn->dn_datablkshift)) + dmu_tx_count_write(txh, off+len, 1); + } + + /* + * Check level-1 blocks. */ if (dn->dn_nlevels > 1) { - shift = dn->dn_datablkshift + dn->dn_indblkshift - + int shift = dn->dn_datablkshift + dn->dn_indblkshift - SPA_BLKPTRSHIFT; - start = off >> shift; - end = dn->dn_datablkshift ? ((off+len) >> shift) : 0; + uint64_t start = off >> shift; + uint64_t end = (off + len) >> shift; + + ASSERT(dn->dn_datablkshift != 0); + ASSERT(dn->dn_indblkshift != 0); zio = zio_root(tx->tx_pool->dp_spa, NULL, NULL, ZIO_FLAG_CANFAIL); - for (i = start; i <= end; i++) { + for (uint64_t i = start; i <= end; i++) { uint64_t ibyte = i << shift; err = dnode_next_offset(dn, 0, &ibyte, 2, 1, 0); i = ibyte >> shift; Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c Thu Jan 16 13:58:55 2014 (r260720) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c Thu Jan 16 14:05:05 2014 (r260721) @@ -117,6 +117,7 @@ dnode_cons(void *arg, void *unused, int dn->dn_id_flags = 0; dn->dn_dbufs_count = 0; + dn->dn_unlisted_l0_blkid = 0; list_create(&dn->dn_dbufs, sizeof (dmu_buf_impl_t), offsetof(dmu_buf_impl_t, db_link)); @@ -170,6 +171,7 @@ dnode_dest(void *arg, void *unused) ASSERT0(dn->dn_id_flags); ASSERT0(dn->dn_dbufs_count); + ASSERT0(dn->dn_unlisted_l0_blkid); list_destroy(&dn->dn_dbufs); } @@ -475,6 +477,7 @@ dnode_destroy(dnode_t *dn) dn->dn_newuid = 0; dn->dn_newgid = 0; dn->dn_id_flags = 0; + dn->dn_unlisted_l0_blkid = 0; dmu_zfetch_rele(&dn->dn_zfetch); kmem_cache_free(dnode_cache, dn); @@ -705,6 +708,7 @@ dnode_move_impl(dnode_t *odn, dnode_t *n ASSERT(list_is_empty(&ndn->dn_dbufs)); list_move_tail(&ndn->dn_dbufs, &odn->dn_dbufs); ndn->dn_dbufs_count = odn->dn_dbufs_count; + ndn->dn_unlisted_l0_blkid = odn->dn_unlisted_l0_blkid; ndn->dn_bonus = odn->dn_bonus; ndn->dn_have_spill = odn->dn_have_spill; ndn->dn_zio = odn->dn_zio; @@ -739,6 +743,7 @@ dnode_move_impl(dnode_t *odn, dnode_t *n list_create(&odn->dn_dbufs, sizeof (dmu_buf_impl_t), offsetof(dmu_buf_impl_t, db_link)); odn->dn_dbufs_count = 0; + odn->dn_unlisted_l0_blkid = 0; odn->dn_bonus = NULL; odn->dn_zfetch.zf_dnode = NULL; @@ -1528,7 +1533,7 @@ dnode_free_range(dnode_t *dn, uint64_t o blkshift = dn->dn_datablkshift; epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT; - if (len == -1ULL) { + if (len == DMU_OBJECT_END) { len = UINT64_MAX - off; trunc = TRUE; } Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c Thu Jan 16 13:58:55 2014 (r260720) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c Thu Jan 16 14:05:05 2014 (r260721) @@ -899,7 +899,7 @@ dsl_destroy_head(const char *name) for (uint64_t obj = 0; error == 0; error = dmu_object_next(os, &obj, FALSE, prev_snap_txg)) - (void) dmu_free_object(os, obj); + (void) dmu_free_long_object(os, obj); /* sync out all frees */ txg_wait_synced(dmu_objset_pool(os), 0); dmu_objset_disown(os, FTAG); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 13:58:55 2014 (r260720) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 14:05:05 2014 (r260721) @@ -21,7 +21,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. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. */ @@ -583,7 +583,7 @@ int dmu_free_range(objset_t *os, uint64_ uint64_t size, dmu_tx_t *tx); int dmu_free_long_range(objset_t *os, uint64_t object, uint64_t offset, uint64_t size); -int dmu_free_object(objset_t *os, uint64_t object); +int dmu_free_long_object(objset_t *os, uint64_t object); /* * Convenience functions. Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h Thu Jan 16 13:58:55 2014 (r260720) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h Thu Jan 16 14:05:05 2014 (r260721) @@ -21,8 +21,11 @@ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. + */ +/* * Copyright (c) 2012, Joyent, Inc. All rights reserved. * Copyright (c) 2012, Martin Matuska . All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ #ifndef _SYS_DMU_IMPL_H @@ -293,6 +296,9 @@ typedef struct dmu_sendarg { uint64_t dsa_toguid; int dsa_err; dmu_pendop_t dsa_pending_op; + boolean_t dsa_incremental; + uint64_t dsa_last_data_object; + uint64_t dsa_last_data_offset; } dmu_sendarg_t; Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h Thu Jan 16 13:58:55 2014 (r260720) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h Thu Jan 16 14:05:05 2014 (r260721) @@ -21,7 +21,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. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. */ @@ -74,5 +74,6 @@ int dmu_recv_stream(dmu_recv_cookie_t *d #endif int cleanup_fd, uint64_t *action_handlep); int dmu_recv_end(dmu_recv_cookie_t *drc, void *owner); +boolean_t dmu_objset_is_receiving(objset_t *os); #endif /* _DMU_SEND_H */ Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h Thu Jan 16 13:58:55 2014 (r260720) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h Thu Jan 16 14:05:05 2014 (r260721) @@ -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. */ #ifndef _SYS_DNODE_H @@ -188,6 +188,8 @@ typedef struct dnode { /* protected by dn_dbufs_mtx; declared here to fill 32-bit hole */ uint32_t dn_dbufs_count; /* count of dn_dbufs */ + /* There are no level-0 blocks of this blkid or higher in dn_dbufs */ + uint64_t dn_unlisted_l0_blkid; /* protected by os_lock: */ list_node_t dn_dirty_link[TXG_SIZE]; /* next on dataset's dirty */ From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:08:14 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5F6F6CB5; Thu, 16 Jan 2014 14:08:14 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4981D1FE9; Thu, 16 Jan 2014 14:08:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GE8Ece024960; Thu, 16 Jan 2014 14:08:14 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GE8C9m024949; Thu, 16 Jan 2014 14:08:12 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161408.s0GE8C9m024949@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:08:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260722 - in stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:08:14 -0000 Author: avg Date: Thu Jan 16 14:08:11 2014 New Revision: 260722 URL: http://svnweb.freebsd.org/changeset/base/260722 Log: MFC r253821,254753,256259 MFV r253783: 3834 incremental replication of 'holey' file systems is slow MFV r254747:4047 panic from dbuf_free_range() from dmu_free_object() while doing zfs receive MFV r255257: 4082 zfs receive gets EFBIG from dmu_tx_hold_free() Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Thu Jan 16 14:05:05 2014 (r260721) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Thu Jan 16 14:08:11 2014 (r260722) @@ -27,6 +27,7 @@ #include #include +#include #include #include #include @@ -39,6 +40,12 @@ #include #include +/* + * Number of times that zfs_free_range() took the slow path while doing + * a zfs receive. A nonzero value indicates a potential performance problem. + */ +uint64_t zfs_free_range_recv_miss; + static void dbuf_destroy(dmu_buf_impl_t *db); static boolean_t dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_t *tx); static void dbuf_write(dbuf_dirty_record_t *dr, arc_buf_t *data, dmu_tx_t *tx); @@ -796,9 +803,12 @@ dbuf_unoverride(dbuf_dirty_record_t *dr) /* * Evict (if its unreferenced) or clear (if its referenced) any level-0 * data blocks in the free range, so that any future readers will find - * empty blocks. Also, if we happen accross any level-1 dbufs in the + * empty blocks. Also, if we happen across any level-1 dbufs in the * range that have not already been marked dirty, mark them dirty so * they stay in memory. + * + * This is a no-op if the dataset is in the middle of an incremental + * receive; see comment below for details. */ void dbuf_free_range(dnode_t *dn, uint64_t start, uint64_t end, dmu_tx_t *tx) @@ -814,7 +824,23 @@ dbuf_free_range(dnode_t *dn, uint64_t st last_l1 = end >> epbs; } dprintf_dnode(dn, "start=%llu end=%llu\n", start, end); + mutex_enter(&dn->dn_dbufs_mtx); + if (start >= dn->dn_unlisted_l0_blkid * dn->dn_datablksz) { + /* There can't be any dbufs in this range; no need to search. */ + mutex_exit(&dn->dn_dbufs_mtx); + return; + } else if (dmu_objset_is_receiving(dn->dn_objset)) { + /* + * If we are receiving, we expect there to be no dbufs in + * the range to be freed, because receive modifies each + * block at most once, and in offset order. If this is + * not the case, it can lead to performance problems, + * so note that we unexpectedly took the slow path. + */ + atomic_inc_64(&zfs_free_range_recv_miss); + } + for (db = list_head(&dn->dn_dbufs); db; db = db_next) { db_next = list_next(&dn->dn_dbufs, db); ASSERT(db->db_blkid != DMU_BONUS_BLKID); @@ -1702,6 +1728,9 @@ dbuf_create(dnode_t *dn, uint8_t level, return (odb); } list_insert_head(&dn->dn_dbufs, db); + if (db->db_level == 0 && db->db_blkid >= + dn->dn_unlisted_l0_blkid) + dn->dn_unlisted_l0_blkid = db->db_blkid + 1; db->db_state = DB_UNCACHED; mutex_exit(&dn->dn_dbufs_mtx); arc_space_consume(sizeof (dmu_buf_impl_t), ARC_SPACE_OTHER); Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 14:05:05 2014 (r260721) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 14:08:11 2014 (r260722) @@ -575,98 +575,93 @@ dmu_prefetch(objset_t *os, uint64_t obje * the end so that the file gets shorter over time (if we crashes in the * middle, this will leave us in a better state). We find allocated file * data by simply searching the allocated level 1 indirects. + * + * On input, *start should be the first offset that does not need to be + * freed (e.g. "offset + length"). On return, *start will be the first + * offset that should be freed. */ static int -get_next_chunk(dnode_t *dn, uint64_t *start, uint64_t limit) +get_next_chunk(dnode_t *dn, uint64_t *start, uint64_t minimum) { - uint64_t len = *start - limit; - uint64_t blkcnt = 0; - uint64_t maxblks = DMU_MAX_ACCESS / (1ULL << (dn->dn_indblkshift + 1)); + uint64_t maxblks = DMU_MAX_ACCESS >> (dn->dn_indblkshift + 1); + /* bytes of data covered by a level-1 indirect block */ uint64_t iblkrange = dn->dn_datablksz * EPB(dn->dn_indblkshift, SPA_BLKPTRSHIFT); - ASSERT(limit <= *start); + ASSERT3U(minimum, <=, *start); - if (len <= iblkrange * maxblks) { - *start = limit; + if (*start - minimum <= iblkrange * maxblks) { + *start = minimum; return (0); } ASSERT(ISP2(iblkrange)); - while (*start > limit && blkcnt < maxblks) { + for (uint64_t blks = 0; *start > minimum && blks < maxblks; blks++) { int err; - /* find next allocated L1 indirect */ + /* + * dnode_next_offset(BACKWARDS) will find an allocated L1 + * indirect block at or before the input offset. We must + * decrement *start so that it is at the end of the region + * to search. + */ + (*start)--; err = dnode_next_offset(dn, DNODE_FIND_BACKWARDS, start, 2, 1, 0); - /* if there are no more, then we are done */ + /* if there are no indirect blocks before start, we are done */ if (err == ESRCH) { - *start = limit; - return (0); - } else if (err) { + *start = minimum; + break; + } else if (err != 0) { return (err); } - blkcnt += 1; - /* reset offset to end of "next" block back */ + /* set start to the beginning of this L1 indirect */ *start = P2ALIGN(*start, iblkrange); - if (*start <= limit) - *start = limit; - else - *start -= 1; } + if (*start < minimum) + *start = minimum; return (0); } static int dmu_free_long_range_impl(objset_t *os, dnode_t *dn, uint64_t offset, - uint64_t length, boolean_t free_dnode) + uint64_t length) { - dmu_tx_t *tx; - uint64_t object_size, start, end, len; - boolean_t trunc = (length == DMU_OBJECT_END); - int align, err; - - align = 1 << dn->dn_datablkshift; - ASSERT(align > 0); - object_size = align == 1 ? dn->dn_datablksz : - (dn->dn_maxblkid + 1) << dn->dn_datablkshift; - - end = offset + length; - if (trunc || end > object_size) - end = object_size; - if (end <= offset) + uint64_t object_size = (dn->dn_maxblkid + 1) * dn->dn_datablksz; + int err; + + if (offset >= object_size) return (0); - length = end - offset; - while (length) { - start = end; - /* assert(offset <= start) */ - err = get_next_chunk(dn, &start, offset); + if (length == DMU_OBJECT_END || offset + length > object_size) + length = object_size - offset; + + while (length != 0) { + uint64_t chunk_end, chunk_begin; + + chunk_end = chunk_begin = offset + length; + + /* move chunk_begin backwards to the beginning of this chunk */ + err = get_next_chunk(dn, &chunk_begin, offset); if (err) return (err); - len = trunc ? DMU_OBJECT_END : end - start; + ASSERT3U(chunk_begin, >=, offset); + ASSERT3U(chunk_begin, <=, chunk_end); - tx = dmu_tx_create(os); - dmu_tx_hold_free(tx, dn->dn_object, start, len); + dmu_tx_t *tx = dmu_tx_create(os); + dmu_tx_hold_free(tx, dn->dn_object, + chunk_begin, chunk_end - chunk_begin); err = dmu_tx_assign(tx, TXG_WAIT); if (err) { dmu_tx_abort(tx); return (err); } - - dnode_free_range(dn, start, trunc ? -1 : len, tx); - - if (start == 0 && free_dnode) { - ASSERT(trunc); - dnode_free(dn, tx); - } - - length -= end - start; - + dnode_free_range(dn, chunk_begin, chunk_end - chunk_begin, tx); dmu_tx_commit(tx); - end = start; + + length -= chunk_end - chunk_begin; } return (0); } @@ -681,38 +676,42 @@ dmu_free_long_range(objset_t *os, uint64 err = dnode_hold(os, object, FTAG, &dn); if (err != 0) return (err); - err = dmu_free_long_range_impl(os, dn, offset, length, FALSE); + err = dmu_free_long_range_impl(os, dn, offset, length); + + /* + * It is important to zero out the maxblkid when freeing the entire + * file, so that (a) subsequent calls to dmu_free_long_range_impl() + * will take the fast path, and (b) dnode_reallocate() can verify + * that the entire file has been freed. + */ + if (offset == 0 && length == DMU_OBJECT_END) + dn->dn_maxblkid = 0; + dnode_rele(dn, FTAG); return (err); } int -dmu_free_object(objset_t *os, uint64_t object) +dmu_free_long_object(objset_t *os, uint64_t object) { - dnode_t *dn; dmu_tx_t *tx; int err; - err = dnode_hold_impl(os, object, DNODE_MUST_BE_ALLOCATED, - FTAG, &dn); + err = dmu_free_long_range(os, object, 0, DMU_OBJECT_END); if (err != 0) return (err); - if (dn->dn_nlevels == 1) { - tx = dmu_tx_create(os); - dmu_tx_hold_bonus(tx, object); - dmu_tx_hold_free(tx, dn->dn_object, 0, DMU_OBJECT_END); - err = dmu_tx_assign(tx, TXG_WAIT); - if (err == 0) { - dnode_free_range(dn, 0, DMU_OBJECT_END, tx); - dnode_free(dn, tx); - dmu_tx_commit(tx); - } else { - dmu_tx_abort(tx); - } + + tx = dmu_tx_create(os); + dmu_tx_hold_bonus(tx, object); + dmu_tx_hold_free(tx, object, 0, DMU_OBJECT_END); + err = dmu_tx_assign(tx, TXG_WAIT); + if (err == 0) { + err = dmu_object_free(os, object, tx); + dmu_tx_commit(tx); } else { - err = dmu_free_long_range_impl(os, dn, 0, DMU_OBJECT_END, TRUE); + dmu_tx_abort(tx); } - dnode_rele(dn, FTAG); + return (err); } Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Thu Jan 16 14:05:05 2014 (r260721) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Thu Jan 16 14:08:11 2014 (r260722) @@ -96,6 +96,32 @@ dump_free(dmu_sendarg_t *dsp, uint64_t o { struct drr_free *drrf = &(dsp->dsa_drr->drr_u.drr_free); + /* + * When we receive a free record, dbuf_free_range() assumes + * that the receiving system doesn't have any dbufs in the range + * being freed. This is always true because there is a one-record + * constraint: we only send one WRITE record for any given + * object+offset. We know that the one-record constraint is + * true because we always send data in increasing order by + * object,offset. + * + * If the increasing-order constraint ever changes, we should find + * another way to assert that the one-record constraint is still + * satisfied. + */ + ASSERT(object > dsp->dsa_last_data_object || + (object == dsp->dsa_last_data_object && + offset > dsp->dsa_last_data_offset)); + + /* + * If we are doing a non-incremental send, then there can't + * be any data in the dataset we're receiving into. Therefore + * a free record would simply be a no-op. Save space by not + * sending it to begin with. + */ + if (!dsp->dsa_incremental) + return (0); + if (length != -1ULL && offset + length < offset) length = -1ULL; @@ -162,6 +188,15 @@ dump_data(dmu_sendarg_t *dsp, dmu_object { struct drr_write *drrw = &(dsp->dsa_drr->drr_u.drr_write); + /* + * We send data in increasing object, offset order. + * See comment in dump_free() for details. + */ + ASSERT(object > dsp->dsa_last_data_object || + (object == dsp->dsa_last_data_object && + offset > dsp->dsa_last_data_offset)); + dsp->dsa_last_data_object = object; + dsp->dsa_last_data_offset = offset + blksz - 1; /* * If there is any kind of pending aggregation (currently either @@ -229,6 +264,10 @@ dump_freeobjects(dmu_sendarg_t *dsp, uin { struct drr_freeobjects *drrfo = &(dsp->dsa_drr->drr_u.drr_freeobjects); + /* See comment in dump_free(). */ + if (!dsp->dsa_incremental) + return (0); + /* * If there is a pending op, but it's not PENDING_FREEOBJECTS, * push it out, since free block aggregation can only be done for @@ -305,9 +344,9 @@ dump_dnode(dmu_sendarg_t *dsp, uint64_t if (dump_bytes(dsp, DN_BONUS(dnp), P2ROUNDUP(dnp->dn_bonuslen, 8)) != 0) return (SET_ERROR(EINTR)); - /* free anything past the end of the file */ + /* Free anything past the end of the file. */ if (dump_free(dsp, object, (dnp->dn_maxblkid + 1) * - (dnp->dn_datablkszsec << SPA_MINBLOCKSHIFT), -1ULL)) + (dnp->dn_datablkszsec << SPA_MINBLOCKSHIFT), -1ULL) != 0) return (SET_ERROR(EINTR)); if (dsp->dsa_err != 0) return (SET_ERROR(EINTR)); @@ -495,6 +534,7 @@ dmu_send_impl(void *tag, dsl_pool_t *dp, dsp->dsa_toguid = ds->ds_phys->ds_guid; ZIO_SET_CHECKSUM(&dsp->dsa_zc, 0, 0, 0, 0); dsp->dsa_pending_op = PENDING_NONE; + dsp->dsa_incremental = (fromtxg != 0); mutex_enter(&ds->ds_sendstream_lock); list_insert_head(&ds->ds_sendstreams, dsp); @@ -1238,7 +1278,7 @@ restore_freeobjects(struct restorearg *r if (dmu_object_info(os, obj, NULL) != 0) continue; - err = dmu_free_object(os, obj); + err = dmu_free_long_object(os, obj); if (err != 0) return (err); } @@ -1764,3 +1804,13 @@ dmu_recv_end(dmu_recv_cookie_t *drc, voi else return (dmu_recv_existing_end(drc)); } + +/* + * Return TRUE if this objset is currently being received into. + */ +boolean_t +dmu_objset_is_receiving(objset_t *os) +{ + return (os->os_dsl_dataset != NULL && + os->os_dsl_dataset->ds_owner == dmu_recv_tag); +} Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Thu Jan 16 14:05:05 2014 (r260721) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Thu Jan 16 14:08:11 2014 (r260722) @@ -587,8 +587,7 @@ dmu_tx_hold_free(dmu_tx_t *tx, uint64_t { dmu_tx_hold_t *txh; dnode_t *dn; - uint64_t start, end, i; - int err, shift; + int err; zio_t *zio; ASSERT(tx->tx_txg == 0); @@ -599,34 +598,49 @@ dmu_tx_hold_free(dmu_tx_t *tx, uint64_t return; dn = txh->txh_dnode; - /* first block */ - if (off != 0) - dmu_tx_count_write(txh, off, 1); - /* last block */ - if (len != DMU_OBJECT_END) - dmu_tx_count_write(txh, off+len, 1); - - dmu_tx_count_dnode(txh); - if (off >= (dn->dn_maxblkid+1) * dn->dn_datablksz) return; if (len == DMU_OBJECT_END) len = (dn->dn_maxblkid+1) * dn->dn_datablksz - off; + dmu_tx_count_dnode(txh); + /* - * For i/o error checking, read the first and last level-0 - * blocks, and all the level-1 blocks. The above count_write's - * have already taken care of the level-0 blocks. + * For i/o error checking, we read the first and last level-0 + * blocks if they are not aligned, and all the level-1 blocks. + * + * Note: dbuf_free_range() assumes that we have not instantiated + * any level-0 dbufs that will be completely freed. Therefore we must + * exercise care to not read or count the first and last blocks + * if they are blocksize-aligned. + */ + if (dn->dn_datablkshift == 0) { + if (off != 0 || len < dn->dn_datablksz) + dmu_tx_count_write(txh, 0, dn->dn_datablksz); + } else { + /* first block will be modified if it is not aligned */ + if (!IS_P2ALIGNED(off, 1 << dn->dn_datablkshift)) + dmu_tx_count_write(txh, off, 1); + /* last block will be modified if it is not aligned */ + if (!IS_P2ALIGNED(off + len, 1 << dn->dn_datablkshift)) + dmu_tx_count_write(txh, off+len, 1); + } + + /* + * Check level-1 blocks. */ if (dn->dn_nlevels > 1) { - shift = dn->dn_datablkshift + dn->dn_indblkshift - + int shift = dn->dn_datablkshift + dn->dn_indblkshift - SPA_BLKPTRSHIFT; - start = off >> shift; - end = dn->dn_datablkshift ? ((off+len) >> shift) : 0; + uint64_t start = off >> shift; + uint64_t end = (off + len) >> shift; + + ASSERT(dn->dn_datablkshift != 0); + ASSERT(dn->dn_indblkshift != 0); zio = zio_root(tx->tx_pool->dp_spa, NULL, NULL, ZIO_FLAG_CANFAIL); - for (i = start; i <= end; i++) { + for (uint64_t i = start; i <= end; i++) { uint64_t ibyte = i << shift; err = dnode_next_offset(dn, 0, &ibyte, 2, 1, 0); i = ibyte >> shift; Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c Thu Jan 16 14:05:05 2014 (r260721) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c Thu Jan 16 14:08:11 2014 (r260722) @@ -117,6 +117,7 @@ dnode_cons(void *arg, void *unused, int dn->dn_id_flags = 0; dn->dn_dbufs_count = 0; + dn->dn_unlisted_l0_blkid = 0; list_create(&dn->dn_dbufs, sizeof (dmu_buf_impl_t), offsetof(dmu_buf_impl_t, db_link)); @@ -170,6 +171,7 @@ dnode_dest(void *arg, void *unused) ASSERT0(dn->dn_id_flags); ASSERT0(dn->dn_dbufs_count); + ASSERT0(dn->dn_unlisted_l0_blkid); list_destroy(&dn->dn_dbufs); } @@ -475,6 +477,7 @@ dnode_destroy(dnode_t *dn) dn->dn_newuid = 0; dn->dn_newgid = 0; dn->dn_id_flags = 0; + dn->dn_unlisted_l0_blkid = 0; dmu_zfetch_rele(&dn->dn_zfetch); kmem_cache_free(dnode_cache, dn); @@ -705,6 +708,7 @@ dnode_move_impl(dnode_t *odn, dnode_t *n ASSERT(list_is_empty(&ndn->dn_dbufs)); list_move_tail(&ndn->dn_dbufs, &odn->dn_dbufs); ndn->dn_dbufs_count = odn->dn_dbufs_count; + ndn->dn_unlisted_l0_blkid = odn->dn_unlisted_l0_blkid; ndn->dn_bonus = odn->dn_bonus; ndn->dn_have_spill = odn->dn_have_spill; ndn->dn_zio = odn->dn_zio; @@ -739,6 +743,7 @@ dnode_move_impl(dnode_t *odn, dnode_t *n list_create(&odn->dn_dbufs, sizeof (dmu_buf_impl_t), offsetof(dmu_buf_impl_t, db_link)); odn->dn_dbufs_count = 0; + odn->dn_unlisted_l0_blkid = 0; odn->dn_bonus = NULL; odn->dn_zfetch.zf_dnode = NULL; @@ -1528,7 +1533,7 @@ dnode_free_range(dnode_t *dn, uint64_t o blkshift = dn->dn_datablkshift; epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT; - if (len == -1ULL) { + if (len == DMU_OBJECT_END) { len = UINT64_MAX - off; trunc = TRUE; } Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c Thu Jan 16 14:05:05 2014 (r260721) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c Thu Jan 16 14:08:11 2014 (r260722) @@ -899,7 +899,7 @@ dsl_destroy_head(const char *name) for (uint64_t obj = 0; error == 0; error = dmu_object_next(os, &obj, FALSE, prev_snap_txg)) - (void) dmu_free_object(os, obj); + (void) dmu_free_long_object(os, obj); /* sync out all frees */ txg_wait_synced(dmu_objset_pool(os), 0); dmu_objset_disown(os, FTAG); Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 14:05:05 2014 (r260721) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 14:08:11 2014 (r260722) @@ -21,7 +21,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. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. */ @@ -583,7 +583,7 @@ int dmu_free_range(objset_t *os, uint64_ uint64_t size, dmu_tx_t *tx); int dmu_free_long_range(objset_t *os, uint64_t object, uint64_t offset, uint64_t size); -int dmu_free_object(objset_t *os, uint64_t object); +int dmu_free_long_object(objset_t *os, uint64_t object); /* * Convenience functions. Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h Thu Jan 16 14:05:05 2014 (r260721) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h Thu Jan 16 14:08:11 2014 (r260722) @@ -21,8 +21,11 @@ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. + */ +/* * Copyright (c) 2012, Joyent, Inc. All rights reserved. * Copyright (c) 2012, Martin Matuska . All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ #ifndef _SYS_DMU_IMPL_H @@ -293,6 +296,9 @@ typedef struct dmu_sendarg { uint64_t dsa_toguid; int dsa_err; dmu_pendop_t dsa_pending_op; + boolean_t dsa_incremental; + uint64_t dsa_last_data_object; + uint64_t dsa_last_data_offset; } dmu_sendarg_t; Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h Thu Jan 16 14:05:05 2014 (r260721) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h Thu Jan 16 14:08:11 2014 (r260722) @@ -21,7 +21,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. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. */ @@ -74,5 +74,6 @@ int dmu_recv_stream(dmu_recv_cookie_t *d #endif int cleanup_fd, uint64_t *action_handlep); int dmu_recv_end(dmu_recv_cookie_t *drc, void *owner); +boolean_t dmu_objset_is_receiving(objset_t *os); #endif /* _DMU_SEND_H */ Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h Thu Jan 16 14:05:05 2014 (r260721) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h Thu Jan 16 14:08:11 2014 (r260722) @@ -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. */ #ifndef _SYS_DNODE_H @@ -188,6 +188,8 @@ typedef struct dnode { /* protected by dn_dbufs_mtx; declared here to fill 32-bit hole */ uint32_t dn_dbufs_count; /* count of dn_dbufs */ + /* There are no level-0 blocks of this blkid or higher in dn_dbufs */ + uint64_t dn_unlisted_l0_blkid; /* protected by os_lock: */ list_node_t dn_dirty_link[TXG_SIZE]; /* next on dataset's dirty */ From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:11:46 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 109E5EA0; Thu, 16 Jan 2014 14:11:46 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id EF40210A7; Thu, 16 Jan 2014 14:11:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEBjE4028157; Thu, 16 Jan 2014 14:11:45 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEBjs5028156; Thu, 16 Jan 2014 14:11:45 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161411.s0GEBjs5028156@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:11:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260723 - stable/10/sys/kern X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:11:46 -0000 Author: avg Date: Thu Jan 16 14:11:45 2014 New Revision: 260723 URL: http://svnweb.freebsd.org/changeset/base/260723 Log: MFC r258354: taskqueue_cancel: garbage collect a write-only variable Modified: stable/10/sys/kern/subr_taskqueue.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/kern/subr_taskqueue.c ============================================================================== --- stable/10/sys/kern/subr_taskqueue.c Thu Jan 16 14:08:11 2014 (r260722) +++ stable/10/sys/kern/subr_taskqueue.c Thu Jan 16 14:11:45 2014 (r260723) @@ -377,11 +377,9 @@ taskqueue_cancel_locked(struct taskqueue int taskqueue_cancel(struct taskqueue *queue, struct task *task, u_int *pendp) { - u_int pending; int error; TQ_LOCK(queue); - pending = task->ta_pending; error = taskqueue_cancel_locked(queue, task, pendp); TQ_UNLOCK(queue); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:11:56 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C1A0AFD0; Thu, 16 Jan 2014 14:11:56 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AE50910AB; Thu, 16 Jan 2014 14:11:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEBuqA028216; Thu, 16 Jan 2014 14:11:56 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEBu4n028215; Thu, 16 Jan 2014 14:11:56 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161411.s0GEBu4n028215@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:11:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260724 - stable/9/sys/kern X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:11:56 -0000 Author: avg Date: Thu Jan 16 14:11:56 2014 New Revision: 260724 URL: http://svnweb.freebsd.org/changeset/base/260724 Log: MFC r258354: taskqueue_cancel: garbage collect a write-only variable Modified: stable/9/sys/kern/subr_taskqueue.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/kern/subr_taskqueue.c ============================================================================== --- stable/9/sys/kern/subr_taskqueue.c Thu Jan 16 14:11:45 2014 (r260723) +++ stable/9/sys/kern/subr_taskqueue.c Thu Jan 16 14:11:56 2014 (r260724) @@ -356,11 +356,9 @@ taskqueue_cancel_locked(struct taskqueue int taskqueue_cancel(struct taskqueue *queue, struct task *task, u_int *pendp) { - u_int pending; int error; TQ_LOCK(queue); - pending = task->ta_pending; error = taskqueue_cancel_locked(queue, task, pendp); TQ_UNLOCK(queue); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:14:49 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C83F024F; Thu, 16 Jan 2014 14:14:49 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9A68A10DA; Thu, 16 Jan 2014 14:14:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEEnXT028760; Thu, 16 Jan 2014 14:14:49 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEEn8U028758; Thu, 16 Jan 2014 14:14:49 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161414.s0GEEn8U028758@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:14:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260725 - stable/10/tools/regression/fsx X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:14:49 -0000 Author: avg Date: Thu Jan 16 14:14:49 2014 New Revision: 260725 URL: http://svnweb.freebsd.org/changeset/base/260725 Log: MFC r258351: fsx: new option to disable msync(MS_SYNC) after each write Modified: stable/10/tools/regression/fsx/fsx.c Directory Properties: stable/10/ (props changed) Modified: stable/10/tools/regression/fsx/fsx.c ============================================================================== --- stable/10/tools/regression/fsx/fsx.c Thu Jan 16 14:11:56 2014 (r260724) +++ stable/10/tools/regression/fsx/fsx.c Thu Jan 16 14:14:49 2014 (r260725) @@ -126,6 +126,7 @@ int randomoplen = 1; /* -O flag disable int seed = 1; /* -S flag */ int mapped_writes = 1; /* -W flag disables */ int mapped_reads = 1; /* -R flag disables it */ +int mapped_msync = 1; /* -U flag disables */ int fsxgoodfd = 0; FILE * fsxlogf = NULL; int badoff = -1; @@ -679,12 +680,12 @@ domapwrite(unsigned offset, unsigned siz if ((p = (char *)mmap(0, map_size, PROT_READ | PROT_WRITE, MAP_FILE | MAP_SHARED, fd, - (off_t)(offset - pg_offset))) == (char *)-1) { + (off_t)(offset - pg_offset))) == MAP_FAILED) { prterr("domapwrite: mmap"); report_failure(202); } memcpy(p + pg_offset, good_buf + offset, size); - if (msync(p, map_size, 0) != 0) { + if (mapped_msync && msync(p, map_size, MS_SYNC) != 0) { prterr("domapwrite: msync"); report_failure(203); } @@ -886,6 +887,7 @@ usage(void) -S seed: for random # generator (default 1) 0 gets timestamp\n\ -W: mapped write operations DISabled\n\ -R: mapped read operations DISabled)\n\ + -U: msync after mapped write operations DISabled\n\ fname: this filename is REQUIRED (no default)\n"); exit(90); } @@ -941,8 +943,8 @@ main(int argc, char **argv) setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */ - while ((ch = getopt(argc, argv, "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:W")) - != -1) + while ((ch = getopt(argc, argv, + "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:UW")) != -1) switch (ch) { case 'b': simulatedopcount = getnum(optarg, &endp); @@ -1057,6 +1059,11 @@ main(int argc, char **argv) if (!quiet) fprintf(stdout, "mapped writes DISABLED\n"); break; + case 'U': + mapped_msync = 0; + if (!quiet) + fprintf(stdout, "mapped msync DISABLED\n"); + break; default: usage(); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:15:04 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C67C237E; Thu, 16 Jan 2014 14:15:04 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9956A10DE; Thu, 16 Jan 2014 14:15:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEF4vY028885; Thu, 16 Jan 2014 14:15:04 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEF43d028884; Thu, 16 Jan 2014 14:15:04 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161415.s0GEF43d028884@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:15:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260726 - stable/9/tools/regression/fsx X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:15:04 -0000 Author: avg Date: Thu Jan 16 14:15:04 2014 New Revision: 260726 URL: http://svnweb.freebsd.org/changeset/base/260726 Log: MFC r258351: fsx: new option to disable msync(MS_SYNC) after each write Modified: stable/9/tools/regression/fsx/fsx.c Directory Properties: stable/9/tools/regression/fsx/ (props changed) Modified: stable/9/tools/regression/fsx/fsx.c ============================================================================== --- stable/9/tools/regression/fsx/fsx.c Thu Jan 16 14:14:49 2014 (r260725) +++ stable/9/tools/regression/fsx/fsx.c Thu Jan 16 14:15:04 2014 (r260726) @@ -126,6 +126,7 @@ int randomoplen = 1; /* -O flag disable int seed = 1; /* -S flag */ int mapped_writes = 1; /* -W flag disables */ int mapped_reads = 1; /* -R flag disables it */ +int mapped_msync = 1; /* -U flag disables */ int fsxgoodfd = 0; FILE * fsxlogf = NULL; int badoff = -1; @@ -679,12 +680,12 @@ domapwrite(unsigned offset, unsigned siz if ((p = (char *)mmap(0, map_size, PROT_READ | PROT_WRITE, MAP_FILE | MAP_SHARED, fd, - (off_t)(offset - pg_offset))) == (char *)-1) { + (off_t)(offset - pg_offset))) == MAP_FAILED) { prterr("domapwrite: mmap"); report_failure(202); } memcpy(p + pg_offset, good_buf + offset, size); - if (msync(p, map_size, 0) != 0) { + if (mapped_msync && msync(p, map_size, MS_SYNC) != 0) { prterr("domapwrite: msync"); report_failure(203); } @@ -886,6 +887,7 @@ usage(void) -S seed: for random # generator (default 1) 0 gets timestamp\n\ -W: mapped write operations DISabled\n\ -R: mapped read operations DISabled)\n\ + -U: msync after mapped write operations DISabled\n\ fname: this filename is REQUIRED (no default)\n"); exit(90); } @@ -941,8 +943,8 @@ main(int argc, char **argv) setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */ - while ((ch = getopt(argc, argv, "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:W")) - != -1) + while ((ch = getopt(argc, argv, + "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:UW")) != -1) switch (ch) { case 'b': simulatedopcount = getnum(optarg, &endp); @@ -1057,6 +1059,11 @@ main(int argc, char **argv) if (!quiet) fprintf(stdout, "mapped writes DISABLED\n"); break; + case 'U': + mapped_msync = 0; + if (!quiet) + fprintf(stdout, "mapped msync DISABLED\n"); + break; default: usage(); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:15:14 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D8C514A9; Thu, 16 Jan 2014 14:15:14 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AB56510E0; Thu, 16 Jan 2014 14:15:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEFE6l028952; Thu, 16 Jan 2014 14:15:14 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEFEuR028951; Thu, 16 Jan 2014 14:15:14 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161415.s0GEFEuR028951@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:15:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260727 - stable/8/tools/regression/fsx X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:15:14 -0000 Author: avg Date: Thu Jan 16 14:15:14 2014 New Revision: 260727 URL: http://svnweb.freebsd.org/changeset/base/260727 Log: MFC r258351: fsx: new option to disable msync(MS_SYNC) after each write Modified: stable/8/tools/regression/fsx/fsx.c Directory Properties: stable/8/tools/regression/fsx/ (props changed) Modified: stable/8/tools/regression/fsx/fsx.c ============================================================================== --- stable/8/tools/regression/fsx/fsx.c Thu Jan 16 14:15:04 2014 (r260726) +++ stable/8/tools/regression/fsx/fsx.c Thu Jan 16 14:15:14 2014 (r260727) @@ -126,6 +126,7 @@ int randomoplen = 1; /* -O flag disable int seed = 1; /* -S flag */ int mapped_writes = 1; /* -W flag disables */ int mapped_reads = 1; /* -R flag disables it */ +int mapped_msync = 1; /* -U flag disables */ int fsxgoodfd = 0; FILE * fsxlogf = NULL; int badoff = -1; @@ -679,12 +680,12 @@ domapwrite(unsigned offset, unsigned siz if ((p = (char *)mmap(0, map_size, PROT_READ | PROT_WRITE, MAP_FILE | MAP_SHARED, fd, - (off_t)(offset - pg_offset))) == (char *)-1) { + (off_t)(offset - pg_offset))) == MAP_FAILED) { prterr("domapwrite: mmap"); report_failure(202); } memcpy(p + pg_offset, good_buf + offset, size); - if (msync(p, map_size, 0) != 0) { + if (mapped_msync && msync(p, map_size, MS_SYNC) != 0) { prterr("domapwrite: msync"); report_failure(203); } @@ -886,6 +887,7 @@ usage(void) -S seed: for random # generator (default 1) 0 gets timestamp\n\ -W: mapped write operations DISabled\n\ -R: mapped read operations DISabled)\n\ + -U: msync after mapped write operations DISabled\n\ fname: this filename is REQUIRED (no default)\n"); exit(90); } @@ -941,8 +943,8 @@ main(int argc, char **argv) setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */ - while ((ch = getopt(argc, argv, "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:W")) - != -1) + while ((ch = getopt(argc, argv, + "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:UW")) != -1) switch (ch) { case 'b': simulatedopcount = getnum(optarg, &endp); @@ -1057,6 +1059,11 @@ main(int argc, char **argv) if (!quiet) fprintf(stdout, "mapped writes DISABLED\n"); break; + case 'U': + mapped_msync = 0; + if (!quiet) + fprintf(stdout, "mapped msync DISABLED\n"); + break; default: usage(); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:17:32 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 50315627; Thu, 16 Jan 2014 14:17:32 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 303FD10FD; Thu, 16 Jan 2014 14:17:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEHWjr029252; Thu, 16 Jan 2014 14:17:32 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEHWSS029251; Thu, 16 Jan 2014 14:17:32 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161417.s0GEHWSS029251@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:17:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260728 - stable/10/tools/regression/fsx X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:17:32 -0000 Author: avg Date: Thu Jan 16 14:17:31 2014 New Revision: 260728 URL: http://svnweb.freebsd.org/changeset/base/260728 Log: MFC r258352: fsx: add an option to randomly call msync(MS_INVALIDATE) Modified: stable/10/tools/regression/fsx/fsx.c Directory Properties: stable/10/ (props changed) Modified: stable/10/tools/regression/fsx/fsx.c ============================================================================== --- stable/10/tools/regression/fsx/fsx.c Thu Jan 16 14:15:14 2014 (r260727) +++ stable/10/tools/regression/fsx/fsx.c Thu Jan 16 14:17:31 2014 (r260728) @@ -90,6 +90,7 @@ int logcount = 0; /* total ops */ #define OP_MAPREAD 5 #define OP_MAPWRITE 6 #define OP_SKIPPED 7 +#define OP_INVALIDATE 8 int page_size; int page_mask; @@ -107,6 +108,7 @@ unsigned long testcalls = 0; /* calls t unsigned long simulatedopcount = 0; /* -b flag */ int closeprob = 0; /* -c flag */ +int invlprob = 0; /* -i flag */ int debug = 0; /* -d flag */ unsigned long debugstart = 0; /* -D flag */ unsigned long maxfilelen = 256 * 1024; /* -l flag */ @@ -131,6 +133,7 @@ int fsxgoodfd = 0; FILE * fsxlogf = NULL; int badoff = -1; int closeopen = 0; +int invl = 0; void @@ -182,14 +185,12 @@ prterr(char *prefix) void -log4(int operation, int arg0, int arg1, int arg2) +do_log4(int operation, int arg0, int arg1, int arg2) { struct log_entry *le; le = &oplog[logptr]; le->operation = operation; - if (closeopen) - le->operation = ~ le->operation; le->args[0] = arg0; le->args[1] = arg1; le->args[2] = arg2; @@ -201,10 +202,21 @@ log4(int operation, int arg0, int arg1, void +log4(int operation, int arg0, int arg1, int arg2) +{ + do_log4(operation, arg0, arg1, arg2); + if (closeopen) + do_log4(OP_CLOSEOPEN, 0, 0, 0); + if (invl) + do_log4(OP_INVALIDATE, 0, 0, 0); +} + + +void logdump(void) { - int i, count, down; struct log_entry *lp; + int i, count, down, opnum; prt("LOG DUMP (%d total operations):\n", logcount); if (logcount < LOGSIZE) { @@ -214,15 +226,28 @@ logdump(void) i = logptr; count = LOGSIZE; } + + opnum = i + 1 + (logcount/LOGSIZE)*LOGSIZE; for ( ; count > 0; count--) { - int opnum; + lp = &oplog[i]; + + if (lp->operation == OP_CLOSEOPEN || + lp->operation == OP_INVALIDATE) { + switch (lp->operation) { + case OP_CLOSEOPEN: + prt("\t\tCLOSE/OPEN\n"); + break; + case OP_INVALIDATE: + prt("\t\tMS_INVALIDATE\n"); + break; + } + i++; + if (i == LOGSIZE) + i = 0; + continue; + } - opnum = i+1 + (logcount/LOGSIZE)*LOGSIZE; prt("%d(%d mod 256): ", opnum, opnum%256); - lp = &oplog[i]; - if ((closeopen = lp->operation < 0)) - lp->operation = ~ lp->operation; - switch (lp->operation) { case OP_MAPREAD: prt("MAPREAD\t0x%x thru 0x%x\t(0x%x bytes)", @@ -275,9 +300,8 @@ logdump(void) prt("BOGUS LOG ENTRY (operation code = %d)!", lp->operation); } - if (closeopen) - prt("\n\t\tCLOSE/OPEN"); prt("\n"); + opnum++; i++; if (i == LOGSIZE) i = 0; @@ -779,6 +803,36 @@ docloseopen(void) void +doinvl(void) +{ + char *p; + + if (file_size == 0) + return; + if (testcalls <= simulatedopcount) + return; + if (debug) + prt("%lu msync(MS_INVALIDATE)\n", testcalls); + + if ((p = (char *)mmap(0, file_size, PROT_READ | PROT_WRITE, + MAP_FILE | MAP_SHARED, fd, 0)) == MAP_FAILED) { + prterr("doinvl: mmap"); + report_failure(205); + } + + if (msync(p, 0, MS_SYNC | MS_INVALIDATE) != 0) { + prterr("doinvl: msync"); + report_failure(206); + } + + if (munmap(p, file_size) != 0) { + prterr("doinvl: munmap"); + report_failure(207); + } +} + + +void test(void) { unsigned long offset; @@ -798,6 +852,8 @@ test(void) if (closeprob) closeopen = (rv >> 3) < (1 << 28) / closeprob; + if (invlprob) + invl = (rv >> 3) < (1 << 28) / invlprob; if (debugstart > 0 && testcalls >= debugstart) debug = 1; @@ -845,6 +901,8 @@ test(void) } if (sizechecks && testcalls > simulatedopcount) check_size(); + if (invl) + doinvl(); if (closeopen) docloseopen(); } @@ -869,6 +927,7 @@ usage(void) -b opnum: beginning operation number (default 1)\n\ -c P: 1 in P chance of file close+open at each op (default infinity)\n\ -d: debug output for all operations\n\ + -i P: 1 in P chance of calling msync(MS_INVALIDATE) (default infinity)\n\ -l flen: the upper bound on file size (default 262144)\n\ -m startop:endop: monitor (print debug output) specified byte range (default 0:infinity)\n\ -n: no verifications of file size\n\ @@ -944,7 +1003,7 @@ main(int argc, char **argv) setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */ while ((ch = getopt(argc, argv, - "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:UW")) != -1) + "b:c:di:l:m:no:p:qr:s:t:w:D:LN:OP:RS:UW")) != -1) switch (ch) { case 'b': simulatedopcount = getnum(optarg, &endp); @@ -967,6 +1026,15 @@ main(int argc, char **argv) case 'd': debug = 1; break; + case 'i': + invlprob = getnum(optarg, &endp); + if (!quiet) + fprintf(stdout, + "Chance of MS_INVALIDATE is 1 in %d\n", + invlprob); + if (invlprob <= 0) + usage(); + break; case 'l': maxfilelen = getnum(optarg, &endp); if (maxfilelen <= 0) From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:17:45 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1AEA475A; Thu, 16 Jan 2014 14:17:45 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id EFCB51103; Thu, 16 Jan 2014 14:17:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEHit1029312; Thu, 16 Jan 2014 14:17:44 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEHirX029311; Thu, 16 Jan 2014 14:17:44 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161417.s0GEHirX029311@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:17:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260729 - stable/9/tools/regression/fsx X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:17:45 -0000 Author: avg Date: Thu Jan 16 14:17:44 2014 New Revision: 260729 URL: http://svnweb.freebsd.org/changeset/base/260729 Log: MFC r258352: fsx: add an option to randomly call msync(MS_INVALIDATE) Modified: stable/9/tools/regression/fsx/fsx.c Directory Properties: stable/9/tools/regression/fsx/ (props changed) Modified: stable/9/tools/regression/fsx/fsx.c ============================================================================== --- stable/9/tools/regression/fsx/fsx.c Thu Jan 16 14:17:31 2014 (r260728) +++ stable/9/tools/regression/fsx/fsx.c Thu Jan 16 14:17:44 2014 (r260729) @@ -90,6 +90,7 @@ int logcount = 0; /* total ops */ #define OP_MAPREAD 5 #define OP_MAPWRITE 6 #define OP_SKIPPED 7 +#define OP_INVALIDATE 8 int page_size; int page_mask; @@ -107,6 +108,7 @@ unsigned long testcalls = 0; /* calls t unsigned long simulatedopcount = 0; /* -b flag */ int closeprob = 0; /* -c flag */ +int invlprob = 0; /* -i flag */ int debug = 0; /* -d flag */ unsigned long debugstart = 0; /* -D flag */ unsigned long maxfilelen = 256 * 1024; /* -l flag */ @@ -131,6 +133,7 @@ int fsxgoodfd = 0; FILE * fsxlogf = NULL; int badoff = -1; int closeopen = 0; +int invl = 0; void @@ -182,14 +185,12 @@ prterr(char *prefix) void -log4(int operation, int arg0, int arg1, int arg2) +do_log4(int operation, int arg0, int arg1, int arg2) { struct log_entry *le; le = &oplog[logptr]; le->operation = operation; - if (closeopen) - le->operation = ~ le->operation; le->args[0] = arg0; le->args[1] = arg1; le->args[2] = arg2; @@ -201,10 +202,21 @@ log4(int operation, int arg0, int arg1, void +log4(int operation, int arg0, int arg1, int arg2) +{ + do_log4(operation, arg0, arg1, arg2); + if (closeopen) + do_log4(OP_CLOSEOPEN, 0, 0, 0); + if (invl) + do_log4(OP_INVALIDATE, 0, 0, 0); +} + + +void logdump(void) { - int i, count, down; struct log_entry *lp; + int i, count, down, opnum; prt("LOG DUMP (%d total operations):\n", logcount); if (logcount < LOGSIZE) { @@ -214,15 +226,28 @@ logdump(void) i = logptr; count = LOGSIZE; } + + opnum = i + 1 + (logcount/LOGSIZE)*LOGSIZE; for ( ; count > 0; count--) { - int opnum; + lp = &oplog[i]; + + if (lp->operation == OP_CLOSEOPEN || + lp->operation == OP_INVALIDATE) { + switch (lp->operation) { + case OP_CLOSEOPEN: + prt("\t\tCLOSE/OPEN\n"); + break; + case OP_INVALIDATE: + prt("\t\tMS_INVALIDATE\n"); + break; + } + i++; + if (i == LOGSIZE) + i = 0; + continue; + } - opnum = i+1 + (logcount/LOGSIZE)*LOGSIZE; prt("%d(%d mod 256): ", opnum, opnum%256); - lp = &oplog[i]; - if ((closeopen = lp->operation < 0)) - lp->operation = ~ lp->operation; - switch (lp->operation) { case OP_MAPREAD: prt("MAPREAD\t0x%x thru 0x%x\t(0x%x bytes)", @@ -275,9 +300,8 @@ logdump(void) prt("BOGUS LOG ENTRY (operation code = %d)!", lp->operation); } - if (closeopen) - prt("\n\t\tCLOSE/OPEN"); prt("\n"); + opnum++; i++; if (i == LOGSIZE) i = 0; @@ -779,6 +803,36 @@ docloseopen(void) void +doinvl(void) +{ + char *p; + + if (file_size == 0) + return; + if (testcalls <= simulatedopcount) + return; + if (debug) + prt("%lu msync(MS_INVALIDATE)\n", testcalls); + + if ((p = (char *)mmap(0, file_size, PROT_READ | PROT_WRITE, + MAP_FILE | MAP_SHARED, fd, 0)) == MAP_FAILED) { + prterr("doinvl: mmap"); + report_failure(205); + } + + if (msync(p, 0, MS_SYNC | MS_INVALIDATE) != 0) { + prterr("doinvl: msync"); + report_failure(206); + } + + if (munmap(p, file_size) != 0) { + prterr("doinvl: munmap"); + report_failure(207); + } +} + + +void test(void) { unsigned long offset; @@ -798,6 +852,8 @@ test(void) if (closeprob) closeopen = (rv >> 3) < (1 << 28) / closeprob; + if (invlprob) + invl = (rv >> 3) < (1 << 28) / invlprob; if (debugstart > 0 && testcalls >= debugstart) debug = 1; @@ -845,6 +901,8 @@ test(void) } if (sizechecks && testcalls > simulatedopcount) check_size(); + if (invl) + doinvl(); if (closeopen) docloseopen(); } @@ -869,6 +927,7 @@ usage(void) -b opnum: beginning operation number (default 1)\n\ -c P: 1 in P chance of file close+open at each op (default infinity)\n\ -d: debug output for all operations\n\ + -i P: 1 in P chance of calling msync(MS_INVALIDATE) (default infinity)\n\ -l flen: the upper bound on file size (default 262144)\n\ -m startop:endop: monitor (print debug output) specified byte range (default 0:infinity)\n\ -n: no verifications of file size\n\ @@ -944,7 +1003,7 @@ main(int argc, char **argv) setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */ while ((ch = getopt(argc, argv, - "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:UW")) != -1) + "b:c:di:l:m:no:p:qr:s:t:w:D:LN:OP:RS:UW")) != -1) switch (ch) { case 'b': simulatedopcount = getnum(optarg, &endp); @@ -967,6 +1026,15 @@ main(int argc, char **argv) case 'd': debug = 1; break; + case 'i': + invlprob = getnum(optarg, &endp); + if (!quiet) + fprintf(stdout, + "Chance of MS_INVALIDATE is 1 in %d\n", + invlprob); + if (invlprob <= 0) + usage(); + break; case 'l': maxfilelen = getnum(optarg, &endp); if (maxfilelen <= 0) From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:17:56 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9465D893; Thu, 16 Jan 2014 14:17:56 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 743011109; Thu, 16 Jan 2014 14:17:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEHu6V029368; Thu, 16 Jan 2014 14:17:56 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEHuCS029367; Thu, 16 Jan 2014 14:17:56 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161417.s0GEHuCS029367@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:17:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260730 - stable/8/tools/regression/fsx X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:17:56 -0000 Author: avg Date: Thu Jan 16 14:17:55 2014 New Revision: 260730 URL: http://svnweb.freebsd.org/changeset/base/260730 Log: MFC r258352: fsx: add an option to randomly call msync(MS_INVALIDATE) Modified: stable/8/tools/regression/fsx/fsx.c Directory Properties: stable/8/tools/regression/fsx/ (props changed) Modified: stable/8/tools/regression/fsx/fsx.c ============================================================================== --- stable/8/tools/regression/fsx/fsx.c Thu Jan 16 14:17:44 2014 (r260729) +++ stable/8/tools/regression/fsx/fsx.c Thu Jan 16 14:17:55 2014 (r260730) @@ -90,6 +90,7 @@ int logcount = 0; /* total ops */ #define OP_MAPREAD 5 #define OP_MAPWRITE 6 #define OP_SKIPPED 7 +#define OP_INVALIDATE 8 int page_size; int page_mask; @@ -107,6 +108,7 @@ unsigned long testcalls = 0; /* calls t unsigned long simulatedopcount = 0; /* -b flag */ int closeprob = 0; /* -c flag */ +int invlprob = 0; /* -i flag */ int debug = 0; /* -d flag */ unsigned long debugstart = 0; /* -D flag */ unsigned long maxfilelen = 256 * 1024; /* -l flag */ @@ -131,6 +133,7 @@ int fsxgoodfd = 0; FILE * fsxlogf = NULL; int badoff = -1; int closeopen = 0; +int invl = 0; void @@ -182,14 +185,12 @@ prterr(char *prefix) void -log4(int operation, int arg0, int arg1, int arg2) +do_log4(int operation, int arg0, int arg1, int arg2) { struct log_entry *le; le = &oplog[logptr]; le->operation = operation; - if (closeopen) - le->operation = ~ le->operation; le->args[0] = arg0; le->args[1] = arg1; le->args[2] = arg2; @@ -201,10 +202,21 @@ log4(int operation, int arg0, int arg1, void +log4(int operation, int arg0, int arg1, int arg2) +{ + do_log4(operation, arg0, arg1, arg2); + if (closeopen) + do_log4(OP_CLOSEOPEN, 0, 0, 0); + if (invl) + do_log4(OP_INVALIDATE, 0, 0, 0); +} + + +void logdump(void) { - int i, count, down; struct log_entry *lp; + int i, count, down, opnum; prt("LOG DUMP (%d total operations):\n", logcount); if (logcount < LOGSIZE) { @@ -214,15 +226,28 @@ logdump(void) i = logptr; count = LOGSIZE; } + + opnum = i + 1 + (logcount/LOGSIZE)*LOGSIZE; for ( ; count > 0; count--) { - int opnum; + lp = &oplog[i]; + + if (lp->operation == OP_CLOSEOPEN || + lp->operation == OP_INVALIDATE) { + switch (lp->operation) { + case OP_CLOSEOPEN: + prt("\t\tCLOSE/OPEN\n"); + break; + case OP_INVALIDATE: + prt("\t\tMS_INVALIDATE\n"); + break; + } + i++; + if (i == LOGSIZE) + i = 0; + continue; + } - opnum = i+1 + (logcount/LOGSIZE)*LOGSIZE; prt("%d(%d mod 256): ", opnum, opnum%256); - lp = &oplog[i]; - if ((closeopen = lp->operation < 0)) - lp->operation = ~ lp->operation; - switch (lp->operation) { case OP_MAPREAD: prt("MAPREAD\t0x%x thru 0x%x\t(0x%x bytes)", @@ -275,9 +300,8 @@ logdump(void) prt("BOGUS LOG ENTRY (operation code = %d)!", lp->operation); } - if (closeopen) - prt("\n\t\tCLOSE/OPEN"); prt("\n"); + opnum++; i++; if (i == LOGSIZE) i = 0; @@ -779,6 +803,36 @@ docloseopen(void) void +doinvl(void) +{ + char *p; + + if (file_size == 0) + return; + if (testcalls <= simulatedopcount) + return; + if (debug) + prt("%lu msync(MS_INVALIDATE)\n", testcalls); + + if ((p = (char *)mmap(0, file_size, PROT_READ | PROT_WRITE, + MAP_FILE | MAP_SHARED, fd, 0)) == MAP_FAILED) { + prterr("doinvl: mmap"); + report_failure(205); + } + + if (msync(p, 0, MS_SYNC | MS_INVALIDATE) != 0) { + prterr("doinvl: msync"); + report_failure(206); + } + + if (munmap(p, file_size) != 0) { + prterr("doinvl: munmap"); + report_failure(207); + } +} + + +void test(void) { unsigned long offset; @@ -798,6 +852,8 @@ test(void) if (closeprob) closeopen = (rv >> 3) < (1 << 28) / closeprob; + if (invlprob) + invl = (rv >> 3) < (1 << 28) / invlprob; if (debugstart > 0 && testcalls >= debugstart) debug = 1; @@ -845,6 +901,8 @@ test(void) } if (sizechecks && testcalls > simulatedopcount) check_size(); + if (invl) + doinvl(); if (closeopen) docloseopen(); } @@ -869,6 +927,7 @@ usage(void) -b opnum: beginning operation number (default 1)\n\ -c P: 1 in P chance of file close+open at each op (default infinity)\n\ -d: debug output for all operations\n\ + -i P: 1 in P chance of calling msync(MS_INVALIDATE) (default infinity)\n\ -l flen: the upper bound on file size (default 262144)\n\ -m startop:endop: monitor (print debug output) specified byte range (default 0:infinity)\n\ -n: no verifications of file size\n\ @@ -944,7 +1003,7 @@ main(int argc, char **argv) setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */ while ((ch = getopt(argc, argv, - "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:UW")) != -1) + "b:c:di:l:m:no:p:qr:s:t:w:D:LN:OP:RS:UW")) != -1) switch (ch) { case 'b': simulatedopcount = getnum(optarg, &endp); @@ -967,6 +1026,15 @@ main(int argc, char **argv) case 'd': debug = 1; break; + case 'i': + invlprob = getnum(optarg, &endp); + if (!quiet) + fprintf(stdout, + "Chance of MS_INVALIDATE is 1 in %d\n", + invlprob); + if (invlprob <= 0) + usage(); + break; case 'l': maxfilelen = getnum(optarg, &endp); if (maxfilelen <= 0) From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:21:25 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 22A9FB17; Thu, 16 Jan 2014 14:21:25 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0CFDF1194; Thu, 16 Jan 2014 14:21:25 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GELOGK031783; Thu, 16 Jan 2014 14:21:24 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GELOdq031782; Thu, 16 Jan 2014 14:21:24 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161421.s0GELOdq031782@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:21:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260731 - stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:21:25 -0000 Author: avg Date: Thu Jan 16 14:21:24 2014 New Revision: 260731 URL: http://svnweb.freebsd.org/changeset/base/260731 Log: MFC r258638,258642: expose zfs_flags as debug.zfs_flags r/w tunable and sysctl Sponsored by: HybridCluster Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 14:17:55 2014 (r260730) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 14:21:24 2014 (r260731) @@ -243,6 +243,10 @@ int zfs_flags = ~(ZFS_DEBUG_DPRINTF | ZF #else int zfs_flags = 0; #endif +SYSCTL_DECL(_debug); +TUNABLE_INT("debug.zfs_flags", &zfs_flags); +SYSCTL_INT(_debug, OID_AUTO, zfs_flags, CTLFLAG_RWTUN, &zfs_flags, 0, + "ZFS debug flags."); /* * zfs_recover can be set to nonzero to attempt to recover from From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:21:42 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9170DC57; Thu, 16 Jan 2014 14:21:42 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7D62E119F; Thu, 16 Jan 2014 14:21:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GELgql031847; Thu, 16 Jan 2014 14:21:42 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GELgXp031846; Thu, 16 Jan 2014 14:21:42 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161421.s0GELgXp031846@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:21:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260732 - stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:21:42 -0000 Author: avg Date: Thu Jan 16 14:21:41 2014 New Revision: 260732 URL: http://svnweb.freebsd.org/changeset/base/260732 Log: MFC r258638,258642: expose zfs_flags as debug.zfs_flags r/w tunable and sysctl Sponsored by: HybridCluster Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 14:21:24 2014 (r260731) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 14:21:41 2014 (r260732) @@ -243,6 +243,10 @@ int zfs_flags = ~(ZFS_DEBUG_DPRINTF | ZF #else int zfs_flags = 0; #endif +SYSCTL_DECL(_debug); +TUNABLE_INT("debug.zfs_flags", &zfs_flags); +SYSCTL_INT(_debug, OID_AUTO, zfs_flags, CTLFLAG_RWTUN, &zfs_flags, 0, + "ZFS debug flags."); /* * zfs_recover can be set to nonzero to attempt to recover from From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:22:03 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 93422D91; Thu, 16 Jan 2014 14:22:03 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7F3AF11A6; Thu, 16 Jan 2014 14:22:03 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEM31b031992; Thu, 16 Jan 2014 14:22:03 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEM3GT031991; Thu, 16 Jan 2014 14:22:03 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161422.s0GEM3GT031991@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:22:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260733 - stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:22:03 -0000 Author: avg Date: Thu Jan 16 14:22:03 2014 New Revision: 260733 URL: http://svnweb.freebsd.org/changeset/base/260733 Log: MFC r258638,258642: expose zfs_flags as debug.zfs_flags r/w tunable and sysctl Sponsored by: HybridCluster Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 14:21:41 2014 (r260732) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 14:22:03 2014 (r260733) @@ -243,6 +243,10 @@ int zfs_flags = ~(ZFS_DEBUG_DPRINTF | ZF #else int zfs_flags = 0; #endif +SYSCTL_DECL(_debug); +TUNABLE_INT("debug.zfs_flags", &zfs_flags); +SYSCTL_INT(_debug, OID_AUTO, zfs_flags, CTLFLAG_RWTUN, &zfs_flags, 0, + "ZFS debug flags."); /* * zfs_recover can be set to nonzero to attempt to recover from From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:24:22 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B0365FF6; Thu, 16 Jan 2014 14:24:22 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9C57311BF; Thu, 16 Jan 2014 14:24:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEOMRK032434; Thu, 16 Jan 2014 14:24:22 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEOMWD032433; Thu, 16 Jan 2014 14:24:22 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161424.s0GEOMWD032433@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:24:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260734 - stable/9/tools/tools/zfsboottest X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:24:22 -0000 Author: avg Date: Thu Jan 16 14:24:22 2014 New Revision: 260734 URL: http://svnweb.freebsd.org/changeset/base/260734 Log: MFC r258647: zfsboottest: properly specify a library dependency Modified: stable/9/tools/tools/zfsboottest/Makefile Directory Properties: stable/9/tools/tools/zfsboottest/ (props changed) Modified: stable/9/tools/tools/zfsboottest/Makefile ============================================================================== --- stable/9/tools/tools/zfsboottest/Makefile Thu Jan 16 14:22:03 2014 (r260733) +++ stable/9/tools/tools/zfsboottest/Makefile Thu Jan 16 14:24:22 2014 (r260734) @@ -16,7 +16,7 @@ CFLAGS= -O1 \ -I. \ -fdiagnostics-show-option \ -W -Wextra -Wno-sign-compare -Wno-unused-parameter -LDFLAGS+=-lmd +LDADD+= -lmd .if ${MACHINE_CPUARCH} == "amd64" beforedepend zfsboottest.o: machine From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:24:34 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8022B1D4; Thu, 16 Jan 2014 14:24:34 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6C38811C8; Thu, 16 Jan 2014 14:24:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEOYTC032490; Thu, 16 Jan 2014 14:24:34 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEOYsm032489; Thu, 16 Jan 2014 14:24:34 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161424.s0GEOYsm032489@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:24:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260735 - stable/10/tools/tools/zfsboottest X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:24:34 -0000 Author: avg Date: Thu Jan 16 14:24:33 2014 New Revision: 260735 URL: http://svnweb.freebsd.org/changeset/base/260735 Log: MFC r258647: zfsboottest: properly specify a library dependency Modified: stable/10/tools/tools/zfsboottest/Makefile Directory Properties: stable/10/ (props changed) Modified: stable/10/tools/tools/zfsboottest/Makefile ============================================================================== --- stable/10/tools/tools/zfsboottest/Makefile Thu Jan 16 14:24:22 2014 (r260734) +++ stable/10/tools/tools/zfsboottest/Makefile Thu Jan 16 14:24:33 2014 (r260735) @@ -16,7 +16,7 @@ CFLAGS= -O1 \ -I. \ -fdiagnostics-show-option \ -W -Wextra -Wno-sign-compare -Wno-unused-parameter -LDFLAGS+=-lmd +LDADD+= -lmd .if ${MACHINE_CPUARCH} == "amd64" beforedepend zfsboottest.o: machine From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:24:45 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8733D308; Thu, 16 Jan 2014 14:24:45 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 737F911CC; Thu, 16 Jan 2014 14:24:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEOjSO032549; Thu, 16 Jan 2014 14:24:45 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEOjx5032548; Thu, 16 Jan 2014 14:24:45 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161424.s0GEOjx5032548@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:24:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260736 - stable/8/tools/tools/zfsboottest X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:24:45 -0000 Author: avg Date: Thu Jan 16 14:24:44 2014 New Revision: 260736 URL: http://svnweb.freebsd.org/changeset/base/260736 Log: MFC r258647: zfsboottest: properly specify a library dependency Modified: stable/8/tools/tools/zfsboottest/Makefile Directory Properties: stable/8/tools/tools/zfsboottest/ (props changed) Modified: stable/8/tools/tools/zfsboottest/Makefile ============================================================================== --- stable/8/tools/tools/zfsboottest/Makefile Thu Jan 16 14:24:33 2014 (r260735) +++ stable/8/tools/tools/zfsboottest/Makefile Thu Jan 16 14:24:44 2014 (r260736) @@ -16,7 +16,7 @@ CFLAGS= -O1 \ -I. \ -fdiagnostics-show-option \ -W -Wextra -Wno-sign-compare -Wno-unused-parameter -LDFLAGS+=-lmd +LDADD+= -lmd .if ${MACHINE_ARCH} == "amd64" beforedepend zfsboottest.o: machine From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:27:21 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 338324B9; Thu, 16 Jan 2014 14:27:21 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1F31411F5; Thu, 16 Jan 2014 14:27:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GERKj6032906; Thu, 16 Jan 2014 14:27:20 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GERKRO032905; Thu, 16 Jan 2014 14:27:20 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161427.s0GERKRO032905@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:27:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260737 - stable/10/sys/kern X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:27:21 -0000 Author: avg Date: Thu Jan 16 14:27:20 2014 New Revision: 260737 URL: http://svnweb.freebsd.org/changeset/base/260737 Log: MFC r258648: use saner calculations in should_yield Modified: stable/10/sys/kern/kern_synch.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/kern/kern_synch.c ============================================================================== --- stable/10/sys/kern/kern_synch.c Thu Jan 16 14:24:44 2014 (r260736) +++ stable/10/sys/kern/kern_synch.c Thu Jan 16 14:27:20 2014 (r260737) @@ -588,7 +588,7 @@ int should_yield(void) { - return ((unsigned int)(ticks - curthread->td_swvoltick) >= hogticks); + return ((u_int)ticks - (u_int)curthread->td_swvoltick >= hogticks); } void From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:27:29 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E39085DF; Thu, 16 Jan 2014 14:27:29 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D06AF11F6; Thu, 16 Jan 2014 14:27:29 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GERTaZ032960; Thu, 16 Jan 2014 14:27:29 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GERTuh032959; Thu, 16 Jan 2014 14:27:29 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161427.s0GERTuh032959@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:27:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260738 - stable/9/sys/kern X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:27:30 -0000 Author: avg Date: Thu Jan 16 14:27:29 2014 New Revision: 260738 URL: http://svnweb.freebsd.org/changeset/base/260738 Log: MFC r258648: use saner calculations in should_yield Modified: stable/9/sys/kern/kern_synch.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/kern/kern_synch.c ============================================================================== --- stable/9/sys/kern/kern_synch.c Thu Jan 16 14:27:20 2014 (r260737) +++ stable/9/sys/kern/kern_synch.c Thu Jan 16 14:27:29 2014 (r260738) @@ -578,7 +578,7 @@ int should_yield(void) { - return ((unsigned int)(ticks - curthread->td_swvoltick) >= hogticks); + return ((u_int)ticks - (u_int)curthread->td_swvoltick >= hogticks); } void From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:30:27 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EA951777; Thu, 16 Jan 2014 14:30:26 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CB41A1216; Thu, 16 Jan 2014 14:30:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEUQP1035659; Thu, 16 Jan 2014 14:30:26 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEUQEf035657; Thu, 16 Jan 2014 14:30:26 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161430.s0GEUQEf035657@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:30:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260739 - in stable/10/sys/cddl: compat/opensolaris/kern contrib/opensolaris/uts/common/sys X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:30:27 -0000 Author: avg Date: Thu Jan 16 14:30:26 2014 New Revision: 260739 URL: http://svnweb.freebsd.org/changeset/base/260739 Log: MFC r258628: opensolaris taskq: some cosmetic changes Modified: stable/10/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c stable/10/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c ============================================================================== --- stable/10/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Thu Jan 16 14:27:29 2014 (r260738) +++ stable/10/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Thu Jan 16 14:30:26 2014 (r260739) @@ -121,7 +121,7 @@ taskq_dispatch(taskq_t *tq, task_func_t mflag = M_WAITOK; else mflag = M_NOWAIT; - /* + /* * If TQ_FRONT is given, we want higher priority for this task, so it * can go at the front of the queue. */ @@ -140,8 +140,6 @@ taskq_dispatch(taskq_t *tq, task_func_t return ((taskqid_t)(void *)task); } -#define TASKQ_MAGIC 0x74541c - static void taskq_run_safe(void *arg, int pending __unused) { @@ -156,7 +154,7 @@ taskq_dispatch_safe(taskq_t *tq, task_fu { int prio; - /* + /* * If TQ_FRONT is given, we want higher priority for this task, so it * can go at the front of the queue. */ Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Thu Jan 16 14:27:29 2014 (r260738) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Thu Jan 16 14:30:26 2014 (r260739) @@ -70,24 +70,23 @@ struct proc; extern taskq_t *system_taskq; -extern void taskq_init(void); -extern void taskq_mp_init(void); +void taskq_init(void); +void taskq_mp_init(void); -extern taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); -extern taskq_t *taskq_create_instance(const char *, int, int, pri_t, int, - int, uint_t); -extern taskq_t *taskq_create_proc(const char *, int, pri_t, int, int, +taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); +taskq_t *taskq_create_instance(const char *, int, int, pri_t, int, int, uint_t); +taskq_t *taskq_create_proc(const char *, int, pri_t, int, int, struct proc *, uint_t); -extern taskq_t *taskq_create_sysdc(const char *, int, int, int, +taskq_t *taskq_create_sysdc(const char *, int, int, int, struct proc *, uint_t, uint_t); -extern taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); -extern void nulltask(void *); -extern void taskq_destroy(taskq_t *); -extern void taskq_wait(taskq_t *); -extern void taskq_suspend(taskq_t *); -extern int taskq_suspended(taskq_t *); -extern void taskq_resume(taskq_t *); -extern int taskq_member(taskq_t *, kthread_t *); +taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); +void nulltask(void *); +void taskq_destroy(taskq_t *); +void taskq_wait(taskq_t *); +void taskq_suspend(taskq_t *); +int taskq_suspended(taskq_t *); +void taskq_resume(taskq_t *); +int taskq_member(taskq_t *, kthread_t *); #endif /* _KERNEL */ From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:30:36 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 990998AD; Thu, 16 Jan 2014 14:30:36 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7AE001217; Thu, 16 Jan 2014 14:30:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEUaVv035988; Thu, 16 Jan 2014 14:30:36 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEUaZZ035986; Thu, 16 Jan 2014 14:30:36 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161430.s0GEUaZZ035986@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:30:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260740 - in stable/9/sys/cddl: compat/opensolaris/kern contrib/opensolaris/uts/common/sys X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:30:36 -0000 Author: avg Date: Thu Jan 16 14:30:35 2014 New Revision: 260740 URL: http://svnweb.freebsd.org/changeset/base/260740 Log: MFC r258628: opensolaris taskq: some cosmetic changes Modified: stable/9/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c ============================================================================== --- stable/9/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Thu Jan 16 14:30:26 2014 (r260739) +++ stable/9/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Thu Jan 16 14:30:35 2014 (r260740) @@ -121,7 +121,7 @@ taskq_dispatch(taskq_t *tq, task_func_t mflag = M_WAITOK; else mflag = M_NOWAIT; - /* + /* * If TQ_FRONT is given, we want higher priority for this task, so it * can go at the front of the queue. */ @@ -140,8 +140,6 @@ taskq_dispatch(taskq_t *tq, task_func_t return ((taskqid_t)(void *)task); } -#define TASKQ_MAGIC 0x74541c - static void taskq_run_safe(void *arg, int pending __unused) { @@ -156,7 +154,7 @@ taskq_dispatch_safe(taskq_t *tq, task_fu { int prio; - /* + /* * If TQ_FRONT is given, we want higher priority for this task, so it * can go at the front of the queue. */ Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Thu Jan 16 14:30:26 2014 (r260739) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Thu Jan 16 14:30:35 2014 (r260740) @@ -70,24 +70,23 @@ struct proc; extern taskq_t *system_taskq; -extern void taskq_init(void); -extern void taskq_mp_init(void); +void taskq_init(void); +void taskq_mp_init(void); -extern taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); -extern taskq_t *taskq_create_instance(const char *, int, int, pri_t, int, - int, uint_t); -extern taskq_t *taskq_create_proc(const char *, int, pri_t, int, int, +taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); +taskq_t *taskq_create_instance(const char *, int, int, pri_t, int, int, uint_t); +taskq_t *taskq_create_proc(const char *, int, pri_t, int, int, struct proc *, uint_t); -extern taskq_t *taskq_create_sysdc(const char *, int, int, int, +taskq_t *taskq_create_sysdc(const char *, int, int, int, struct proc *, uint_t, uint_t); -extern taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); -extern void nulltask(void *); -extern void taskq_destroy(taskq_t *); -extern void taskq_wait(taskq_t *); -extern void taskq_suspend(taskq_t *); -extern int taskq_suspended(taskq_t *); -extern void taskq_resume(taskq_t *); -extern int taskq_member(taskq_t *, kthread_t *); +taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); +void nulltask(void *); +void taskq_destroy(taskq_t *); +void taskq_wait(taskq_t *); +void taskq_suspend(taskq_t *); +int taskq_suspended(taskq_t *); +void taskq_resume(taskq_t *); +int taskq_member(taskq_t *, kthread_t *); #endif /* _KERNEL */ From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:30:47 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 46FE099D; Thu, 16 Jan 2014 14:30:47 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 275E0121C; Thu, 16 Jan 2014 14:30:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEUlOQ036045; Thu, 16 Jan 2014 14:30:47 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEUkiI036043; Thu, 16 Jan 2014 14:30:46 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161430.s0GEUkiI036043@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:30:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260741 - in stable/8/sys/cddl: compat/opensolaris/kern contrib/opensolaris/uts/common/sys X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:30:47 -0000 Author: avg Date: Thu Jan 16 14:30:46 2014 New Revision: 260741 URL: http://svnweb.freebsd.org/changeset/base/260741 Log: MFC r258628: opensolaris taskq: some cosmetic changes Modified: stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c ============================================================================== --- stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Thu Jan 16 14:30:35 2014 (r260740) +++ stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Thu Jan 16 14:30:46 2014 (r260741) @@ -121,7 +121,7 @@ taskq_dispatch(taskq_t *tq, task_func_t mflag = M_WAITOK; else mflag = M_NOWAIT; - /* + /* * If TQ_FRONT is given, we want higher priority for this task, so it * can go at the front of the queue. */ @@ -140,8 +140,6 @@ taskq_dispatch(taskq_t *tq, task_func_t return ((taskqid_t)(void *)task); } -#define TASKQ_MAGIC 0x74541c - static void taskq_run_safe(void *arg, int pending __unused) { @@ -156,7 +154,7 @@ taskq_dispatch_safe(taskq_t *tq, task_fu { int prio; - /* + /* * If TQ_FRONT is given, we want higher priority for this task, so it * can go at the front of the queue. */ Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Thu Jan 16 14:30:35 2014 (r260740) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Thu Jan 16 14:30:46 2014 (r260741) @@ -70,24 +70,23 @@ struct proc; extern taskq_t *system_taskq; -extern void taskq_init(void); -extern void taskq_mp_init(void); +void taskq_init(void); +void taskq_mp_init(void); -extern taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); -extern taskq_t *taskq_create_instance(const char *, int, int, pri_t, int, - int, uint_t); -extern taskq_t *taskq_create_proc(const char *, int, pri_t, int, int, +taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); +taskq_t *taskq_create_instance(const char *, int, int, pri_t, int, int, uint_t); +taskq_t *taskq_create_proc(const char *, int, pri_t, int, int, struct proc *, uint_t); -extern taskq_t *taskq_create_sysdc(const char *, int, int, int, +taskq_t *taskq_create_sysdc(const char *, int, int, int, struct proc *, uint_t, uint_t); -extern taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); -extern void nulltask(void *); -extern void taskq_destroy(taskq_t *); -extern void taskq_wait(taskq_t *); -extern void taskq_suspend(taskq_t *); -extern int taskq_suspended(taskq_t *); -extern void taskq_resume(taskq_t *); -extern int taskq_member(taskq_t *, kthread_t *); +taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); +void nulltask(void *); +void taskq_destroy(taskq_t *); +void taskq_wait(taskq_t *); +void taskq_suspend(taskq_t *); +int taskq_suspended(taskq_t *); +void taskq_resume(taskq_t *); +int taskq_member(taskq_t *, kthread_t *); #endif /* _KERNEL */ From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:34:55 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 56263BE7; Thu, 16 Jan 2014 14:34:55 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3E71912A7; Thu, 16 Jan 2014 14:34:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEYtHb036580; Thu, 16 Jan 2014 14:34:55 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEYr62036568; Thu, 16 Jan 2014 14:34:53 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161434.s0GEYr62036568@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:34:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260742 - in stable/10: cddl/contrib/opensolaris/lib/libzpool/common cddl/contrib/opensolaris/lib/libzpool/common/sys sys/cddl/compat/opensolaris/kern sys/cddl/compat/opensolaris/sys sy... X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:34:55 -0000 Author: avg Date: Thu Jan 16 14:34:53 2014 New Revision: 260742 URL: http://svnweb.freebsd.org/changeset/base/260742 Log: MFC r258630: 734 taskq_dispatch_prealloc() desired Deleted: stable/10/sys/cddl/compat/opensolaris/sys/taskq.h Modified: stable/10/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h stable/10/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c stable/10/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c stable/10/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Directory Properties: stable/10/ (props changed) Modified: stable/10/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- stable/10/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 14:30:46 2014 (r260741) +++ stable/10/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 14:34:53 2014 (r260742) @@ -23,6 +23,9 @@ * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. */ +/* + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + */ #ifndef _SYS_ZFS_CONTEXT_H #define _SYS_ZFS_CONTEXT_H @@ -367,6 +370,16 @@ typedef struct taskq taskq_t; typedef uintptr_t taskqid_t; typedef void (task_func_t)(void *); +typedef struct taskq_ent { + struct taskq_ent *tqent_next; + struct taskq_ent *tqent_prev; + task_func_t *tqent_func; + void *tqent_arg; + uintptr_t tqent_flags; +} taskq_ent_t; + +#define TQENT_FLAG_PREALLOC 0x1 /* taskq_dispatch_ent used */ + #define TASKQ_PREPOPULATE 0x0001 #define TASKQ_CPR_SAFE 0x0002 /* Use CPR safe protocol */ #define TASKQ_DYNAMIC 0x0004 /* Use dynamic thread scheduling */ @@ -378,6 +391,7 @@ typedef void (task_func_t)(void *); #define TQ_NOQUEUE 0x02 /* Do not enqueue if can't dispatch */ #define TQ_FRONT 0x08 /* Queue in front */ + extern taskq_t *system_taskq; extern taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); @@ -386,6 +400,8 @@ extern taskq_t *taskq_create(const char #define taskq_create_sysdc(a, b, d, e, p, dc, f) \ (taskq_create(a, b, maxclsyspri, d, e, f)) extern taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); +extern void taskq_dispatch_ent(taskq_t *, task_func_t, void *, uint_t, + taskq_ent_t *); extern void taskq_destroy(taskq_t *); extern void taskq_wait(taskq_t *); extern int taskq_member(taskq_t *, void *); Modified: stable/10/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c ============================================================================== --- stable/10/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c Thu Jan 16 14:30:46 2014 (r260741) +++ stable/10/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c Thu Jan 16 14:34:53 2014 (r260742) @@ -22,19 +22,15 @@ * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + */ #include int taskq_now; taskq_t *system_taskq; -typedef struct task { - struct task *task_next; - struct task *task_prev; - task_func_t *task_func; - void *task_arg; -} task_t; - #define TASKQ_ACTIVE 0x00010000 struct taskq { @@ -51,18 +47,18 @@ struct taskq { int tq_maxalloc; kcondvar_t tq_maxalloc_cv; int tq_maxalloc_wait; - task_t *tq_freelist; - task_t tq_task; + taskq_ent_t *tq_freelist; + taskq_ent_t tq_task; }; -static task_t * +static taskq_ent_t * task_alloc(taskq_t *tq, int tqflags) { - task_t *t; + taskq_ent_t *t; int rv; again: if ((t = tq->tq_freelist) != NULL && tq->tq_nalloc >= tq->tq_minalloc) { - tq->tq_freelist = t->task_next; + tq->tq_freelist = t->tqent_next; } else { if (tq->tq_nalloc >= tq->tq_maxalloc) { if (!(tqflags & KM_SLEEP)) @@ -87,7 +83,7 @@ again: if ((t = tq->tq_freelist) != NULL } mutex_exit(&tq->tq_lock); - t = kmem_alloc(sizeof (task_t), tqflags & KM_SLEEP); + t = kmem_alloc(sizeof (taskq_ent_t), tqflags & KM_SLEEP); mutex_enter(&tq->tq_lock); if (t != NULL) @@ -97,15 +93,15 @@ again: if ((t = tq->tq_freelist) != NULL } static void -task_free(taskq_t *tq, task_t *t) +task_free(taskq_t *tq, taskq_ent_t *t) { if (tq->tq_nalloc <= tq->tq_minalloc) { - t->task_next = tq->tq_freelist; + t->tqent_next = tq->tq_freelist; tq->tq_freelist = t; } else { tq->tq_nalloc--; mutex_exit(&tq->tq_lock); - kmem_free(t, sizeof (task_t)); + kmem_free(t, sizeof (taskq_ent_t)); mutex_enter(&tq->tq_lock); } @@ -116,7 +112,7 @@ task_free(taskq_t *tq, task_t *t) taskqid_t taskq_dispatch(taskq_t *tq, task_func_t func, void *arg, uint_t tqflags) { - task_t *t; + taskq_ent_t *t; if (taskq_now) { func(arg); @@ -130,26 +126,58 @@ taskq_dispatch(taskq_t *tq, task_func_t return (0); } if (tqflags & TQ_FRONT) { - t->task_next = tq->tq_task.task_next; - t->task_prev = &tq->tq_task; + t->tqent_next = tq->tq_task.tqent_next; + t->tqent_prev = &tq->tq_task; } else { - t->task_next = &tq->tq_task; - t->task_prev = tq->tq_task.task_prev; + t->tqent_next = &tq->tq_task; + t->tqent_prev = tq->tq_task.tqent_prev; } - t->task_next->task_prev = t; - t->task_prev->task_next = t; - t->task_func = func; - t->task_arg = arg; + t->tqent_next->tqent_prev = t; + t->tqent_prev->tqent_next = t; + t->tqent_func = func; + t->tqent_arg = arg; cv_signal(&tq->tq_dispatch_cv); mutex_exit(&tq->tq_lock); return (1); } void +taskq_dispatch_ent(taskq_t *tq, task_func_t func, void *arg, uint_t flags, + taskq_ent_t *t) +{ + ASSERT(func != NULL); + ASSERT(!(tq->tq_flags & TASKQ_DYNAMIC)); + + /* + * Mark it as a prealloc'd task. This is important + * to ensure that we don't free it later. + */ + t->tqent_flags |= TQENT_FLAG_PREALLOC; + /* + * Enqueue the task to the underlying queue. + */ + mutex_enter(&tq->tq_lock); + + if (flags & TQ_FRONT) { + t->tqent_next = tq->tq_task.tqent_next; + t->tqent_prev = &tq->tq_task; + } else { + t->tqent_next = &tq->tq_task; + t->tqent_prev = tq->tq_task.tqent_prev; + } + t->tqent_next->tqent_prev = t; + t->tqent_prev->tqent_next = t; + t->tqent_func = func; + t->tqent_arg = arg; + cv_signal(&tq->tq_dispatch_cv); + mutex_exit(&tq->tq_lock); +} + +void taskq_wait(taskq_t *tq) { mutex_enter(&tq->tq_lock); - while (tq->tq_task.task_next != &tq->tq_task || tq->tq_active != 0) + while (tq->tq_task.tqent_next != &tq->tq_task || tq->tq_active != 0) cv_wait(&tq->tq_wait_cv, &tq->tq_lock); mutex_exit(&tq->tq_lock); } @@ -158,27 +186,32 @@ static void * taskq_thread(void *arg) { taskq_t *tq = arg; - task_t *t; + taskq_ent_t *t; + boolean_t prealloc; mutex_enter(&tq->tq_lock); while (tq->tq_flags & TASKQ_ACTIVE) { - if ((t = tq->tq_task.task_next) == &tq->tq_task) { + if ((t = tq->tq_task.tqent_next) == &tq->tq_task) { if (--tq->tq_active == 0) cv_broadcast(&tq->tq_wait_cv); cv_wait(&tq->tq_dispatch_cv, &tq->tq_lock); tq->tq_active++; continue; } - t->task_prev->task_next = t->task_next; - t->task_next->task_prev = t->task_prev; + t->tqent_prev->tqent_next = t->tqent_next; + t->tqent_next->tqent_prev = t->tqent_prev; + t->tqent_next = NULL; + t->tqent_prev = NULL; + prealloc = t->tqent_flags & TQENT_FLAG_PREALLOC; mutex_exit(&tq->tq_lock); rw_enter(&tq->tq_threadlock, RW_READER); - t->task_func(t->task_arg); + t->tqent_func(t->tqent_arg); rw_exit(&tq->tq_threadlock); mutex_enter(&tq->tq_lock); - task_free(tq, t); + if (!prealloc) + task_free(tq, t); } tq->tq_nthreads--; cv_broadcast(&tq->tq_wait_cv); @@ -217,8 +250,8 @@ taskq_create(const char *name, int nthre tq->tq_nthreads = nthreads; tq->tq_minalloc = minalloc; tq->tq_maxalloc = maxalloc; - tq->tq_task.task_next = &tq->tq_task; - tq->tq_task.task_prev = &tq->tq_task; + tq->tq_task.tqent_next = &tq->tq_task; + tq->tq_task.tqent_prev = &tq->tq_task; tq->tq_threadlist = kmem_alloc(nthreads * sizeof (thread_t), KM_SLEEP); if (flags & TASKQ_PREPOPULATE) { Modified: stable/10/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c ============================================================================== --- stable/10/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Thu Jan 16 14:30:46 2014 (r260741) +++ stable/10/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Thu Jan 16 14:34:53 2014 (r260742) @@ -46,7 +46,7 @@ static void system_taskq_init(void *arg) { - taskq_zone = uma_zcreate("taskq_zone", sizeof(struct ostask), + taskq_zone = uma_zcreate("taskq_zone", sizeof(taskq_ent_t), NULL, NULL, NULL, NULL, 0, 0); system_taskq = taskq_create("system_taskq", mp_ncpus, 0, 0, 0, 0); } @@ -104,9 +104,9 @@ taskq_member(taskq_t *tq, kthread_t *thr static void taskq_run(void *arg, int pending __unused) { - struct ostask *task = arg; + taskq_ent_t *task = arg; - task->ost_func(task->ost_arg); + task->tqent_func(task->tqent_arg); uma_zfree(taskq_zone, task); } @@ -114,7 +114,7 @@ taskq_run(void *arg, int pending __unuse taskqid_t taskq_dispatch(taskq_t *tq, task_func_t func, void *arg, uint_t flags) { - struct ostask *task; + taskq_ent_t *task; int mflag, prio; if ((flags & (TQ_SLEEP | TQ_NOQUEUE)) == TQ_SLEEP) @@ -131,26 +131,26 @@ taskq_dispatch(taskq_t *tq, task_func_t if (task == NULL) return (0); - task->ost_func = func; - task->ost_arg = arg; + task->tqent_func = func; + task->tqent_arg = arg; - TASK_INIT(&task->ost_task, prio, taskq_run, task); - taskqueue_enqueue(tq->tq_queue, &task->ost_task); + TASK_INIT(&task->tqent_task, prio, taskq_run, task); + taskqueue_enqueue(tq->tq_queue, &task->tqent_task); return ((taskqid_t)(void *)task); } static void -taskq_run_safe(void *arg, int pending __unused) +taskq_run_ent(void *arg, int pending __unused) { - struct ostask *task = arg; + taskq_ent_t *task = arg; - task->ost_func(task->ost_arg); + task->tqent_func(task->tqent_arg); } -taskqid_t -taskq_dispatch_safe(taskq_t *tq, task_func_t func, void *arg, u_int flags, - struct ostask *task) +void +taskq_dispatch_ent(taskq_t *tq, task_func_t func, void *arg, u_int flags, + taskq_ent_t *task) { int prio; @@ -160,11 +160,9 @@ taskq_dispatch_safe(taskq_t *tq, task_fu */ prio = !!(flags & TQ_FRONT); - task->ost_func = func; - task->ost_arg = arg; + task->tqent_func = func; + task->tqent_arg = arg; - TASK_INIT(&task->ost_task, prio, taskq_run_safe, task); - taskqueue_enqueue(tq->tq_queue, &task->ost_task); - - return ((taskqid_t)(void *)task); + TASK_INIT(&task->tqent_task, prio, taskq_run_ent, task); + taskqueue_enqueue(tq->tq_queue, &task->tqent_task); } Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 14:30:46 2014 (r260741) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 14:34:53 2014 (r260742) @@ -825,7 +825,7 @@ static taskq_t * spa_taskq_create(spa_t *spa, const char *name, enum zti_modes mode, uint_t value) { - uint_t flags = TASKQ_PREPOPULATE; + uint_t flags = 0; boolean_t batch = B_FALSE; switch (mode) { Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Thu Jan 16 14:30:46 2014 (r260741) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Thu Jan 16 14:34:53 2014 (r260742) @@ -24,6 +24,7 @@ * Copyright (c) 2012 by Delphix. All rights reserved. * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. * Copyright (c) 2013, Joyent, Inc. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ #ifndef _ZIO_H @@ -474,10 +475,9 @@ struct zio { zio_cksum_report_t *io_cksum_report; uint64_t io_ena; -#ifdef _KERNEL - /* FreeBSD only. */ - struct ostask io_task; -#endif + /* Taskq dispatching state */ + taskq_ent_t io_tqent; + avl_node_t io_trim_node; list_node_t io_trim_link; }; Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 14:30:46 2014 (r260741) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 14:34:53 2014 (r260742) @@ -21,6 +21,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved. */ #include @@ -1224,7 +1225,7 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ { spa_t *spa = zio->io_spa; zio_type_t t = zio->io_type; - int flags = TQ_SLEEP | (cutinline ? TQ_FRONT : 0); + int flags = (cutinline ? TQ_FRONT : 0); ASSERT(q == ZIO_TASKQ_ISSUE || q == ZIO_TASKQ_INTERRUPT); @@ -1250,13 +1251,19 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ q++; ASSERT3U(q, <, ZIO_TASKQ_TYPES); -#ifdef _KERNEL - (void) taskq_dispatch_safe(spa->spa_zio_taskq[t][q], - (task_func_t *)zio_execute, zio, flags, &zio->io_task); + + /* + * NB: We are assuming that the zio can only be dispatched + * to a single taskq at a time. It would be a grievous error + * to dispatch the zio to another taskq at the same time. + */ +#if defined(illumos) || !defined(_KERNEL) + ASSERT(zio->io_tqent.tqent_next == NULL); #else - (void) taskq_dispatch(spa->spa_zio_taskq[t][q], - (task_func_t *)zio_execute, zio, flags); + ASSERT(zio->io_tqent.tqent_task.ta_pending == 0); #endif + taskq_dispatch_ent(spa->spa_zio_taskq[t][q], + (task_func_t *)zio_execute, zio, flags, &zio->io_tqent); } static boolean_t @@ -3174,16 +3181,15 @@ zio_done(zio_t *zio) * Reexecution is potentially a huge amount of work. * Hand it off to the otherwise-unused claim taskq. */ -#ifdef _KERNEL - (void) taskq_dispatch_safe( - spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], - (task_func_t *)zio_reexecute, zio, TQ_SLEEP, - &zio->io_task); +#if defined(illumos) || !defined(_KERNEL) + ASSERT(zio->io_tqent.tqent_next == NULL); #else - (void) taskq_dispatch( - spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], - (task_func_t *)zio_reexecute, zio, TQ_SLEEP); + ASSERT(zio->io_tqent.tqent_task.ta_pending == 0); #endif + (void) taskq_dispatch_ent( + spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], + (task_func_t *)zio_reexecute, zio, 0, + &zio->io_tqent); } return (ZIO_PIPELINE_STOP); } Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Thu Jan 16 14:30:46 2014 (r260741) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Thu Jan 16 14:34:53 2014 (r260742) @@ -45,6 +45,12 @@ typedef struct taskq taskq_t; typedef uintptr_t taskqid_t; typedef void (task_func_t)(void *); +typedef struct taskq_ent { + struct task tqent_task; + task_func_t *tqent_func; + void *tqent_arg; +} taskq_ent_t; + struct proc; /* @@ -80,6 +86,8 @@ taskq_t *taskq_create_proc(const char *, taskq_t *taskq_create_sysdc(const char *, int, int, int, struct proc *, uint_t, uint_t); taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); +void taskq_dispatch_ent(taskq_t *, task_func_t, void *, uint_t, + taskq_ent_t *); void nulltask(void *); void taskq_destroy(taskq_t *); void taskq_wait(taskq_t *); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:35:08 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 312E6D21; Thu, 16 Jan 2014 14:35:08 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1263112AD; Thu, 16 Jan 2014 14:35:08 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEZ7Sl036689; Thu, 16 Jan 2014 14:35:07 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEZ7YT036683; Thu, 16 Jan 2014 14:35:07 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161435.s0GEZ7YT036683@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:35:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260743 - in stable/9/sys/cddl: compat/opensolaris/kern compat/opensolaris/sys contrib/opensolaris/uts/common/fs/zfs contrib/opensolaris/uts/common/fs/zfs/sys contrib/opensolaris/uts/co... X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:35:08 -0000 Author: avg Date: Thu Jan 16 14:35:06 2014 New Revision: 260743 URL: http://svnweb.freebsd.org/changeset/base/260743 Log: MFC r258630: 734 taskq_dispatch_prealloc() desired Deleted: stable/9/sys/cddl/compat/opensolaris/sys/taskq.h Modified: stable/9/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c ============================================================================== --- stable/9/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Thu Jan 16 14:34:53 2014 (r260742) +++ stable/9/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Thu Jan 16 14:35:06 2014 (r260743) @@ -46,7 +46,7 @@ static void system_taskq_init(void *arg) { - taskq_zone = uma_zcreate("taskq_zone", sizeof(struct ostask), + taskq_zone = uma_zcreate("taskq_zone", sizeof(taskq_ent_t), NULL, NULL, NULL, NULL, 0, 0); system_taskq = taskq_create("system_taskq", mp_ncpus, 0, 0, 0, 0); } @@ -104,9 +104,9 @@ taskq_member(taskq_t *tq, kthread_t *thr static void taskq_run(void *arg, int pending __unused) { - struct ostask *task = arg; + taskq_ent_t *task = arg; - task->ost_func(task->ost_arg); + task->tqent_func(task->tqent_arg); uma_zfree(taskq_zone, task); } @@ -114,7 +114,7 @@ taskq_run(void *arg, int pending __unuse taskqid_t taskq_dispatch(taskq_t *tq, task_func_t func, void *arg, uint_t flags) { - struct ostask *task; + taskq_ent_t *task; int mflag, prio; if ((flags & (TQ_SLEEP | TQ_NOQUEUE)) == TQ_SLEEP) @@ -131,26 +131,26 @@ taskq_dispatch(taskq_t *tq, task_func_t if (task == NULL) return (0); - task->ost_func = func; - task->ost_arg = arg; + task->tqent_func = func; + task->tqent_arg = arg; - TASK_INIT(&task->ost_task, prio, taskq_run, task); - taskqueue_enqueue(tq->tq_queue, &task->ost_task); + TASK_INIT(&task->tqent_task, prio, taskq_run, task); + taskqueue_enqueue(tq->tq_queue, &task->tqent_task); return ((taskqid_t)(void *)task); } static void -taskq_run_safe(void *arg, int pending __unused) +taskq_run_ent(void *arg, int pending __unused) { - struct ostask *task = arg; + taskq_ent_t *task = arg; - task->ost_func(task->ost_arg); + task->tqent_func(task->tqent_arg); } -taskqid_t -taskq_dispatch_safe(taskq_t *tq, task_func_t func, void *arg, u_int flags, - struct ostask *task) +void +taskq_dispatch_ent(taskq_t *tq, task_func_t func, void *arg, u_int flags, + taskq_ent_t *task) { int prio; @@ -160,11 +160,9 @@ taskq_dispatch_safe(taskq_t *tq, task_fu */ prio = !!(flags & TQ_FRONT); - task->ost_func = func; - task->ost_arg = arg; + task->tqent_func = func; + task->tqent_arg = arg; - TASK_INIT(&task->ost_task, prio, taskq_run_safe, task); - taskqueue_enqueue(tq->tq_queue, &task->ost_task); - - return ((taskqid_t)(void *)task); + TASK_INIT(&task->tqent_task, prio, taskq_run_ent, task); + taskqueue_enqueue(tq->tq_queue, &task->tqent_task); } Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 14:34:53 2014 (r260742) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 14:35:06 2014 (r260743) @@ -823,7 +823,7 @@ static taskq_t * spa_taskq_create(spa_t *spa, const char *name, enum zti_modes mode, uint_t value) { - uint_t flags = TASKQ_PREPOPULATE; + uint_t flags = 0; boolean_t batch = B_FALSE; switch (mode) { Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Thu Jan 16 14:34:53 2014 (r260742) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Thu Jan 16 14:35:06 2014 (r260743) @@ -23,6 +23,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 Saso Kiselkov. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ #ifndef _ZIO_H @@ -472,10 +473,9 @@ struct zio { zio_cksum_report_t *io_cksum_report; uint64_t io_ena; -#ifdef _KERNEL - /* FreeBSD only. */ - struct ostask io_task; -#endif + /* Taskq dispatching state */ + taskq_ent_t io_tqent; + avl_node_t io_trim_node; list_node_t io_trim_link; }; Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 14:34:53 2014 (r260742) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 14:35:06 2014 (r260743) @@ -21,6 +21,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved. */ #include @@ -1184,7 +1185,7 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ { spa_t *spa = zio->io_spa; zio_type_t t = zio->io_type; - int flags = TQ_SLEEP | (cutinline ? TQ_FRONT : 0); + int flags = (cutinline ? TQ_FRONT : 0); ASSERT(q == ZIO_TASKQ_ISSUE || q == ZIO_TASKQ_INTERRUPT); @@ -1210,13 +1211,19 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ q++; ASSERT3U(q, <, ZIO_TASKQ_TYPES); -#ifdef _KERNEL - (void) taskq_dispatch_safe(spa->spa_zio_taskq[t][q], - (task_func_t *)zio_execute, zio, flags, &zio->io_task); + + /* + * NB: We are assuming that the zio can only be dispatched + * to a single taskq at a time. It would be a grievous error + * to dispatch the zio to another taskq at the same time. + */ +#if defined(illumos) || !defined(_KERNEL) + ASSERT(zio->io_tqent.tqent_next == NULL); #else - (void) taskq_dispatch(spa->spa_zio_taskq[t][q], - (task_func_t *)zio_execute, zio, flags); + ASSERT(zio->io_tqent.tqent_task.ta_pending == 0); #endif + taskq_dispatch_ent(spa->spa_zio_taskq[t][q], + (task_func_t *)zio_execute, zio, flags, &zio->io_tqent); } static boolean_t @@ -3134,16 +3141,15 @@ zio_done(zio_t *zio) * Reexecution is potentially a huge amount of work. * Hand it off to the otherwise-unused claim taskq. */ -#ifdef _KERNEL - (void) taskq_dispatch_safe( - spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], - (task_func_t *)zio_reexecute, zio, TQ_SLEEP, - &zio->io_task); +#if defined(illumos) || !defined(_KERNEL) + ASSERT(zio->io_tqent.tqent_next == NULL); #else - (void) taskq_dispatch( - spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], - (task_func_t *)zio_reexecute, zio, TQ_SLEEP); + ASSERT(zio->io_tqent.tqent_task.ta_pending == 0); #endif + (void) taskq_dispatch_ent( + spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], + (task_func_t *)zio_reexecute, zio, 0, + &zio->io_tqent); } return (ZIO_PIPELINE_STOP); } Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Thu Jan 16 14:34:53 2014 (r260742) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Thu Jan 16 14:35:06 2014 (r260743) @@ -45,6 +45,12 @@ typedef struct taskq taskq_t; typedef uintptr_t taskqid_t; typedef void (task_func_t)(void *); +typedef struct taskq_ent { + struct task tqent_task; + task_func_t *tqent_func; + void *tqent_arg; +} taskq_ent_t; + struct proc; /* @@ -80,6 +86,8 @@ taskq_t *taskq_create_proc(const char *, taskq_t *taskq_create_sysdc(const char *, int, int, int, struct proc *, uint_t, uint_t); taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); +void taskq_dispatch_ent(taskq_t *, task_func_t, void *, uint_t, + taskq_ent_t *); void nulltask(void *); void taskq_destroy(taskq_t *); void taskq_wait(taskq_t *); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:35:22 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 61897EAB; Thu, 16 Jan 2014 14:35:22 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 42CA712B2; Thu, 16 Jan 2014 14:35:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEZMYN036792; Thu, 16 Jan 2014 14:35:22 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEZLZO036787; Thu, 16 Jan 2014 14:35:21 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161435.s0GEZLZO036787@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:35:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260744 - in stable/8/sys/cddl: compat/opensolaris/kern compat/opensolaris/sys contrib/opensolaris/uts/common/fs/zfs contrib/opensolaris/uts/common/fs/zfs/sys contrib/opensolaris/uts/co... X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:35:22 -0000 Author: avg Date: Thu Jan 16 14:35:20 2014 New Revision: 260744 URL: http://svnweb.freebsd.org/changeset/base/260744 Log: MFC r258630: 734 taskq_dispatch_prealloc() desired Deleted: stable/8/sys/cddl/compat/opensolaris/sys/taskq.h Modified: stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c ============================================================================== --- stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Thu Jan 16 14:35:06 2014 (r260743) +++ stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Thu Jan 16 14:35:20 2014 (r260744) @@ -46,7 +46,7 @@ static void system_taskq_init(void *arg) { - taskq_zone = uma_zcreate("taskq_zone", sizeof(struct ostask), + taskq_zone = uma_zcreate("taskq_zone", sizeof(taskq_ent_t), NULL, NULL, NULL, NULL, 0, 0); system_taskq = taskq_create("system_taskq", mp_ncpus, 0, 0, 0, 0); } @@ -104,9 +104,9 @@ taskq_member(taskq_t *tq, kthread_t *thr static void taskq_run(void *arg, int pending __unused) { - struct ostask *task = arg; + taskq_ent_t *task = arg; - task->ost_func(task->ost_arg); + task->tqent_func(task->tqent_arg); uma_zfree(taskq_zone, task); } @@ -114,7 +114,7 @@ taskq_run(void *arg, int pending __unuse taskqid_t taskq_dispatch(taskq_t *tq, task_func_t func, void *arg, uint_t flags) { - struct ostask *task; + taskq_ent_t *task; int mflag, prio; if ((flags & (TQ_SLEEP | TQ_NOQUEUE)) == TQ_SLEEP) @@ -131,26 +131,26 @@ taskq_dispatch(taskq_t *tq, task_func_t if (task == NULL) return (0); - task->ost_func = func; - task->ost_arg = arg; + task->tqent_func = func; + task->tqent_arg = arg; - TASK_INIT(&task->ost_task, prio, taskq_run, task); - taskqueue_enqueue(tq->tq_queue, &task->ost_task); + TASK_INIT(&task->tqent_task, prio, taskq_run, task); + taskqueue_enqueue(tq->tq_queue, &task->tqent_task); return ((taskqid_t)(void *)task); } static void -taskq_run_safe(void *arg, int pending __unused) +taskq_run_ent(void *arg, int pending __unused) { - struct ostask *task = arg; + taskq_ent_t *task = arg; - task->ost_func(task->ost_arg); + task->tqent_func(task->tqent_arg); } -taskqid_t -taskq_dispatch_safe(taskq_t *tq, task_func_t func, void *arg, u_int flags, - struct ostask *task) +void +taskq_dispatch_ent(taskq_t *tq, task_func_t func, void *arg, u_int flags, + taskq_ent_t *task) { int prio; @@ -160,11 +160,9 @@ taskq_dispatch_safe(taskq_t *tq, task_fu */ prio = !!(flags & TQ_FRONT); - task->ost_func = func; - task->ost_arg = arg; + task->tqent_func = func; + task->tqent_arg = arg; - TASK_INIT(&task->ost_task, prio, taskq_run_safe, task); - taskqueue_enqueue(tq->tq_queue, &task->ost_task); - - return ((taskqid_t)(void *)task); + TASK_INIT(&task->tqent_task, prio, taskq_run_ent, task); + taskqueue_enqueue(tq->tq_queue, &task->tqent_task); } Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 14:35:06 2014 (r260743) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 14:35:20 2014 (r260744) @@ -823,7 +823,7 @@ static taskq_t * spa_taskq_create(spa_t *spa, const char *name, enum zti_modes mode, uint_t value) { - uint_t flags = TASKQ_PREPOPULATE; + uint_t flags = 0; boolean_t batch = B_FALSE; switch (mode) { Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Thu Jan 16 14:35:06 2014 (r260743) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Thu Jan 16 14:35:20 2014 (r260744) @@ -23,6 +23,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 Saso Kiselkov. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ #ifndef _ZIO_H @@ -472,10 +473,9 @@ struct zio { zio_cksum_report_t *io_cksum_report; uint64_t io_ena; -#ifdef _KERNEL - /* FreeBSD only. */ - struct ostask io_task; -#endif + /* Taskq dispatching state */ + taskq_ent_t io_tqent; + avl_node_t io_trim_node; list_node_t io_trim_link; }; Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 14:35:06 2014 (r260743) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 14:35:20 2014 (r260744) @@ -21,6 +21,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved. */ #include @@ -1183,7 +1184,7 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ { spa_t *spa = zio->io_spa; zio_type_t t = zio->io_type; - int flags = TQ_SLEEP | (cutinline ? TQ_FRONT : 0); + int flags = (cutinline ? TQ_FRONT : 0); ASSERT(q == ZIO_TASKQ_ISSUE || q == ZIO_TASKQ_INTERRUPT); @@ -1209,13 +1210,19 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ q++; ASSERT3U(q, <, ZIO_TASKQ_TYPES); -#ifdef _KERNEL - (void) taskq_dispatch_safe(spa->spa_zio_taskq[t][q], - (task_func_t *)zio_execute, zio, flags, &zio->io_task); + + /* + * NB: We are assuming that the zio can only be dispatched + * to a single taskq at a time. It would be a grievous error + * to dispatch the zio to another taskq at the same time. + */ +#if defined(illumos) || !defined(_KERNEL) + ASSERT(zio->io_tqent.tqent_next == NULL); #else - (void) taskq_dispatch(spa->spa_zio_taskq[t][q], - (task_func_t *)zio_execute, zio, flags); + ASSERT(zio->io_tqent.tqent_task.ta_pending == 0); #endif + taskq_dispatch_ent(spa->spa_zio_taskq[t][q], + (task_func_t *)zio_execute, zio, flags, &zio->io_tqent); } static boolean_t @@ -3133,16 +3140,15 @@ zio_done(zio_t *zio) * Reexecution is potentially a huge amount of work. * Hand it off to the otherwise-unused claim taskq. */ -#ifdef _KERNEL - (void) taskq_dispatch_safe( - spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], - (task_func_t *)zio_reexecute, zio, TQ_SLEEP, - &zio->io_task); +#if defined(illumos) || !defined(_KERNEL) + ASSERT(zio->io_tqent.tqent_next == NULL); #else - (void) taskq_dispatch( - spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], - (task_func_t *)zio_reexecute, zio, TQ_SLEEP); + ASSERT(zio->io_tqent.tqent_task.ta_pending == 0); #endif + (void) taskq_dispatch_ent( + spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], + (task_func_t *)zio_reexecute, zio, 0, + &zio->io_tqent); } return (ZIO_PIPELINE_STOP); } Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Thu Jan 16 14:35:06 2014 (r260743) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h Thu Jan 16 14:35:20 2014 (r260744) @@ -45,6 +45,12 @@ typedef struct taskq taskq_t; typedef uintptr_t taskqid_t; typedef void (task_func_t)(void *); +typedef struct taskq_ent { + struct task tqent_task; + task_func_t *tqent_func; + void *tqent_arg; +} taskq_ent_t; + struct proc; /* @@ -80,6 +86,8 @@ taskq_t *taskq_create_proc(const char *, taskq_t *taskq_create_sysdc(const char *, int, int, int, struct proc *, uint_t, uint_t); taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); +void taskq_dispatch_ent(taskq_t *, task_func_t, void *, uint_t, + taskq_ent_t *); void nulltask(void *); void taskq_destroy(taskq_t *); void taskq_wait(taskq_t *); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:37:32 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 09837D8; Thu, 16 Jan 2014 14:37:32 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E8F7312CD; Thu, 16 Jan 2014 14:37:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEbV5n037079; Thu, 16 Jan 2014 14:37:31 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEbVjV037078; Thu, 16 Jan 2014 14:37:31 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161437.s0GEbVjV037078@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:37:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260745 - stable/10/sys/cddl/contrib/opensolaris/uts/common X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:37:32 -0000 Author: avg Date: Thu Jan 16 14:37:31 2014 New Revision: 260745 URL: http://svnweb.freebsd.org/changeset/base/260745 Log: MFC r258743: drop ZUT_OBJ Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/Makefile.files Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/Makefile.files ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/Makefile.files Thu Jan 16 14:35:20 2014 (r260744) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/Makefile.files Thu Jan 16 14:37:31 2014 (r260745) @@ -126,6 +126,3 @@ ZFS_OBJS += \ zfs_vfsops.o \ zfs_vnops.o \ zvol.o - -ZUT_OBJS += \ - zut.o From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:37:50 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D22D42FE; Thu, 16 Jan 2014 14:37:50 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BE7E712D3; Thu, 16 Jan 2014 14:37:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEbo8X037187; Thu, 16 Jan 2014 14:37:50 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEbotl037186; Thu, 16 Jan 2014 14:37:50 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161437.s0GEbotl037186@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:37:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260747 - stable/8/sys/cddl/contrib/opensolaris/uts/common X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:37:50 -0000 Author: avg Date: Thu Jan 16 14:37:50 2014 New Revision: 260747 URL: http://svnweb.freebsd.org/changeset/base/260747 Log: MFC r258743: drop ZUT_OBJ Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/Makefile.files Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/Makefile.files ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/Makefile.files Thu Jan 16 14:37:41 2014 (r260746) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/Makefile.files Thu Jan 16 14:37:50 2014 (r260747) @@ -126,6 +126,3 @@ ZFS_OBJS += \ zfs_vfsops.o \ zfs_vnops.o \ zvol.o - -ZUT_OBJS += \ - zut.o From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:37:41 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AD1A5211; Thu, 16 Jan 2014 14:37:41 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 98DC812D1; Thu, 16 Jan 2014 14:37:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEbfUV037133; Thu, 16 Jan 2014 14:37:41 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEbfrs037132; Thu, 16 Jan 2014 14:37:41 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161437.s0GEbfrs037132@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:37:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260746 - stable/9/sys/cddl/contrib/opensolaris/uts/common X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:37:41 -0000 Author: avg Date: Thu Jan 16 14:37:41 2014 New Revision: 260746 URL: http://svnweb.freebsd.org/changeset/base/260746 Log: MFC r258743: drop ZUT_OBJ Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/Makefile.files Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/Makefile.files ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/Makefile.files Thu Jan 16 14:37:31 2014 (r260745) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/Makefile.files Thu Jan 16 14:37:41 2014 (r260746) @@ -126,6 +126,3 @@ ZFS_OBJS += \ zfs_vfsops.o \ zfs_vnops.o \ zvol.o - -ZUT_OBJS += \ - zut.o From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:42:09 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 35478587; Thu, 16 Jan 2014 14:42:09 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 16C1A135A; Thu, 16 Jan 2014 14:42:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEg8lZ040326; Thu, 16 Jan 2014 14:42:08 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEg85X040324; Thu, 16 Jan 2014 14:42:08 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161442.s0GEg85X040324@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:42:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260748 - in stable/9/cddl/contrib/opensolaris/lib/libzpool/common: . sys X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:42:09 -0000 Author: avg Date: Thu Jan 16 14:42:08 2014 New Revision: 260748 URL: http://svnweb.freebsd.org/changeset/base/260748 Log: MFC r258630: 734 taskq_dispatch_prealloc() desired Modified: stable/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h stable/9/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c Directory Properties: stable/9/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- stable/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 14:37:50 2014 (r260747) +++ stable/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 14:42:08 2014 (r260748) @@ -23,6 +23,9 @@ * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. */ +/* + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + */ #ifndef _SYS_ZFS_CONTEXT_H #define _SYS_ZFS_CONTEXT_H @@ -365,6 +368,16 @@ typedef struct taskq taskq_t; typedef uintptr_t taskqid_t; typedef void (task_func_t)(void *); +typedef struct taskq_ent { + struct taskq_ent *tqent_next; + struct taskq_ent *tqent_prev; + task_func_t *tqent_func; + void *tqent_arg; + uintptr_t tqent_flags; +} taskq_ent_t; + +#define TQENT_FLAG_PREALLOC 0x1 /* taskq_dispatch_ent used */ + #define TASKQ_PREPOPULATE 0x0001 #define TASKQ_CPR_SAFE 0x0002 /* Use CPR safe protocol */ #define TASKQ_DYNAMIC 0x0004 /* Use dynamic thread scheduling */ @@ -376,6 +389,7 @@ typedef void (task_func_t)(void *); #define TQ_NOQUEUE 0x02 /* Do not enqueue if can't dispatch */ #define TQ_FRONT 0x08 /* Queue in front */ + extern taskq_t *system_taskq; extern taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); @@ -384,6 +398,8 @@ extern taskq_t *taskq_create(const char #define taskq_create_sysdc(a, b, d, e, p, dc, f) \ (taskq_create(a, b, maxclsyspri, d, e, f)) extern taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); +extern void taskq_dispatch_ent(taskq_t *, task_func_t, void *, uint_t, + taskq_ent_t *); extern void taskq_destroy(taskq_t *); extern void taskq_wait(taskq_t *); extern int taskq_member(taskq_t *, void *); Modified: stable/9/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c ============================================================================== --- stable/9/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c Thu Jan 16 14:37:50 2014 (r260747) +++ stable/9/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c Thu Jan 16 14:42:08 2014 (r260748) @@ -22,19 +22,15 @@ * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + */ #include int taskq_now; taskq_t *system_taskq; -typedef struct task { - struct task *task_next; - struct task *task_prev; - task_func_t *task_func; - void *task_arg; -} task_t; - #define TASKQ_ACTIVE 0x00010000 struct taskq { @@ -51,18 +47,18 @@ struct taskq { int tq_maxalloc; kcondvar_t tq_maxalloc_cv; int tq_maxalloc_wait; - task_t *tq_freelist; - task_t tq_task; + taskq_ent_t *tq_freelist; + taskq_ent_t tq_task; }; -static task_t * +static taskq_ent_t * task_alloc(taskq_t *tq, int tqflags) { - task_t *t; + taskq_ent_t *t; int rv; again: if ((t = tq->tq_freelist) != NULL && tq->tq_nalloc >= tq->tq_minalloc) { - tq->tq_freelist = t->task_next; + tq->tq_freelist = t->tqent_next; } else { if (tq->tq_nalloc >= tq->tq_maxalloc) { if (!(tqflags & KM_SLEEP)) @@ -87,7 +83,7 @@ again: if ((t = tq->tq_freelist) != NULL } mutex_exit(&tq->tq_lock); - t = kmem_alloc(sizeof (task_t), tqflags & KM_SLEEP); + t = kmem_alloc(sizeof (taskq_ent_t), tqflags & KM_SLEEP); mutex_enter(&tq->tq_lock); if (t != NULL) @@ -97,15 +93,15 @@ again: if ((t = tq->tq_freelist) != NULL } static void -task_free(taskq_t *tq, task_t *t) +task_free(taskq_t *tq, taskq_ent_t *t) { if (tq->tq_nalloc <= tq->tq_minalloc) { - t->task_next = tq->tq_freelist; + t->tqent_next = tq->tq_freelist; tq->tq_freelist = t; } else { tq->tq_nalloc--; mutex_exit(&tq->tq_lock); - kmem_free(t, sizeof (task_t)); + kmem_free(t, sizeof (taskq_ent_t)); mutex_enter(&tq->tq_lock); } @@ -116,7 +112,7 @@ task_free(taskq_t *tq, task_t *t) taskqid_t taskq_dispatch(taskq_t *tq, task_func_t func, void *arg, uint_t tqflags) { - task_t *t; + taskq_ent_t *t; if (taskq_now) { func(arg); @@ -130,26 +126,58 @@ taskq_dispatch(taskq_t *tq, task_func_t return (0); } if (tqflags & TQ_FRONT) { - t->task_next = tq->tq_task.task_next; - t->task_prev = &tq->tq_task; + t->tqent_next = tq->tq_task.tqent_next; + t->tqent_prev = &tq->tq_task; } else { - t->task_next = &tq->tq_task; - t->task_prev = tq->tq_task.task_prev; + t->tqent_next = &tq->tq_task; + t->tqent_prev = tq->tq_task.tqent_prev; } - t->task_next->task_prev = t; - t->task_prev->task_next = t; - t->task_func = func; - t->task_arg = arg; + t->tqent_next->tqent_prev = t; + t->tqent_prev->tqent_next = t; + t->tqent_func = func; + t->tqent_arg = arg; cv_signal(&tq->tq_dispatch_cv); mutex_exit(&tq->tq_lock); return (1); } void +taskq_dispatch_ent(taskq_t *tq, task_func_t func, void *arg, uint_t flags, + taskq_ent_t *t) +{ + ASSERT(func != NULL); + ASSERT(!(tq->tq_flags & TASKQ_DYNAMIC)); + + /* + * Mark it as a prealloc'd task. This is important + * to ensure that we don't free it later. + */ + t->tqent_flags |= TQENT_FLAG_PREALLOC; + /* + * Enqueue the task to the underlying queue. + */ + mutex_enter(&tq->tq_lock); + + if (flags & TQ_FRONT) { + t->tqent_next = tq->tq_task.tqent_next; + t->tqent_prev = &tq->tq_task; + } else { + t->tqent_next = &tq->tq_task; + t->tqent_prev = tq->tq_task.tqent_prev; + } + t->tqent_next->tqent_prev = t; + t->tqent_prev->tqent_next = t; + t->tqent_func = func; + t->tqent_arg = arg; + cv_signal(&tq->tq_dispatch_cv); + mutex_exit(&tq->tq_lock); +} + +void taskq_wait(taskq_t *tq) { mutex_enter(&tq->tq_lock); - while (tq->tq_task.task_next != &tq->tq_task || tq->tq_active != 0) + while (tq->tq_task.tqent_next != &tq->tq_task || tq->tq_active != 0) cv_wait(&tq->tq_wait_cv, &tq->tq_lock); mutex_exit(&tq->tq_lock); } @@ -158,27 +186,32 @@ static void * taskq_thread(void *arg) { taskq_t *tq = arg; - task_t *t; + taskq_ent_t *t; + boolean_t prealloc; mutex_enter(&tq->tq_lock); while (tq->tq_flags & TASKQ_ACTIVE) { - if ((t = tq->tq_task.task_next) == &tq->tq_task) { + if ((t = tq->tq_task.tqent_next) == &tq->tq_task) { if (--tq->tq_active == 0) cv_broadcast(&tq->tq_wait_cv); cv_wait(&tq->tq_dispatch_cv, &tq->tq_lock); tq->tq_active++; continue; } - t->task_prev->task_next = t->task_next; - t->task_next->task_prev = t->task_prev; + t->tqent_prev->tqent_next = t->tqent_next; + t->tqent_next->tqent_prev = t->tqent_prev; + t->tqent_next = NULL; + t->tqent_prev = NULL; + prealloc = t->tqent_flags & TQENT_FLAG_PREALLOC; mutex_exit(&tq->tq_lock); rw_enter(&tq->tq_threadlock, RW_READER); - t->task_func(t->task_arg); + t->tqent_func(t->tqent_arg); rw_exit(&tq->tq_threadlock); mutex_enter(&tq->tq_lock); - task_free(tq, t); + if (!prealloc) + task_free(tq, t); } tq->tq_nthreads--; cv_broadcast(&tq->tq_wait_cv); @@ -217,8 +250,8 @@ taskq_create(const char *name, int nthre tq->tq_nthreads = nthreads; tq->tq_minalloc = minalloc; tq->tq_maxalloc = maxalloc; - tq->tq_task.task_next = &tq->tq_task; - tq->tq_task.task_prev = &tq->tq_task; + tq->tq_task.tqent_next = &tq->tq_task; + tq->tq_task.tqent_prev = &tq->tq_task; tq->tq_threadlist = kmem_alloc(nthreads * sizeof (thread_t), KM_SLEEP); if (flags & TASKQ_PREPOPULATE) { From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:42:23 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 289D76B5; Thu, 16 Jan 2014 14:42:23 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 09297135B; Thu, 16 Jan 2014 14:42:23 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEgMgZ040396; Thu, 16 Jan 2014 14:42:22 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEgMva040394; Thu, 16 Jan 2014 14:42:22 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161442.s0GEgMva040394@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:42:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260749 - in stable/8/cddl/contrib/opensolaris/lib/libzpool/common: . sys X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:42:23 -0000 Author: avg Date: Thu Jan 16 14:42:22 2014 New Revision: 260749 URL: http://svnweb.freebsd.org/changeset/base/260749 Log: MFC r258630: 734 taskq_dispatch_prealloc() desired Modified: stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h stable/8/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c Directory Properties: stable/8/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 14:42:08 2014 (r260748) +++ stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 14:42:22 2014 (r260749) @@ -23,6 +23,9 @@ * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. */ +/* + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + */ #ifndef _SYS_ZFS_CONTEXT_H #define _SYS_ZFS_CONTEXT_H @@ -364,6 +367,16 @@ typedef struct taskq taskq_t; typedef uintptr_t taskqid_t; typedef void (task_func_t)(void *); +typedef struct taskq_ent { + struct taskq_ent *tqent_next; + struct taskq_ent *tqent_prev; + task_func_t *tqent_func; + void *tqent_arg; + uintptr_t tqent_flags; +} taskq_ent_t; + +#define TQENT_FLAG_PREALLOC 0x1 /* taskq_dispatch_ent used */ + #define TASKQ_PREPOPULATE 0x0001 #define TASKQ_CPR_SAFE 0x0002 /* Use CPR safe protocol */ #define TASKQ_DYNAMIC 0x0004 /* Use dynamic thread scheduling */ @@ -375,6 +388,7 @@ typedef void (task_func_t)(void *); #define TQ_NOQUEUE 0x02 /* Do not enqueue if can't dispatch */ #define TQ_FRONT 0x08 /* Queue in front */ + extern taskq_t *system_taskq; extern taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); @@ -383,6 +397,8 @@ extern taskq_t *taskq_create(const char #define taskq_create_sysdc(a, b, d, e, p, dc, f) \ (taskq_create(a, b, maxclsyspri, d, e, f)) extern taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); +extern void taskq_dispatch_ent(taskq_t *, task_func_t, void *, uint_t, + taskq_ent_t *); extern void taskq_destroy(taskq_t *); extern void taskq_wait(taskq_t *); extern int taskq_member(taskq_t *, void *); Modified: stable/8/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c ============================================================================== --- stable/8/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c Thu Jan 16 14:42:08 2014 (r260748) +++ stable/8/cddl/contrib/opensolaris/lib/libzpool/common/taskq.c Thu Jan 16 14:42:22 2014 (r260749) @@ -22,19 +22,15 @@ * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + */ #include int taskq_now; taskq_t *system_taskq; -typedef struct task { - struct task *task_next; - struct task *task_prev; - task_func_t *task_func; - void *task_arg; -} task_t; - #define TASKQ_ACTIVE 0x00010000 struct taskq { @@ -51,18 +47,18 @@ struct taskq { int tq_maxalloc; kcondvar_t tq_maxalloc_cv; int tq_maxalloc_wait; - task_t *tq_freelist; - task_t tq_task; + taskq_ent_t *tq_freelist; + taskq_ent_t tq_task; }; -static task_t * +static taskq_ent_t * task_alloc(taskq_t *tq, int tqflags) { - task_t *t; + taskq_ent_t *t; int rv; again: if ((t = tq->tq_freelist) != NULL && tq->tq_nalloc >= tq->tq_minalloc) { - tq->tq_freelist = t->task_next; + tq->tq_freelist = t->tqent_next; } else { if (tq->tq_nalloc >= tq->tq_maxalloc) { if (!(tqflags & KM_SLEEP)) @@ -87,7 +83,7 @@ again: if ((t = tq->tq_freelist) != NULL } mutex_exit(&tq->tq_lock); - t = kmem_alloc(sizeof (task_t), tqflags & KM_SLEEP); + t = kmem_alloc(sizeof (taskq_ent_t), tqflags & KM_SLEEP); mutex_enter(&tq->tq_lock); if (t != NULL) @@ -97,15 +93,15 @@ again: if ((t = tq->tq_freelist) != NULL } static void -task_free(taskq_t *tq, task_t *t) +task_free(taskq_t *tq, taskq_ent_t *t) { if (tq->tq_nalloc <= tq->tq_minalloc) { - t->task_next = tq->tq_freelist; + t->tqent_next = tq->tq_freelist; tq->tq_freelist = t; } else { tq->tq_nalloc--; mutex_exit(&tq->tq_lock); - kmem_free(t, sizeof (task_t)); + kmem_free(t, sizeof (taskq_ent_t)); mutex_enter(&tq->tq_lock); } @@ -116,7 +112,7 @@ task_free(taskq_t *tq, task_t *t) taskqid_t taskq_dispatch(taskq_t *tq, task_func_t func, void *arg, uint_t tqflags) { - task_t *t; + taskq_ent_t *t; if (taskq_now) { func(arg); @@ -130,26 +126,58 @@ taskq_dispatch(taskq_t *tq, task_func_t return (0); } if (tqflags & TQ_FRONT) { - t->task_next = tq->tq_task.task_next; - t->task_prev = &tq->tq_task; + t->tqent_next = tq->tq_task.tqent_next; + t->tqent_prev = &tq->tq_task; } else { - t->task_next = &tq->tq_task; - t->task_prev = tq->tq_task.task_prev; + t->tqent_next = &tq->tq_task; + t->tqent_prev = tq->tq_task.tqent_prev; } - t->task_next->task_prev = t; - t->task_prev->task_next = t; - t->task_func = func; - t->task_arg = arg; + t->tqent_next->tqent_prev = t; + t->tqent_prev->tqent_next = t; + t->tqent_func = func; + t->tqent_arg = arg; cv_signal(&tq->tq_dispatch_cv); mutex_exit(&tq->tq_lock); return (1); } void +taskq_dispatch_ent(taskq_t *tq, task_func_t func, void *arg, uint_t flags, + taskq_ent_t *t) +{ + ASSERT(func != NULL); + ASSERT(!(tq->tq_flags & TASKQ_DYNAMIC)); + + /* + * Mark it as a prealloc'd task. This is important + * to ensure that we don't free it later. + */ + t->tqent_flags |= TQENT_FLAG_PREALLOC; + /* + * Enqueue the task to the underlying queue. + */ + mutex_enter(&tq->tq_lock); + + if (flags & TQ_FRONT) { + t->tqent_next = tq->tq_task.tqent_next; + t->tqent_prev = &tq->tq_task; + } else { + t->tqent_next = &tq->tq_task; + t->tqent_prev = tq->tq_task.tqent_prev; + } + t->tqent_next->tqent_prev = t; + t->tqent_prev->tqent_next = t; + t->tqent_func = func; + t->tqent_arg = arg; + cv_signal(&tq->tq_dispatch_cv); + mutex_exit(&tq->tq_lock); +} + +void taskq_wait(taskq_t *tq) { mutex_enter(&tq->tq_lock); - while (tq->tq_task.task_next != &tq->tq_task || tq->tq_active != 0) + while (tq->tq_task.tqent_next != &tq->tq_task || tq->tq_active != 0) cv_wait(&tq->tq_wait_cv, &tq->tq_lock); mutex_exit(&tq->tq_lock); } @@ -158,27 +186,32 @@ static void * taskq_thread(void *arg) { taskq_t *tq = arg; - task_t *t; + taskq_ent_t *t; + boolean_t prealloc; mutex_enter(&tq->tq_lock); while (tq->tq_flags & TASKQ_ACTIVE) { - if ((t = tq->tq_task.task_next) == &tq->tq_task) { + if ((t = tq->tq_task.tqent_next) == &tq->tq_task) { if (--tq->tq_active == 0) cv_broadcast(&tq->tq_wait_cv); cv_wait(&tq->tq_dispatch_cv, &tq->tq_lock); tq->tq_active++; continue; } - t->task_prev->task_next = t->task_next; - t->task_next->task_prev = t->task_prev; + t->tqent_prev->tqent_next = t->tqent_next; + t->tqent_next->tqent_prev = t->tqent_prev; + t->tqent_next = NULL; + t->tqent_prev = NULL; + prealloc = t->tqent_flags & TQENT_FLAG_PREALLOC; mutex_exit(&tq->tq_lock); rw_enter(&tq->tq_threadlock, RW_READER); - t->task_func(t->task_arg); + t->tqent_func(t->tqent_arg); rw_exit(&tq->tq_threadlock); mutex_enter(&tq->tq_lock); - task_free(tq, t); + if (!prealloc) + task_free(tq, t); } tq->tq_nthreads--; cv_broadcast(&tq->tq_wait_cv); @@ -217,8 +250,8 @@ taskq_create(const char *name, int nthre tq->tq_nthreads = nthreads; tq->tq_minalloc = minalloc; tq->tq_maxalloc = maxalloc; - tq->tq_task.task_next = &tq->tq_task; - tq->tq_task.task_prev = &tq->tq_task; + tq->tq_task.tqent_next = &tq->tq_task; + tq->tq_task.tqent_prev = &tq->tq_task; tq->tq_threadlist = kmem_alloc(nthreads * sizeof (thread_t), KM_SLEEP); if (flags & TASKQ_PREPOPULATE) { From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:47:31 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 168B2879; Thu, 16 Jan 2014 14:47:31 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id EAEBB1390; Thu, 16 Jan 2014 14:47:30 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GElU8D041071; Thu, 16 Jan 2014 14:47:30 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GElUg2041066; Thu, 16 Jan 2014 14:47:30 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161447.s0GElUg2041066@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:47:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260750 - in stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:47:31 -0000 Author: avg Date: Thu Jan 16 14:47:29 2014 New Revision: 260750 URL: http://svnweb.freebsd.org/changeset/base/260750 Log: MFC r258631: MFV r247578 3581 spa_zio_taskq[ZIO_TYPE_FREE][ZIO_TASKQ_ISSUE]->tq_lock is piping hot Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 14:42:22 2014 (r260749) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 14:47:29 2014 (r260750) @@ -95,23 +95,25 @@ SYSCTL_INT(_vfs_zfs, OID_AUTO, check_hos static int zfs_ccw_retry_interval = 300; typedef enum zti_modes { - zti_mode_fixed, /* value is # of threads (min 1) */ - zti_mode_online_percent, /* value is % of online CPUs */ - zti_mode_batch, /* cpu-intensive; value is ignored */ - zti_mode_null, /* don't create a taskq */ - zti_nmodes + ZTI_MODE_FIXED, /* value is # of threads (min 1) */ + ZTI_MODE_ONLINE_PERCENT, /* value is % of online CPUs */ + ZTI_MODE_BATCH, /* cpu-intensive; value is ignored */ + ZTI_MODE_NULL, /* don't create a taskq */ + ZTI_NMODES } zti_modes_t; -#define ZTI_FIX(n) { zti_mode_fixed, (n) } -#define ZTI_PCT(n) { zti_mode_online_percent, (n) } -#define ZTI_BATCH { zti_mode_batch, 0 } -#define ZTI_NULL { zti_mode_null, 0 } +#define ZTI_P(n, q) { ZTI_MODE_FIXED, (n), (q) } +#define ZTI_PCT(n) { ZTI_MODE_ONLINE_PERCENT, (n), 1 } +#define ZTI_BATCH { ZTI_MODE_BATCH, 0, 1 } +#define ZTI_NULL { ZTI_MODE_NULL, 0, 0 } -#define ZTI_ONE ZTI_FIX(1) +#define ZTI_N(n) ZTI_P(n, 1) +#define ZTI_ONE ZTI_N(1) typedef struct zio_taskq_info { - enum zti_modes zti_mode; + zti_modes_t zti_mode; uint_t zti_value; + uint_t zti_count; } zio_taskq_info_t; static const char *const zio_taskq_types[ZIO_TASKQ_TYPES] = { @@ -119,17 +121,30 @@ static const char *const zio_taskq_types }; /* - * Define the taskq threads for the following I/O types: - * NULL, READ, WRITE, FREE, CLAIM, and IOCTL + * This table defines the taskq settings for each ZFS I/O type. When + * initializing a pool, we use this table to create an appropriately sized + * taskq. Some operations are low volume and therefore have a small, static + * number of threads assigned to their taskqs using the ZTI_N(#) or ZTI_ONE + * macros. Other operations process a large amount of data; the ZTI_BATCH + * macro causes us to create a taskq oriented for throughput. Some operations + * are so high frequency and short-lived that the taskq itself can become a a + * point of lock contention. The ZTI_P(#, #) macro indicates that we need an + * additional degree of parallelism specified by the number of threads per- + * taskq and the number of taskqs; when dispatching an event in this case, the + * particular taskq is chosen at random. + * + * The different taskq priorities are to handle the different contexts (issue + * and interrupt) and then to reserve threads for ZIO_PRIORITY_NOW I/Os that + * need to be handled with minimum delay. */ const zio_taskq_info_t zio_taskqs[ZIO_TYPES][ZIO_TASKQ_TYPES] = { /* ISSUE ISSUE_HIGH INTR INTR_HIGH */ - { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, - { ZTI_FIX(8), ZTI_NULL, ZTI_BATCH, ZTI_NULL }, - { ZTI_BATCH, ZTI_FIX(5), ZTI_FIX(8), ZTI_FIX(5) }, - { ZTI_FIX(100), ZTI_NULL, ZTI_ONE, ZTI_NULL }, - { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, - { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, + { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* NULL */ + { ZTI_N(8), ZTI_NULL, ZTI_BATCH, ZTI_NULL }, /* READ */ + { ZTI_BATCH, ZTI_N(5), ZTI_N(8), ZTI_N(5) }, /* WRITE */ + { ZTI_P(12, 8), ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* FREE */ + { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* CLAIM */ + { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* IOCTL */ }; static void spa_sync_version(void *arg, dmu_tx_t *tx); @@ -821,50 +836,124 @@ spa_get_errlists(spa_t *spa, avl_tree_t offsetof(spa_error_entry_t, se_avl)); } -static taskq_t * -spa_taskq_create(spa_t *spa, const char *name, enum zti_modes mode, - uint_t value) +static void +spa_taskqs_init(spa_t *spa, zio_type_t t, zio_taskq_type_t q) { + const zio_taskq_info_t *ztip = &zio_taskqs[t][q]; + enum zti_modes mode = ztip->zti_mode; + uint_t value = ztip->zti_value; + uint_t count = ztip->zti_count; + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + char name[32]; uint_t flags = 0; boolean_t batch = B_FALSE; - switch (mode) { - case zti_mode_null: - return (NULL); /* no taskq needed */ - - case zti_mode_fixed: - ASSERT3U(value, >=, 1); - value = MAX(value, 1); - break; + if (mode == ZTI_MODE_NULL) { + tqs->stqs_count = 0; + tqs->stqs_taskq = NULL; + return; + } - case zti_mode_batch: - batch = B_TRUE; - flags |= TASKQ_THREADS_CPU_PCT; - value = zio_taskq_batch_pct; - break; + ASSERT3U(count, >, 0); - case zti_mode_online_percent: - flags |= TASKQ_THREADS_CPU_PCT; - break; + tqs->stqs_count = count; + tqs->stqs_taskq = kmem_alloc(count * sizeof (taskq_t *), KM_SLEEP); - default: - panic("unrecognized mode for %s taskq (%u:%u) in " - "spa_activate()", - name, mode, value); - break; - } + for (uint_t i = 0; i < count; i++) { + taskq_t *tq; + + switch (mode) { + case ZTI_MODE_FIXED: + ASSERT3U(value, >=, 1); + value = MAX(value, 1); + break; + + case ZTI_MODE_BATCH: + batch = B_TRUE; + flags |= TASKQ_THREADS_CPU_PCT; + value = zio_taskq_batch_pct; + break; + + case ZTI_MODE_ONLINE_PERCENT: + flags |= TASKQ_THREADS_CPU_PCT; + break; + + default: + panic("unrecognized mode for %s_%s taskq (%u:%u) in " + "spa_activate()", + zio_type_name[t], zio_taskq_types[q], mode, value); + break; + } + + if (count > 1) { + (void) snprintf(name, sizeof (name), "%s_%s_%u", + zio_type_name[t], zio_taskq_types[q], i); + } else { + (void) snprintf(name, sizeof (name), "%s_%s", + zio_type_name[t], zio_taskq_types[q]); + } #ifdef SYSDC - if (zio_taskq_sysdc && spa->spa_proc != &p0) { - if (batch) - flags |= TASKQ_DC_BATCH; + if (zio_taskq_sysdc && spa->spa_proc != &p0) { + if (batch) + flags |= TASKQ_DC_BATCH; - return (taskq_create_sysdc(name, value, 50, INT_MAX, - spa->spa_proc, zio_taskq_basedc, flags)); - } + tq = taskq_create_sysdc(name, value, 50, INT_MAX, + spa->spa_proc, zio_taskq_basedc, flags); + } else { +#endif + tq = taskq_create_proc(name, value, maxclsyspri, 50, + INT_MAX, spa->spa_proc, flags); +#ifdef SYSDC + } #endif - return (taskq_create_proc(name, value, maxclsyspri, 50, INT_MAX, - spa->spa_proc, flags)); + + tqs->stqs_taskq[i] = tq; + } +} + +static void +spa_taskqs_fini(spa_t *spa, zio_type_t t, zio_taskq_type_t q) +{ + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + + if (tqs->stqs_taskq == NULL) { + ASSERT0(tqs->stqs_count); + return; + } + + for (uint_t i = 0; i < tqs->stqs_count; i++) { + ASSERT3P(tqs->stqs_taskq[i], !=, NULL); + taskq_destroy(tqs->stqs_taskq[i]); + } + + kmem_free(tqs->stqs_taskq, tqs->stqs_count * sizeof (taskq_t *)); + tqs->stqs_taskq = NULL; +} + +/* + * Dispatch a task to the appropriate taskq for the ZFS I/O type and priority. + * Note that a type may have multiple discrete taskqs to avoid lock contention + * on the taskq itself. In that case we choose which taskq at random by using + * the low bits of gethrtime(). + */ +void +spa_taskq_dispatch_ent(spa_t *spa, zio_type_t t, zio_taskq_type_t q, + task_func_t *func, void *arg, uint_t flags, taskq_ent_t *ent) +{ + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + taskq_t *tq; + + ASSERT3P(tqs->stqs_taskq, !=, NULL); + ASSERT3U(tqs->stqs_count, !=, 0); + + if (tqs->stqs_count == 1) { + tq = tqs->stqs_taskq[0]; + } else { + tq = tqs->stqs_taskq[gethrtime() % tqs->stqs_count]; + } + + taskq_dispatch_ent(tq, func, arg, flags, ent); } static void @@ -872,16 +961,7 @@ spa_create_zio_taskqs(spa_t *spa) { for (int t = 0; t < ZIO_TYPES; t++) { for (int q = 0; q < ZIO_TASKQ_TYPES; q++) { - const zio_taskq_info_t *ztip = &zio_taskqs[t][q]; - enum zti_modes mode = ztip->zti_mode; - uint_t value = ztip->zti_value; - char name[32]; - - (void) snprintf(name, sizeof (name), - "%s_%s", zio_type_name[t], zio_taskq_types[q]); - - spa->spa_zio_taskq[t][q] = - spa_taskq_create(spa, name, mode, value); + spa_taskqs_init(spa, t, q); } } } @@ -1058,9 +1138,7 @@ spa_deactivate(spa_t *spa) for (int t = 0; t < ZIO_TYPES; t++) { for (int q = 0; q < ZIO_TASKQ_TYPES; q++) { - if (spa->spa_zio_taskq[t][q] != NULL) - taskq_destroy(spa->spa_zio_taskq[t][q]); - spa->spa_zio_taskq[t][q] = NULL; + spa_taskqs_fini(spa, t, q); } } Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h Thu Jan 16 14:42:22 2014 (r260749) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h Thu Jan 16 14:47:29 2014 (r260750) @@ -81,16 +81,16 @@ typedef struct spa_config_dirent { char *scd_path; } spa_config_dirent_t; -enum zio_taskq_type { +typedef enum zio_taskq_type { ZIO_TASKQ_ISSUE = 0, ZIO_TASKQ_ISSUE_HIGH, ZIO_TASKQ_INTERRUPT, ZIO_TASKQ_INTERRUPT_HIGH, ZIO_TASKQ_TYPES -}; +} zio_taskq_type_t; /* - * State machine for the zpool-pooname process. The states transitions + * State machine for the zpool-poolname process. The states transitions * are done as follows: * * From To Routine @@ -108,6 +108,11 @@ typedef enum spa_proc_state { SPA_PROC_GONE /* spa_thread() is exiting, spa_proc = &p0 */ } spa_proc_state_t; +typedef struct spa_taskqs { + uint_t stqs_count; + taskq_t **stqs_taskq; +} spa_taskqs_t; + struct spa { /* * Fields protected by spa_namespace_lock. @@ -126,7 +131,7 @@ struct spa { uint8_t spa_sync_on; /* sync threads are running */ spa_load_state_t spa_load_state; /* current load operation */ uint64_t spa_import_flags; /* import specific flags */ - taskq_t *spa_zio_taskq[ZIO_TYPES][ZIO_TASKQ_TYPES]; + spa_taskqs_t spa_zio_taskq[ZIO_TYPES][ZIO_TASKQ_TYPES]; dsl_pool_t *spa_dsl_pool; boolean_t spa_is_initializing; /* true while opening pool */ metaslab_class_t *spa_normal_class; /* normal data class */ @@ -258,6 +263,9 @@ struct spa { extern const char *spa_config_path; +extern void spa_taskq_dispatch_ent(spa_t *spa, zio_type_t t, zio_taskq_type_t q, + task_func_t *func, void *arg, uint_t flags, taskq_ent_t *ent); + #ifdef __cplusplus } #endif Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 14:42:22 2014 (r260749) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 14:47:29 2014 (r260750) @@ -1221,7 +1221,7 @@ zio_free_bp_init(zio_t *zio) */ static void -zio_taskq_dispatch(zio_t *zio, enum zio_taskq_type q, boolean_t cutinline) +zio_taskq_dispatch(zio_t *zio, zio_taskq_type_t q, boolean_t cutinline) { spa_t *spa = zio->io_spa; zio_type_t t = zio->io_type; @@ -1244,10 +1244,11 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ t = ZIO_TYPE_NULL; /* - * If this is a high priority I/O, then use the high priority taskq. + * If this is a high priority I/O, then use the high priority taskq if + * available. */ if (zio->io_priority == ZIO_PRIORITY_NOW && - spa->spa_zio_taskq[t][q + 1] != NULL) + spa->spa_zio_taskq[t][q + 1].stqs_count != 0) q++; ASSERT3U(q, <, ZIO_TASKQ_TYPES); @@ -1262,19 +1263,24 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ #else ASSERT(zio->io_tqent.tqent_task.ta_pending == 0); #endif - taskq_dispatch_ent(spa->spa_zio_taskq[t][q], - (task_func_t *)zio_execute, zio, flags, &zio->io_tqent); + spa_taskq_dispatch_ent(spa, t, q, (task_func_t *)zio_execute, zio, + flags, &zio->io_tqent); } static boolean_t -zio_taskq_member(zio_t *zio, enum zio_taskq_type q) +zio_taskq_member(zio_t *zio, zio_taskq_type_t q) { kthread_t *executor = zio->io_executor; spa_t *spa = zio->io_spa; - for (zio_type_t t = 0; t < ZIO_TYPES; t++) - if (taskq_member(spa->spa_zio_taskq[t][q], executor)) - return (B_TRUE); + for (zio_type_t t = 0; t < ZIO_TYPES; t++) { + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + uint_t i; + for (i = 0; i < tqs->stqs_count; i++) { + if (taskq_member(tqs->stqs_taskq[i], executor)) + return (B_TRUE); + } + } return (B_FALSE); } @@ -3186,10 +3192,9 @@ zio_done(zio_t *zio) #else ASSERT(zio->io_tqent.tqent_task.ta_pending == 0); #endif - (void) taskq_dispatch_ent( - spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], - (task_func_t *)zio_reexecute, zio, 0, - &zio->io_tqent); + spa_taskq_dispatch_ent(spa, ZIO_TYPE_CLAIM, + ZIO_TASKQ_ISSUE, (task_func_t *)zio_reexecute, zio, + 0, &zio->io_tqent); } return (ZIO_PIPELINE_STOP); } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:48:06 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9314E9CF; Thu, 16 Jan 2014 14:48:06 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 73918139B; Thu, 16 Jan 2014 14:48:06 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEm6lV041188; Thu, 16 Jan 2014 14:48:06 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEm5tv041185; Thu, 16 Jan 2014 14:48:05 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161448.s0GEm5tv041185@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:48:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260751 - in stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:48:06 -0000 Author: avg Date: Thu Jan 16 14:48:05 2014 New Revision: 260751 URL: http://svnweb.freebsd.org/changeset/base/260751 Log: MFC r258631: MFV r247578 3581 spa_zio_taskq[ZIO_TYPE_FREE][ZIO_TASKQ_ISSUE]->tq_lock is piping hot Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 14:47:29 2014 (r260750) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 14:48:05 2014 (r260751) @@ -95,23 +95,25 @@ SYSCTL_INT(_vfs_zfs, OID_AUTO, check_hos static int zfs_ccw_retry_interval = 300; typedef enum zti_modes { - zti_mode_fixed, /* value is # of threads (min 1) */ - zti_mode_online_percent, /* value is % of online CPUs */ - zti_mode_batch, /* cpu-intensive; value is ignored */ - zti_mode_null, /* don't create a taskq */ - zti_nmodes + ZTI_MODE_FIXED, /* value is # of threads (min 1) */ + ZTI_MODE_ONLINE_PERCENT, /* value is % of online CPUs */ + ZTI_MODE_BATCH, /* cpu-intensive; value is ignored */ + ZTI_MODE_NULL, /* don't create a taskq */ + ZTI_NMODES } zti_modes_t; -#define ZTI_FIX(n) { zti_mode_fixed, (n) } -#define ZTI_PCT(n) { zti_mode_online_percent, (n) } -#define ZTI_BATCH { zti_mode_batch, 0 } -#define ZTI_NULL { zti_mode_null, 0 } +#define ZTI_P(n, q) { ZTI_MODE_FIXED, (n), (q) } +#define ZTI_PCT(n) { ZTI_MODE_ONLINE_PERCENT, (n), 1 } +#define ZTI_BATCH { ZTI_MODE_BATCH, 0, 1 } +#define ZTI_NULL { ZTI_MODE_NULL, 0, 0 } -#define ZTI_ONE ZTI_FIX(1) +#define ZTI_N(n) ZTI_P(n, 1) +#define ZTI_ONE ZTI_N(1) typedef struct zio_taskq_info { - enum zti_modes zti_mode; + zti_modes_t zti_mode; uint_t zti_value; + uint_t zti_count; } zio_taskq_info_t; static const char *const zio_taskq_types[ZIO_TASKQ_TYPES] = { @@ -119,17 +121,30 @@ static const char *const zio_taskq_types }; /* - * Define the taskq threads for the following I/O types: - * NULL, READ, WRITE, FREE, CLAIM, and IOCTL + * This table defines the taskq settings for each ZFS I/O type. When + * initializing a pool, we use this table to create an appropriately sized + * taskq. Some operations are low volume and therefore have a small, static + * number of threads assigned to their taskqs using the ZTI_N(#) or ZTI_ONE + * macros. Other operations process a large amount of data; the ZTI_BATCH + * macro causes us to create a taskq oriented for throughput. Some operations + * are so high frequency and short-lived that the taskq itself can become a a + * point of lock contention. The ZTI_P(#, #) macro indicates that we need an + * additional degree of parallelism specified by the number of threads per- + * taskq and the number of taskqs; when dispatching an event in this case, the + * particular taskq is chosen at random. + * + * The different taskq priorities are to handle the different contexts (issue + * and interrupt) and then to reserve threads for ZIO_PRIORITY_NOW I/Os that + * need to be handled with minimum delay. */ const zio_taskq_info_t zio_taskqs[ZIO_TYPES][ZIO_TASKQ_TYPES] = { /* ISSUE ISSUE_HIGH INTR INTR_HIGH */ - { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, - { ZTI_FIX(8), ZTI_NULL, ZTI_BATCH, ZTI_NULL }, - { ZTI_BATCH, ZTI_FIX(5), ZTI_FIX(8), ZTI_FIX(5) }, - { ZTI_FIX(100), ZTI_NULL, ZTI_ONE, ZTI_NULL }, - { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, - { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, + { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* NULL */ + { ZTI_N(8), ZTI_NULL, ZTI_BATCH, ZTI_NULL }, /* READ */ + { ZTI_BATCH, ZTI_N(5), ZTI_N(8), ZTI_N(5) }, /* WRITE */ + { ZTI_P(12, 8), ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* FREE */ + { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* CLAIM */ + { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* IOCTL */ }; static void spa_sync_version(void *arg, dmu_tx_t *tx); @@ -819,50 +834,124 @@ spa_get_errlists(spa_t *spa, avl_tree_t offsetof(spa_error_entry_t, se_avl)); } -static taskq_t * -spa_taskq_create(spa_t *spa, const char *name, enum zti_modes mode, - uint_t value) +static void +spa_taskqs_init(spa_t *spa, zio_type_t t, zio_taskq_type_t q) { + const zio_taskq_info_t *ztip = &zio_taskqs[t][q]; + enum zti_modes mode = ztip->zti_mode; + uint_t value = ztip->zti_value; + uint_t count = ztip->zti_count; + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + char name[32]; uint_t flags = 0; boolean_t batch = B_FALSE; - switch (mode) { - case zti_mode_null: - return (NULL); /* no taskq needed */ - - case zti_mode_fixed: - ASSERT3U(value, >=, 1); - value = MAX(value, 1); - break; + if (mode == ZTI_MODE_NULL) { + tqs->stqs_count = 0; + tqs->stqs_taskq = NULL; + return; + } - case zti_mode_batch: - batch = B_TRUE; - flags |= TASKQ_THREADS_CPU_PCT; - value = zio_taskq_batch_pct; - break; + ASSERT3U(count, >, 0); - case zti_mode_online_percent: - flags |= TASKQ_THREADS_CPU_PCT; - break; + tqs->stqs_count = count; + tqs->stqs_taskq = kmem_alloc(count * sizeof (taskq_t *), KM_SLEEP); - default: - panic("unrecognized mode for %s taskq (%u:%u) in " - "spa_activate()", - name, mode, value); - break; - } + for (uint_t i = 0; i < count; i++) { + taskq_t *tq; + + switch (mode) { + case ZTI_MODE_FIXED: + ASSERT3U(value, >=, 1); + value = MAX(value, 1); + break; + + case ZTI_MODE_BATCH: + batch = B_TRUE; + flags |= TASKQ_THREADS_CPU_PCT; + value = zio_taskq_batch_pct; + break; + + case ZTI_MODE_ONLINE_PERCENT: + flags |= TASKQ_THREADS_CPU_PCT; + break; + + default: + panic("unrecognized mode for %s_%s taskq (%u:%u) in " + "spa_activate()", + zio_type_name[t], zio_taskq_types[q], mode, value); + break; + } + + if (count > 1) { + (void) snprintf(name, sizeof (name), "%s_%s_%u", + zio_type_name[t], zio_taskq_types[q], i); + } else { + (void) snprintf(name, sizeof (name), "%s_%s", + zio_type_name[t], zio_taskq_types[q]); + } #ifdef SYSDC - if (zio_taskq_sysdc && spa->spa_proc != &p0) { - if (batch) - flags |= TASKQ_DC_BATCH; + if (zio_taskq_sysdc && spa->spa_proc != &p0) { + if (batch) + flags |= TASKQ_DC_BATCH; - return (taskq_create_sysdc(name, value, 50, INT_MAX, - spa->spa_proc, zio_taskq_basedc, flags)); - } + tq = taskq_create_sysdc(name, value, 50, INT_MAX, + spa->spa_proc, zio_taskq_basedc, flags); + } else { +#endif + tq = taskq_create_proc(name, value, maxclsyspri, 50, + INT_MAX, spa->spa_proc, flags); +#ifdef SYSDC + } #endif - return (taskq_create_proc(name, value, maxclsyspri, 50, INT_MAX, - spa->spa_proc, flags)); + + tqs->stqs_taskq[i] = tq; + } +} + +static void +spa_taskqs_fini(spa_t *spa, zio_type_t t, zio_taskq_type_t q) +{ + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + + if (tqs->stqs_taskq == NULL) { + ASSERT0(tqs->stqs_count); + return; + } + + for (uint_t i = 0; i < tqs->stqs_count; i++) { + ASSERT3P(tqs->stqs_taskq[i], !=, NULL); + taskq_destroy(tqs->stqs_taskq[i]); + } + + kmem_free(tqs->stqs_taskq, tqs->stqs_count * sizeof (taskq_t *)); + tqs->stqs_taskq = NULL; +} + +/* + * Dispatch a task to the appropriate taskq for the ZFS I/O type and priority. + * Note that a type may have multiple discrete taskqs to avoid lock contention + * on the taskq itself. In that case we choose which taskq at random by using + * the low bits of gethrtime(). + */ +void +spa_taskq_dispatch_ent(spa_t *spa, zio_type_t t, zio_taskq_type_t q, + task_func_t *func, void *arg, uint_t flags, taskq_ent_t *ent) +{ + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + taskq_t *tq; + + ASSERT3P(tqs->stqs_taskq, !=, NULL); + ASSERT3U(tqs->stqs_count, !=, 0); + + if (tqs->stqs_count == 1) { + tq = tqs->stqs_taskq[0]; + } else { + tq = tqs->stqs_taskq[gethrtime() % tqs->stqs_count]; + } + + taskq_dispatch_ent(tq, func, arg, flags, ent); } static void @@ -870,16 +959,7 @@ spa_create_zio_taskqs(spa_t *spa) { for (int t = 0; t < ZIO_TYPES; t++) { for (int q = 0; q < ZIO_TASKQ_TYPES; q++) { - const zio_taskq_info_t *ztip = &zio_taskqs[t][q]; - enum zti_modes mode = ztip->zti_mode; - uint_t value = ztip->zti_value; - char name[32]; - - (void) snprintf(name, sizeof (name), - "%s_%s", zio_type_name[t], zio_taskq_types[q]); - - spa->spa_zio_taskq[t][q] = - spa_taskq_create(spa, name, mode, value); + spa_taskqs_init(spa, t, q); } } } @@ -1056,9 +1136,7 @@ spa_deactivate(spa_t *spa) for (int t = 0; t < ZIO_TYPES; t++) { for (int q = 0; q < ZIO_TASKQ_TYPES; q++) { - if (spa->spa_zio_taskq[t][q] != NULL) - taskq_destroy(spa->spa_zio_taskq[t][q]); - spa->spa_zio_taskq[t][q] = NULL; + spa_taskqs_fini(spa, t, q); } } Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h Thu Jan 16 14:47:29 2014 (r260750) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h Thu Jan 16 14:48:05 2014 (r260751) @@ -81,16 +81,16 @@ typedef struct spa_config_dirent { char *scd_path; } spa_config_dirent_t; -enum zio_taskq_type { +typedef enum zio_taskq_type { ZIO_TASKQ_ISSUE = 0, ZIO_TASKQ_ISSUE_HIGH, ZIO_TASKQ_INTERRUPT, ZIO_TASKQ_INTERRUPT_HIGH, ZIO_TASKQ_TYPES -}; +} zio_taskq_type_t; /* - * State machine for the zpool-pooname process. The states transitions + * State machine for the zpool-poolname process. The states transitions * are done as follows: * * From To Routine @@ -108,6 +108,11 @@ typedef enum spa_proc_state { SPA_PROC_GONE /* spa_thread() is exiting, spa_proc = &p0 */ } spa_proc_state_t; +typedef struct spa_taskqs { + uint_t stqs_count; + taskq_t **stqs_taskq; +} spa_taskqs_t; + struct spa { /* * Fields protected by spa_namespace_lock. @@ -126,7 +131,7 @@ struct spa { uint8_t spa_sync_on; /* sync threads are running */ spa_load_state_t spa_load_state; /* current load operation */ uint64_t spa_import_flags; /* import specific flags */ - taskq_t *spa_zio_taskq[ZIO_TYPES][ZIO_TASKQ_TYPES]; + spa_taskqs_t spa_zio_taskq[ZIO_TYPES][ZIO_TASKQ_TYPES]; dsl_pool_t *spa_dsl_pool; boolean_t spa_is_initializing; /* true while opening pool */ metaslab_class_t *spa_normal_class; /* normal data class */ @@ -258,6 +263,9 @@ struct spa { extern const char *spa_config_path; +extern void spa_taskq_dispatch_ent(spa_t *spa, zio_type_t t, zio_taskq_type_t q, + task_func_t *func, void *arg, uint_t flags, taskq_ent_t *ent); + #ifdef __cplusplus } #endif Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 14:47:29 2014 (r260750) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 14:48:05 2014 (r260751) @@ -1181,7 +1181,7 @@ zio_free_bp_init(zio_t *zio) */ static void -zio_taskq_dispatch(zio_t *zio, enum zio_taskq_type q, boolean_t cutinline) +zio_taskq_dispatch(zio_t *zio, zio_taskq_type_t q, boolean_t cutinline) { spa_t *spa = zio->io_spa; zio_type_t t = zio->io_type; @@ -1204,10 +1204,11 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ t = ZIO_TYPE_NULL; /* - * If this is a high priority I/O, then use the high priority taskq. + * If this is a high priority I/O, then use the high priority taskq if + * available. */ if (zio->io_priority == ZIO_PRIORITY_NOW && - spa->spa_zio_taskq[t][q + 1] != NULL) + spa->spa_zio_taskq[t][q + 1].stqs_count != 0) q++; ASSERT3U(q, <, ZIO_TASKQ_TYPES); @@ -1222,19 +1223,24 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ #else ASSERT(zio->io_tqent.tqent_task.ta_pending == 0); #endif - taskq_dispatch_ent(spa->spa_zio_taskq[t][q], - (task_func_t *)zio_execute, zio, flags, &zio->io_tqent); + spa_taskq_dispatch_ent(spa, t, q, (task_func_t *)zio_execute, zio, + flags, &zio->io_tqent); } static boolean_t -zio_taskq_member(zio_t *zio, enum zio_taskq_type q) +zio_taskq_member(zio_t *zio, zio_taskq_type_t q) { kthread_t *executor = zio->io_executor; spa_t *spa = zio->io_spa; - for (zio_type_t t = 0; t < ZIO_TYPES; t++) - if (taskq_member(spa->spa_zio_taskq[t][q], executor)) - return (B_TRUE); + for (zio_type_t t = 0; t < ZIO_TYPES; t++) { + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + uint_t i; + for (i = 0; i < tqs->stqs_count; i++) { + if (taskq_member(tqs->stqs_taskq[i], executor)) + return (B_TRUE); + } + } return (B_FALSE); } @@ -3146,10 +3152,9 @@ zio_done(zio_t *zio) #else ASSERT(zio->io_tqent.tqent_task.ta_pending == 0); #endif - (void) taskq_dispatch_ent( - spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], - (task_func_t *)zio_reexecute, zio, 0, - &zio->io_tqent); + spa_taskq_dispatch_ent(spa, ZIO_TYPE_CLAIM, + ZIO_TASKQ_ISSUE, (task_func_t *)zio_reexecute, zio, + 0, &zio->io_tqent); } return (ZIO_PIPELINE_STOP); } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:48:27 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 45441BBD; Thu, 16 Jan 2014 14:48:27 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 257CA13A2; Thu, 16 Jan 2014 14:48:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEmRRY041301; Thu, 16 Jan 2014 14:48:27 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEmQCx041298; Thu, 16 Jan 2014 14:48:26 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161448.s0GEmQCx041298@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 14:48:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260753 - in stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:48:27 -0000 Author: avg Date: Thu Jan 16 14:48:26 2014 New Revision: 260753 URL: http://svnweb.freebsd.org/changeset/base/260753 Log: MFC r258631: MFV r247578 3581 spa_zio_taskq[ZIO_TYPE_FREE][ZIO_TASKQ_ISSUE]->tq_lock is piping hot Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 14:48:23 2014 (r260752) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 14:48:26 2014 (r260753) @@ -95,23 +95,25 @@ SYSCTL_INT(_vfs_zfs, OID_AUTO, check_hos static int zfs_ccw_retry_interval = 300; typedef enum zti_modes { - zti_mode_fixed, /* value is # of threads (min 1) */ - zti_mode_online_percent, /* value is % of online CPUs */ - zti_mode_batch, /* cpu-intensive; value is ignored */ - zti_mode_null, /* don't create a taskq */ - zti_nmodes + ZTI_MODE_FIXED, /* value is # of threads (min 1) */ + ZTI_MODE_ONLINE_PERCENT, /* value is % of online CPUs */ + ZTI_MODE_BATCH, /* cpu-intensive; value is ignored */ + ZTI_MODE_NULL, /* don't create a taskq */ + ZTI_NMODES } zti_modes_t; -#define ZTI_FIX(n) { zti_mode_fixed, (n) } -#define ZTI_PCT(n) { zti_mode_online_percent, (n) } -#define ZTI_BATCH { zti_mode_batch, 0 } -#define ZTI_NULL { zti_mode_null, 0 } +#define ZTI_P(n, q) { ZTI_MODE_FIXED, (n), (q) } +#define ZTI_PCT(n) { ZTI_MODE_ONLINE_PERCENT, (n), 1 } +#define ZTI_BATCH { ZTI_MODE_BATCH, 0, 1 } +#define ZTI_NULL { ZTI_MODE_NULL, 0, 0 } -#define ZTI_ONE ZTI_FIX(1) +#define ZTI_N(n) ZTI_P(n, 1) +#define ZTI_ONE ZTI_N(1) typedef struct zio_taskq_info { - enum zti_modes zti_mode; + zti_modes_t zti_mode; uint_t zti_value; + uint_t zti_count; } zio_taskq_info_t; static const char *const zio_taskq_types[ZIO_TASKQ_TYPES] = { @@ -119,17 +121,30 @@ static const char *const zio_taskq_types }; /* - * Define the taskq threads for the following I/O types: - * NULL, READ, WRITE, FREE, CLAIM, and IOCTL + * This table defines the taskq settings for each ZFS I/O type. When + * initializing a pool, we use this table to create an appropriately sized + * taskq. Some operations are low volume and therefore have a small, static + * number of threads assigned to their taskqs using the ZTI_N(#) or ZTI_ONE + * macros. Other operations process a large amount of data; the ZTI_BATCH + * macro causes us to create a taskq oriented for throughput. Some operations + * are so high frequency and short-lived that the taskq itself can become a a + * point of lock contention. The ZTI_P(#, #) macro indicates that we need an + * additional degree of parallelism specified by the number of threads per- + * taskq and the number of taskqs; when dispatching an event in this case, the + * particular taskq is chosen at random. + * + * The different taskq priorities are to handle the different contexts (issue + * and interrupt) and then to reserve threads for ZIO_PRIORITY_NOW I/Os that + * need to be handled with minimum delay. */ const zio_taskq_info_t zio_taskqs[ZIO_TYPES][ZIO_TASKQ_TYPES] = { /* ISSUE ISSUE_HIGH INTR INTR_HIGH */ - { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, - { ZTI_FIX(8), ZTI_NULL, ZTI_BATCH, ZTI_NULL }, - { ZTI_BATCH, ZTI_FIX(5), ZTI_FIX(8), ZTI_FIX(5) }, - { ZTI_FIX(100), ZTI_NULL, ZTI_ONE, ZTI_NULL }, - { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, - { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, + { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* NULL */ + { ZTI_N(8), ZTI_NULL, ZTI_BATCH, ZTI_NULL }, /* READ */ + { ZTI_BATCH, ZTI_N(5), ZTI_N(8), ZTI_N(5) }, /* WRITE */ + { ZTI_P(12, 8), ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* FREE */ + { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* CLAIM */ + { ZTI_ONE, ZTI_NULL, ZTI_ONE, ZTI_NULL }, /* IOCTL */ }; static void spa_sync_version(void *arg, dmu_tx_t *tx); @@ -819,50 +834,124 @@ spa_get_errlists(spa_t *spa, avl_tree_t offsetof(spa_error_entry_t, se_avl)); } -static taskq_t * -spa_taskq_create(spa_t *spa, const char *name, enum zti_modes mode, - uint_t value) +static void +spa_taskqs_init(spa_t *spa, zio_type_t t, zio_taskq_type_t q) { + const zio_taskq_info_t *ztip = &zio_taskqs[t][q]; + enum zti_modes mode = ztip->zti_mode; + uint_t value = ztip->zti_value; + uint_t count = ztip->zti_count; + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + char name[32]; uint_t flags = 0; boolean_t batch = B_FALSE; - switch (mode) { - case zti_mode_null: - return (NULL); /* no taskq needed */ - - case zti_mode_fixed: - ASSERT3U(value, >=, 1); - value = MAX(value, 1); - break; + if (mode == ZTI_MODE_NULL) { + tqs->stqs_count = 0; + tqs->stqs_taskq = NULL; + return; + } - case zti_mode_batch: - batch = B_TRUE; - flags |= TASKQ_THREADS_CPU_PCT; - value = zio_taskq_batch_pct; - break; + ASSERT3U(count, >, 0); - case zti_mode_online_percent: - flags |= TASKQ_THREADS_CPU_PCT; - break; + tqs->stqs_count = count; + tqs->stqs_taskq = kmem_alloc(count * sizeof (taskq_t *), KM_SLEEP); - default: - panic("unrecognized mode for %s taskq (%u:%u) in " - "spa_activate()", - name, mode, value); - break; - } + for (uint_t i = 0; i < count; i++) { + taskq_t *tq; + + switch (mode) { + case ZTI_MODE_FIXED: + ASSERT3U(value, >=, 1); + value = MAX(value, 1); + break; + + case ZTI_MODE_BATCH: + batch = B_TRUE; + flags |= TASKQ_THREADS_CPU_PCT; + value = zio_taskq_batch_pct; + break; + + case ZTI_MODE_ONLINE_PERCENT: + flags |= TASKQ_THREADS_CPU_PCT; + break; + + default: + panic("unrecognized mode for %s_%s taskq (%u:%u) in " + "spa_activate()", + zio_type_name[t], zio_taskq_types[q], mode, value); + break; + } + + if (count > 1) { + (void) snprintf(name, sizeof (name), "%s_%s_%u", + zio_type_name[t], zio_taskq_types[q], i); + } else { + (void) snprintf(name, sizeof (name), "%s_%s", + zio_type_name[t], zio_taskq_types[q]); + } #ifdef SYSDC - if (zio_taskq_sysdc && spa->spa_proc != &p0) { - if (batch) - flags |= TASKQ_DC_BATCH; + if (zio_taskq_sysdc && spa->spa_proc != &p0) { + if (batch) + flags |= TASKQ_DC_BATCH; - return (taskq_create_sysdc(name, value, 50, INT_MAX, - spa->spa_proc, zio_taskq_basedc, flags)); - } + tq = taskq_create_sysdc(name, value, 50, INT_MAX, + spa->spa_proc, zio_taskq_basedc, flags); + } else { +#endif + tq = taskq_create_proc(name, value, maxclsyspri, 50, + INT_MAX, spa->spa_proc, flags); +#ifdef SYSDC + } #endif - return (taskq_create_proc(name, value, maxclsyspri, 50, INT_MAX, - spa->spa_proc, flags)); + + tqs->stqs_taskq[i] = tq; + } +} + +static void +spa_taskqs_fini(spa_t *spa, zio_type_t t, zio_taskq_type_t q) +{ + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + + if (tqs->stqs_taskq == NULL) { + ASSERT0(tqs->stqs_count); + return; + } + + for (uint_t i = 0; i < tqs->stqs_count; i++) { + ASSERT3P(tqs->stqs_taskq[i], !=, NULL); + taskq_destroy(tqs->stqs_taskq[i]); + } + + kmem_free(tqs->stqs_taskq, tqs->stqs_count * sizeof (taskq_t *)); + tqs->stqs_taskq = NULL; +} + +/* + * Dispatch a task to the appropriate taskq for the ZFS I/O type and priority. + * Note that a type may have multiple discrete taskqs to avoid lock contention + * on the taskq itself. In that case we choose which taskq at random by using + * the low bits of gethrtime(). + */ +void +spa_taskq_dispatch_ent(spa_t *spa, zio_type_t t, zio_taskq_type_t q, + task_func_t *func, void *arg, uint_t flags, taskq_ent_t *ent) +{ + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + taskq_t *tq; + + ASSERT3P(tqs->stqs_taskq, !=, NULL); + ASSERT3U(tqs->stqs_count, !=, 0); + + if (tqs->stqs_count == 1) { + tq = tqs->stqs_taskq[0]; + } else { + tq = tqs->stqs_taskq[gethrtime() % tqs->stqs_count]; + } + + taskq_dispatch_ent(tq, func, arg, flags, ent); } static void @@ -870,16 +959,7 @@ spa_create_zio_taskqs(spa_t *spa) { for (int t = 0; t < ZIO_TYPES; t++) { for (int q = 0; q < ZIO_TASKQ_TYPES; q++) { - const zio_taskq_info_t *ztip = &zio_taskqs[t][q]; - enum zti_modes mode = ztip->zti_mode; - uint_t value = ztip->zti_value; - char name[32]; - - (void) snprintf(name, sizeof (name), - "%s_%s", zio_type_name[t], zio_taskq_types[q]); - - spa->spa_zio_taskq[t][q] = - spa_taskq_create(spa, name, mode, value); + spa_taskqs_init(spa, t, q); } } } @@ -1056,9 +1136,7 @@ spa_deactivate(spa_t *spa) for (int t = 0; t < ZIO_TYPES; t++) { for (int q = 0; q < ZIO_TASKQ_TYPES; q++) { - if (spa->spa_zio_taskq[t][q] != NULL) - taskq_destroy(spa->spa_zio_taskq[t][q]); - spa->spa_zio_taskq[t][q] = NULL; + spa_taskqs_fini(spa, t, q); } } Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h Thu Jan 16 14:48:23 2014 (r260752) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h Thu Jan 16 14:48:26 2014 (r260753) @@ -81,16 +81,16 @@ typedef struct spa_config_dirent { char *scd_path; } spa_config_dirent_t; -enum zio_taskq_type { +typedef enum zio_taskq_type { ZIO_TASKQ_ISSUE = 0, ZIO_TASKQ_ISSUE_HIGH, ZIO_TASKQ_INTERRUPT, ZIO_TASKQ_INTERRUPT_HIGH, ZIO_TASKQ_TYPES -}; +} zio_taskq_type_t; /* - * State machine for the zpool-pooname process. The states transitions + * State machine for the zpool-poolname process. The states transitions * are done as follows: * * From To Routine @@ -108,6 +108,11 @@ typedef enum spa_proc_state { SPA_PROC_GONE /* spa_thread() is exiting, spa_proc = &p0 */ } spa_proc_state_t; +typedef struct spa_taskqs { + uint_t stqs_count; + taskq_t **stqs_taskq; +} spa_taskqs_t; + struct spa { /* * Fields protected by spa_namespace_lock. @@ -126,7 +131,7 @@ struct spa { uint8_t spa_sync_on; /* sync threads are running */ spa_load_state_t spa_load_state; /* current load operation */ uint64_t spa_import_flags; /* import specific flags */ - taskq_t *spa_zio_taskq[ZIO_TYPES][ZIO_TASKQ_TYPES]; + spa_taskqs_t spa_zio_taskq[ZIO_TYPES][ZIO_TASKQ_TYPES]; dsl_pool_t *spa_dsl_pool; boolean_t spa_is_initializing; /* true while opening pool */ metaslab_class_t *spa_normal_class; /* normal data class */ @@ -257,6 +262,9 @@ struct spa { extern const char *spa_config_path; +extern void spa_taskq_dispatch_ent(spa_t *spa, zio_type_t t, zio_taskq_type_t q, + task_func_t *func, void *arg, uint_t flags, taskq_ent_t *ent); + #ifdef __cplusplus } #endif Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 14:48:23 2014 (r260752) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 14:48:26 2014 (r260753) @@ -1180,7 +1180,7 @@ zio_free_bp_init(zio_t *zio) */ static void -zio_taskq_dispatch(zio_t *zio, enum zio_taskq_type q, boolean_t cutinline) +zio_taskq_dispatch(zio_t *zio, zio_taskq_type_t q, boolean_t cutinline) { spa_t *spa = zio->io_spa; zio_type_t t = zio->io_type; @@ -1203,10 +1203,11 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ t = ZIO_TYPE_NULL; /* - * If this is a high priority I/O, then use the high priority taskq. + * If this is a high priority I/O, then use the high priority taskq if + * available. */ if (zio->io_priority == ZIO_PRIORITY_NOW && - spa->spa_zio_taskq[t][q + 1] != NULL) + spa->spa_zio_taskq[t][q + 1].stqs_count != 0) q++; ASSERT3U(q, <, ZIO_TASKQ_TYPES); @@ -1221,19 +1222,24 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ #else ASSERT(zio->io_tqent.tqent_task.ta_pending == 0); #endif - taskq_dispatch_ent(spa->spa_zio_taskq[t][q], - (task_func_t *)zio_execute, zio, flags, &zio->io_tqent); + spa_taskq_dispatch_ent(spa, t, q, (task_func_t *)zio_execute, zio, + flags, &zio->io_tqent); } static boolean_t -zio_taskq_member(zio_t *zio, enum zio_taskq_type q) +zio_taskq_member(zio_t *zio, zio_taskq_type_t q) { kthread_t *executor = zio->io_executor; spa_t *spa = zio->io_spa; - for (zio_type_t t = 0; t < ZIO_TYPES; t++) - if (taskq_member(spa->spa_zio_taskq[t][q], executor)) - return (B_TRUE); + for (zio_type_t t = 0; t < ZIO_TYPES; t++) { + spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q]; + uint_t i; + for (i = 0; i < tqs->stqs_count; i++) { + if (taskq_member(tqs->stqs_taskq[i], executor)) + return (B_TRUE); + } + } return (B_FALSE); } @@ -3145,10 +3151,9 @@ zio_done(zio_t *zio) #else ASSERT(zio->io_tqent.tqent_task.ta_pending == 0); #endif - (void) taskq_dispatch_ent( - spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], - (task_func_t *)zio_reexecute, zio, 0, - &zio->io_tqent); + spa_taskq_dispatch_ent(spa, ZIO_TYPE_CLAIM, + ZIO_TASKQ_ISSUE, (task_func_t *)zio_reexecute, zio, + 0, &zio->io_tqent); } return (ZIO_PIPELINE_STOP); } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 14:48:23 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E1981BBA; Thu, 16 Jan 2014 14:48:23 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CE3C113A0; Thu, 16 Jan 2014 14:48:23 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GEmNKc041262; Thu, 16 Jan 2014 14:48:23 GMT (envelope-from ray@svn.freebsd.org) Received: (from ray@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GEmNYH041261; Thu, 16 Jan 2014 14:48:23 GMT (envelope-from ray@svn.freebsd.org) Message-Id: <201401161448.s0GEmNYH041261@svn.freebsd.org> From: Aleksandr Rybalko Date: Thu, 16 Jan 2014 14:48:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260752 - head/sys/arm/freescale/imx X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 14:48:24 -0000 Author: ray Date: Thu Jan 16 14:48:23 2014 New Revision: 260752 URL: http://svnweb.freebsd.org/changeset/base/260752 Log: Fix build after FDT changes. Sponsored by: The FreeBSD Foundation Modified: head/sys/arm/freescale/imx/imx51_ipuv3_fbd.c Modified: head/sys/arm/freescale/imx/imx51_ipuv3_fbd.c ============================================================================== --- head/sys/arm/freescale/imx/imx51_ipuv3_fbd.c Thu Jan 16 14:48:05 2014 (r260751) +++ head/sys/arm/freescale/imx/imx51_ipuv3_fbd.c Thu Jan 16 14:48:23 2014 (r260752) @@ -57,6 +57,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 15:10:32 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 926309DD; Thu, 16 Jan 2014 15:10:32 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7AE6E15D6; Thu, 16 Jan 2014 15:10:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GFAWE7050555; Thu, 16 Jan 2014 15:10:32 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GFAU5L050535; Thu, 16 Jan 2014 15:10:30 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161510.s0GFAU5L050535@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 15:10:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260754 - in stable/9: cddl/contrib/opensolaris/lib/libzpool/common cddl/contrib/opensolaris/lib/libzpool/common/sys sys/cddl/compat/opensolaris/sys sys/cddl/contrib/opensolaris/uts/com... X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 15:10:32 -0000 Author: avg Date: Thu Jan 16 15:10:29 2014 New Revision: 260754 URL: http://svnweb.freebsd.org/changeset/base/260754 Log: MFC r255437: MFV r247844 (illumos-gate 13975:ef6409bc370f) Note that a different kind of cv_timedwait_hires shim is provided in this branch because cv_timedwait_sbt is not available for better emulation. Sponsored by: HybridCluster [merge] Modified: stable/9/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c stable/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h stable/9/sys/cddl/compat/opensolaris/sys/kcondvar.h stable/9/sys/cddl/compat/opensolaris/sys/time.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg_impl.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Directory Properties: stable/9/cddl/contrib/opensolaris/ (props changed) stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c ============================================================================== --- stable/9/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c Thu Jan 16 14:48:26 2014 (r260753) +++ stable/9/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c Thu Jan 16 15:10:29 2014 (r260754) @@ -349,6 +349,41 @@ top: return (1); } +/*ARGSUSED*/ +clock_t +cv_timedwait_hires(kcondvar_t *cv, kmutex_t *mp, hrtime_t tim, hrtime_t res, + int flag) +{ + int error; + timestruc_t ts; + hrtime_t delta; + + ASSERT(flag == 0); + +top: + delta = tim - gethrtime(); + if (delta <= 0) + return (-1); + + ts.tv_sec = delta / NANOSEC; + ts.tv_nsec = delta % NANOSEC; + + ASSERT(mutex_owner(mp) == curthread); + mp->m_owner = NULL; + error = pthread_cond_timedwait(cv, &mp->m_lock, &ts); + mp->m_owner = curthread; + + if (error == ETIMEDOUT) + return (-1); + + if (error == EINTR) + goto top; + + ASSERT(error == 0); + + return (1); +} + void cv_signal(kcondvar_t *cv) { Modified: stable/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- stable/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 14:48:26 2014 (r260753) +++ stable/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 15:10:29 2014 (r260754) @@ -316,6 +316,8 @@ extern void cv_init(kcondvar_t *cv, char extern void cv_destroy(kcondvar_t *cv); extern void cv_wait(kcondvar_t *cv, kmutex_t *mp); extern clock_t cv_timedwait(kcondvar_t *cv, kmutex_t *mp, clock_t abstime); +extern clock_t cv_timedwait_hires(kcondvar_t *cvp, kmutex_t *mp, hrtime_t tim, + hrtime_t res, int flag); extern void cv_signal(kcondvar_t *cv); extern void cv_broadcast(kcondvar_t *cv); Modified: stable/9/sys/cddl/compat/opensolaris/sys/kcondvar.h ============================================================================== --- stable/9/sys/cddl/compat/opensolaris/sys/kcondvar.h Thu Jan 16 14:48:26 2014 (r260753) +++ stable/9/sys/cddl/compat/opensolaris/sys/kcondvar.h Thu Jan 16 15:10:29 2014 (r260754) @@ -1,5 +1,6 @@ /*- * Copyright (c) 2007 Pawel Jakub Dawidek + * Copyright (c) 2013 iXsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -36,6 +37,8 @@ #include #include +#include +#include typedef struct cv kcondvar_t; @@ -57,6 +60,18 @@ typedef enum { } while (0) #define cv_init(cv, name, type, arg) zfs_cv_init((cv), (name), (type), (arg)) +static clock_t +cv_timedwait_hires(kcondvar_t *cvp, kmutex_t *mp, hrtime_t tim, hrtime_t res, + int flag) +{ + /* XXX real hires is not available. */ + + /* We do not attempt to support any flags yet. */ + ASSERT(flag == 0); + + return (cv_timedwait(cvp, mp, NSEC_TO_TICK(tim))); +} + #endif /* _KERNEL */ #endif /* _OPENSOLARIS_SYS_CONDVAR_H_ */ Modified: stable/9/sys/cddl/compat/opensolaris/sys/time.h ============================================================================== --- stable/9/sys/cddl/compat/opensolaris/sys/time.h Thu Jan 16 14:48:26 2014 (r260753) +++ stable/9/sys/cddl/compat/opensolaris/sys/time.h Thu Jan 16 15:10:29 2014 (r260754) @@ -37,6 +37,9 @@ #define NANOSEC 1000000000 #define TIME_MAX LLONG_MAX +#define MSEC2NSEC(m) ((hrtime_t)(m) * (NANOSEC / MILLISEC)) +#define NSEC2MSEC(n) ((n) / (NANOSEC / MILLISEC)) + typedef longlong_t hrtime_t; #if defined(__i386__) || defined(__powerpc__) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c Thu Jan 16 14:48:26 2014 (r260753) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c Thu Jan 16 15:10:29 2014 (r260754) @@ -744,7 +744,8 @@ dsl_dir_tempreserve_space(dsl_dir_t *dd, err = dsl_pool_tempreserve_space(dd->dd_pool, asize, tx); } else { if (err == EAGAIN) { - txg_delay(dd->dd_pool, tx->tx_txg, 1); + txg_delay(dd->dd_pool, tx->tx_txg, + MSEC2NSEC(10), MSEC2NSEC(10)); err = SET_ERROR(ERESTART); } dsl_pool_memory_pressure(dd->dd_pool); Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c Thu Jan 16 14:48:26 2014 (r260753) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c Thu Jan 16 15:10:29 2014 (r260754) @@ -85,6 +85,9 @@ SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, write_l &zfs_write_limit_override, 0, "Force a txg if dirty buffers exceed this value (bytes)"); +hrtime_t zfs_throttle_delay = MSEC2NSEC(10); +hrtime_t zfs_throttle_resolution = MSEC2NSEC(10); + int dsl_pool_open_special_dir(dsl_pool_t *dp, const char *name, dsl_dir_t **ddp) { @@ -538,12 +541,13 @@ dsl_pool_sync(dsl_pool_t *dp, uint64_t t * Weight the throughput calculation towards the current value: * thru = 3/4 old_thru + 1/4 new_thru * - * Note: write_time is in nanosecs, so write_time/MICROSEC - * yields millisecs + * Note: write_time is in nanosecs while dp_throughput is expressed in + * bytes per millisecond. */ ASSERT(zfs_write_limit_min > 0); - if (data_written > zfs_write_limit_min / 8 && write_time > MICROSEC) { - uint64_t throughput = data_written / (write_time / MICROSEC); + if (data_written > zfs_write_limit_min / 8 && + write_time > MSEC2NSEC(1)) { + uint64_t throughput = data_written / NSEC2MSEC(write_time); if (dp->dp_throughput) dp->dp_throughput = throughput / 4 + @@ -641,8 +645,10 @@ dsl_pool_tempreserve_space(dsl_pool_t *d * the caller 1 clock tick. This will slow down the "fill" * rate until the sync process can catch up with us. */ - if (reserved && reserved > (write_limit - (write_limit >> 3))) - txg_delay(dp, tx->tx_txg, 1); + if (reserved && reserved > (write_limit - (write_limit >> 3))) { + txg_delay(dp, tx->tx_txg, zfs_throttle_delay, + zfs_throttle_resolution); + } return (0); } Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c Thu Jan 16 14:48:26 2014 (r260753) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c Thu Jan 16 15:10:29 2014 (r260754) @@ -443,7 +443,7 @@ dsl_scan_check_pause(dsl_scan_t *scn, co zfs_resilver_min_time_ms : zfs_scan_min_time_ms; elapsed_nanosecs = gethrtime() - scn->scn_sync_start_time; if (elapsed_nanosecs / NANOSEC > zfs_txg_timeout || - (elapsed_nanosecs / MICROSEC > mintime && + (NSEC2MSEC(elapsed_nanosecs) > mintime && txg_sync_waiting(scn->scn_dp)) || spa_shutting_down(scn->scn_dp->dp_spa)) { if (zb) { @@ -1348,7 +1348,7 @@ dsl_scan_free_should_pause(dsl_scan_t *s elapsed_nanosecs = gethrtime() - scn->scn_sync_start_time; return (elapsed_nanosecs / NANOSEC > zfs_txg_timeout || - (elapsed_nanosecs / MICROSEC > zfs_free_min_time_ms && + (NSEC2MSEC(elapsed_nanosecs) > zfs_free_min_time_ms && txg_sync_waiting(scn->scn_dp)) || spa_shutting_down(scn->scn_dp->dp_spa)); } @@ -1472,7 +1472,7 @@ dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t * "free_bpobj/bptree txg %llu", (longlong_t)scn->scn_visited_this_txg, (longlong_t) - (gethrtime() - scn->scn_sync_start_time) / MICROSEC, + NSEC2MSEC(gethrtime() - scn->scn_sync_start_time), (longlong_t)tx->tx_txg); scn->scn_visited_this_txg = 0; /* @@ -1520,7 +1520,7 @@ dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t * zfs_dbgmsg("visited %llu blocks in %llums", (longlong_t)scn->scn_visited_this_txg, - (longlong_t)(gethrtime() - scn->scn_sync_start_time) / MICROSEC); + (longlong_t)NSEC2MSEC(gethrtime() - scn->scn_sync_start_time)); if (!scn->scn_pausing) { /* finished with scan. */ Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 14:48:26 2014 (r260753) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 15:10:29 2014 (r260754) @@ -538,8 +538,8 @@ spa_add(const char *name, nvlist_t *conf hdlr.cyh_level = CY_LOW_LEVEL; #endif - spa->spa_deadman_synctime = zfs_deadman_synctime * - zfs_txg_synctime_ms * MICROSEC; + spa->spa_deadman_synctime = MSEC2NSEC(zfs_deadman_synctime * + zfs_txg_synctime_ms); #ifdef illumos /* @@ -548,7 +548,7 @@ spa_add(const char *name, nvlist_t *conf * an expensive operation we don't want to check too frequently. * Instead wait for 5 synctimes before checking again. */ - when.cyt_interval = 5ULL * zfs_txg_synctime_ms * MICROSEC; + when.cyt_interval = MSEC2NSEC(5 * zfs_txg_synctime_ms); when.cyt_when = CY_INFINITY; mutex_enter(&cpu_lock); spa->spa_deadman_cycid = cyclic_add(&hdlr, &when); Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h Thu Jan 16 14:48:26 2014 (r260753) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h Thu Jan 16 15:10:29 2014 (r260754) @@ -74,13 +74,8 @@ extern void txg_rele_to_quiesce(txg_hand extern void txg_rele_to_sync(txg_handle_t *txghp); extern void txg_register_callbacks(txg_handle_t *txghp, list_t *tx_callbacks); -/* - * Delay the caller by the specified number of ticks or until - * the txg closes (whichever comes first). This is intended - * to be used to throttle writers when the system nears its - * capacity. - */ -extern void txg_delay(struct dsl_pool *dp, uint64_t txg, int ticks); +extern void txg_delay(struct dsl_pool *dp, uint64_t txg, hrtime_t delta, + hrtime_t resolution); /* * Wait until the given transaction group has finished syncing. Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg_impl.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg_impl.h Thu Jan 16 14:48:26 2014 (r260753) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg_impl.h Thu Jan 16 15:10:29 2014 (r260754) @@ -70,7 +70,7 @@ struct tx_cpu { kmutex_t tc_open_lock; /* protects tx_open_txg */ kmutex_t tc_lock; /* protects the rest of this struct */ kcondvar_t tc_cv[TXG_SIZE]; - uint64_t tc_count[TXG_SIZE]; + uint64_t tc_count[TXG_SIZE]; /* tx hold count on each txg */ list_t tc_callbacks[TXG_SIZE]; /* commit cb list */ char tc_pad[8]; /* pad to fill 3 cache lines */ }; @@ -87,8 +87,8 @@ struct tx_cpu { * every cpu (see txg_quiesce()). */ typedef struct tx_state { - tx_cpu_t *tx_cpu; /* protects right to enter txg */ - kmutex_t tx_sync_lock; /* protects tx_state_t */ + tx_cpu_t *tx_cpu; /* protects access to tx_open_txg */ + kmutex_t tx_sync_lock; /* protects the rest of this struct */ uint64_t tx_open_txg; /* currently open txg id */ uint64_t tx_quiesced_txg; /* quiesced txg waiting for sync */ uint64_t tx_syncing_txg; /* currently syncing txg id */ Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Thu Jan 16 14:48:26 2014 (r260753) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Thu Jan 16 15:10:29 2014 (r260754) @@ -241,7 +241,7 @@ txg_thread_exit(tx_state_t *tx, callb_cp } static void -txg_thread_wait(tx_state_t *tx, callb_cpr_t *cpr, kcondvar_t *cv, uint64_t time) +txg_thread_wait(tx_state_t *tx, callb_cpr_t *cpr, kcondvar_t *cv, clock_t time) { CALLB_CPR_SAFE_BEGIN(cpr); @@ -370,6 +370,9 @@ txg_quiesce(dsl_pool_t *dp, uint64_t txg ASSERT(txg == tx->tx_open_txg); tx->tx_open_txg++; + DTRACE_PROBE2(txg__quiescing, dsl_pool_t *, dp, uint64_t, txg); + DTRACE_PROBE2(txg__opened, dsl_pool_t *, dp, uint64_t, tx->tx_open_txg); + /* * Now that we've incremented tx_open_txg, we can let threads * enter the next transaction group. @@ -501,6 +504,7 @@ txg_sync_thread(void *arg) txg = tx->tx_quiesced_txg; tx->tx_quiesced_txg = 0; tx->tx_syncing_txg = txg; + DTRACE_PROBE2(txg__syncing, dsl_pool_t *, dp, uint64_t, txg); cv_broadcast(&tx->tx_quiesce_more_cv); dprintf("txg=%llu quiesce_txg=%llu sync_txg=%llu\n", @@ -514,6 +518,7 @@ txg_sync_thread(void *arg) mutex_enter(&tx->tx_sync_lock); tx->tx_synced_txg = txg; tx->tx_syncing_txg = 0; + DTRACE_PROBE2(txg__synced, dsl_pool_t *, dp, uint64_t, txg); cv_broadcast(&tx->tx_sync_done_cv); /* @@ -563,21 +568,22 @@ txg_quiesce_thread(void *arg) */ dprintf("quiesce done, handing off txg %llu\n", txg); tx->tx_quiesced_txg = txg; + DTRACE_PROBE2(txg__quiesced, dsl_pool_t *, dp, uint64_t, txg); cv_broadcast(&tx->tx_sync_more_cv); cv_broadcast(&tx->tx_quiesce_done_cv); } } /* - * Delay this thread by 'ticks' if we are still in the open transaction - * group and there is already a waiting txg quiescing or quiesced. - * Abort the delay if this txg stalls or enters the quiescing state. + * Delay this thread by delay nanoseconds if we are still in the open + * transaction group and there is already a waiting txg quiesing or quiesced. + * Abort the delay if this txg stalls or enters the quiesing state. */ void -txg_delay(dsl_pool_t *dp, uint64_t txg, int ticks) +txg_delay(dsl_pool_t *dp, uint64_t txg, hrtime_t delay, hrtime_t resolution) { tx_state_t *tx = &dp->dp_tx; - clock_t timeout = ddi_get_lbolt() + ticks; + hrtime_t start = gethrtime(); /* don't delay if this txg could transition to quiescing immediately */ if (tx->tx_open_txg > txg || @@ -590,10 +596,11 @@ txg_delay(dsl_pool_t *dp, uint64_t txg, return; } - while (ddi_get_lbolt() < timeout && - tx->tx_syncing_txg < txg-1 && !txg_stalled(dp)) - (void) cv_timedwait(&tx->tx_quiesce_more_cv, &tx->tx_sync_lock, - timeout - ddi_get_lbolt()); + while (gethrtime() - start < delay && + tx->tx_syncing_txg < txg-1 && !txg_stalled(dp)) { + (void) cv_timedwait_hires(&tx->tx_quiesce_more_cv, + &tx->tx_sync_lock, delay, resolution, 0); + } mutex_exit(&tx->tx_sync_lock); } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 15:11:51 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 47921BE9; Thu, 16 Jan 2014 15:11:51 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3024E15E1; Thu, 16 Jan 2014 15:11:51 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GFBpaU053070; Thu, 16 Jan 2014 15:11:51 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GFBm6U053058; Thu, 16 Jan 2014 15:11:48 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161511.s0GFBm6U053058@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 15:11:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260755 - in stable/8: cddl/contrib/opensolaris/lib/libzpool/common cddl/contrib/opensolaris/lib/libzpool/common/sys sys/cddl/compat/opensolaris/sys sys/cddl/contrib/opensolaris/uts/com... X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 15:11:51 -0000 Author: avg Date: Thu Jan 16 15:11:48 2014 New Revision: 260755 URL: http://svnweb.freebsd.org/changeset/base/260755 Log: MFC r255437: MFV r247844 (illumos-gate 13975:ef6409bc370f) Note that a different kind of cv_timedwait_hires shim is provided in this branch because cv_timedwait_sbt is not available for better emulation. Sponsored by: HybridCluster [merge] Modified: stable/8/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h stable/8/sys/cddl/compat/opensolaris/sys/kcondvar.h stable/8/sys/cddl/compat/opensolaris/sys/time.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg_impl.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Directory Properties: stable/8/cddl/contrib/opensolaris/ (props changed) stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c ============================================================================== --- stable/8/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c Thu Jan 16 15:10:29 2014 (r260754) +++ stable/8/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c Thu Jan 16 15:11:48 2014 (r260755) @@ -346,6 +346,41 @@ top: return (1); } +/*ARGSUSED*/ +clock_t +cv_timedwait_hires(kcondvar_t *cv, kmutex_t *mp, hrtime_t tim, hrtime_t res, + int flag) +{ + int error; + timestruc_t ts; + hrtime_t delta; + + ASSERT(flag == 0); + +top: + delta = tim - gethrtime(); + if (delta <= 0) + return (-1); + + ts.tv_sec = delta / NANOSEC; + ts.tv_nsec = delta % NANOSEC; + + ASSERT(mutex_owner(mp) == curthread); + mp->m_owner = NULL; + error = pthread_cond_timedwait(cv, &mp->m_lock, &ts); + mp->m_owner = curthread; + + if (error == ETIMEDOUT) + return (-1); + + if (error == EINTR) + goto top; + + ASSERT(error == 0); + + return (1); +} + void cv_signal(kcondvar_t *cv) { Modified: stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 15:10:29 2014 (r260754) +++ stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 15:11:48 2014 (r260755) @@ -316,6 +316,8 @@ extern void cv_init(kcondvar_t *cv, char extern void cv_destroy(kcondvar_t *cv); extern void cv_wait(kcondvar_t *cv, kmutex_t *mp); extern clock_t cv_timedwait(kcondvar_t *cv, kmutex_t *mp, clock_t abstime); +extern clock_t cv_timedwait_hires(kcondvar_t *cvp, kmutex_t *mp, hrtime_t tim, + hrtime_t res, int flag); extern void cv_signal(kcondvar_t *cv); extern void cv_broadcast(kcondvar_t *cv); Modified: stable/8/sys/cddl/compat/opensolaris/sys/kcondvar.h ============================================================================== --- stable/8/sys/cddl/compat/opensolaris/sys/kcondvar.h Thu Jan 16 15:10:29 2014 (r260754) +++ stable/8/sys/cddl/compat/opensolaris/sys/kcondvar.h Thu Jan 16 15:11:48 2014 (r260755) @@ -1,5 +1,6 @@ /*- * Copyright (c) 2007 Pawel Jakub Dawidek + * Copyright (c) 2013 iXsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -36,6 +37,8 @@ #include #include +#include +#include typedef struct cv kcondvar_t; @@ -57,6 +60,18 @@ typedef enum { } while (0) #define cv_init(cv, name, type, arg) zfs_cv_init((cv), (name), (type), (arg)) +static clock_t +cv_timedwait_hires(kcondvar_t *cvp, kmutex_t *mp, hrtime_t tim, hrtime_t res, + int flag) +{ + /* XXX real hires is not available. */ + + /* We do not attempt to support any flags yet. */ + ASSERT(flag == 0); + + return (cv_timedwait(cvp, mp, NSEC_TO_TICK(tim))); +} + #endif /* _KERNEL */ #endif /* _OPENSOLARIS_SYS_CONDVAR_H_ */ Modified: stable/8/sys/cddl/compat/opensolaris/sys/time.h ============================================================================== --- stable/8/sys/cddl/compat/opensolaris/sys/time.h Thu Jan 16 15:10:29 2014 (r260754) +++ stable/8/sys/cddl/compat/opensolaris/sys/time.h Thu Jan 16 15:11:48 2014 (r260755) @@ -37,6 +37,9 @@ #define NANOSEC 1000000000 #define TIME_MAX LLONG_MAX +#define MSEC2NSEC(m) ((hrtime_t)(m) * (NANOSEC / MILLISEC)) +#define NSEC2MSEC(n) ((n) / (NANOSEC / MILLISEC)) + typedef longlong_t hrtime_t; #if defined(__i386__) || defined(__powerpc__) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c Thu Jan 16 15:10:29 2014 (r260754) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c Thu Jan 16 15:11:48 2014 (r260755) @@ -744,7 +744,8 @@ dsl_dir_tempreserve_space(dsl_dir_t *dd, err = dsl_pool_tempreserve_space(dd->dd_pool, asize, tx); } else { if (err == EAGAIN) { - txg_delay(dd->dd_pool, tx->tx_txg, 1); + txg_delay(dd->dd_pool, tx->tx_txg, + MSEC2NSEC(10), MSEC2NSEC(10)); err = SET_ERROR(ERESTART); } dsl_pool_memory_pressure(dd->dd_pool); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c Thu Jan 16 15:10:29 2014 (r260754) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c Thu Jan 16 15:11:48 2014 (r260755) @@ -85,6 +85,9 @@ SYSCTL_QUAD(_vfs_zfs, OID_AUTO, write_li &zfs_write_limit_override, 0, "Force a txg if dirty buffers exceed this value (bytes)"); +hrtime_t zfs_throttle_delay = MSEC2NSEC(10); +hrtime_t zfs_throttle_resolution = MSEC2NSEC(10); + int dsl_pool_open_special_dir(dsl_pool_t *dp, const char *name, dsl_dir_t **ddp) { @@ -538,12 +541,13 @@ dsl_pool_sync(dsl_pool_t *dp, uint64_t t * Weight the throughput calculation towards the current value: * thru = 3/4 old_thru + 1/4 new_thru * - * Note: write_time is in nanosecs, so write_time/MICROSEC - * yields millisecs + * Note: write_time is in nanosecs while dp_throughput is expressed in + * bytes per millisecond. */ ASSERT(zfs_write_limit_min > 0); - if (data_written > zfs_write_limit_min / 8 && write_time > MICROSEC) { - uint64_t throughput = data_written / (write_time / MICROSEC); + if (data_written > zfs_write_limit_min / 8 && + write_time > MSEC2NSEC(1)) { + uint64_t throughput = data_written / NSEC2MSEC(write_time); if (dp->dp_throughput) dp->dp_throughput = throughput / 4 + @@ -641,8 +645,10 @@ dsl_pool_tempreserve_space(dsl_pool_t *d * the caller 1 clock tick. This will slow down the "fill" * rate until the sync process can catch up with us. */ - if (reserved && reserved > (write_limit - (write_limit >> 3))) - txg_delay(dp, tx->tx_txg, 1); + if (reserved && reserved > (write_limit - (write_limit >> 3))) { + txg_delay(dp, tx->tx_txg, zfs_throttle_delay, + zfs_throttle_resolution); + } return (0); } Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c Thu Jan 16 15:10:29 2014 (r260754) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c Thu Jan 16 15:11:48 2014 (r260755) @@ -443,7 +443,7 @@ dsl_scan_check_pause(dsl_scan_t *scn, co zfs_resilver_min_time_ms : zfs_scan_min_time_ms; elapsed_nanosecs = gethrtime() - scn->scn_sync_start_time; if (elapsed_nanosecs / NANOSEC > zfs_txg_timeout || - (elapsed_nanosecs / MICROSEC > mintime && + (NSEC2MSEC(elapsed_nanosecs) > mintime && txg_sync_waiting(scn->scn_dp)) || spa_shutting_down(scn->scn_dp->dp_spa)) { if (zb) { @@ -1348,7 +1348,7 @@ dsl_scan_free_should_pause(dsl_scan_t *s elapsed_nanosecs = gethrtime() - scn->scn_sync_start_time; return (elapsed_nanosecs / NANOSEC > zfs_txg_timeout || - (elapsed_nanosecs / MICROSEC > zfs_free_min_time_ms && + (NSEC2MSEC(elapsed_nanosecs) > zfs_free_min_time_ms && txg_sync_waiting(scn->scn_dp)) || spa_shutting_down(scn->scn_dp->dp_spa)); } @@ -1472,7 +1472,7 @@ dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t * "free_bpobj/bptree txg %llu", (longlong_t)scn->scn_visited_this_txg, (longlong_t) - (gethrtime() - scn->scn_sync_start_time) / MICROSEC, + NSEC2MSEC(gethrtime() - scn->scn_sync_start_time), (longlong_t)tx->tx_txg); scn->scn_visited_this_txg = 0; /* @@ -1520,7 +1520,7 @@ dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t * zfs_dbgmsg("visited %llu blocks in %llums", (longlong_t)scn->scn_visited_this_txg, - (longlong_t)(gethrtime() - scn->scn_sync_start_time) / MICROSEC); + (longlong_t)NSEC2MSEC(gethrtime() - scn->scn_sync_start_time)); if (!scn->scn_pausing) { /* finished with scan. */ Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 15:10:29 2014 (r260754) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 15:11:48 2014 (r260755) @@ -538,8 +538,8 @@ spa_add(const char *name, nvlist_t *conf hdlr.cyh_level = CY_LOW_LEVEL; #endif - spa->spa_deadman_synctime = zfs_deadman_synctime * - zfs_txg_synctime_ms * MICROSEC; + spa->spa_deadman_synctime = MSEC2NSEC(zfs_deadman_synctime * + zfs_txg_synctime_ms); #ifdef illumos /* @@ -548,7 +548,7 @@ spa_add(const char *name, nvlist_t *conf * an expensive operation we don't want to check too frequently. * Instead wait for 5 synctimes before checking again. */ - when.cyt_interval = 5ULL * zfs_txg_synctime_ms * MICROSEC; + when.cyt_interval = MSEC2NSEC(5 * zfs_txg_synctime_ms); when.cyt_when = CY_INFINITY; mutex_enter(&cpu_lock); spa->spa_deadman_cycid = cyclic_add(&hdlr, &when); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h Thu Jan 16 15:10:29 2014 (r260754) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h Thu Jan 16 15:11:48 2014 (r260755) @@ -74,13 +74,8 @@ extern void txg_rele_to_quiesce(txg_hand extern void txg_rele_to_sync(txg_handle_t *txghp); extern void txg_register_callbacks(txg_handle_t *txghp, list_t *tx_callbacks); -/* - * Delay the caller by the specified number of ticks or until - * the txg closes (whichever comes first). This is intended - * to be used to throttle writers when the system nears its - * capacity. - */ -extern void txg_delay(struct dsl_pool *dp, uint64_t txg, int ticks); +extern void txg_delay(struct dsl_pool *dp, uint64_t txg, hrtime_t delta, + hrtime_t resolution); /* * Wait until the given transaction group has finished syncing. Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg_impl.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg_impl.h Thu Jan 16 15:10:29 2014 (r260754) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg_impl.h Thu Jan 16 15:11:48 2014 (r260755) @@ -70,7 +70,7 @@ struct tx_cpu { kmutex_t tc_open_lock; /* protects tx_open_txg */ kmutex_t tc_lock; /* protects the rest of this struct */ kcondvar_t tc_cv[TXG_SIZE]; - uint64_t tc_count[TXG_SIZE]; + uint64_t tc_count[TXG_SIZE]; /* tx hold count on each txg */ list_t tc_callbacks[TXG_SIZE]; /* commit cb list */ char tc_pad[8]; /* pad to fill 3 cache lines */ }; @@ -87,8 +87,8 @@ struct tx_cpu { * every cpu (see txg_quiesce()). */ typedef struct tx_state { - tx_cpu_t *tx_cpu; /* protects right to enter txg */ - kmutex_t tx_sync_lock; /* protects tx_state_t */ + tx_cpu_t *tx_cpu; /* protects access to tx_open_txg */ + kmutex_t tx_sync_lock; /* protects the rest of this struct */ uint64_t tx_open_txg; /* currently open txg id */ uint64_t tx_quiesced_txg; /* quiesced txg waiting for sync */ uint64_t tx_syncing_txg; /* currently syncing txg id */ Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Thu Jan 16 15:10:29 2014 (r260754) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Thu Jan 16 15:11:48 2014 (r260755) @@ -172,7 +172,7 @@ txg_thread_exit(tx_state_t *tx, callb_cp } static void -txg_thread_wait(tx_state_t *tx, callb_cpr_t *cpr, kcondvar_t *cv, uint64_t time) +txg_thread_wait(tx_state_t *tx, callb_cpr_t *cpr, kcondvar_t *cv, clock_t time) { CALLB_CPR_SAFE_BEGIN(cpr); @@ -301,6 +301,9 @@ txg_quiesce(dsl_pool_t *dp, uint64_t txg ASSERT(txg == tx->tx_open_txg); tx->tx_open_txg++; + DTRACE_PROBE2(txg__quiescing, dsl_pool_t *, dp, uint64_t, txg); + DTRACE_PROBE2(txg__opened, dsl_pool_t *, dp, uint64_t, tx->tx_open_txg); + /* * Now that we've incremented tx_open_txg, we can let threads * enter the next transaction group. @@ -432,6 +435,7 @@ txg_sync_thread(void *arg) txg = tx->tx_quiesced_txg; tx->tx_quiesced_txg = 0; tx->tx_syncing_txg = txg; + DTRACE_PROBE2(txg__syncing, dsl_pool_t *, dp, uint64_t, txg); cv_broadcast(&tx->tx_quiesce_more_cv); dprintf("txg=%llu quiesce_txg=%llu sync_txg=%llu\n", @@ -445,6 +449,7 @@ txg_sync_thread(void *arg) mutex_enter(&tx->tx_sync_lock); tx->tx_synced_txg = txg; tx->tx_syncing_txg = 0; + DTRACE_PROBE2(txg__synced, dsl_pool_t *, dp, uint64_t, txg); cv_broadcast(&tx->tx_sync_done_cv); /* @@ -494,21 +499,22 @@ txg_quiesce_thread(void *arg) */ dprintf("quiesce done, handing off txg %llu\n", txg); tx->tx_quiesced_txg = txg; + DTRACE_PROBE2(txg__quiesced, dsl_pool_t *, dp, uint64_t, txg); cv_broadcast(&tx->tx_sync_more_cv); cv_broadcast(&tx->tx_quiesce_done_cv); } } /* - * Delay this thread by 'ticks' if we are still in the open transaction - * group and there is already a waiting txg quiescing or quiesced. - * Abort the delay if this txg stalls or enters the quiescing state. + * Delay this thread by delay nanoseconds if we are still in the open + * transaction group and there is already a waiting txg quiesing or quiesced. + * Abort the delay if this txg stalls or enters the quiesing state. */ void -txg_delay(dsl_pool_t *dp, uint64_t txg, int ticks) +txg_delay(dsl_pool_t *dp, uint64_t txg, hrtime_t delay, hrtime_t resolution) { tx_state_t *tx = &dp->dp_tx; - clock_t timeout = ddi_get_lbolt() + ticks; + hrtime_t start = gethrtime(); /* don't delay if this txg could transition to quiescing immediately */ if (tx->tx_open_txg > txg || @@ -521,10 +527,11 @@ txg_delay(dsl_pool_t *dp, uint64_t txg, return; } - while (ddi_get_lbolt() < timeout && - tx->tx_syncing_txg < txg-1 && !txg_stalled(dp)) - (void) cv_timedwait(&tx->tx_quiesce_more_cv, &tx->tx_sync_lock, - timeout - ddi_get_lbolt()); + while (gethrtime() - start < delay && + tx->tx_syncing_txg < txg-1 && !txg_stalled(dp)) { + (void) cv_timedwait_hires(&tx->tx_quiesce_more_cv, + &tx->tx_sync_lock, delay, resolution, 0); + } mutex_exit(&tx->tx_sync_lock); } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 15:22:26 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 95419E4E; Thu, 16 Jan 2014 15:22:26 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 805C016A2; Thu, 16 Jan 2014 15:22:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GFMQSO057006; Thu, 16 Jan 2014 15:22:26 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GFMQtR057005; Thu, 16 Jan 2014 15:22:26 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161522.s0GFMQtR057005@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 15:22:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260756 - stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 15:22:26 -0000 Author: avg Date: Thu Jan 16 15:22:26 2014 New Revision: 260756 URL: http://svnweb.freebsd.org/changeset/base/260756 Log: MFC r248426: Fix typo in sysctl description MFC slacker: mm Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 15:11:48 2014 (r260755) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 15:22:26 2014 (r260756) @@ -275,7 +275,7 @@ uint64_t zfs_deadman_synctime = 1000ULL; TUNABLE_QUAD("vfs.zfs.deadman_synctime", &zfs_deadman_synctime); SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, deadman_synctime, CTLFLAG_RDTUN, &zfs_deadman_synctime, 0, - "Stalled ZFS I/O expiration time in units of vfs.zfs.txg_synctime_ms"); + "Stalled ZFS I/O expiration time in units of vfs.zfs.txg.synctime_ms"); /* * Default value of -1 for zfs_deadman_enabled is resolved in From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 15:22:50 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 23C88F7D; Thu, 16 Jan 2014 15:22:50 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0EFA916A9; Thu, 16 Jan 2014 15:22:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GFMn2v057082; Thu, 16 Jan 2014 15:22:49 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GFMnsB057081; Thu, 16 Jan 2014 15:22:49 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161522.s0GFMnsB057081@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 15:22:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260757 - stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 15:22:50 -0000 Author: avg Date: Thu Jan 16 15:22:49 2014 New Revision: 260757 URL: http://svnweb.freebsd.org/changeset/base/260757 Log: MFC r248426: Fix typo in sysctl description MFC slacker: mm Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 15:22:26 2014 (r260756) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Thu Jan 16 15:22:49 2014 (r260757) @@ -275,7 +275,7 @@ uint64_t zfs_deadman_synctime = 1000ULL; TUNABLE_QUAD("vfs.zfs.deadman_synctime", &zfs_deadman_synctime); SYSCTL_QUAD(_vfs_zfs, OID_AUTO, deadman_synctime, CTLFLAG_RDTUN, &zfs_deadman_synctime, 0, - "Stalled ZFS I/O expiration time in units of vfs.zfs.txg_synctime_ms"); + "Stalled ZFS I/O expiration time in units of vfs.zfs.txg.synctime_ms"); /* * Default value of -1 for zfs_deadman_enabled is resolved in From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 15:29:46 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C084B2E4; Thu, 16 Jan 2014 15:29:46 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AA43F16EB; Thu, 16 Jan 2014 15:29:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GFTkrP058002; Thu, 16 Jan 2014 15:29:46 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GFTjfs057990; Thu, 16 Jan 2014 15:29:45 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161529.s0GFTjfs057990@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 15:29:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260759 - in stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 15:29:46 -0000 Author: avg Date: Thu Jan 16 15:29:44 2014 New Revision: 260759 URL: http://svnweb.freebsd.org/changeset/base/260759 Log: MFC r251478: MFV r251474: 3137 L2ARC compression MFC slacker: delphij Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Thu Jan 16 15:26:16 2014 (r260758) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Thu Jan 16 15:29:44 2014 (r260759) @@ -22,6 +22,7 @@ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. */ /* @@ -120,6 +121,7 @@ #include #include +#include #include #include #include @@ -333,7 +335,11 @@ typedef struct arc_stats { kstat_named_t arcstat_l2_cksum_bad; kstat_named_t arcstat_l2_io_error; kstat_named_t arcstat_l2_size; + kstat_named_t arcstat_l2_asize; kstat_named_t arcstat_l2_hdr_size; + kstat_named_t arcstat_l2_compress_successes; + kstat_named_t arcstat_l2_compress_zeros; + kstat_named_t arcstat_l2_compress_failures; kstat_named_t arcstat_l2_write_trylock_fail; kstat_named_t arcstat_l2_write_passed_headroom; kstat_named_t arcstat_l2_write_spa_mismatch; @@ -406,7 +412,11 @@ static arc_stats_t arc_stats = { { "l2_cksum_bad", KSTAT_DATA_UINT64 }, { "l2_io_error", KSTAT_DATA_UINT64 }, { "l2_size", KSTAT_DATA_UINT64 }, + { "l2_asize", KSTAT_DATA_UINT64 }, { "l2_hdr_size", KSTAT_DATA_UINT64 }, + { "l2_compress_successes", KSTAT_DATA_UINT64 }, + { "l2_compress_zeros", KSTAT_DATA_UINT64 }, + { "l2_compress_failures", KSTAT_DATA_UINT64 }, { "l2_write_trylock_fail", KSTAT_DATA_UINT64 }, { "l2_write_passed_headroom", KSTAT_DATA_UINT64 }, { "l2_write_spa_mismatch", KSTAT_DATA_UINT64 }, @@ -485,6 +495,9 @@ static arc_state_t *arc_l2c_only; #define arc_c_min ARCSTAT(arcstat_c_min) /* min target cache size */ #define arc_c_max ARCSTAT(arcstat_c_max) /* max target cache size */ +#define L2ARC_IS_VALID_COMPRESS(_c_) \ + ((_c_) == ZIO_COMPRESS_LZ4 || (_c_) == ZIO_COMPRESS_EMPTY) + static int arc_no_grow; /* Don't try to grow cache size */ static uint64_t arc_tempreserve; static uint64_t arc_loaned_bytes; @@ -647,7 +660,12 @@ uint64_t zfs_crc64_table[256]; */ #define L2ARC_WRITE_SIZE (8 * 1024 * 1024) /* initial write max */ -#define L2ARC_HEADROOM 2 /* num of writes */ +#define L2ARC_HEADROOM 2 /* num of writes */ +/* + * If we discover during ARC scan any buffers to be compressed, we boost + * our headroom for the next scanning cycle by this percentage multiple. + */ +#define L2ARC_HEADROOM_BOOST 200 #define L2ARC_FEED_SECS 1 /* caching interval secs */ #define L2ARC_FEED_MIN_MS 200 /* min caching interval ms */ @@ -658,6 +676,7 @@ uint64_t zfs_crc64_table[256]; uint64_t l2arc_write_max = L2ARC_WRITE_SIZE; /* default max write size */ uint64_t l2arc_write_boost = L2ARC_WRITE_SIZE; /* extra write during warmup */ uint64_t l2arc_headroom = L2ARC_HEADROOM; /* number of dev writes */ +uint64_t l2arc_headroom_boost = L2ARC_HEADROOM_BOOST; uint64_t l2arc_feed_secs = L2ARC_FEED_SECS; /* interval seconds */ uint64_t l2arc_feed_min_ms = L2ARC_FEED_MIN_MS; /* min interval milliseconds */ boolean_t l2arc_noprefetch = B_TRUE; /* don't cache prefetch bufs */ @@ -731,8 +750,6 @@ typedef struct l2arc_dev { vdev_t *l2ad_vdev; /* vdev */ spa_t *l2ad_spa; /* spa */ uint64_t l2ad_hand; /* next write location */ - uint64_t l2ad_write; /* desired write size, bytes */ - uint64_t l2ad_boost; /* warmup write boost, bytes */ uint64_t l2ad_start; /* first addr on device */ uint64_t l2ad_end; /* last addr on device */ uint64_t l2ad_evict; /* last addr eviction reached */ @@ -753,11 +770,12 @@ static kmutex_t l2arc_free_on_write_mtx; static uint64_t l2arc_ndev; /* number of devices */ typedef struct l2arc_read_callback { - arc_buf_t *l2rcb_buf; /* read buffer */ - spa_t *l2rcb_spa; /* spa */ - blkptr_t l2rcb_bp; /* original blkptr */ - zbookmark_t l2rcb_zb; /* original bookmark */ - int l2rcb_flags; /* original flags */ + arc_buf_t *l2rcb_buf; /* read buffer */ + spa_t *l2rcb_spa; /* spa */ + blkptr_t l2rcb_bp; /* original blkptr */ + zbookmark_t l2rcb_zb; /* original bookmark */ + int l2rcb_flags; /* original flags */ + enum zio_compress l2rcb_compress; /* applied compress */ } l2arc_read_callback_t; typedef struct l2arc_write_callback { @@ -767,8 +785,14 @@ typedef struct l2arc_write_callback { struct l2arc_buf_hdr { /* protected by arc_buf_hdr mutex */ - l2arc_dev_t *b_dev; /* L2ARC device */ - uint64_t b_daddr; /* disk address, offset byte */ + l2arc_dev_t *b_dev; /* L2ARC device */ + uint64_t b_daddr; /* disk address, offset byte */ + /* compression applied to buffer data */ + enum zio_compress b_compress; + /* real alloc'd buffer size depending on b_compress applied */ + int b_asize; + /* temporary buffer holder for in-flight compressed data */ + void *b_tmp_cdata; }; typedef struct l2arc_data_free { @@ -787,6 +811,11 @@ static void l2arc_read_done(zio_t *zio); static void l2arc_hdr_stat_add(void); static void l2arc_hdr_stat_remove(void); +static boolean_t l2arc_compress_buf(l2arc_buf_hdr_t *l2hdr); +static void l2arc_decompress_zio(zio_t *zio, arc_buf_hdr_t *hdr, + enum zio_compress c); +static void l2arc_release_cdata_buf(arc_buf_hdr_t *ab); + static uint64_t buf_hash(uint64_t spa, const dva_t *dva, uint64_t birth) { @@ -1705,6 +1734,7 @@ arc_hdr_destroy(arc_buf_hdr_t *hdr) hdr->b_size, 0); list_remove(l2hdr->b_dev->l2ad_buflist, hdr); ARCSTAT_INCR(arcstat_l2_size, -hdr->b_size); + ARCSTAT_INCR(arcstat_l2_asize, -l2hdr->b_asize); kmem_free(l2hdr, sizeof (l2arc_buf_hdr_t)); if (hdr->b_state == arc_l2c_only) l2arc_hdr_stat_remove(); @@ -3127,6 +3157,8 @@ top: arc_access(hdr, hash_lock); if (*arc_flags & ARC_L2CACHE) hdr->b_flags |= ARC_L2CACHE; + if (*arc_flags & ARC_L2COMPRESS) + hdr->b_flags |= ARC_L2COMPRESS; mutex_exit(hash_lock); ARCSTAT_BUMP(arcstat_hits); ARCSTAT_CONDSTAT(!(hdr->b_flags & ARC_PREFETCH), @@ -3167,6 +3199,8 @@ top: } if (*arc_flags & ARC_L2CACHE) hdr->b_flags |= ARC_L2CACHE; + if (*arc_flags & ARC_L2COMPRESS) + hdr->b_flags |= ARC_L2COMPRESS; if (BP_GET_LEVEL(bp) > 0) hdr->b_flags |= ARC_INDIRECT; } else { @@ -3183,6 +3217,8 @@ top: add_reference(hdr, hash_lock, private); if (*arc_flags & ARC_L2CACHE) hdr->b_flags |= ARC_L2CACHE; + if (*arc_flags & ARC_L2COMPRESS) + hdr->b_flags |= ARC_L2COMPRESS; buf = kmem_cache_alloc(buf_cache, KM_PUSHPAGE); buf->b_hdr = hdr; buf->b_data = NULL; @@ -3260,6 +3296,7 @@ top: cb->l2rcb_bp = *bp; cb->l2rcb_zb = *zb; cb->l2rcb_flags = zio_flags; + cb->l2rcb_compress = hdr->b_l2hdr->b_compress; ASSERT(addr >= VDEV_LABEL_START_SIZE && addr + size < vd->vdev_psize - @@ -3268,16 +3305,31 @@ top: /* * l2arc read. The SCL_L2ARC lock will be * released by l2arc_read_done(). + * Issue a null zio if the underlying buffer + * was squashed to zero size by compression. */ - rzio = zio_read_phys(pio, vd, addr, size, - buf->b_data, ZIO_CHECKSUM_OFF, - l2arc_read_done, cb, priority, zio_flags | - ZIO_FLAG_DONT_CACHE | ZIO_FLAG_CANFAIL | - ZIO_FLAG_DONT_PROPAGATE | - ZIO_FLAG_DONT_RETRY, B_FALSE); + if (hdr->b_l2hdr->b_compress == + ZIO_COMPRESS_EMPTY) { + rzio = zio_null(pio, spa, vd, + l2arc_read_done, cb, + zio_flags | ZIO_FLAG_DONT_CACHE | + ZIO_FLAG_CANFAIL | + ZIO_FLAG_DONT_PROPAGATE | + ZIO_FLAG_DONT_RETRY); + } else { + rzio = zio_read_phys(pio, vd, addr, + hdr->b_l2hdr->b_asize, + buf->b_data, ZIO_CHECKSUM_OFF, + l2arc_read_done, cb, priority, + zio_flags | ZIO_FLAG_DONT_CACHE | + ZIO_FLAG_CANFAIL | + ZIO_FLAG_DONT_PROPAGATE | + ZIO_FLAG_DONT_RETRY, B_FALSE); + } DTRACE_PROBE2(l2arc__read, vdev_t *, vd, zio_t *, rzio); - ARCSTAT_INCR(arcstat_l2_read_bytes, size); + ARCSTAT_INCR(arcstat_l2_read_bytes, + hdr->b_l2hdr->b_asize); if (*arc_flags & ARC_NOWAIT) { zio_nowait(rzio); @@ -3545,6 +3597,7 @@ arc_release(arc_buf_t *buf, void *tag) buf->b_private = NULL; if (l2hdr) { + ARCSTAT_INCR(arcstat_l2_asize, -l2hdr->b_asize); trim_map_free(l2hdr->b_dev->l2ad_vdev, l2hdr->b_daddr, hdr->b_size, 0); kmem_free(l2hdr, sizeof (l2arc_buf_hdr_t)); @@ -3695,9 +3748,9 @@ arc_write_done(zio_t *zio) zio_t * arc_write(zio_t *pio, spa_t *spa, uint64_t txg, - blkptr_t *bp, arc_buf_t *buf, boolean_t l2arc, const zio_prop_t *zp, - arc_done_func_t *ready, arc_done_func_t *done, void *private, - int priority, int zio_flags, const zbookmark_t *zb) + blkptr_t *bp, arc_buf_t *buf, boolean_t l2arc, boolean_t l2arc_compress, + const zio_prop_t *zp, arc_done_func_t *ready, arc_done_func_t *done, + void *private, int priority, int zio_flags, const zbookmark_t *zb) { arc_buf_hdr_t *hdr = buf->b_hdr; arc_write_callback_t *callback; @@ -3710,6 +3763,8 @@ arc_write(zio_t *pio, spa_t *spa, uint64 ASSERT(hdr->b_acb == NULL); if (l2arc) hdr->b_flags |= ARC_L2CACHE; + if (l2arc_compress) + hdr->b_flags |= ARC_L2COMPRESS; callback = kmem_zalloc(sizeof (arc_write_callback_t), KM_SLEEP); callback->awcb_ready = ready; callback->awcb_done = done; @@ -4160,8 +4215,12 @@ arc_fini(void) * 2. The L2ARC attempts to cache data from the ARC before it is evicted. * It does this by periodically scanning buffers from the eviction-end of * the MFU and MRU ARC lists, copying them to the L2ARC devices if they are - * not already there. It scans until a headroom of buffers is satisfied, - * which itself is a buffer for ARC eviction. The thread that does this is + * not already there. It scans until a headroom of buffers is satisfied, + * which itself is a buffer for ARC eviction. If a compressible buffer is + * found during scanning and selected for writing to an L2ARC device, we + * temporarily boost scanning headroom during the next scan cycle to make + * sure we adapt to compression effects (which might significantly reduce + * the data volume we write to L2ARC). The thread that does this is * l2arc_feed_thread(), illustrated below; example sizes are included to * provide a better sense of ratio than this diagram: * @@ -4226,6 +4285,11 @@ arc_fini(void) * l2arc_write_boost extra write bytes during device warmup * l2arc_noprefetch skip caching prefetched buffers * l2arc_headroom number of max device writes to precache + * l2arc_headroom_boost when we find compressed buffers during ARC + * scanning, we multiply headroom by this + * percentage factor for the next scan cycle, + * since more compressed buffers are likely to + * be present * l2arc_feed_secs seconds between L2ARC writing * * Tunables may be removed or added as future performance improvements are @@ -4272,14 +4336,24 @@ l2arc_write_eligible(uint64_t spa_guid, } static uint64_t -l2arc_write_size(l2arc_dev_t *dev) +l2arc_write_size(void) { uint64_t size; - size = dev->l2ad_write; + /* + * Make sure our globals have meaningful values in case the user + * altered them. + */ + size = l2arc_write_max; + if (size == 0) { + cmn_err(CE_NOTE, "Bad value for l2arc_write_max, value must " + "be greater than zero, resetting it to the default (%d)", + L2ARC_WRITE_SIZE); + size = l2arc_write_max = L2ARC_WRITE_SIZE; + } if (arc_warm == B_FALSE) - size += dev->l2ad_boost; + size += l2arc_write_boost; return (size); @@ -4453,12 +4527,20 @@ l2arc_write_done(zio_t *zio) continue; } + abl2 = ab->b_l2hdr; + + /* + * Release the temporary compressed buffer as soon as possible. + */ + if (abl2->b_compress != ZIO_COMPRESS_OFF) + l2arc_release_cdata_buf(ab); + if (zio->io_error != 0) { /* * Error - drop L2ARC entry. */ list_remove(buflist, ab); - abl2 = ab->b_l2hdr; + ARCSTAT_INCR(arcstat_l2_asize, -abl2->b_asize); ab->b_l2hdr = NULL; trim_map_free(abl2->b_dev->l2ad_vdev, abl2->b_daddr, ab->b_size, 0); @@ -4513,6 +4595,13 @@ l2arc_read_done(zio_t *zio) ASSERT3P(hash_lock, ==, HDR_LOCK(hdr)); /* + * If the buffer was compressed, decompress it first. + */ + if (cb->l2rcb_compress != ZIO_COMPRESS_OFF) + l2arc_decompress_zio(zio, hdr, cb->l2rcb_compress); + ASSERT(zio->io_data != NULL); + + /* * Check this survived the L2ARC journey. */ equal = arc_cksum_equal(buf); @@ -4708,6 +4797,7 @@ top: */ if (ab->b_l2hdr != NULL) { abl2 = ab->b_l2hdr; + ARCSTAT_INCR(arcstat_l2_asize, -abl2->b_asize); ab->b_l2hdr = NULL; kmem_free(abl2, sizeof (l2arc_buf_hdr_t)); ARCSTAT_INCR(arcstat_l2_size, -ab->b_size); @@ -4733,38 +4823,55 @@ top: * * An ARC_L2_WRITING flag is set so that the L2ARC buffers are not valid * for reading until they have completed writing. + * The headroom_boost is an in-out parameter used to maintain headroom boost + * state between calls to this function. + * + * Returns the number of bytes actually written (which may be smaller than + * the delta by which the device hand has changed due to alignment). */ static uint64_t -l2arc_write_buffers(spa_t *spa, l2arc_dev_t *dev, uint64_t target_sz) +l2arc_write_buffers(spa_t *spa, l2arc_dev_t *dev, uint64_t target_sz, + boolean_t *headroom_boost) { arc_buf_hdr_t *ab, *ab_prev, *head; - l2arc_buf_hdr_t *hdrl2; list_t *list; - uint64_t passed_sz, write_sz, buf_sz, headroom; + uint64_t write_asize, write_psize, write_sz, headroom, + buf_compress_minsz; void *buf_data; - kmutex_t *hash_lock, *list_lock; - boolean_t have_lock, full; + kmutex_t *list_lock; + boolean_t full; l2arc_write_callback_t *cb; zio_t *pio, *wzio; uint64_t guid = spa_load_guid(spa); + const boolean_t do_headroom_boost = *headroom_boost; int try; ASSERT(dev->l2ad_vdev != NULL); + /* Lower the flag now, we might want to raise it again later. */ + *headroom_boost = B_FALSE; + pio = NULL; - write_sz = 0; + write_sz = write_asize = write_psize = 0; full = B_FALSE; head = kmem_cache_alloc(hdr_cache, KM_PUSHPAGE); head->b_flags |= ARC_L2_WRITE_HEAD; ARCSTAT_BUMP(arcstat_l2_write_buffer_iter); /* + * We will want to try to compress buffers that are at least 2x the + * device sector size. + */ + buf_compress_minsz = 2 << dev->l2ad_vdev->vdev_ashift; + + /* * Copy buffers for L2ARC writing. */ mutex_enter(&l2arc_buflist_mtx); for (try = 0; try < 2 * ARC_BUFC_NUMLISTS; try++) { + uint64_t passed_sz = 0; + list = l2arc_list_locked(try, &list_lock); - passed_sz = 0; ARCSTAT_BUMP(arcstat_l2_write_buffer_list_iter); /* @@ -4773,7 +4880,6 @@ l2arc_write_buffers(spa_t *spa, l2arc_de * Until the ARC is warm and starts to evict, read from the * head of the ARC lists rather than the tail. */ - headroom = target_sz * l2arc_headroom; if (arc_warm == B_FALSE) ab = list_head(list); else @@ -4781,7 +4887,15 @@ l2arc_write_buffers(spa_t *spa, l2arc_de if (ab == NULL) ARCSTAT_BUMP(arcstat_l2_write_buffer_list_null_iter); + headroom = target_sz * l2arc_headroom; + if (do_headroom_boost) + headroom = (headroom * l2arc_headroom_boost) / 100; + for (; ab; ab = ab_prev) { + l2arc_buf_hdr_t *l2hdr; + kmutex_t *hash_lock; + uint64_t buf_sz; + if (arc_warm == B_FALSE) ab_prev = list_next(list, ab); else @@ -4789,8 +4903,7 @@ l2arc_write_buffers(spa_t *spa, l2arc_de ARCSTAT_INCR(arcstat_l2_write_buffer_bytes_scanned, ab->b_size); hash_lock = HDR_LOCK(ab); - have_lock = MUTEX_HELD(hash_lock); - if (!have_lock && !mutex_tryenter(hash_lock)) { + if (!mutex_tryenter(hash_lock)) { ARCSTAT_BUMP(arcstat_l2_write_trylock_fail); /* * Skip this buffer rather than waiting. @@ -4840,15 +4953,26 @@ l2arc_write_buffers(spa_t *spa, l2arc_de /* * Create and add a new L2ARC header. */ - hdrl2 = kmem_zalloc(sizeof (l2arc_buf_hdr_t), KM_SLEEP); - hdrl2->b_dev = dev; - hdrl2->b_daddr = dev->l2ad_hand; - + l2hdr = kmem_zalloc(sizeof (l2arc_buf_hdr_t), KM_SLEEP); + l2hdr->b_dev = dev; ab->b_flags |= ARC_L2_WRITING; - ab->b_l2hdr = hdrl2; - list_insert_head(dev->l2ad_buflist, ab); - buf_data = ab->b_buf->b_data; + + /* + * Temporarily stash the data buffer in b_tmp_cdata. + * The subsequent write step will pick it up from + * there. This is because can't access ab->b_buf + * without holding the hash_lock, which we in turn + * can't access without holding the ARC list locks + * (which we want to avoid during compression/writing). + */ + l2hdr->b_compress = ZIO_COMPRESS_OFF; + l2hdr->b_asize = ab->b_size; + l2hdr->b_tmp_cdata = ab->b_buf->b_data; + buf_sz = ab->b_size; + ab->b_l2hdr = l2hdr; + + list_insert_head(dev->l2ad_buflist, ab); /* * Compute and store the buffer cksum before @@ -4859,6 +4983,64 @@ l2arc_write_buffers(spa_t *spa, l2arc_de mutex_exit(hash_lock); + write_sz += buf_sz; + } + + mutex_exit(list_lock); + + if (full == B_TRUE) + break; + } + + /* No buffers selected for writing? */ + if (pio == NULL) { + ASSERT0(write_sz); + mutex_exit(&l2arc_buflist_mtx); + kmem_cache_free(hdr_cache, head); + return (0); + } + + /* + * Now start writing the buffers. We're starting at the write head + * and work backwards, retracing the course of the buffer selector + * loop above. + */ + for (ab = list_prev(dev->l2ad_buflist, head); ab; + ab = list_prev(dev->l2ad_buflist, ab)) { + l2arc_buf_hdr_t *l2hdr; + uint64_t buf_sz; + + /* + * We shouldn't need to lock the buffer here, since we flagged + * it as ARC_L2_WRITING in the previous step, but we must take + * care to only access its L2 cache parameters. In particular, + * ab->b_buf may be invalid by now due to ARC eviction. + */ + l2hdr = ab->b_l2hdr; + l2hdr->b_daddr = dev->l2ad_hand; + + if ((ab->b_flags & ARC_L2COMPRESS) && + l2hdr->b_asize >= buf_compress_minsz) { + if (l2arc_compress_buf(l2hdr)) { + /* + * If compression succeeded, enable headroom + * boost on the next scan cycle. + */ + *headroom_boost = B_TRUE; + } + } + + /* + * Pick up the buffer data we had previously stashed away + * (and now potentially also compressed). + */ + buf_data = l2hdr->b_tmp_cdata; + buf_sz = l2hdr->b_asize; + + /* Compression may have squashed the buffer to zero length. */ + if (buf_sz != 0) { + uint64_t buf_p_sz; + wzio = zio_write_phys(pio, dev->l2ad_vdev, dev->l2ad_hand, buf_sz, buf_data, ZIO_CHECKSUM_OFF, NULL, NULL, ZIO_PRIORITY_ASYNC_WRITE, @@ -4868,33 +5050,24 @@ l2arc_write_buffers(spa_t *spa, l2arc_de zio_t *, wzio); (void) zio_nowait(wzio); + write_asize += buf_sz; /* * Keep the clock hand suitably device-aligned. */ - buf_sz = vdev_psize_to_asize(dev->l2ad_vdev, buf_sz); - - write_sz += buf_sz; - dev->l2ad_hand += buf_sz; + buf_p_sz = vdev_psize_to_asize(dev->l2ad_vdev, buf_sz); + write_psize += buf_p_sz; + dev->l2ad_hand += buf_p_sz; } - - mutex_exit(list_lock); - - if (full == B_TRUE) - break; } - mutex_exit(&l2arc_buflist_mtx); - if (pio == NULL) { - ASSERT0(write_sz); - kmem_cache_free(hdr_cache, head); - return (0); - } + mutex_exit(&l2arc_buflist_mtx); - ASSERT3U(write_sz, <=, target_sz); + ASSERT3U(write_asize, <=, target_sz); ARCSTAT_BUMP(arcstat_l2_writes_sent); - ARCSTAT_INCR(arcstat_l2_write_bytes, write_sz); + ARCSTAT_INCR(arcstat_l2_write_bytes, write_asize); ARCSTAT_INCR(arcstat_l2_size, write_sz); - vdev_space_update(dev->l2ad_vdev, write_sz, 0, 0); + ARCSTAT_INCR(arcstat_l2_asize, write_asize); + vdev_space_update(dev->l2ad_vdev, write_psize, 0, 0); /* * Bump device hand to the device start if it is approaching the end. @@ -4912,7 +5085,153 @@ l2arc_write_buffers(spa_t *spa, l2arc_de (void) zio_wait(pio); dev->l2ad_writing = B_FALSE; - return (write_sz); + return (write_asize); +} + +/* + * Compresses an L2ARC buffer. + * The data to be compressed must be prefilled in l2hdr->b_tmp_cdata and its + * size in l2hdr->b_asize. This routine tries to compress the data and + * depending on the compression result there are three possible outcomes: + * *) The buffer was incompressible. The original l2hdr contents were left + * untouched and are ready for writing to an L2 device. + * *) The buffer was all-zeros, so there is no need to write it to an L2 + * device. To indicate this situation b_tmp_cdata is NULL'ed, b_asize is + * set to zero and b_compress is set to ZIO_COMPRESS_EMPTY. + * *) Compression succeeded and b_tmp_cdata was replaced with a temporary + * data buffer which holds the compressed data to be written, and b_asize + * tells us how much data there is. b_compress is set to the appropriate + * compression algorithm. Once writing is done, invoke + * l2arc_release_cdata_buf on this l2hdr to free this temporary buffer. + * + * Returns B_TRUE if compression succeeded, or B_FALSE if it didn't (the + * buffer was incompressible). + */ +static boolean_t +l2arc_compress_buf(l2arc_buf_hdr_t *l2hdr) +{ + void *cdata; + size_t csize, len; + + ASSERT(l2hdr->b_compress == ZIO_COMPRESS_OFF); + ASSERT(l2hdr->b_tmp_cdata != NULL); + + len = l2hdr->b_asize; + cdata = zio_data_buf_alloc(len); + csize = zio_compress_data(ZIO_COMPRESS_LZ4, l2hdr->b_tmp_cdata, + cdata, l2hdr->b_asize); + + if (csize == 0) { + /* zero block, indicate that there's nothing to write */ + zio_data_buf_free(cdata, len); + l2hdr->b_compress = ZIO_COMPRESS_EMPTY; + l2hdr->b_asize = 0; + l2hdr->b_tmp_cdata = NULL; + ARCSTAT_BUMP(arcstat_l2_compress_zeros); + return (B_TRUE); + } else if (csize > 0 && csize < len) { + /* + * Compression succeeded, we'll keep the cdata around for + * writing and release it afterwards. + */ + l2hdr->b_compress = ZIO_COMPRESS_LZ4; + l2hdr->b_asize = csize; + l2hdr->b_tmp_cdata = cdata; + ARCSTAT_BUMP(arcstat_l2_compress_successes); + return (B_TRUE); + } else { + /* + * Compression failed, release the compressed buffer. + * l2hdr will be left unmodified. + */ + zio_data_buf_free(cdata, len); + ARCSTAT_BUMP(arcstat_l2_compress_failures); + return (B_FALSE); + } +} + +/* + * Decompresses a zio read back from an l2arc device. On success, the + * underlying zio's io_data buffer is overwritten by the uncompressed + * version. On decompression error (corrupt compressed stream), the + * zio->io_error value is set to signal an I/O error. + * + * Please note that the compressed data stream is not checksummed, so + * if the underlying device is experiencing data corruption, we may feed + * corrupt data to the decompressor, so the decompressor needs to be + * able to handle this situation (LZ4 does). + */ +static void +l2arc_decompress_zio(zio_t *zio, arc_buf_hdr_t *hdr, enum zio_compress c) +{ + ASSERT(L2ARC_IS_VALID_COMPRESS(c)); + + if (zio->io_error != 0) { + /* + * An io error has occured, just restore the original io + * size in preparation for a main pool read. + */ + zio->io_orig_size = zio->io_size = hdr->b_size; + return; + } + + if (c == ZIO_COMPRESS_EMPTY) { + /* + * An empty buffer results in a null zio, which means we + * need to fill its io_data after we're done restoring the + * buffer's contents. + */ + ASSERT(hdr->b_buf != NULL); + bzero(hdr->b_buf->b_data, hdr->b_size); + zio->io_data = zio->io_orig_data = hdr->b_buf->b_data; + } else { + ASSERT(zio->io_data != NULL); + /* + * We copy the compressed data from the start of the arc buffer + * (the zio_read will have pulled in only what we need, the + * rest is garbage which we will overwrite at decompression) + * and then decompress back to the ARC data buffer. This way we + * can minimize copying by simply decompressing back over the + * original compressed data (rather than decompressing to an + * aux buffer and then copying back the uncompressed buffer, + * which is likely to be much larger). + */ + uint64_t csize; + void *cdata; + + csize = zio->io_size; + cdata = zio_data_buf_alloc(csize); + bcopy(zio->io_data, cdata, csize); + if (zio_decompress_data(c, cdata, zio->io_data, csize, + hdr->b_size) != 0) + zio->io_error = EIO; + zio_data_buf_free(cdata, csize); + } + + /* Restore the expected uncompressed IO size. */ + zio->io_orig_size = zio->io_size = hdr->b_size; +} + +/* + * Releases the temporary b_tmp_cdata buffer in an l2arc header structure. + * This buffer serves as a temporary holder of compressed data while + * the buffer entry is being written to an l2arc device. Once that is + * done, we can dispose of it. + */ +static void +l2arc_release_cdata_buf(arc_buf_hdr_t *ab) +{ + l2arc_buf_hdr_t *l2hdr = ab->b_l2hdr; + + if (l2hdr->b_compress == ZIO_COMPRESS_LZ4) { + /* + * If the data was compressed, then we've allocated a + * temporary buffer for it, so now we need to release it. + */ + ASSERT(l2hdr->b_tmp_cdata != NULL); + zio_data_buf_free(l2hdr->b_tmp_cdata, ab->b_size); + } + l2hdr->b_tmp_cdata = NULL; } /* @@ -4927,6 +5246,7 @@ l2arc_feed_thread(void *dummy __unused) spa_t *spa; uint64_t size, wrote; clock_t begin, next = ddi_get_lbolt(); + boolean_t headroom_boost = B_FALSE; CALLB_CPR_INIT(&cpr, &l2arc_feed_thr_lock, callb_generic_cpr, FTAG); @@ -4987,7 +5307,7 @@ l2arc_feed_thread(void *dummy __unused) ARCSTAT_BUMP(arcstat_l2_feeds); - size = l2arc_write_size(dev); + size = l2arc_write_size(); /* * Evict L2ARC buffers that will be overwritten. @@ -4997,7 +5317,7 @@ l2arc_feed_thread(void *dummy __unused) /* * Write ARC buffers. */ - wrote = l2arc_write_buffers(spa, dev, size); + wrote = l2arc_write_buffers(spa, dev, size, &headroom_boost); /* * Calculate interval between writes. @@ -5045,15 +5365,12 @@ l2arc_add_vdev(spa_t *spa, vdev_t *vd) adddev = kmem_zalloc(sizeof (l2arc_dev_t), KM_SLEEP); adddev->l2ad_spa = spa; adddev->l2ad_vdev = vd; - adddev->l2ad_write = l2arc_write_max; - adddev->l2ad_boost = l2arc_write_boost; adddev->l2ad_start = VDEV_LABEL_START_SIZE; adddev->l2ad_end = VDEV_LABEL_START_SIZE + vdev_get_min_asize(vd); adddev->l2ad_hand = adddev->l2ad_start; adddev->l2ad_evict = adddev->l2ad_start; adddev->l2ad_first = B_TRUE; adddev->l2ad_writing = B_FALSE; - ASSERT3U(adddev->l2ad_write, >, 0); /* * This is a list of all ARC buffers that are still valid on the Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Thu Jan 16 15:26:16 2014 (r260758) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Thu Jan 16 15:29:44 2014 (r260759) @@ -22,6 +22,7 @@ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. */ #include @@ -575,6 +576,8 @@ dbuf_read_impl(dmu_buf_impl_t *db, zio_t if (DBUF_IS_L2CACHEABLE(db)) aflags |= ARC_L2CACHE; + if (DBUF_IS_L2COMPRESSIBLE(db)) + aflags |= ARC_L2COMPRESS; SET_BOOKMARK(&zb, db->db_objset->os_dsl_dataset ? db->db_objset->os_dsl_dataset->ds_object : DMU_META_OBJSET, @@ -2761,8 +2764,9 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_ } else { ASSERT(arc_released(data)); dr->dr_zio = arc_write(zio, os->os_spa, txg, - db->db_blkptr, data, DBUF_IS_L2CACHEABLE(db), &zp, - dbuf_write_ready, dbuf_write_done, db, - ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); + db->db_blkptr, data, DBUF_IS_L2CACHEABLE(db), + DBUF_IS_L2COMPRESSIBLE(db), &zp, dbuf_write_ready, + dbuf_write_done, db, ZIO_PRIORITY_ASYNC_WRITE, + ZIO_FLAG_MUSTSUCCEED, &zb); } } Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 15:26:16 2014 (r260758) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 15:29:44 2014 (r260759) @@ -23,6 +23,8 @@ * Copyright (c) 2013 by Delphix. All rights reserved. */ +/* Copyright (c) 2013 by Saso Kiselkov. All rights reserved. */ + #include #include #include @@ -1513,9 +1515,9 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_s dsa->dsa_tx = NULL; zio_nowait(arc_write(pio, os->os_spa, txg, - bp, dr->dt.dl.dr_data, DBUF_IS_L2CACHEABLE(db), &zp, - dmu_sync_ready, dmu_sync_done, dsa, - ZIO_PRIORITY_SYNC_WRITE, ZIO_FLAG_CANFAIL, &zb)); + bp, dr->dt.dl.dr_data, DBUF_IS_L2CACHEABLE(db), + DBUF_IS_L2COMPRESSIBLE(db), &zp, dmu_sync_ready, dmu_sync_done, + dsa, ZIO_PRIORITY_SYNC_WRITE, ZIO_FLAG_CANFAIL, &zb)); return (0); } Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c Thu Jan 16 15:26:16 2014 (r260758) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c Thu Jan 16 15:29:44 2014 (r260759) @@ -21,6 +21,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. */ /* Portions Copyright 2010 Robert Milkowski */ @@ -276,6 +277,8 @@ dmu_objset_open_impl(spa_t *spa, dsl_dat if (DMU_OS_IS_L2CACHEABLE(os)) aflags |= ARC_L2CACHE; + if (DMU_OS_IS_L2COMPRESSIBLE(os)) + aflags |= ARC_L2COMPRESS; dprintf_bp(os->os_rootbp, "reading %s", ""); err = arc_read(NULL, spa, os->os_rootbp, @@ -1023,9 +1026,10 @@ dmu_objset_sync(objset_t *os, zio_t *pio dmu_write_policy(os, NULL, 0, 0, &zp); zio = arc_write(pio, os->os_spa, tx->tx_txg, - os->os_rootbp, os->os_phys_buf, DMU_OS_IS_L2CACHEABLE(os), &zp, - dmu_objset_write_ready, dmu_objset_write_done, os, - ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); + os->os_rootbp, os->os_phys_buf, DMU_OS_IS_L2CACHEABLE(os), + DMU_OS_IS_L2COMPRESSIBLE(os), &zp, dmu_objset_write_ready, + dmu_objset_write_done, os, ZIO_PRIORITY_ASYNC_WRITE, + ZIO_FLAG_MUSTSUCCEED, &zb); /* * Sync special dnodes - the parent IO for the sync is the root block Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h Thu Jan 16 15:26:16 2014 (r260758) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h Thu Jan 16 15:29:44 2014 (r260759) @@ -21,6 +21,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 Saso Kiselkov. All rights reserved. */ #ifndef _SYS_ARC_H @@ -67,6 +68,7 @@ typedef enum arc_buf_contents { #define ARC_PREFETCH (1 << 3) /* I/O is a prefetch */ #define ARC_CACHED (1 << 4) /* I/O was already in cache */ #define ARC_L2CACHE (1 << 5) /* cache in L2ARC */ +#define ARC_L2COMPRESS (1 << 6) /* compress in L2ARC */ /* * The following breakdows of arc_size exist for kstat only. @@ -105,9 +107,9 @@ int arc_read(zio_t *pio, spa_t *spa, con arc_done_func_t *done, void *priv, int priority, int flags, uint32_t *arc_flags, const zbookmark_t *zb); zio_t *arc_write(zio_t *pio, spa_t *spa, uint64_t txg, - blkptr_t *bp, arc_buf_t *buf, boolean_t l2arc, const zio_prop_t *zp, - arc_done_func_t *ready, arc_done_func_t *done, void *priv, - int priority, int zio_flags, const zbookmark_t *zb); + blkptr_t *bp, arc_buf_t *buf, boolean_t l2arc, boolean_t l2arc_compress, + const zio_prop_t *zp, arc_done_func_t *ready, arc_done_func_t *done, + void *priv, int priority, int zio_flags, const zbookmark_t *zb); void arc_set_callback(arc_buf_t *buf, arc_evict_func_t *func, void *priv); int arc_buf_evict(arc_buf_t *buf); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h Thu Jan 16 15:26:16 2014 (r260758) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h Thu Jan 16 15:29:44 2014 (r260759) @@ -21,6 +21,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 Saso Kiselkov. All rights reserved. */ #ifndef _SYS_DBUF_H @@ -324,6 +325,9 @@ boolean_t dbuf_is_metadata(dmu_buf_impl_ (dbuf_is_metadata(_db) && \ ((_db)->db_objset->os_secondary_cache == ZFS_CACHE_METADATA))) +#define DBUF_IS_L2COMPRESSIBLE(_db) \ + ((_db)->db_objset->os_compress != ZIO_COMPRESS_OFF) + #ifdef ZFS_DEBUG /* Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h Thu Jan 16 15:26:16 2014 (r260758) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h Thu Jan 16 15:29:44 2014 (r260759) @@ -21,6 +21,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 Saso Kiselkov. All rights reserved. */ /* Portions Copyright 2010 Robert Milkowski */ @@ -129,6 +130,8 @@ struct objset { ((os)->os_secondary_cache == ZFS_CACHE_ALL || \ (os)->os_secondary_cache == ZFS_CACHE_METADATA) +#define DMU_OS_IS_L2COMPRESSIBLE(os) ((os)->os_compress != ZIO_COMPRESS_OFF) + /* called from zpl */ int dmu_objset_hold(const char *name, void *tag, objset_t **osp); int dmu_objset_own(const char *name, dmu_objset_type_t type, From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 15:43:17 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DF379549; Thu, 16 Jan 2014 15:43:17 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BF39B1832; Thu, 16 Jan 2014 15:43:17 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GFhHYs064727; Thu, 16 Jan 2014 15:43:17 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GFhHxM064725; Thu, 16 Jan 2014 15:43:17 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161543.s0GFhHxM064725@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 15:43:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260760 - in stable/9: cddl/contrib/opensolaris/cmd/ztest sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 15:43:18 -0000 Author: avg Date: Thu Jan 16 15:43:17 2014 New Revision: 260760 URL: http://svnweb.freebsd.org/changeset/base/260760 Log: MFC r254074: MFV r254070: Merge vendor bugfix for ZFS test suite that triggers false positives Modified: stable/9/cddl/contrib/opensolaris/cmd/ztest/ztest.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Directory Properties: stable/9/cddl/contrib/opensolaris/ (props changed) stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/cddl/contrib/opensolaris/cmd/ztest/ztest.c ============================================================================== --- stable/9/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Jan 16 15:29:44 2014 (r260759) +++ stable/9/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Jan 16 15:43:17 2014 (r260760) @@ -186,6 +186,7 @@ static const ztest_shared_opts_t ztest_o extern uint64_t metaslab_gang_bang; extern uint64_t metaslab_df_alloc_threshold; +extern uint64_t zfs_deadman_synctime; static ztest_shared_opts_t *ztest_shared_opts; static ztest_shared_opts_t ztest_opts; @@ -365,7 +366,7 @@ ztest_info_t ztest_info[] = { { ztest_fault_inject, 1, &zopt_sometimes }, { ztest_ddt_repair, 1, &zopt_sometimes }, { ztest_dmu_snapshot_hold, 1, &zopt_sometimes }, - { ztest_reguid, 1, &zopt_sometimes }, + { ztest_reguid, 1, &zopt_rarely }, { ztest_spa_rename, 1, &zopt_rarely }, { ztest_scrub, 1, &zopt_rarely }, { ztest_spa_upgrade, 1, &zopt_rarely }, @@ -4756,6 +4757,14 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 ASSERT(leaves >= 1); /* + * Grab the name lock as reader. There are some operations + * which don't like to have their vdevs changed while + * they are in progress (i.e. spa_change_guid). Those + * operations will have grabbed the name lock as writer. + */ + (void) rw_rdlock(&ztest_name_lock); + + /* * We need SCL_STATE here because we're going to look at vd0->vdev_tsd. */ spa_config_enter(spa, SCL_STATE, FTAG, RW_READER); @@ -4784,7 +4793,14 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 if (vd0 != NULL && vd0->vdev_top->vdev_islog) islog = B_TRUE; - if (vd0 != NULL && maxfaults != 1) { + /* + * If the top-level vdev needs to be resilvered + * then we only allow faults on the device that is + * resilvering. + */ + if (vd0 != NULL && maxfaults != 1 && + (!vdev_resilver_needed(vd0->vdev_top, NULL, NULL) || + vd0->vdev_resilvering)) { /* * Make vd0 explicitly claim to be unreadable, * or unwriteable, or reach behind its back @@ -4815,6 +4831,7 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 if (sav->sav_count == 0) { spa_config_exit(spa, SCL_STATE, FTAG); + (void) rw_unlock(&ztest_name_lock); return; } vd0 = sav->sav_vdevs[ztest_random(sav->sav_count)]; @@ -4828,6 +4845,7 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 } spa_config_exit(spa, SCL_STATE, FTAG); + (void) rw_unlock(&ztest_name_lock); /* * If we can tolerate two or more faults, or we're dealing @@ -5293,16 +5311,33 @@ static void * ztest_deadman_thread(void *arg) { ztest_shared_t *zs = arg; - int grace = 300; - hrtime_t delta; - - delta = (zs->zs_thread_stop - zs->zs_thread_start) / NANOSEC + grace; + spa_t *spa = ztest_spa; + hrtime_t delta, total = 0; - (void) poll(NULL, 0, (int)(1000 * delta)); + for (;;) { + delta = (zs->zs_thread_stop - zs->zs_thread_start) / + NANOSEC + zfs_deadman_synctime; - fatal(0, "failed to complete within %d seconds of deadline", grace); + (void) poll(NULL, 0, (int)(1000 * delta)); - return (NULL); + /* + * If the pool is suspended then fail immediately. Otherwise, + * check to see if the pool is making any progress. If + * vdev_deadman() discovers that there hasn't been any recent + * I/Os then it will end up aborting the tests. + */ + if (spa_suspended(spa)) { + fatal(0, "aborting test after %llu seconds because " + "pool has transitioned to a suspended state.", + zfs_deadman_synctime); + return (NULL); + } + vdev_deadman(spa->spa_root_vdev); + + total += zfs_deadman_synctime; + (void) printf("ztest has been running for %lld seconds\n", + total); + } } static void @@ -6031,6 +6066,7 @@ main(int argc, char **argv) (void) setvbuf(stdout, NULL, _IOLBF, 0); dprintf_setup(&argc, argv); + zfs_deadman_synctime = 300; ztest_fd_rand = open("/dev/urandom", O_RDONLY); ASSERT3S(ztest_fd_rand, >=, 0); Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 15:29:44 2014 (r260759) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 15:43:17 2014 (r260760) @@ -774,6 +774,7 @@ spa_change_guid(spa_t *spa) int error; uint64_t guid; + mutex_enter(&spa->spa_vdev_top_lock); mutex_enter(&spa_namespace_lock); guid = spa_generate_guid(NULL); @@ -786,6 +787,7 @@ spa_change_guid(spa_t *spa) } mutex_exit(&spa_namespace_lock); + mutex_exit(&spa->spa_vdev_top_lock); return (error); } @@ -4939,7 +4941,6 @@ spa_vdev_detach(spa_t *spa, uint64_t gui if (pvd->vdev_ops == &vdev_spare_ops) cvd->vdev_unspare = B_FALSE; vdev_remove_parent(cvd); - cvd->vdev_resilvering = B_FALSE; } @@ -5574,6 +5575,13 @@ spa_vdev_resilver_done_hunt(vdev_t *vd) return (oldvd); } + if (vd->vdev_resilvering && vdev_dtl_empty(vd, DTL_MISSING) && + vdev_dtl_empty(vd, DTL_OUTAGE)) { + ASSERT(vd->vdev_ops->vdev_op_leaf); + vd->vdev_resilvering = B_FALSE; + vdev_config_dirty(vd->vdev_top); + } + /* * Check for a completed replacement. We always consider the first * vdev in the list to be the oldest vdev, and the last one to be From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 15:45:05 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6092B78E; Thu, 16 Jan 2014 15:45:05 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 40EFD1851; Thu, 16 Jan 2014 15:45:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GFj5B2065228; Thu, 16 Jan 2014 15:45:05 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GFj47G065225; Thu, 16 Jan 2014 15:45:04 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161545.s0GFj47G065225@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 15:45:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260761 - in stable/8: cddl/contrib/opensolaris/cmd/ztest sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 15:45:05 -0000 Author: avg Date: Thu Jan 16 15:45:04 2014 New Revision: 260761 URL: http://svnweb.freebsd.org/changeset/base/260761 Log: MFC r254074: MFV r254070: Merge vendor bugfix for ZFS test suite that triggers false positives MFC slacker: delphij Modified: stable/8/cddl/contrib/opensolaris/cmd/ztest/ztest.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Directory Properties: stable/8/cddl/contrib/opensolaris/ (props changed) stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/cddl/contrib/opensolaris/cmd/ztest/ztest.c ============================================================================== --- stable/8/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Jan 16 15:43:17 2014 (r260760) +++ stable/8/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Jan 16 15:45:04 2014 (r260761) @@ -186,6 +186,7 @@ static const ztest_shared_opts_t ztest_o extern uint64_t metaslab_gang_bang; extern uint64_t metaslab_df_alloc_threshold; +extern uint64_t zfs_deadman_synctime; static ztest_shared_opts_t *ztest_shared_opts; static ztest_shared_opts_t ztest_opts; @@ -365,7 +366,7 @@ ztest_info_t ztest_info[] = { { ztest_fault_inject, 1, &zopt_sometimes }, { ztest_ddt_repair, 1, &zopt_sometimes }, { ztest_dmu_snapshot_hold, 1, &zopt_sometimes }, - { ztest_reguid, 1, &zopt_sometimes }, + { ztest_reguid, 1, &zopt_rarely }, { ztest_spa_rename, 1, &zopt_rarely }, { ztest_scrub, 1, &zopt_rarely }, { ztest_spa_upgrade, 1, &zopt_rarely }, @@ -4756,6 +4757,14 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 ASSERT(leaves >= 1); /* + * Grab the name lock as reader. There are some operations + * which don't like to have their vdevs changed while + * they are in progress (i.e. spa_change_guid). Those + * operations will have grabbed the name lock as writer. + */ + (void) rw_rdlock(&ztest_name_lock); + + /* * We need SCL_STATE here because we're going to look at vd0->vdev_tsd. */ spa_config_enter(spa, SCL_STATE, FTAG, RW_READER); @@ -4784,7 +4793,14 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 if (vd0 != NULL && vd0->vdev_top->vdev_islog) islog = B_TRUE; - if (vd0 != NULL && maxfaults != 1) { + /* + * If the top-level vdev needs to be resilvered + * then we only allow faults on the device that is + * resilvering. + */ + if (vd0 != NULL && maxfaults != 1 && + (!vdev_resilver_needed(vd0->vdev_top, NULL, NULL) || + vd0->vdev_resilvering)) { /* * Make vd0 explicitly claim to be unreadable, * or unwriteable, or reach behind its back @@ -4815,6 +4831,7 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 if (sav->sav_count == 0) { spa_config_exit(spa, SCL_STATE, FTAG); + (void) rw_unlock(&ztest_name_lock); return; } vd0 = sav->sav_vdevs[ztest_random(sav->sav_count)]; @@ -4828,6 +4845,7 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 } spa_config_exit(spa, SCL_STATE, FTAG); + (void) rw_unlock(&ztest_name_lock); /* * If we can tolerate two or more faults, or we're dealing @@ -5293,16 +5311,33 @@ static void * ztest_deadman_thread(void *arg) { ztest_shared_t *zs = arg; - int grace = 300; - hrtime_t delta; - - delta = (zs->zs_thread_stop - zs->zs_thread_start) / NANOSEC + grace; + spa_t *spa = ztest_spa; + hrtime_t delta, total = 0; - (void) poll(NULL, 0, (int)(1000 * delta)); + for (;;) { + delta = (zs->zs_thread_stop - zs->zs_thread_start) / + NANOSEC + zfs_deadman_synctime; - fatal(0, "failed to complete within %d seconds of deadline", grace); + (void) poll(NULL, 0, (int)(1000 * delta)); - return (NULL); + /* + * If the pool is suspended then fail immediately. Otherwise, + * check to see if the pool is making any progress. If + * vdev_deadman() discovers that there hasn't been any recent + * I/Os then it will end up aborting the tests. + */ + if (spa_suspended(spa)) { + fatal(0, "aborting test after %llu seconds because " + "pool has transitioned to a suspended state.", + zfs_deadman_synctime); + return (NULL); + } + vdev_deadman(spa->spa_root_vdev); + + total += zfs_deadman_synctime; + (void) printf("ztest has been running for %lld seconds\n", + total); + } } static void @@ -6031,6 +6066,7 @@ main(int argc, char **argv) (void) setvbuf(stdout, NULL, _IOLBF, 0); dprintf_setup(&argc, argv); + zfs_deadman_synctime = 300; ztest_fd_rand = open("/dev/urandom", O_RDONLY); ASSERT3S(ztest_fd_rand, >=, 0); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 15:43:17 2014 (r260760) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu Jan 16 15:45:04 2014 (r260761) @@ -774,6 +774,7 @@ spa_change_guid(spa_t *spa) int error; uint64_t guid; + mutex_enter(&spa->spa_vdev_top_lock); mutex_enter(&spa_namespace_lock); guid = spa_generate_guid(NULL); @@ -786,6 +787,7 @@ spa_change_guid(spa_t *spa) } mutex_exit(&spa_namespace_lock); + mutex_exit(&spa->spa_vdev_top_lock); return (error); } @@ -4934,7 +4936,6 @@ spa_vdev_detach(spa_t *spa, uint64_t gui if (pvd->vdev_ops == &vdev_spare_ops) cvd->vdev_unspare = B_FALSE; vdev_remove_parent(cvd); - cvd->vdev_resilvering = B_FALSE; } @@ -5569,6 +5570,13 @@ spa_vdev_resilver_done_hunt(vdev_t *vd) return (oldvd); } + if (vd->vdev_resilvering && vdev_dtl_empty(vd, DTL_MISSING) && + vdev_dtl_empty(vd, DTL_OUTAGE)) { + ASSERT(vd->vdev_ops->vdev_op_leaf); + vd->vdev_resilvering = B_FALSE; + vdev_config_dirty(vd->vdev_top); + } + /* * Check for a completed replacement. We always consider the first * vdev in the list to be the oldest vdev, and the last one to be From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 15:47:09 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AB634A8B; Thu, 16 Jan 2014 15:47:09 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8C58A1866; Thu, 16 Jan 2014 15:47:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GFl9tN065728; Thu, 16 Jan 2014 15:47:09 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GFl9Hc065727; Thu, 16 Jan 2014 15:47:09 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161547.s0GFl9Hc065727@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 15:47:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260762 - stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 15:47:09 -0000 Author: avg Date: Thu Jan 16 15:47:09 2014 New Revision: 260762 URL: http://svnweb.freebsd.org/changeset/base/260762 Log: MFC r245511: MFV r245510: improve the comment in txg.c MFC slacker: delphij Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Thu Jan 16 15:45:04 2014 (r260761) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Thu Jan 16 15:47:09 2014 (r260762) @@ -21,7 +21,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Portions Copyright 2011 Martin Matuska - * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ #include @@ -33,7 +33,76 @@ #include /* - * Pool-wide transaction groups. + * ZFS Transaction Groups + * ---------------------- + * + * ZFS transaction groups are, as the name implies, groups of transactions + * that act on persistent state. ZFS asserts consistency at the granularity of + * these transaction groups. Each successive transaction group (txg) is + * assigned a 64-bit consecutive identifier. There are three active + * transaction group states: open, quiescing, or syncing. At any given time, + * there may be an active txg associated with each state; each active txg may + * either be processing, or blocked waiting to enter the next state. There may + * be up to three active txgs, and there is always a txg in the open state + * (though it may be blocked waiting to enter the quiescing state). In broad + * strokes, transactions — operations that change in-memory structures — are + * accepted into the txg in the open state, and are completed while the txg is + * in the open or quiescing states. The accumulated changes are written to + * disk in the syncing state. + * + * Open + * + * When a new txg becomes active, it first enters the open state. New + * transactions — updates to in-memory structures — are assigned to the + * currently open txg. There is always a txg in the open state so that ZFS can + * accept new changes (though the txg may refuse new changes if it has hit + * some limit). ZFS advances the open txg to the next state for a variety of + * reasons such as it hitting a time or size threshold, or the execution of an + * administrative action that must be completed in the syncing state. + * + * Quiescing + * + * After a txg exits the open state, it enters the quiescing state. The + * quiescing state is intended to provide a buffer between accepting new + * transactions in the open state and writing them out to stable storage in + * the syncing state. While quiescing, transactions can continue their + * operation without delaying either of the other states. Typically, a txg is + * in the quiescing state very briefly since the operations are bounded by + * software latencies rather than, say, slower I/O latencies. After all + * transactions complete, the txg is ready to enter the next state. + * + * Syncing + * + * In the syncing state, the in-memory state built up during the open and (to + * a lesser degree) the quiescing states is written to stable storage. The + * process of writing out modified data can, in turn modify more data. For + * example when we write new blocks, we need to allocate space for them; those + * allocations modify metadata (space maps)... which themselves must be + * written to stable storage. During the sync state, ZFS iterates, writing out + * data until it converges and all in-memory changes have been written out. + * The first such pass is the largest as it encompasses all the modified user + * data (as opposed to filesystem metadata). Subsequent passes typically have + * far less data to write as they consist exclusively of filesystem metadata. + * + * To ensure convergence, after a certain number of passes ZFS begins + * overwriting locations on stable storage that had been allocated earlier in + * the syncing state (and subsequently freed). ZFS usually allocates new + * blocks to optimize for large, continuous, writes. For the syncing state to + * converge however it must complete a pass where no new blocks are allocated + * since each allocation requires a modification of persistent metadata. + * Further, to hasten convergence, after a prescribed number of passes, ZFS + * also defers frees, and stops compressing. + * + * In addition to writing out user data, we must also execute synctasks during + * the syncing context. A synctask is the mechanism by which some + * administrative activities work such as creating and destroying snapshots or + * datasets. Note that when a synctask is initiated it enters the open txg, + * and ZFS then pushes that txg as quickly as possible to completion of the + * syncing state in order to reduce the latency of the administrative + * activity. To complete the syncing state, ZFS writes out a new uberblock, + * the root of the tree of blocks that comprise all state stored on the ZFS + * pool. Finally, if there is a quiesced txg waiting, we signal that it can + * now transition to the syncing state. */ static void txg_sync_thread(void *arg); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 15:55:37 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 81B6ED0C; Thu, 16 Jan 2014 15:55:37 +0000 (UTC) Received: from mail.egr.msu.edu (dauterive.egr.msu.edu [35.9.37.168]) by mx1.freebsd.org (Postfix) with ESMTP id 543871931; Thu, 16 Jan 2014 15:55:36 +0000 (UTC) Received: from dauterive (localhost [127.0.0.1]) by mail.egr.msu.edu (Postfix) with ESMTP id 1AA622FF92; Thu, 16 Jan 2014 10:55:30 -0500 (EST) X-Virus-Scanned: amavisd-new at egr.msu.edu Received: from mail.egr.msu.edu ([127.0.0.1]) by dauterive (dauterive.egr.msu.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vqFbw270LRY8; Thu, 16 Jan 2014 10:55:29 -0500 (EST) Received: from EGR authenticated sender Message-ID: <52D800F1.7060706@egr.msu.edu> Date: Thu, 16 Jan 2014 10:55:29 -0500 From: Adam McDougall User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: svn-src-all@freebsd.org, "Justin T. Gibbs" Subject: Re: svn commit: r256423 - head/sys/dev/xen/blkfront References: <201310130234.r9D2YKs2034280@svn.freebsd.org> <528E8272.1010301@egr.msu.edu> <528E87FA.7010902@egr.msu.edu> In-Reply-To: <528E87FA.7010902@egr.msu.edu> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Mark Felder X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 15:55:37 -0000 On 11/21/2013 17:23, Adam McDougall wrote: > On 11/21/2013 17:00, Adam McDougall wrote: >> On 10/12/2013 22:34, Justin T. Gibbs wrote: >>> Author: gibbs >>> Date: Sun Oct 13 02:34:20 2013 >>> New Revision: 256423 >>> URL: http://svnweb.freebsd.org/changeset/base/256423 >>> >>> Log: >>> Allow FreeBSD to be booted from CDROM media on XenServer 6.2 and >>> prior releases. >>> >>> Submitted by: Roger Pau Monné >>> Sponsored by: Citrix Systems R&D >>> Reviewed by: gibbs >>> Approved by: re (gjb) >>> >>> sys/dev/xen/blkfront/blkfront.c: >>> On XenServer versions up to an including 6.2, paravirtualized >>> CDROM support is broken. When running in an HVM domain, >>> ignore paravirtualized instances of CDROM media, and instead >>> rely on native drivers attaching to emulated hardware. This >>> functions correctly on all currently known Xen based >>> platforms. >> >> Can this pretty please be MFC'ed for 10.0? I haven't heard of any >> problems with it, only successes on freebsd-xen@freebsd.org (thread: >> "FreeBSD Alpha5 amd64 - Citrix Xen 6.2 problem"). Thanks! > > Oops nevermind! Mark clued me in to r256757 which is in BETA 3. Thanks > again. > Is it safe to MFC this for 9 as well? I checked to verify it doesn't seem to be there: http://svnweb.freebsd.org/base/stable/9/sys/dev/xen/blkfront/blkfront.c?revision=251973&view=markup I think Mark has been using a local patch for a while. Thanks. From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 15:57:41 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 386FCE0C; Thu, 16 Jan 2014 15:57:41 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2065A1957; Thu, 16 Jan 2014 15:57:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GFvfdo069664; Thu, 16 Jan 2014 15:57:41 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GFvdOZ069652; Thu, 16 Jan 2014 15:57:39 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161557.s0GFvdOZ069652@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 15:57:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260763 - in stable/10: cddl/contrib/opensolaris/cmd/ztest cddl/contrib/opensolaris/lib/libzpool/common/sys sys/cddl/compat/opensolaris/sys sys/cddl/contrib/opensolaris/uts/common/fs/zf... X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 15:57:41 -0000 Author: avg Date: Thu Jan 16 15:57:39 2014 New Revision: 260763 URL: http://svnweb.freebsd.org/changeset/base/260763 Log: MFC r258632,258704: MFV r255255: 4045 zfs write throttle & i/o scheduler performance work Sponsored by: HybridCluster [merge] Added: stable/10/sys/cddl/compat/opensolaris/sys/disp.h - copied unchanged from r258632, head/sys/cddl/compat/opensolaris/sys/disp.h Modified: stable/10/cddl/contrib/opensolaris/cmd/ztest/ztest.c stable/10/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_tx.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/sa_impl.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg_impl.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Directory Properties: stable/10/ (props changed) Modified: stable/10/cddl/contrib/opensolaris/cmd/ztest/ztest.c ============================================================================== --- stable/10/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Jan 16 15:47:09 2014 (r260762) +++ stable/10/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Jan 16 15:57:39 2014 (r260763) @@ -186,7 +186,7 @@ static const ztest_shared_opts_t ztest_o extern uint64_t metaslab_gang_bang; extern uint64_t metaslab_df_alloc_threshold; -extern uint64_t zfs_deadman_synctime; +extern uint64_t zfs_deadman_synctime_ms; static ztest_shared_opts_t *ztest_shared_opts; static ztest_shared_opts_t ztest_opts; @@ -5328,10 +5328,10 @@ ztest_deadman_thread(void *arg) hrtime_t delta, total = 0; for (;;) { - delta = (zs->zs_thread_stop - zs->zs_thread_start) / - NANOSEC + zfs_deadman_synctime; + delta = zs->zs_thread_stop - zs->zs_thread_start + + MSEC2NSEC(zfs_deadman_synctime_ms); - (void) poll(NULL, 0, (int)(1000 * delta)); + (void) poll(NULL, 0, (int)NSEC2MSEC(delta)); /* * If the pool is suspended then fail immediately. Otherwise, @@ -5342,12 +5342,12 @@ ztest_deadman_thread(void *arg) if (spa_suspended(spa)) { fatal(0, "aborting test after %llu seconds because " "pool has transitioned to a suspended state.", - zfs_deadman_synctime); + zfs_deadman_synctime_ms / 1000); return (NULL); } vdev_deadman(spa->spa_root_vdev); - total += zfs_deadman_synctime; + total += zfs_deadman_synctime_ms/1000; (void) printf("ztest has been running for %lld seconds\n", total); } @@ -6080,7 +6080,7 @@ main(int argc, char **argv) (void) setvbuf(stdout, NULL, _IOLBF, 0); dprintf_setup(&argc, argv); - zfs_deadman_synctime = 300; + zfs_deadman_synctime_ms = 300000; ztest_fd_rand = open("/dev/urandom", O_RDONLY); ASSERT3S(ztest_fd_rand, >=, 0); Modified: stable/10/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- stable/10/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 15:47:09 2014 (r260762) +++ stable/10/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 15:57:39 2014 (r260763) @@ -65,6 +65,7 @@ extern "C" { #include #include #include +#include #include #include #include @@ -204,6 +205,8 @@ extern int aok; */ #define curthread ((void *)(uintptr_t)thr_self()) +#define kpreempt(x) sched_yield() + typedef struct kthread kthread_t; #define thread_create(stk, stksize, func, arg, len, pp, state, pri) \ Copied: stable/10/sys/cddl/compat/opensolaris/sys/disp.h (from r258632, head/sys/cddl/compat/opensolaris/sys/disp.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/sys/cddl/compat/opensolaris/sys/disp.h Thu Jan 16 15:57:39 2014 (r260763, copy of r258632, head/sys/cddl/compat/opensolaris/sys/disp.h) @@ -0,0 +1,40 @@ +/*- + * Copyright (c) 2013 Andriy Gapon + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _OPENSOLARIS_SYS_DISP_H_ +#define _OPENSOLARIS_SYS_DISP_H_ + +#ifdef _KERNEL + +#include + +#define kpreempt(x) kern_yield(PRI_USER) + +#endif /* _KERNEL */ + +#endif /* _OPENSOLARIS_SYS_DISP_H_ */ Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Thu Jan 16 15:47:09 2014 (r260762) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Thu Jan 16 15:57:39 2014 (r260763) @@ -127,6 +127,7 @@ #include #include #include +#include #ifdef _KERNEL #include #endif @@ -150,10 +151,6 @@ static kmutex_t arc_reclaim_thr_lock; static kcondvar_t arc_reclaim_thr_cv; /* used to signal reclaim thr */ static uint8_t arc_thread_exit; -extern int zfs_write_limit_shift; -extern uint64_t zfs_write_limit_max; -extern kmutex_t zfs_write_limit_lock; - #define ARC_REDUCE_DNLC_PERCENT 3 uint_t arc_reduce_dnlc_percent = ARC_REDUCE_DNLC_PERCENT; @@ -162,6 +159,12 @@ typedef enum arc_reclaim_strategy { ARC_RECLAIM_CONS /* Conservative reclaim strategy */ } arc_reclaim_strategy_t; +/* + * The number of iterations through arc_evict_*() before we + * drop & reacquire the lock. + */ +int arc_evict_iterations = 100; + /* number of seconds before growing cache again */ static int arc_grow_retry = 60; @@ -177,6 +180,11 @@ static int arc_shrink_shift = 5; */ static int arc_min_prefetch_lifespan; +/* + * If this percent of memory is free, don't throttle. + */ +int arc_lotsfree_percent = 10; + static int arc_dead; extern int zfs_prefetch_disable; @@ -526,6 +534,7 @@ typedef struct arc_write_callback arc_wr struct arc_write_callback { void *awcb_private; arc_done_func_t *awcb_ready; + arc_done_func_t *awcb_physdone; arc_done_func_t *awcb_done; arc_buf_t *awcb_buf; }; @@ -1312,7 +1321,7 @@ arc_change_state(arc_state_t *new_state, kmutex_t *lock; ASSERT(MUTEX_HELD(hash_lock)); - ASSERT(new_state != old_state); + ASSERT3P(new_state, !=, old_state); ASSERT(refcnt == 0 || ab->b_datacnt > 0); ASSERT(ab->b_datacnt == 0 || !GHOST_STATE(new_state)); ASSERT(ab->b_datacnt <= 1 || old_state != arc_anon); @@ -1937,8 +1946,10 @@ arc_evict(arc_state_t *state, uint64_t s kmutex_t *hash_lock; boolean_t have_lock; void *stolen = NULL; + arc_buf_hdr_t marker = { 0 }; + int count = 0; static int evict_metadata_offset, evict_data_offset; - int i, idx, offset, list_count, count; + int i, idx, offset, list_count, lists; ASSERT(state == arc_mru || state == arc_mfu); @@ -1958,7 +1969,7 @@ arc_evict(arc_state_t *state, uint64_t s idx = evict_data_offset; } bytes_remaining = evicted_state->arcs_lsize[type]; - count = 0; + lists = 0; evict_start: list = &list_start[idx]; @@ -1985,6 +1996,33 @@ evict_start: if (recycle && ab->b_size != bytes && ab_prev && ab_prev->b_size == bytes) continue; + + /* ignore markers */ + if (ab->b_spa == 0) + continue; + + /* + * It may take a long time to evict all the bufs requested. + * To avoid blocking all arc activity, periodically drop + * the arcs_mtx and give other threads a chance to run + * before reacquiring the lock. + * + * If we are looking for a buffer to recycle, we are in + * the hot code path, so don't sleep. + */ + if (!recycle && count++ > arc_evict_iterations) { + list_insert_after(list, ab, &marker); + mutex_exit(evicted_lock); + mutex_exit(lock); + kpreempt(KPREEMPT_SYNC); + mutex_enter(lock); + mutex_enter(evicted_lock); + ab_prev = list_prev(list, &marker); + list_remove(list, &marker); + count = 0; + continue; + } + hash_lock = HDR_LOCK(ab); have_lock = MUTEX_HELD(hash_lock); if (have_lock || mutex_tryenter(hash_lock)) { @@ -2051,7 +2089,7 @@ evict_start: mutex_exit(evicted_lock); mutex_exit(lock); idx = ((idx + 1) & (list_count - 1)); - count++; + lists++; goto evict_start; } } else { @@ -2063,10 +2101,10 @@ evict_start: mutex_exit(lock); idx = ((idx + 1) & (list_count - 1)); - count++; + lists++; if (bytes_evicted < bytes) { - if (count < list_count) + if (lists < list_count) goto evict_start; else dprintf("only evicted %lld bytes from %x", @@ -2084,28 +2122,14 @@ evict_start: ARCSTAT_INCR(arcstat_mutex_miss, missed); /* - * We have just evicted some data into the ghost state, make - * sure we also adjust the ghost state size if necessary. + * Note: we have just evicted some data into the ghost state, + * potentially putting the ghost size over the desired size. Rather + * that evicting from the ghost list in this hot code path, leave + * this chore to the arc_reclaim_thread(). */ - if (arc_no_grow && - arc_mru_ghost->arcs_size + arc_mfu_ghost->arcs_size > arc_c) { - int64_t mru_over = arc_anon->arcs_size + arc_mru->arcs_size + - arc_mru_ghost->arcs_size - arc_c; - - if (mru_over > 0 && arc_mru_ghost->arcs_lsize[type] > 0) { - int64_t todelete = - MIN(arc_mru_ghost->arcs_lsize[type], mru_over); - arc_evict_ghost(arc_mru_ghost, 0, todelete); - } else if (arc_mfu_ghost->arcs_lsize[type] > 0) { - int64_t todelete = MIN(arc_mfu_ghost->arcs_lsize[type], - arc_mru_ghost->arcs_size + - arc_mfu_ghost->arcs_size - arc_c); - arc_evict_ghost(arc_mfu_ghost, 0, todelete); - } - } + if (stolen) ARCSTAT_BUMP(arcstat_stolen); - return (stolen); } @@ -2122,9 +2146,10 @@ arc_evict_ghost(arc_state_t *state, uint kmutex_t *hash_lock, *lock; uint64_t bytes_deleted = 0; uint64_t bufs_skipped = 0; + int count = 0; static int evict_offset; int list_count, idx = evict_offset; - int offset, count = 0; + int offset, lists = 0; ASSERT(GHOST_STATE(state)); @@ -2142,6 +2167,8 @@ evict_start: mutex_enter(lock); for (ab = list_tail(list); ab; ab = ab_prev) { ab_prev = list_prev(list, ab); + if (ab->b_type > ARC_BUFC_NUMTYPES) + panic("invalid ab=%p", (void *)ab); if (spa && ab->b_spa != spa) continue; @@ -2153,6 +2180,23 @@ evict_start: /* caller may be trying to modify this buffer, skip it */ if (MUTEX_HELD(hash_lock)) continue; + + /* + * It may take a long time to evict all the bufs requested. + * To avoid blocking all arc activity, periodically drop + * the arcs_mtx and give other threads a chance to run + * before reacquiring the lock. + */ + if (count++ > arc_evict_iterations) { + list_insert_after(list, ab, &marker); + mutex_exit(lock); + kpreempt(KPREEMPT_SYNC); + mutex_enter(lock); + ab_prev = list_prev(list, &marker); + list_remove(list, &marker); + count = 0; + continue; + } if (mutex_tryenter(hash_lock)) { ASSERT(!HDR_IO_IN_PROGRESS(ab)); ASSERT(ab->b_buf == NULL); @@ -2188,14 +2232,16 @@ evict_start: mutex_enter(lock); ab_prev = list_prev(list, &marker); list_remove(list, &marker); - } else + } else { bufs_skipped += 1; + } + } mutex_exit(lock); idx = ((idx + 1) & (ARC_BUFC_NUMDATALISTS - 1)); - count++; + lists++; - if (count < list_count) + if (lists < list_count) goto evict_start; evict_offset = idx; @@ -2203,7 +2249,7 @@ evict_start: (bytes < 0 || bytes_deleted < bytes)) { list_start = &state->arcs_lists[0]; list_count = ARC_BUFC_NUMMETADATALISTS; - offset = count = 0; + offset = lists = 0; goto evict_start; } @@ -3083,7 +3129,7 @@ arc_read_done(zio_t *zio) */ int arc_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, arc_done_func_t *done, - void *private, int priority, int zio_flags, uint32_t *arc_flags, + void *private, zio_priority_t priority, int zio_flags, uint32_t *arc_flags, const zbookmark_t *zb) { arc_buf_hdr_t *hdr; @@ -3699,6 +3745,18 @@ arc_write_ready(zio_t *zio) hdr->b_flags |= ARC_IO_IN_PROGRESS; } +/* + * The SPA calls this callback for each physical write that happens on behalf + * of a logical write. See the comment in dbuf_write_physdone() for details. + */ +static void +arc_write_physdone(zio_t *zio) +{ + arc_write_callback_t *cb = zio->io_private; + if (cb->awcb_physdone != NULL) + cb->awcb_physdone(zio, cb->awcb_buf, cb->awcb_private); +} + static void arc_write_done(zio_t *zio) { @@ -3779,8 +3837,9 @@ arc_write_done(zio_t *zio) zio_t * arc_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, arc_buf_t *buf, boolean_t l2arc, boolean_t l2arc_compress, - const zio_prop_t *zp, arc_done_func_t *ready, arc_done_func_t *done, - void *private, int priority, int zio_flags, const zbookmark_t *zb) + const zio_prop_t *zp, arc_done_func_t *ready, arc_done_func_t *physdone, + arc_done_func_t *done, void *private, zio_priority_t priority, + int zio_flags, const zbookmark_t *zb) { arc_buf_hdr_t *hdr = buf->b_hdr; arc_write_callback_t *callback; @@ -3797,18 +3856,20 @@ arc_write(zio_t *pio, spa_t *spa, uint64 hdr->b_flags |= ARC_L2COMPRESS; callback = kmem_zalloc(sizeof (arc_write_callback_t), KM_SLEEP); callback->awcb_ready = ready; + callback->awcb_physdone = physdone; callback->awcb_done = done; callback->awcb_private = private; callback->awcb_buf = buf; zio = zio_write(pio, spa, txg, bp, buf->b_data, hdr->b_size, zp, - arc_write_ready, arc_write_done, callback, priority, zio_flags, zb); + arc_write_ready, arc_write_physdone, arc_write_done, callback, + priority, zio_flags, zb); return (zio); } static int -arc_memory_throttle(uint64_t reserve, uint64_t inflight_data, uint64_t txg) +arc_memory_throttle(uint64_t reserve, uint64_t txg) { #ifdef _KERNEL uint64_t available_memory = @@ -3822,7 +3883,9 @@ arc_memory_throttle(uint64_t reserve, ui MIN(available_memory, vmem_size(heap_arena, VMEM_FREE)); #endif #endif /* sun */ - if (available_memory >= zfs_write_limit_max) + + if (cnt.v_free_count + cnt.v_cache_count > + (uint64_t)physmem * arc_lotsfree_percent / 100) return (0); if (txg > last_txg) { @@ -3846,20 +3909,6 @@ arc_memory_throttle(uint64_t reserve, ui return (SET_ERROR(EAGAIN)); } page_load = 0; - - if (arc_size > arc_c_min) { - uint64_t evictable_memory = - arc_mru->arcs_lsize[ARC_BUFC_DATA] + - arc_mru->arcs_lsize[ARC_BUFC_METADATA] + - arc_mfu->arcs_lsize[ARC_BUFC_DATA] + - arc_mfu->arcs_lsize[ARC_BUFC_METADATA]; - available_memory += MIN(evictable_memory, arc_size - arc_c_min); - } - - if (inflight_data > available_memory / 4) { - ARCSTAT_INCR(arcstat_memory_throttle_count, 1); - return (SET_ERROR(ERESTART)); - } #endif return (0); } @@ -3877,15 +3926,6 @@ arc_tempreserve_space(uint64_t reserve, int error; uint64_t anon_size; -#ifdef ZFS_DEBUG - /* - * Once in a while, fail for no reason. Everything should cope. - */ - if (spa_get_random(10000) == 0) { - dprintf("forcing random failure\n"); - 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) @@ -3903,7 +3943,8 @@ arc_tempreserve_space(uint64_t reserve, * in order to compress/encrypt/etc the data. We therefore need to * make sure that there is sufficient available memory for this. */ - if (error = arc_memory_throttle(reserve, anon_size, txg)) + error = arc_memory_throttle(reserve, txg); + if (error != 0) return (error); /* @@ -4094,11 +4135,20 @@ arc_init(void) arc_dead = FALSE; arc_warm = B_FALSE; - if (zfs_write_limit_max == 0) - zfs_write_limit_max = ptob(physmem) >> zfs_write_limit_shift; - else - zfs_write_limit_shift = 0; - mutex_init(&zfs_write_limit_lock, NULL, MUTEX_DEFAULT, NULL); + /* + * Calculate maximum amount of dirty data per pool. + * + * If it has been set by /etc/system, take that. + * Otherwise, use a percentage of physical memory defined by + * zfs_dirty_data_max_percent (default 10%) with a cap at + * zfs_dirty_data_max_max (default 4GB). + */ + if (zfs_dirty_data_max == 0) { + zfs_dirty_data_max = ptob(physmem) * + zfs_dirty_data_max_percent / 100; + zfs_dirty_data_max = MIN(zfs_dirty_data_max, + zfs_dirty_data_max_max); + } #ifdef _KERNEL if (TUNABLE_INT_FETCH("vfs.zfs.prefetch_disable", &zfs_prefetch_disable)) @@ -4177,8 +4227,6 @@ arc_fini(void) mutex_destroy(&arc_l2c_only->arcs_locks[i].arcs_lock); } - mutex_destroy(&zfs_write_limit_lock); - buf_fini(); ASSERT(arc_loaned_bytes == 0); Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Thu Jan 16 15:47:09 2014 (r260762) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Thu Jan 16 15:57:39 2014 (r260763) @@ -842,7 +842,7 @@ dbuf_free_range(dnode_t *dn, uint64_t st atomic_inc_64(&zfs_free_range_recv_miss); } - for (db = list_head(&dn->dn_dbufs); db; db = db_next) { + for (db = list_head(&dn->dn_dbufs); db != NULL; db = db_next) { db_next = list_next(&dn->dn_dbufs, db); ASSERT(db->db_blkid != DMU_BONUS_BLKID); @@ -1188,6 +1188,8 @@ dbuf_dirty(dmu_buf_impl_t *db, dmu_tx_t sizeof (dbuf_dirty_record_t), offsetof(dbuf_dirty_record_t, dr_dirty_node)); } + if (db->db_blkid != DMU_BONUS_BLKID && os->os_dsl_dataset != NULL) + dr->dr_accounted = db->db.db_size; dr->dr_dbuf = db; dr->dr_txg = tx->tx_txg; dr->dr_next = *drp; @@ -1271,7 +1273,10 @@ dbuf_dirty(dmu_buf_impl_t *db, dmu_tx_t dbuf_rele(parent, FTAG); mutex_enter(&db->db_mtx); - /* possible race with dbuf_undirty() */ + /* + * Since we've dropped the mutex, it's possible that + * dbuf_undirty() might have changed this out from under us. + */ if (db->db_last_dirty == dr || dn->dn_object == DMU_META_DNODE_OBJECT) { mutex_enter(&di->dt.di.dr_mtx); @@ -1333,7 +1338,11 @@ dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_ ASSERT(db->db.db_size != 0); - /* XXX would be nice to fix up dn_towrite_space[] */ + /* + * Any space we accounted for in dp_dirty_* will be cleaned up by + * dsl_pool_sync(). This is relatively rare so the discrepancy + * is not a big deal. + */ *drp = dr->dr_next; @@ -1513,7 +1522,7 @@ dbuf_assign_arcbuf(dmu_buf_impl_t *db, a /* * "Clear" the contents of this dbuf. This will mark the dbuf - * EVICTING and clear *most* of its references. Unfortunetely, + * EVICTING and clear *most* of its references. Unfortunately, * when we are not holding the dn_dbufs_mtx, we can't clear the * entry in the dn_dbufs list. We have to wait until dbuf_destroy() * in this case. For callers from the DMU we will usually see: @@ -1700,7 +1709,7 @@ dbuf_create(dnode_t *dn, uint8_t level, db->db.db_offset = 0; } else { int blocksize = - db->db_level ? 1<dn_indblkshift : dn->dn_datablksz; + db->db_level ? 1 << dn->dn_indblkshift : dn->dn_datablksz; db->db.db_size = blocksize; db->db.db_offset = db->db_blkid * blocksize; } @@ -1809,7 +1818,7 @@ dbuf_destroy(dmu_buf_impl_t *db) } void -dbuf_prefetch(dnode_t *dn, uint64_t blkid) +dbuf_prefetch(dnode_t *dn, uint64_t blkid, zio_priority_t prio) { dmu_buf_impl_t *db = NULL; blkptr_t *bp = NULL; @@ -1833,8 +1842,6 @@ dbuf_prefetch(dnode_t *dn, uint64_t blki if (dbuf_findbp(dn, 0, blkid, TRUE, &db, &bp) == 0) { if (bp && !BP_IS_HOLE(bp)) { - int priority = dn->dn_type == DMU_OT_DDT_ZAP ? - ZIO_PRIORITY_DDT_PREFETCH : ZIO_PRIORITY_ASYNC_READ; dsl_dataset_t *ds = dn->dn_objset->os_dsl_dataset; uint32_t aflags = ARC_NOWAIT | ARC_PREFETCH; zbookmark_t zb; @@ -1843,7 +1850,7 @@ dbuf_prefetch(dnode_t *dn, uint64_t blki dn->dn_object, 0, blkid); (void) arc_read(NULL, dn->dn_objset->os_spa, - bp, NULL, NULL, priority, + bp, NULL, NULL, prio, ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE, &aflags, &zb); } @@ -2528,6 +2535,38 @@ dbuf_write_ready(zio_t *zio, arc_buf_t * mutex_exit(&db->db_mtx); } +/* + * The SPA will call this callback several times for each zio - once + * for every physical child i/o (zio->io_phys_children times). This + * allows the DMU to monitor the progress of each logical i/o. For example, + * there may be 2 copies of an indirect block, or many fragments of a RAID-Z + * block. There may be a long delay before all copies/fragments are completed, + * so this callback allows us to retire dirty space gradually, as the physical + * i/os complete. + */ +/* ARGSUSED */ +static void +dbuf_write_physdone(zio_t *zio, arc_buf_t *buf, void *arg) +{ + dmu_buf_impl_t *db = arg; + objset_t *os = db->db_objset; + dsl_pool_t *dp = dmu_objset_pool(os); + dbuf_dirty_record_t *dr; + int delta = 0; + + dr = db->db_data_pending; + ASSERT3U(dr->dr_txg, ==, zio->io_txg); + + /* + * The callback will be called io_phys_children times. Retire one + * portion of our dirty space each time we are called. Any rounding + * error will be cleaned up by dsl_pool_sync()'s call to + * dsl_pool_undirty_space(). + */ + delta = dr->dr_accounted / zio->io_phys_children; + dsl_pool_undirty_space(dp, delta, zio->io_txg); +} + /* ARGSUSED */ static void dbuf_write_done(zio_t *zio, arc_buf_t *buf, void *vdb) @@ -2622,6 +2661,7 @@ dbuf_write_done(zio_t *zio, arc_buf_t *b ASSERT(db->db_dirtycnt > 0); db->db_dirtycnt -= 1; db->db_data_pending = NULL; + dbuf_rele_and_unlock(db, (void *)(uintptr_t)txg); } @@ -2740,8 +2780,8 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_ ASSERT(db->db_state != DB_NOFILL); dr->dr_zio = zio_write(zio, os->os_spa, txg, db->db_blkptr, data->b_data, arc_buf_size(data), &zp, - dbuf_write_override_ready, dbuf_write_override_done, dr, - ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); + dbuf_write_override_ready, NULL, dbuf_write_override_done, + dr, ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); mutex_enter(&db->db_mtx); dr->dt.dl.dr_override_state = DR_NOT_OVERRIDDEN; zio_write_override(dr->dr_zio, &dr->dt.dl.dr_overridden_by, @@ -2752,7 +2792,7 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_ zp.zp_checksum == ZIO_CHECKSUM_NOPARITY); dr->dr_zio = zio_write(zio, os->os_spa, txg, db->db_blkptr, NULL, db->db.db_size, &zp, - dbuf_write_nofill_ready, dbuf_write_nofill_done, db, + dbuf_write_nofill_ready, NULL, dbuf_write_nofill_done, db, ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED | ZIO_FLAG_NODATA, &zb); } else { @@ -2760,7 +2800,7 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_ dr->dr_zio = arc_write(zio, os->os_spa, txg, db->db_blkptr, data, DBUF_IS_L2CACHEABLE(db), DBUF_IS_L2COMPRESSIBLE(db), &zp, dbuf_write_ready, - dbuf_write_done, db, ZIO_PRIORITY_ASYNC_WRITE, - ZIO_FLAG_MUSTSUCCEED, &zb); + dbuf_write_physdone, dbuf_write_done, db, + ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); } } Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 15:47:09 2014 (r260762) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 15:57:39 2014 (r260763) @@ -374,13 +374,11 @@ static int dmu_buf_hold_array_by_dnode(dnode_t *dn, uint64_t offset, uint64_t length, int read, void *tag, int *numbufsp, dmu_buf_t ***dbpp, uint32_t flags) { - dsl_pool_t *dp = NULL; dmu_buf_t **dbp; uint64_t blkid, nblks, i; uint32_t dbuf_flags; int err; zio_t *zio; - hrtime_t start; ASSERT(length <= DMU_MAX_ACCESS); @@ -408,9 +406,6 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn, } dbp = kmem_zalloc(sizeof (dmu_buf_t *) * nblks, KM_SLEEP); - if (dn->dn_objset->os_dsl_dataset) - dp = dn->dn_objset->os_dsl_dataset->ds_dir->dd_pool; - start = gethrtime(); zio = zio_root(dn->dn_objset->os_spa, NULL, NULL, ZIO_FLAG_CANFAIL); blkid = dbuf_whichblock(dn, offset); for (i = 0; i < nblks; i++) { @@ -434,9 +429,6 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn, /* wait for async i/o */ err = zio_wait(zio); - /* track read overhead when we are in sync context */ - if (dp && dsl_pool_sync_context(dp)) - dp->dp_read_overhead += gethrtime() - start; if (err) { dmu_buf_rele_array(dbp, nblks, tag); return (err); @@ -518,12 +510,22 @@ dmu_buf_rele_array(dmu_buf_t **dbp_fake, kmem_free(dbp, sizeof (dmu_buf_t *) * numbufs); } +/* + * Issue prefetch i/os for the given blocks. + * + * Note: The assumption is that we *know* these blocks will be needed + * almost immediately. Therefore, the prefetch i/os will be issued at + * ZIO_PRIORITY_SYNC_READ + * + * Note: indirect blocks and other metadata will be read synchronously, + * causing this function to block if they are not already cached. + */ void dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) { dnode_t *dn; uint64_t blkid; - int nblks, i, err; + int nblks, err; if (zfs_prefetch_disable) return; @@ -536,7 +538,7 @@ dmu_prefetch(objset_t *os, uint64_t obje rw_enter(&dn->dn_struct_rwlock, RW_READER); blkid = dbuf_whichblock(dn, object * sizeof (dnode_phys_t)); - dbuf_prefetch(dn, blkid); + dbuf_prefetch(dn, blkid, ZIO_PRIORITY_SYNC_READ); rw_exit(&dn->dn_struct_rwlock); return; } @@ -553,16 +555,16 @@ dmu_prefetch(objset_t *os, uint64_t obje rw_enter(&dn->dn_struct_rwlock, RW_READER); if (dn->dn_datablkshift) { int blkshift = dn->dn_datablkshift; - nblks = (P2ROUNDUP(offset+len, 1<> blkshift; + nblks = (P2ROUNDUP(offset + len, 1 << blkshift) - + P2ALIGN(offset, 1 << blkshift)) >> blkshift; } else { nblks = (offset < dn->dn_datablksz); } if (nblks != 0) { blkid = dbuf_whichblock(dn, offset); - for (i = 0; i < nblks; i++) - dbuf_prefetch(dn, blkid+i); + for (int i = 0; i < nblks; i++) + dbuf_prefetch(dn, blkid + i, ZIO_PRIORITY_SYNC_READ); } rw_exit(&dn->dn_struct_rwlock); @@ -1376,7 +1378,7 @@ dmu_sync_late_arrival(zio_t *pio, objset zio_nowait(zio_write(pio, os->os_spa, dmu_tx_get_txg(tx), zgd->zgd_bp, zgd->zgd_db->db_data, zgd->zgd_db->db_size, zp, - dmu_sync_late_arrival_ready, dmu_sync_late_arrival_done, dsa, + dmu_sync_late_arrival_ready, NULL, dmu_sync_late_arrival_done, dsa, ZIO_PRIORITY_SYNC_WRITE, ZIO_FLAG_CANFAIL, zb)); return (0); @@ -1516,8 +1518,9 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_s zio_nowait(arc_write(pio, os->os_spa, txg, bp, dr->dt.dl.dr_data, DBUF_IS_L2CACHEABLE(db), - DBUF_IS_L2COMPRESSIBLE(db), &zp, dmu_sync_ready, dmu_sync_done, - dsa, ZIO_PRIORITY_SYNC_WRITE, ZIO_FLAG_CANFAIL, &zb)); + DBUF_IS_L2COMPRESSIBLE(db), &zp, dmu_sync_ready, + NULL, dmu_sync_done, dsa, ZIO_PRIORITY_SYNC_WRITE, + ZIO_FLAG_CANFAIL, &zb)); return (0); } Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c Thu Jan 16 15:47:09 2014 (r260762) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c Thu Jan 16 15:57:39 2014 (r260763) @@ -1028,7 +1028,7 @@ dmu_objset_sync(objset_t *os, zio_t *pio zio = arc_write(pio, os->os_spa, tx->tx_txg, os->os_rootbp, os->os_phys_buf, DMU_OS_IS_L2CACHEABLE(os), DMU_OS_IS_L2COMPRESSIBLE(os), &zp, dmu_objset_write_ready, - dmu_objset_write_done, os, ZIO_PRIORITY_ASYNC_WRITE, + NULL, dmu_objset_write_done, os, ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); /* Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Thu Jan 16 15:47:09 2014 (r260762) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Thu Jan 16 15:57:39 2014 (r260763) @@ -54,6 +54,7 @@ dmu_tx_create_dd(dsl_dir_t *dd) offsetof(dmu_tx_hold_t, txh_node)); list_create(&tx->tx_callbacks, sizeof (dmu_tx_callback_t), offsetof(dmu_tx_callback_t, dcb_node)); + tx->tx_start = gethrtime(); #ifdef ZFS_DEBUG refcount_create(&tx->tx_space_written); refcount_create(&tx->tx_space_freed); @@ -597,13 +598,13 @@ dmu_tx_hold_free(dmu_tx_t *tx, uint64_t if (txh == NULL) return; dn = txh->txh_dnode; + dmu_tx_count_dnode(txh); if (off >= (dn->dn_maxblkid+1) * dn->dn_datablksz) return; if (len == DMU_OBJECT_END) len = (dn->dn_maxblkid+1) * dn->dn_datablksz - off; - dmu_tx_count_dnode(txh); /* * For i/o error checking, we read the first and last level-0 @@ -918,6 +919,161 @@ dmu_tx_dirty_buf(dmu_tx_t *tx, dmu_buf_i } #endif +/* + * If we can't do 10 iops, something is wrong. Let us go ahead + * and hit zfs_dirty_data_max. + */ +hrtime_t zfs_delay_max_ns = MSEC2NSEC(100); +int zfs_delay_resolution_ns = 100 * 1000; /* 100 microseconds */ + +/* + * We delay transactions when we've determined that the backend storage + * isn't able to accommodate the rate of incoming writes. + * + * If there is already a transaction waiting, we delay relative to when + * that transaction finishes waiting. This way the calculated min_time + * is independent of the number of threads concurrently executing + * transactions. + * + * If we are the only waiter, wait relative to when the transaction + * started, rather than the current time. This credits the transaction for + * "time already served", e.g. reading indirect blocks. + * + * The minimum time for a transaction to take is calculated as: + * min_time = scale * (dirty - min) / (max - dirty) + * min_time is then capped at zfs_delay_max_ns. + * + * The delay has two degrees of freedom that can be adjusted via tunables. + * The percentage of dirty data at which we start to delay is defined by + * zfs_delay_min_dirty_percent. This should typically be at or above + * zfs_vdev_async_write_active_max_dirty_percent so that we only start to + * delay after writing at full speed has failed to keep up with the incoming + * write rate. The scale of the curve is defined by zfs_delay_scale. Roughly + * speaking, this variable determines the amount of delay at the midpoint of + * the curve. + * + * delay + * 10ms +-------------------------------------------------------------*+ + * | *| + * 9ms + *+ + * | *| + * 8ms + *+ + * | * | + * 7ms + * + + * | * | + * 6ms + * + + * | * | + * 5ms + * + + * | * | + * 4ms + * + + * | * | + * 3ms + * + + * | * | + * 2ms + (midpoint) * + + * | | ** | + * 1ms + v *** + + * | zfs_delay_scale ----------> ******** | + * 0 +-------------------------------------*********----------------+ + * 0% <- zfs_dirty_data_max -> 100% + * + * Note that since the delay is added to the outstanding time remaining on the + * most recent transaction, the delay is effectively the inverse of IOPS. + * Here the midpoint of 500us translates to 2000 IOPS. The shape of the curve + * was chosen such that small changes in the amount of accumulated dirty data + * in the first 3/4 of the curve yield relatively small differences in the + * amount of delay. + * + * The effects can be easier to understand when the amount of delay is + * represented on a log scale: + * + * delay + * 100ms +-------------------------------------------------------------++ + * + + + * | | + * + *+ + * 10ms + *+ + * + ** + + * | (midpoint) ** | + * + | ** + + * 1ms + v **** + + * + zfs_delay_scale ----------> ***** + + * | **** | + * + **** + + * 100us + ** + + * + * + + * | * | + * + * + + * 10us + * + + * + + + * | | + * + + + * +--------------------------------------------------------------+ + * 0% <- zfs_dirty_data_max -> 100% + * + * Note here that only as the amount of dirty data approaches its limit does + * the delay start to increase rapidly. The goal of a properly tuned system + * should be to keep the amount of dirty data out of that range by first + * ensuring that the appropriate limits are set for the I/O scheduler to reach + * optimal throughput on the backend storage, and then by changing the value + * of zfs_delay_scale to increase the steepness of the curve. + */ +static void +dmu_tx_delay(dmu_tx_t *tx, uint64_t dirty) +{ + dsl_pool_t *dp = tx->tx_pool; + uint64_t delay_min_bytes = + zfs_dirty_data_max * zfs_delay_min_dirty_percent / 100; + hrtime_t wakeup, min_tx_time, now; + + if (dirty <= delay_min_bytes) + return; + + /* + * The caller has already waited until we are under the max. + * We make them pass us the amount of dirty data so we don't + * have to handle the case of it being >= the max, which could + * cause a divide-by-zero if it's == the max. + */ + ASSERT3U(dirty, <, zfs_dirty_data_max); + + now = gethrtime(); + min_tx_time = zfs_delay_scale * + (dirty - delay_min_bytes) / (zfs_dirty_data_max - dirty); + if (now > tx->tx_start + min_tx_time) + return; + + min_tx_time = MIN(min_tx_time, zfs_delay_max_ns); + + DTRACE_PROBE3(delay__mintime, dmu_tx_t *, tx, uint64_t, dirty, + uint64_t, min_tx_time); + + mutex_enter(&dp->dp_lock); + wakeup = MAX(tx->tx_start + min_tx_time, + dp->dp_last_wakeup + min_tx_time); + dp->dp_last_wakeup = wakeup; + mutex_exit(&dp->dp_lock); + +#ifdef _KERNEL +#ifdef illumos + mutex_enter(&curthread->t_delay_lock); + while (cv_timedwait_hires(&curthread->t_delay_cv, + &curthread->t_delay_lock, wakeup, zfs_delay_resolution_ns, + CALLOUT_FLAG_ABSOLUTE | CALLOUT_FLAG_ROUNDUP) > 0) + continue; + mutex_exit(&curthread->t_delay_lock); +#else + pause_sbt("dmu_tx_delay", wakeup * SBT_1NS, + zfs_delay_resolution_ns * SBT_1NS, C_ABSOLUTE); +#endif +#else + hrtime_t delta = wakeup - gethrtime(); + struct timespec ts; + ts.tv_sec = delta / NANOSEC; + ts.tv_nsec = delta % NANOSEC; + (void) nanosleep(&ts, NULL); +#endif +} + static int dmu_tx_try_assign(dmu_tx_t *tx, txg_how_t txg_how) { @@ -948,6 +1104,12 @@ dmu_tx_try_assign(dmu_tx_t *tx, txg_how_ return (SET_ERROR(ERESTART)); } + if (!tx->tx_waited && + dsl_pool_need_dirty_delay(tx->tx_pool)) { + tx->tx_wait_dirty = B_TRUE; + return (SET_ERROR(ERESTART)); + } *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 15:59:10 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C45D296; Thu, 16 Jan 2014 15:59:10 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AA4631966; Thu, 16 Jan 2014 15:59:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GFxAOu069868; Thu, 16 Jan 2014 15:59:10 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GFx9v7069858; Thu, 16 Jan 2014 15:59:09 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161559.s0GFx9v7069858@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 15:59:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260764 - in stable/9: cddl/contrib/opensolaris/cmd/ztest cddl/contrib/opensolaris/lib/libzpool/common/sys sys/cddl/compat/opensolaris/sys sys/cddl/contrib/opensolaris/uts/common/fs/zfs... X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 15:59:10 -0000 Author: avg Date: Thu Jan 16 15:59:08 2014 New Revision: 260764 URL: http://svnweb.freebsd.org/changeset/base/260764 Log: MFC r258632,258704: MFV r255255: 4045 zfs write throttle & i/o scheduler performance work Note a change in dmu_tx_delay: pause_sbt is not available in this branch. Sponsored by: HybridCluster [merge] Added: stable/9/sys/cddl/compat/opensolaris/sys/disp.h - copied unchanged from r258632, head/sys/cddl/compat/opensolaris/sys/disp.h Modified: stable/9/cddl/contrib/opensolaris/cmd/ztest/ztest.c stable/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_tx.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/sa_impl.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg_impl.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Directory Properties: stable/9/cddl/contrib/opensolaris/ (props changed) stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/ (props changed) stable/9/cddl/contrib/opensolaris/cmd/zfs/ (props changed) stable/9/cddl/contrib/opensolaris/lib/libzfs/ (props changed) stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/cddl/contrib/opensolaris/cmd/ztest/ztest.c ============================================================================== --- stable/9/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Jan 16 15:57:39 2014 (r260763) +++ stable/9/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Jan 16 15:59:08 2014 (r260764) @@ -186,7 +186,7 @@ static const ztest_shared_opts_t ztest_o extern uint64_t metaslab_gang_bang; extern uint64_t metaslab_df_alloc_threshold; -extern uint64_t zfs_deadman_synctime; +extern uint64_t zfs_deadman_synctime_ms; static ztest_shared_opts_t *ztest_shared_opts; static ztest_shared_opts_t ztest_opts; @@ -5315,10 +5315,10 @@ ztest_deadman_thread(void *arg) hrtime_t delta, total = 0; for (;;) { - delta = (zs->zs_thread_stop - zs->zs_thread_start) / - NANOSEC + zfs_deadman_synctime; + delta = zs->zs_thread_stop - zs->zs_thread_start + + MSEC2NSEC(zfs_deadman_synctime_ms); - (void) poll(NULL, 0, (int)(1000 * delta)); + (void) poll(NULL, 0, (int)NSEC2MSEC(delta)); /* * If the pool is suspended then fail immediately. Otherwise, @@ -5329,12 +5329,12 @@ ztest_deadman_thread(void *arg) if (spa_suspended(spa)) { fatal(0, "aborting test after %llu seconds because " "pool has transitioned to a suspended state.", - zfs_deadman_synctime); + zfs_deadman_synctime_ms / 1000); return (NULL); } vdev_deadman(spa->spa_root_vdev); - total += zfs_deadman_synctime; + total += zfs_deadman_synctime_ms/1000; (void) printf("ztest has been running for %lld seconds\n", total); } @@ -6066,7 +6066,7 @@ main(int argc, char **argv) (void) setvbuf(stdout, NULL, _IOLBF, 0); dprintf_setup(&argc, argv); - zfs_deadman_synctime = 300; + zfs_deadman_synctime_ms = 300000; ztest_fd_rand = open("/dev/urandom", O_RDONLY); ASSERT3S(ztest_fd_rand, >=, 0); Modified: stable/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- stable/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 15:57:39 2014 (r260763) +++ stable/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 15:59:08 2014 (r260764) @@ -65,6 +65,7 @@ extern "C" { #include #include #include +#include #include #include #include @@ -204,6 +205,8 @@ extern int aok; */ #define curthread ((void *)(uintptr_t)thr_self()) +#define kpreempt(x) sched_yield() + typedef struct kthread kthread_t; #define thread_create(stk, stksize, func, arg, len, pp, state, pri) \ Copied: stable/9/sys/cddl/compat/opensolaris/sys/disp.h (from r258632, head/sys/cddl/compat/opensolaris/sys/disp.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/9/sys/cddl/compat/opensolaris/sys/disp.h Thu Jan 16 15:59:08 2014 (r260764, copy of r258632, head/sys/cddl/compat/opensolaris/sys/disp.h) @@ -0,0 +1,40 @@ +/*- + * Copyright (c) 2013 Andriy Gapon + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _OPENSOLARIS_SYS_DISP_H_ +#define _OPENSOLARIS_SYS_DISP_H_ + +#ifdef _KERNEL + +#include + +#define kpreempt(x) kern_yield(PRI_USER) + +#endif /* _KERNEL */ + +#endif /* _OPENSOLARIS_SYS_DISP_H_ */ Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Thu Jan 16 15:57:39 2014 (r260763) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Thu Jan 16 15:59:08 2014 (r260764) @@ -127,6 +127,7 @@ #include #include #include +#include #ifdef _KERNEL #include #endif @@ -150,10 +151,6 @@ static kmutex_t arc_reclaim_thr_lock; static kcondvar_t arc_reclaim_thr_cv; /* used to signal reclaim thr */ static uint8_t arc_thread_exit; -extern int zfs_write_limit_shift; -extern uint64_t zfs_write_limit_max; -extern kmutex_t zfs_write_limit_lock; - #define ARC_REDUCE_DNLC_PERCENT 3 uint_t arc_reduce_dnlc_percent = ARC_REDUCE_DNLC_PERCENT; @@ -162,6 +159,12 @@ typedef enum arc_reclaim_strategy { ARC_RECLAIM_CONS /* Conservative reclaim strategy */ } arc_reclaim_strategy_t; +/* + * The number of iterations through arc_evict_*() before we + * drop & reacquire the lock. + */ +int arc_evict_iterations = 100; + /* number of seconds before growing cache again */ static int arc_grow_retry = 60; @@ -177,6 +180,11 @@ static int arc_shrink_shift = 5; */ static int arc_min_prefetch_lifespan; +/* + * If this percent of memory is free, don't throttle. + */ +int arc_lotsfree_percent = 10; + static int arc_dead; extern int zfs_prefetch_disable; @@ -526,6 +534,7 @@ typedef struct arc_write_callback arc_wr struct arc_write_callback { void *awcb_private; arc_done_func_t *awcb_ready; + arc_done_func_t *awcb_physdone; arc_done_func_t *awcb_done; arc_buf_t *awcb_buf; }; @@ -1312,7 +1321,7 @@ arc_change_state(arc_state_t *new_state, kmutex_t *lock; ASSERT(MUTEX_HELD(hash_lock)); - ASSERT(new_state != old_state); + ASSERT3P(new_state, !=, old_state); ASSERT(refcnt == 0 || ab->b_datacnt > 0); ASSERT(ab->b_datacnt == 0 || !GHOST_STATE(new_state)); ASSERT(ab->b_datacnt <= 1 || old_state != arc_anon); @@ -1937,8 +1946,10 @@ arc_evict(arc_state_t *state, uint64_t s kmutex_t *hash_lock; boolean_t have_lock; void *stolen = NULL; + arc_buf_hdr_t marker = { 0 }; + int count = 0; static int evict_metadata_offset, evict_data_offset; - int i, idx, offset, list_count, count; + int i, idx, offset, list_count, lists; ASSERT(state == arc_mru || state == arc_mfu); @@ -1958,7 +1969,7 @@ arc_evict(arc_state_t *state, uint64_t s idx = evict_data_offset; } bytes_remaining = evicted_state->arcs_lsize[type]; - count = 0; + lists = 0; evict_start: list = &list_start[idx]; @@ -1985,6 +1996,33 @@ evict_start: if (recycle && ab->b_size != bytes && ab_prev && ab_prev->b_size == bytes) continue; + + /* ignore markers */ + if (ab->b_spa == 0) + continue; + + /* + * It may take a long time to evict all the bufs requested. + * To avoid blocking all arc activity, periodically drop + * the arcs_mtx and give other threads a chance to run + * before reacquiring the lock. + * + * If we are looking for a buffer to recycle, we are in + * the hot code path, so don't sleep. + */ + if (!recycle && count++ > arc_evict_iterations) { + list_insert_after(list, ab, &marker); + mutex_exit(evicted_lock); + mutex_exit(lock); + kpreempt(KPREEMPT_SYNC); + mutex_enter(lock); + mutex_enter(evicted_lock); + ab_prev = list_prev(list, &marker); + list_remove(list, &marker); + count = 0; + continue; + } + hash_lock = HDR_LOCK(ab); have_lock = MUTEX_HELD(hash_lock); if (have_lock || mutex_tryenter(hash_lock)) { @@ -2051,7 +2089,7 @@ evict_start: mutex_exit(evicted_lock); mutex_exit(lock); idx = ((idx + 1) & (list_count - 1)); - count++; + lists++; goto evict_start; } } else { @@ -2063,10 +2101,10 @@ evict_start: mutex_exit(lock); idx = ((idx + 1) & (list_count - 1)); - count++; + lists++; if (bytes_evicted < bytes) { - if (count < list_count) + if (lists < list_count) goto evict_start; else dprintf("only evicted %lld bytes from %x", @@ -2084,28 +2122,14 @@ evict_start: ARCSTAT_INCR(arcstat_mutex_miss, missed); /* - * We have just evicted some data into the ghost state, make - * sure we also adjust the ghost state size if necessary. + * Note: we have just evicted some data into the ghost state, + * potentially putting the ghost size over the desired size. Rather + * that evicting from the ghost list in this hot code path, leave + * this chore to the arc_reclaim_thread(). */ - if (arc_no_grow && - arc_mru_ghost->arcs_size + arc_mfu_ghost->arcs_size > arc_c) { - int64_t mru_over = arc_anon->arcs_size + arc_mru->arcs_size + - arc_mru_ghost->arcs_size - arc_c; - - if (mru_over > 0 && arc_mru_ghost->arcs_lsize[type] > 0) { - int64_t todelete = - MIN(arc_mru_ghost->arcs_lsize[type], mru_over); - arc_evict_ghost(arc_mru_ghost, 0, todelete); - } else if (arc_mfu_ghost->arcs_lsize[type] > 0) { - int64_t todelete = MIN(arc_mfu_ghost->arcs_lsize[type], - arc_mru_ghost->arcs_size + - arc_mfu_ghost->arcs_size - arc_c); - arc_evict_ghost(arc_mfu_ghost, 0, todelete); - } - } + if (stolen) ARCSTAT_BUMP(arcstat_stolen); - return (stolen); } @@ -2122,9 +2146,10 @@ arc_evict_ghost(arc_state_t *state, uint kmutex_t *hash_lock, *lock; uint64_t bytes_deleted = 0; uint64_t bufs_skipped = 0; + int count = 0; static int evict_offset; int list_count, idx = evict_offset; - int offset, count = 0; + int offset, lists = 0; ASSERT(GHOST_STATE(state)); @@ -2142,6 +2167,8 @@ evict_start: mutex_enter(lock); for (ab = list_tail(list); ab; ab = ab_prev) { ab_prev = list_prev(list, ab); + if (ab->b_type > ARC_BUFC_NUMTYPES) + panic("invalid ab=%p", (void *)ab); if (spa && ab->b_spa != spa) continue; @@ -2153,6 +2180,23 @@ evict_start: /* caller may be trying to modify this buffer, skip it */ if (MUTEX_HELD(hash_lock)) continue; + + /* + * It may take a long time to evict all the bufs requested. + * To avoid blocking all arc activity, periodically drop + * the arcs_mtx and give other threads a chance to run + * before reacquiring the lock. + */ + if (count++ > arc_evict_iterations) { + list_insert_after(list, ab, &marker); + mutex_exit(lock); + kpreempt(KPREEMPT_SYNC); + mutex_enter(lock); + ab_prev = list_prev(list, &marker); + list_remove(list, &marker); + count = 0; + continue; + } if (mutex_tryenter(hash_lock)) { ASSERT(!HDR_IO_IN_PROGRESS(ab)); ASSERT(ab->b_buf == NULL); @@ -2188,14 +2232,16 @@ evict_start: mutex_enter(lock); ab_prev = list_prev(list, &marker); list_remove(list, &marker); - } else + } else { bufs_skipped += 1; + } + } mutex_exit(lock); idx = ((idx + 1) & (ARC_BUFC_NUMDATALISTS - 1)); - count++; + lists++; - if (count < list_count) + if (lists < list_count) goto evict_start; evict_offset = idx; @@ -2203,7 +2249,7 @@ evict_start: (bytes < 0 || bytes_deleted < bytes)) { list_start = &state->arcs_lists[0]; list_count = ARC_BUFC_NUMMETADATALISTS; - offset = count = 0; + offset = lists = 0; goto evict_start; } @@ -3083,7 +3129,7 @@ arc_read_done(zio_t *zio) */ int arc_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, arc_done_func_t *done, - void *private, int priority, int zio_flags, uint32_t *arc_flags, + void *private, zio_priority_t priority, int zio_flags, uint32_t *arc_flags, const zbookmark_t *zb) { arc_buf_hdr_t *hdr; @@ -3699,6 +3745,18 @@ arc_write_ready(zio_t *zio) hdr->b_flags |= ARC_IO_IN_PROGRESS; } +/* + * The SPA calls this callback for each physical write that happens on behalf + * of a logical write. See the comment in dbuf_write_physdone() for details. + */ +static void +arc_write_physdone(zio_t *zio) +{ + arc_write_callback_t *cb = zio->io_private; + if (cb->awcb_physdone != NULL) + cb->awcb_physdone(zio, cb->awcb_buf, cb->awcb_private); +} + static void arc_write_done(zio_t *zio) { @@ -3779,8 +3837,9 @@ arc_write_done(zio_t *zio) zio_t * arc_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, arc_buf_t *buf, boolean_t l2arc, boolean_t l2arc_compress, - const zio_prop_t *zp, arc_done_func_t *ready, arc_done_func_t *done, - void *private, int priority, int zio_flags, const zbookmark_t *zb) + const zio_prop_t *zp, arc_done_func_t *ready, arc_done_func_t *physdone, + arc_done_func_t *done, void *private, zio_priority_t priority, + int zio_flags, const zbookmark_t *zb) { arc_buf_hdr_t *hdr = buf->b_hdr; arc_write_callback_t *callback; @@ -3797,18 +3856,20 @@ arc_write(zio_t *pio, spa_t *spa, uint64 hdr->b_flags |= ARC_L2COMPRESS; callback = kmem_zalloc(sizeof (arc_write_callback_t), KM_SLEEP); callback->awcb_ready = ready; + callback->awcb_physdone = physdone; callback->awcb_done = done; callback->awcb_private = private; callback->awcb_buf = buf; zio = zio_write(pio, spa, txg, bp, buf->b_data, hdr->b_size, zp, - arc_write_ready, arc_write_done, callback, priority, zio_flags, zb); + arc_write_ready, arc_write_physdone, arc_write_done, callback, + priority, zio_flags, zb); return (zio); } static int -arc_memory_throttle(uint64_t reserve, uint64_t inflight_data, uint64_t txg) +arc_memory_throttle(uint64_t reserve, uint64_t txg) { #ifdef _KERNEL uint64_t available_memory = @@ -3822,7 +3883,9 @@ arc_memory_throttle(uint64_t reserve, ui MIN(available_memory, vmem_size(heap_arena, VMEM_FREE)); #endif #endif /* sun */ - if (available_memory >= zfs_write_limit_max) + + if (cnt.v_free_count + cnt.v_cache_count > + (uint64_t)physmem * arc_lotsfree_percent / 100) return (0); if (txg > last_txg) { @@ -3846,20 +3909,6 @@ arc_memory_throttle(uint64_t reserve, ui return (SET_ERROR(EAGAIN)); } page_load = 0; - - if (arc_size > arc_c_min) { - uint64_t evictable_memory = - arc_mru->arcs_lsize[ARC_BUFC_DATA] + - arc_mru->arcs_lsize[ARC_BUFC_METADATA] + - arc_mfu->arcs_lsize[ARC_BUFC_DATA] + - arc_mfu->arcs_lsize[ARC_BUFC_METADATA]; - available_memory += MIN(evictable_memory, arc_size - arc_c_min); - } - - if (inflight_data > available_memory / 4) { - ARCSTAT_INCR(arcstat_memory_throttle_count, 1); - return (SET_ERROR(ERESTART)); - } #endif return (0); } @@ -3877,15 +3926,6 @@ arc_tempreserve_space(uint64_t reserve, int error; uint64_t anon_size; -#ifdef ZFS_DEBUG - /* - * Once in a while, fail for no reason. Everything should cope. - */ - if (spa_get_random(10000) == 0) { - dprintf("forcing random failure\n"); - 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) @@ -3903,7 +3943,8 @@ arc_tempreserve_space(uint64_t reserve, * in order to compress/encrypt/etc the data. We therefore need to * make sure that there is sufficient available memory for this. */ - if (error = arc_memory_throttle(reserve, anon_size, txg)) + error = arc_memory_throttle(reserve, txg); + if (error != 0) return (error); /* @@ -4094,11 +4135,20 @@ arc_init(void) arc_dead = FALSE; arc_warm = B_FALSE; - if (zfs_write_limit_max == 0) - zfs_write_limit_max = ptob(physmem) >> zfs_write_limit_shift; - else - zfs_write_limit_shift = 0; - mutex_init(&zfs_write_limit_lock, NULL, MUTEX_DEFAULT, NULL); + /* + * Calculate maximum amount of dirty data per pool. + * + * If it has been set by /etc/system, take that. + * Otherwise, use a percentage of physical memory defined by + * zfs_dirty_data_max_percent (default 10%) with a cap at + * zfs_dirty_data_max_max (default 4GB). + */ + if (zfs_dirty_data_max == 0) { + zfs_dirty_data_max = ptob(physmem) * + zfs_dirty_data_max_percent / 100; + zfs_dirty_data_max = MIN(zfs_dirty_data_max, + zfs_dirty_data_max_max); + } #ifdef _KERNEL if (TUNABLE_INT_FETCH("vfs.zfs.prefetch_disable", &zfs_prefetch_disable)) @@ -4177,8 +4227,6 @@ arc_fini(void) mutex_destroy(&arc_l2c_only->arcs_locks[i].arcs_lock); } - mutex_destroy(&zfs_write_limit_lock); - buf_fini(); ASSERT(arc_loaned_bytes == 0); Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Thu Jan 16 15:57:39 2014 (r260763) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Thu Jan 16 15:59:08 2014 (r260764) @@ -841,7 +841,7 @@ dbuf_free_range(dnode_t *dn, uint64_t st atomic_inc_64(&zfs_free_range_recv_miss); } - for (db = list_head(&dn->dn_dbufs); db; db = db_next) { + for (db = list_head(&dn->dn_dbufs); db != NULL; db = db_next) { db_next = list_next(&dn->dn_dbufs, db); ASSERT(db->db_blkid != DMU_BONUS_BLKID); @@ -1187,6 +1187,8 @@ dbuf_dirty(dmu_buf_impl_t *db, dmu_tx_t sizeof (dbuf_dirty_record_t), offsetof(dbuf_dirty_record_t, dr_dirty_node)); } + if (db->db_blkid != DMU_BONUS_BLKID && os->os_dsl_dataset != NULL) + dr->dr_accounted = db->db.db_size; dr->dr_dbuf = db; dr->dr_txg = tx->tx_txg; dr->dr_next = *drp; @@ -1270,7 +1272,10 @@ dbuf_dirty(dmu_buf_impl_t *db, dmu_tx_t dbuf_rele(parent, FTAG); mutex_enter(&db->db_mtx); - /* possible race with dbuf_undirty() */ + /* + * Since we've dropped the mutex, it's possible that + * dbuf_undirty() might have changed this out from under us. + */ if (db->db_last_dirty == dr || dn->dn_object == DMU_META_DNODE_OBJECT) { mutex_enter(&di->dt.di.dr_mtx); @@ -1340,7 +1345,11 @@ dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_ ASSERT(db->db.db_size != 0); - /* XXX would be nice to fix up dn_towrite_space[] */ + /* + * Any space we accounted for in dp_dirty_* will be cleaned up by + * dsl_pool_sync(). This is relatively rare so the discrepancy + * is not a big deal. + */ *drp = dr->dr_next; @@ -1520,7 +1529,7 @@ dbuf_assign_arcbuf(dmu_buf_impl_t *db, a /* * "Clear" the contents of this dbuf. This will mark the dbuf - * EVICTING and clear *most* of its references. Unfortunetely, + * EVICTING and clear *most* of its references. Unfortunately, * when we are not holding the dn_dbufs_mtx, we can't clear the * entry in the dn_dbufs list. We have to wait until dbuf_destroy() * in this case. For callers from the DMU we will usually see: @@ -1707,7 +1716,7 @@ dbuf_create(dnode_t *dn, uint8_t level, db->db.db_offset = 0; } else { int blocksize = - db->db_level ? 1<dn_indblkshift : dn->dn_datablksz; + db->db_level ? 1 << dn->dn_indblkshift : dn->dn_datablksz; db->db.db_size = blocksize; db->db.db_offset = db->db_blkid * blocksize; } @@ -1816,7 +1825,7 @@ dbuf_destroy(dmu_buf_impl_t *db) } void -dbuf_prefetch(dnode_t *dn, uint64_t blkid) +dbuf_prefetch(dnode_t *dn, uint64_t blkid, zio_priority_t prio) { dmu_buf_impl_t *db = NULL; blkptr_t *bp = NULL; @@ -1840,8 +1849,6 @@ dbuf_prefetch(dnode_t *dn, uint64_t blki if (dbuf_findbp(dn, 0, blkid, TRUE, &db, &bp) == 0) { if (bp && !BP_IS_HOLE(bp)) { - int priority = dn->dn_type == DMU_OT_DDT_ZAP ? - ZIO_PRIORITY_DDT_PREFETCH : ZIO_PRIORITY_ASYNC_READ; dsl_dataset_t *ds = dn->dn_objset->os_dsl_dataset; uint32_t aflags = ARC_NOWAIT | ARC_PREFETCH; zbookmark_t zb; @@ -1850,7 +1857,7 @@ dbuf_prefetch(dnode_t *dn, uint64_t blki dn->dn_object, 0, blkid); (void) arc_read(NULL, dn->dn_objset->os_spa, - bp, NULL, NULL, priority, + bp, NULL, NULL, prio, ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE, &aflags, &zb); } @@ -2535,6 +2542,38 @@ dbuf_write_ready(zio_t *zio, arc_buf_t * mutex_exit(&db->db_mtx); } +/* + * The SPA will call this callback several times for each zio - once + * for every physical child i/o (zio->io_phys_children times). This + * allows the DMU to monitor the progress of each logical i/o. For example, + * there may be 2 copies of an indirect block, or many fragments of a RAID-Z + * block. There may be a long delay before all copies/fragments are completed, + * so this callback allows us to retire dirty space gradually, as the physical + * i/os complete. + */ +/* ARGSUSED */ +static void +dbuf_write_physdone(zio_t *zio, arc_buf_t *buf, void *arg) +{ + dmu_buf_impl_t *db = arg; + objset_t *os = db->db_objset; + dsl_pool_t *dp = dmu_objset_pool(os); + dbuf_dirty_record_t *dr; + int delta = 0; + + dr = db->db_data_pending; + ASSERT3U(dr->dr_txg, ==, zio->io_txg); + + /* + * The callback will be called io_phys_children times. Retire one + * portion of our dirty space each time we are called. Any rounding + * error will be cleaned up by dsl_pool_sync()'s call to + * dsl_pool_undirty_space(). + */ + delta = dr->dr_accounted / zio->io_phys_children; + dsl_pool_undirty_space(dp, delta, zio->io_txg); +} + /* ARGSUSED */ static void dbuf_write_done(zio_t *zio, arc_buf_t *buf, void *vdb) @@ -2629,6 +2668,7 @@ dbuf_write_done(zio_t *zio, arc_buf_t *b ASSERT(db->db_dirtycnt > 0); db->db_dirtycnt -= 1; db->db_data_pending = NULL; + dbuf_rele_and_unlock(db, (void *)(uintptr_t)txg); } @@ -2747,8 +2787,8 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_ ASSERT(db->db_state != DB_NOFILL); dr->dr_zio = zio_write(zio, os->os_spa, txg, db->db_blkptr, data->b_data, arc_buf_size(data), &zp, - dbuf_write_override_ready, dbuf_write_override_done, dr, - ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); + dbuf_write_override_ready, NULL, dbuf_write_override_done, + dr, ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); mutex_enter(&db->db_mtx); dr->dt.dl.dr_override_state = DR_NOT_OVERRIDDEN; zio_write_override(dr->dr_zio, &dr->dt.dl.dr_overridden_by, @@ -2758,7 +2798,7 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_ ASSERT(zp.zp_checksum == ZIO_CHECKSUM_OFF); dr->dr_zio = zio_write(zio, os->os_spa, txg, db->db_blkptr, NULL, db->db.db_size, &zp, - dbuf_write_nofill_ready, dbuf_write_nofill_done, db, + dbuf_write_nofill_ready, NULL, dbuf_write_nofill_done, db, ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED | ZIO_FLAG_NODATA, &zb); } else { @@ -2766,7 +2806,7 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_ dr->dr_zio = arc_write(zio, os->os_spa, txg, db->db_blkptr, data, DBUF_IS_L2CACHEABLE(db), DBUF_IS_L2COMPRESSIBLE(db), &zp, dbuf_write_ready, - dbuf_write_done, db, ZIO_PRIORITY_ASYNC_WRITE, - ZIO_FLAG_MUSTSUCCEED, &zb); + dbuf_write_physdone, dbuf_write_done, db, + ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); } } Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 15:57:39 2014 (r260763) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 15:59:08 2014 (r260764) @@ -374,13 +374,11 @@ static int dmu_buf_hold_array_by_dnode(dnode_t *dn, uint64_t offset, uint64_t length, int read, void *tag, int *numbufsp, dmu_buf_t ***dbpp, uint32_t flags) { - dsl_pool_t *dp = NULL; dmu_buf_t **dbp; uint64_t blkid, nblks, i; uint32_t dbuf_flags; int err; zio_t *zio; - hrtime_t start; ASSERT(length <= DMU_MAX_ACCESS); @@ -408,9 +406,6 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn, } dbp = kmem_zalloc(sizeof (dmu_buf_t *) * nblks, KM_SLEEP); - if (dn->dn_objset->os_dsl_dataset) - dp = dn->dn_objset->os_dsl_dataset->ds_dir->dd_pool; - start = gethrtime(); zio = zio_root(dn->dn_objset->os_spa, NULL, NULL, ZIO_FLAG_CANFAIL); blkid = dbuf_whichblock(dn, offset); for (i = 0; i < nblks; i++) { @@ -434,9 +429,6 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn, /* wait for async i/o */ err = zio_wait(zio); - /* track read overhead when we are in sync context */ - if (dp && dsl_pool_sync_context(dp)) - dp->dp_read_overhead += gethrtime() - start; if (err) { dmu_buf_rele_array(dbp, nblks, tag); return (err); @@ -518,12 +510,22 @@ dmu_buf_rele_array(dmu_buf_t **dbp_fake, kmem_free(dbp, sizeof (dmu_buf_t *) * numbufs); } +/* + * Issue prefetch i/os for the given blocks. + * + * Note: The assumption is that we *know* these blocks will be needed + * almost immediately. Therefore, the prefetch i/os will be issued at + * ZIO_PRIORITY_SYNC_READ + * + * Note: indirect blocks and other metadata will be read synchronously, + * causing this function to block if they are not already cached. + */ void dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) { dnode_t *dn; uint64_t blkid; - int nblks, i, err; + int nblks, err; if (zfs_prefetch_disable) return; @@ -536,7 +538,7 @@ dmu_prefetch(objset_t *os, uint64_t obje rw_enter(&dn->dn_struct_rwlock, RW_READER); blkid = dbuf_whichblock(dn, object * sizeof (dnode_phys_t)); - dbuf_prefetch(dn, blkid); + dbuf_prefetch(dn, blkid, ZIO_PRIORITY_SYNC_READ); rw_exit(&dn->dn_struct_rwlock); return; } @@ -553,16 +555,16 @@ dmu_prefetch(objset_t *os, uint64_t obje rw_enter(&dn->dn_struct_rwlock, RW_READER); if (dn->dn_datablkshift) { int blkshift = dn->dn_datablkshift; - nblks = (P2ROUNDUP(offset+len, 1<> blkshift; + nblks = (P2ROUNDUP(offset + len, 1 << blkshift) - + P2ALIGN(offset, 1 << blkshift)) >> blkshift; } else { nblks = (offset < dn->dn_datablksz); } if (nblks != 0) { blkid = dbuf_whichblock(dn, offset); - for (i = 0; i < nblks; i++) - dbuf_prefetch(dn, blkid+i); + for (int i = 0; i < nblks; i++) + dbuf_prefetch(dn, blkid + i, ZIO_PRIORITY_SYNC_READ); } rw_exit(&dn->dn_struct_rwlock); @@ -1376,7 +1378,7 @@ dmu_sync_late_arrival(zio_t *pio, objset zio_nowait(zio_write(pio, os->os_spa, dmu_tx_get_txg(tx), zgd->zgd_bp, zgd->zgd_db->db_data, zgd->zgd_db->db_size, zp, - dmu_sync_late_arrival_ready, dmu_sync_late_arrival_done, dsa, + dmu_sync_late_arrival_ready, NULL, dmu_sync_late_arrival_done, dsa, ZIO_PRIORITY_SYNC_WRITE, ZIO_FLAG_CANFAIL, zb)); return (0); @@ -1516,8 +1518,9 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_s zio_nowait(arc_write(pio, os->os_spa, txg, bp, dr->dt.dl.dr_data, DBUF_IS_L2CACHEABLE(db), - DBUF_IS_L2COMPRESSIBLE(db), &zp, dmu_sync_ready, dmu_sync_done, - dsa, ZIO_PRIORITY_SYNC_WRITE, ZIO_FLAG_CANFAIL, &zb)); + DBUF_IS_L2COMPRESSIBLE(db), &zp, dmu_sync_ready, + NULL, dmu_sync_done, dsa, ZIO_PRIORITY_SYNC_WRITE, + ZIO_FLAG_CANFAIL, &zb)); return (0); } Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c Thu Jan 16 15:57:39 2014 (r260763) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c Thu Jan 16 15:59:08 2014 (r260764) @@ -1028,7 +1028,7 @@ dmu_objset_sync(objset_t *os, zio_t *pio zio = arc_write(pio, os->os_spa, tx->tx_txg, os->os_rootbp, os->os_phys_buf, DMU_OS_IS_L2CACHEABLE(os), DMU_OS_IS_L2COMPRESSIBLE(os), &zp, dmu_objset_write_ready, - dmu_objset_write_done, os, ZIO_PRIORITY_ASYNC_WRITE, + NULL, dmu_objset_write_done, os, ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); /* Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Thu Jan 16 15:57:39 2014 (r260763) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Thu Jan 16 15:59:08 2014 (r260764) @@ -54,6 +54,7 @@ dmu_tx_create_dd(dsl_dir_t *dd) offsetof(dmu_tx_hold_t, txh_node)); list_create(&tx->tx_callbacks, sizeof (dmu_tx_callback_t), offsetof(dmu_tx_callback_t, dcb_node)); + tx->tx_start = gethrtime(); #ifdef ZFS_DEBUG refcount_create(&tx->tx_space_written); refcount_create(&tx->tx_space_freed); @@ -597,13 +598,13 @@ dmu_tx_hold_free(dmu_tx_t *tx, uint64_t if (txh == NULL) return; dn = txh->txh_dnode; + dmu_tx_count_dnode(txh); if (off >= (dn->dn_maxblkid+1) * dn->dn_datablksz) return; if (len == DMU_OBJECT_END) len = (dn->dn_maxblkid+1) * dn->dn_datablksz - off; - dmu_tx_count_dnode(txh); /* * For i/o error checking, we read the first and last level-0 @@ -911,6 +912,162 @@ dmu_tx_dirty_buf(dmu_tx_t *tx, dmu_buf_i } #endif +/* + * If we can't do 10 iops, something is wrong. Let us go ahead + * and hit zfs_dirty_data_max. + */ +hrtime_t zfs_delay_max_ns = MSEC2NSEC(100); +int zfs_delay_resolution_ns = 100 * 1000; /* 100 microseconds */ + +/* + * We delay transactions when we've determined that the backend storage + * isn't able to accommodate the rate of incoming writes. + * + * If there is already a transaction waiting, we delay relative to when + * that transaction finishes waiting. This way the calculated min_time + * is independent of the number of threads concurrently executing + * transactions. + * + * If we are the only waiter, wait relative to when the transaction + * started, rather than the current time. This credits the transaction for + * "time already served", e.g. reading indirect blocks. + * + * The minimum time for a transaction to take is calculated as: + * min_time = scale * (dirty - min) / (max - dirty) + * min_time is then capped at zfs_delay_max_ns. + * + * The delay has two degrees of freedom that can be adjusted via tunables. + * The percentage of dirty data at which we start to delay is defined by + * zfs_delay_min_dirty_percent. This should typically be at or above + * zfs_vdev_async_write_active_max_dirty_percent so that we only start to + * delay after writing at full speed has failed to keep up with the incoming + * write rate. The scale of the curve is defined by zfs_delay_scale. Roughly + * speaking, this variable determines the amount of delay at the midpoint of + * the curve. + * + * delay + * 10ms +-------------------------------------------------------------*+ + * | *| + * 9ms + *+ + * | *| + * 8ms + *+ + * | * | + * 7ms + * + + * | * | + * 6ms + * + + * | * | + * 5ms + * + + * | * | + * 4ms + * + + * | * | + * 3ms + * + + * | * | + * 2ms + (midpoint) * + + * | | ** | + * 1ms + v *** + + * | zfs_delay_scale ----------> ******** | + * 0 +-------------------------------------*********----------------+ + * 0% <- zfs_dirty_data_max -> 100% + * + * Note that since the delay is added to the outstanding time remaining on the + * most recent transaction, the delay is effectively the inverse of IOPS. + * Here the midpoint of 500us translates to 2000 IOPS. The shape of the curve + * was chosen such that small changes in the amount of accumulated dirty data + * in the first 3/4 of the curve yield relatively small differences in the + * amount of delay. + * + * The effects can be easier to understand when the amount of delay is + * represented on a log scale: + * + * delay + * 100ms +-------------------------------------------------------------++ + * + + + * | | + * + *+ + * 10ms + *+ + * + ** + + * | (midpoint) ** | + * + | ** + + * 1ms + v **** + + * + zfs_delay_scale ----------> ***** + + * | **** | + * + **** + + * 100us + ** + + * + * + + * | * | + * + * + + * 10us + * + + * + + + * | | + * + + + * +--------------------------------------------------------------+ + * 0% <- zfs_dirty_data_max -> 100% + * + * Note here that only as the amount of dirty data approaches its limit does + * the delay start to increase rapidly. The goal of a properly tuned system + * should be to keep the amount of dirty data out of that range by first + * ensuring that the appropriate limits are set for the I/O scheduler to reach + * optimal throughput on the backend storage, and then by changing the value + * of zfs_delay_scale to increase the steepness of the curve. + */ +static void +dmu_tx_delay(dmu_tx_t *tx, uint64_t dirty) +{ + dsl_pool_t *dp = tx->tx_pool; + uint64_t delay_min_bytes = + zfs_dirty_data_max * zfs_delay_min_dirty_percent / 100; + hrtime_t wakeup, min_tx_time, now; + + if (dirty <= delay_min_bytes) + return; + + /* + * The caller has already waited until we are under the max. + * We make them pass us the amount of dirty data so we don't + * have to handle the case of it being >= the max, which could + * cause a divide-by-zero if it's == the max. + */ + ASSERT3U(dirty, <, zfs_dirty_data_max); + + now = gethrtime(); + min_tx_time = zfs_delay_scale * + (dirty - delay_min_bytes) / (zfs_dirty_data_max - dirty); + if (now > tx->tx_start + min_tx_time) + return; + + min_tx_time = MIN(min_tx_time, zfs_delay_max_ns); + + DTRACE_PROBE3(delay__mintime, dmu_tx_t *, tx, uint64_t, dirty, + uint64_t, min_tx_time); + + mutex_enter(&dp->dp_lock); + wakeup = MAX(tx->tx_start + min_tx_time, + dp->dp_last_wakeup + min_tx_time); + dp->dp_last_wakeup = wakeup; + mutex_exit(&dp->dp_lock); + +#ifdef _KERNEL +#ifdef illumos + mutex_enter(&curthread->t_delay_lock); + while (cv_timedwait_hires(&curthread->t_delay_cv, + &curthread->t_delay_lock, wakeup, zfs_delay_resolution_ns, + CALLOUT_FLAG_ABSOLUTE | CALLOUT_FLAG_ROUNDUP) > 0) + continue; + mutex_exit(&curthread->t_delay_lock); +#else + /* XXX High resolution callouts are not available */ + ASSERT(wakeup >= now); + pause("dmu_tx_delay", NSEC_TO_TICK(wakeup - now)); +#endif +#else + hrtime_t delta = wakeup - gethrtime(); + struct timespec ts; + ts.tv_sec = delta / NANOSEC; + ts.tv_nsec = delta % NANOSEC; + (void) nanosleep(&ts, NULL); +#endif +} + static int dmu_tx_try_assign(dmu_tx_t *tx, txg_how_t txg_how) { @@ -941,6 +1098,12 @@ dmu_tx_try_assign(dmu_tx_t *tx, txg_how_ return (SET_ERROR(ERESTART)); } + if (!tx->tx_waited && + dsl_pool_need_dirty_delay(tx->tx_pool)) { + tx->tx_wait_dirty = B_TRUE; + return (SET_ERROR(ERESTART)); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:00:08 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0BCA037B; Thu, 16 Jan 2014 16:00:08 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E782B1987; Thu, 16 Jan 2014 16:00:07 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GG071c070365; Thu, 16 Jan 2014 16:00:07 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GG06fs070350; Thu, 16 Jan 2014 16:00:06 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161600.s0GG06fs070350@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:00:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260765 - in stable/8: cddl/contrib/opensolaris/cmd/ztest cddl/contrib/opensolaris/lib/libzpool/common/sys sys/cddl/compat/opensolaris/sys sys/cddl/contrib/opensolaris/uts/common/fs/zfs... X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:00:08 -0000 Author: avg Date: Thu Jan 16 16:00:05 2014 New Revision: 260765 URL: http://svnweb.freebsd.org/changeset/base/260765 Log: MFC r258632,258704: MFV r255255: 4045 zfs write throttle & i/o scheduler performance work Note a change in dmu_tx_delay: pause_sbt is not available in this branch. Sponsored by: HybridCluster [merge] Added: stable/8/sys/cddl/compat/opensolaris/sys/disp.h - copied unchanged from r258632, head/sys/cddl/compat/opensolaris/sys/disp.h Modified: stable/8/cddl/contrib/opensolaris/cmd/ztest/ztest.c stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_tx.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/sa_impl.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg_impl.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Directory Properties: stable/8/cddl/contrib/opensolaris/ (props changed) stable/8/cddl/contrib/opensolaris/cmd/zfs/ (props changed) stable/8/cddl/contrib/opensolaris/lib/libzfs/ (props changed) stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/cddl/contrib/opensolaris/cmd/ztest/ztest.c ============================================================================== --- stable/8/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Jan 16 15:59:08 2014 (r260764) +++ stable/8/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Jan 16 16:00:05 2014 (r260765) @@ -186,7 +186,7 @@ static const ztest_shared_opts_t ztest_o extern uint64_t metaslab_gang_bang; extern uint64_t metaslab_df_alloc_threshold; -extern uint64_t zfs_deadman_synctime; +extern uint64_t zfs_deadman_synctime_ms; static ztest_shared_opts_t *ztest_shared_opts; static ztest_shared_opts_t ztest_opts; @@ -5315,10 +5315,10 @@ ztest_deadman_thread(void *arg) hrtime_t delta, total = 0; for (;;) { - delta = (zs->zs_thread_stop - zs->zs_thread_start) / - NANOSEC + zfs_deadman_synctime; + delta = zs->zs_thread_stop - zs->zs_thread_start + + MSEC2NSEC(zfs_deadman_synctime_ms); - (void) poll(NULL, 0, (int)(1000 * delta)); + (void) poll(NULL, 0, (int)NSEC2MSEC(delta)); /* * If the pool is suspended then fail immediately. Otherwise, @@ -5329,12 +5329,12 @@ ztest_deadman_thread(void *arg) if (spa_suspended(spa)) { fatal(0, "aborting test after %llu seconds because " "pool has transitioned to a suspended state.", - zfs_deadman_synctime); + zfs_deadman_synctime_ms / 1000); return (NULL); } vdev_deadman(spa->spa_root_vdev); - total += zfs_deadman_synctime; + total += zfs_deadman_synctime_ms/1000; (void) printf("ztest has been running for %lld seconds\n", total); } @@ -6066,7 +6066,7 @@ main(int argc, char **argv) (void) setvbuf(stdout, NULL, _IOLBF, 0); dprintf_setup(&argc, argv); - zfs_deadman_synctime = 300; + zfs_deadman_synctime_ms = 300000; ztest_fd_rand = open("/dev/urandom", O_RDONLY); ASSERT3S(ztest_fd_rand, >=, 0); Modified: stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 15:59:08 2014 (r260764) +++ stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Thu Jan 16 16:00:05 2014 (r260765) @@ -65,6 +65,7 @@ extern "C" { #include #include #include +#include #include #include #include @@ -204,6 +205,8 @@ extern int aok; */ #define curthread ((void *)(uintptr_t)thr_self()) +#define kpreempt(x) sched_yield() + typedef struct kthread kthread_t; #define thread_create(stk, stksize, func, arg, len, pp, state, pri) \ Copied: stable/8/sys/cddl/compat/opensolaris/sys/disp.h (from r258632, head/sys/cddl/compat/opensolaris/sys/disp.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/sys/cddl/compat/opensolaris/sys/disp.h Thu Jan 16 16:00:05 2014 (r260765, copy of r258632, head/sys/cddl/compat/opensolaris/sys/disp.h) @@ -0,0 +1,40 @@ +/*- + * Copyright (c) 2013 Andriy Gapon + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _OPENSOLARIS_SYS_DISP_H_ +#define _OPENSOLARIS_SYS_DISP_H_ + +#ifdef _KERNEL + +#include + +#define kpreempt(x) kern_yield(PRI_USER) + +#endif /* _KERNEL */ + +#endif /* _OPENSOLARIS_SYS_DISP_H_ */ Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Thu Jan 16 15:59:08 2014 (r260764) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Thu Jan 16 16:00:05 2014 (r260765) @@ -127,6 +127,7 @@ #include #include #include +#include #ifdef _KERNEL #include #endif @@ -150,10 +151,6 @@ static kmutex_t arc_reclaim_thr_lock; static kcondvar_t arc_reclaim_thr_cv; /* used to signal reclaim thr */ static uint8_t arc_thread_exit; -extern int zfs_write_limit_shift; -extern uint64_t zfs_write_limit_max; -extern kmutex_t zfs_write_limit_lock; - #define ARC_REDUCE_DNLC_PERCENT 3 uint_t arc_reduce_dnlc_percent = ARC_REDUCE_DNLC_PERCENT; @@ -162,6 +159,12 @@ typedef enum arc_reclaim_strategy { ARC_RECLAIM_CONS /* Conservative reclaim strategy */ } arc_reclaim_strategy_t; +/* + * The number of iterations through arc_evict_*() before we + * drop & reacquire the lock. + */ +int arc_evict_iterations = 100; + /* number of seconds before growing cache again */ static int arc_grow_retry = 60; @@ -177,6 +180,11 @@ static int arc_shrink_shift = 5; */ static int arc_min_prefetch_lifespan; +/* + * If this percent of memory is free, don't throttle. + */ +int arc_lotsfree_percent = 10; + static int arc_dead; extern int zfs_prefetch_disable; @@ -526,6 +534,7 @@ typedef struct arc_write_callback arc_wr struct arc_write_callback { void *awcb_private; arc_done_func_t *awcb_ready; + arc_done_func_t *awcb_physdone; arc_done_func_t *awcb_done; arc_buf_t *awcb_buf; }; @@ -1312,7 +1321,7 @@ arc_change_state(arc_state_t *new_state, kmutex_t *lock; ASSERT(MUTEX_HELD(hash_lock)); - ASSERT(new_state != old_state); + ASSERT3P(new_state, !=, old_state); ASSERT(refcnt == 0 || ab->b_datacnt > 0); ASSERT(ab->b_datacnt == 0 || !GHOST_STATE(new_state)); ASSERT(ab->b_datacnt <= 1 || old_state != arc_anon); @@ -1937,8 +1946,10 @@ arc_evict(arc_state_t *state, uint64_t s kmutex_t *hash_lock; boolean_t have_lock; void *stolen = NULL; + arc_buf_hdr_t marker = { 0 }; + int count = 0; static int evict_metadata_offset, evict_data_offset; - int i, idx, offset, list_count, count; + int i, idx, offset, list_count, lists; ASSERT(state == arc_mru || state == arc_mfu); @@ -1958,7 +1969,7 @@ arc_evict(arc_state_t *state, uint64_t s idx = evict_data_offset; } bytes_remaining = evicted_state->arcs_lsize[type]; - count = 0; + lists = 0; evict_start: list = &list_start[idx]; @@ -1985,6 +1996,33 @@ evict_start: if (recycle && ab->b_size != bytes && ab_prev && ab_prev->b_size == bytes) continue; + + /* ignore markers */ + if (ab->b_spa == 0) + continue; + + /* + * It may take a long time to evict all the bufs requested. + * To avoid blocking all arc activity, periodically drop + * the arcs_mtx and give other threads a chance to run + * before reacquiring the lock. + * + * If we are looking for a buffer to recycle, we are in + * the hot code path, so don't sleep. + */ + if (!recycle && count++ > arc_evict_iterations) { + list_insert_after(list, ab, &marker); + mutex_exit(evicted_lock); + mutex_exit(lock); + kpreempt(KPREEMPT_SYNC); + mutex_enter(lock); + mutex_enter(evicted_lock); + ab_prev = list_prev(list, &marker); + list_remove(list, &marker); + count = 0; + continue; + } + hash_lock = HDR_LOCK(ab); have_lock = MUTEX_HELD(hash_lock); if (have_lock || mutex_tryenter(hash_lock)) { @@ -2051,7 +2089,7 @@ evict_start: mutex_exit(evicted_lock); mutex_exit(lock); idx = ((idx + 1) & (list_count - 1)); - count++; + lists++; goto evict_start; } } else { @@ -2063,10 +2101,10 @@ evict_start: mutex_exit(lock); idx = ((idx + 1) & (list_count - 1)); - count++; + lists++; if (bytes_evicted < bytes) { - if (count < list_count) + if (lists < list_count) goto evict_start; else dprintf("only evicted %lld bytes from %x", @@ -2084,28 +2122,14 @@ evict_start: ARCSTAT_INCR(arcstat_mutex_miss, missed); /* - * We have just evicted some data into the ghost state, make - * sure we also adjust the ghost state size if necessary. + * Note: we have just evicted some data into the ghost state, + * potentially putting the ghost size over the desired size. Rather + * that evicting from the ghost list in this hot code path, leave + * this chore to the arc_reclaim_thread(). */ - if (arc_no_grow && - arc_mru_ghost->arcs_size + arc_mfu_ghost->arcs_size > arc_c) { - int64_t mru_over = arc_anon->arcs_size + arc_mru->arcs_size + - arc_mru_ghost->arcs_size - arc_c; - - if (mru_over > 0 && arc_mru_ghost->arcs_lsize[type] > 0) { - int64_t todelete = - MIN(arc_mru_ghost->arcs_lsize[type], mru_over); - arc_evict_ghost(arc_mru_ghost, 0, todelete); - } else if (arc_mfu_ghost->arcs_lsize[type] > 0) { - int64_t todelete = MIN(arc_mfu_ghost->arcs_lsize[type], - arc_mru_ghost->arcs_size + - arc_mfu_ghost->arcs_size - arc_c); - arc_evict_ghost(arc_mfu_ghost, 0, todelete); - } - } + if (stolen) ARCSTAT_BUMP(arcstat_stolen); - return (stolen); } @@ -2122,9 +2146,10 @@ arc_evict_ghost(arc_state_t *state, uint kmutex_t *hash_lock, *lock; uint64_t bytes_deleted = 0; uint64_t bufs_skipped = 0; + int count = 0; static int evict_offset; int list_count, idx = evict_offset; - int offset, count = 0; + int offset, lists = 0; ASSERT(GHOST_STATE(state)); @@ -2142,6 +2167,8 @@ evict_start: mutex_enter(lock); for (ab = list_tail(list); ab; ab = ab_prev) { ab_prev = list_prev(list, ab); + if (ab->b_type > ARC_BUFC_NUMTYPES) + panic("invalid ab=%p", (void *)ab); if (spa && ab->b_spa != spa) continue; @@ -2153,6 +2180,23 @@ evict_start: /* caller may be trying to modify this buffer, skip it */ if (MUTEX_HELD(hash_lock)) continue; + + /* + * It may take a long time to evict all the bufs requested. + * To avoid blocking all arc activity, periodically drop + * the arcs_mtx and give other threads a chance to run + * before reacquiring the lock. + */ + if (count++ > arc_evict_iterations) { + list_insert_after(list, ab, &marker); + mutex_exit(lock); + kpreempt(KPREEMPT_SYNC); + mutex_enter(lock); + ab_prev = list_prev(list, &marker); + list_remove(list, &marker); + count = 0; + continue; + } if (mutex_tryenter(hash_lock)) { ASSERT(!HDR_IO_IN_PROGRESS(ab)); ASSERT(ab->b_buf == NULL); @@ -2188,14 +2232,16 @@ evict_start: mutex_enter(lock); ab_prev = list_prev(list, &marker); list_remove(list, &marker); - } else + } else { bufs_skipped += 1; + } + } mutex_exit(lock); idx = ((idx + 1) & (ARC_BUFC_NUMDATALISTS - 1)); - count++; + lists++; - if (count < list_count) + if (lists < list_count) goto evict_start; evict_offset = idx; @@ -2203,7 +2249,7 @@ evict_start: (bytes < 0 || bytes_deleted < bytes)) { list_start = &state->arcs_lists[0]; list_count = ARC_BUFC_NUMMETADATALISTS; - offset = count = 0; + offset = lists = 0; goto evict_start; } @@ -3083,7 +3129,7 @@ arc_read_done(zio_t *zio) */ int arc_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, arc_done_func_t *done, - void *private, int priority, int zio_flags, uint32_t *arc_flags, + void *private, zio_priority_t priority, int zio_flags, uint32_t *arc_flags, const zbookmark_t *zb) { arc_buf_hdr_t *hdr; @@ -3669,6 +3715,18 @@ arc_write_ready(zio_t *zio) hdr->b_flags |= ARC_IO_IN_PROGRESS; } +/* + * The SPA calls this callback for each physical write that happens on behalf + * of a logical write. See the comment in dbuf_write_physdone() for details. + */ +static void +arc_write_physdone(zio_t *zio) +{ + arc_write_callback_t *cb = zio->io_private; + if (cb->awcb_physdone != NULL) + cb->awcb_physdone(zio, cb->awcb_buf, cb->awcb_private); +} + static void arc_write_done(zio_t *zio) { @@ -3749,8 +3807,9 @@ arc_write_done(zio_t *zio) zio_t * arc_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, arc_buf_t *buf, boolean_t l2arc, boolean_t l2arc_compress, - const zio_prop_t *zp, arc_done_func_t *ready, arc_done_func_t *done, - void *private, int priority, int zio_flags, const zbookmark_t *zb) + const zio_prop_t *zp, arc_done_func_t *ready, arc_done_func_t *physdone, + arc_done_func_t *done, void *private, zio_priority_t priority, + int zio_flags, const zbookmark_t *zb) { arc_buf_hdr_t *hdr = buf->b_hdr; arc_write_callback_t *callback; @@ -3767,18 +3826,20 @@ arc_write(zio_t *pio, spa_t *spa, uint64 hdr->b_flags |= ARC_L2COMPRESS; callback = kmem_zalloc(sizeof (arc_write_callback_t), KM_SLEEP); callback->awcb_ready = ready; + callback->awcb_physdone = physdone; callback->awcb_done = done; callback->awcb_private = private; callback->awcb_buf = buf; zio = zio_write(pio, spa, txg, bp, buf->b_data, hdr->b_size, zp, - arc_write_ready, arc_write_done, callback, priority, zio_flags, zb); + arc_write_ready, arc_write_physdone, arc_write_done, callback, + priority, zio_flags, zb); return (zio); } static int -arc_memory_throttle(uint64_t reserve, uint64_t inflight_data, uint64_t txg) +arc_memory_throttle(uint64_t reserve, uint64_t txg) { #ifdef _KERNEL uint64_t available_memory = @@ -3792,7 +3853,9 @@ arc_memory_throttle(uint64_t reserve, ui MIN(available_memory, vmem_size(heap_arena, VMEM_FREE)); #endif #endif /* sun */ - if (available_memory >= zfs_write_limit_max) + + if (cnt.v_free_count + cnt.v_cache_count > + (uint64_t)physmem * arc_lotsfree_percent / 100) return (0); if (txg > last_txg) { @@ -3816,20 +3879,6 @@ arc_memory_throttle(uint64_t reserve, ui return (SET_ERROR(EAGAIN)); } page_load = 0; - - if (arc_size > arc_c_min) { - uint64_t evictable_memory = - arc_mru->arcs_lsize[ARC_BUFC_DATA] + - arc_mru->arcs_lsize[ARC_BUFC_METADATA] + - arc_mfu->arcs_lsize[ARC_BUFC_DATA] + - arc_mfu->arcs_lsize[ARC_BUFC_METADATA]; - available_memory += MIN(evictable_memory, arc_size - arc_c_min); - } - - if (inflight_data > available_memory / 4) { - ARCSTAT_INCR(arcstat_memory_throttle_count, 1); - return (SET_ERROR(ERESTART)); - } #endif return (0); } @@ -3847,15 +3896,6 @@ arc_tempreserve_space(uint64_t reserve, int error; uint64_t anon_size; -#ifdef ZFS_DEBUG - /* - * Once in a while, fail for no reason. Everything should cope. - */ - if (spa_get_random(10000) == 0) { - dprintf("forcing random failure\n"); - 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) @@ -3873,7 +3913,8 @@ arc_tempreserve_space(uint64_t reserve, * in order to compress/encrypt/etc the data. We therefore need to * make sure that there is sufficient available memory for this. */ - if (error = arc_memory_throttle(reserve, anon_size, txg)) + error = arc_memory_throttle(reserve, txg); + if (error != 0) return (error); /* @@ -4064,11 +4105,20 @@ arc_init(void) arc_dead = FALSE; arc_warm = B_FALSE; - if (zfs_write_limit_max == 0) - zfs_write_limit_max = ptob(physmem) >> zfs_write_limit_shift; - else - zfs_write_limit_shift = 0; - mutex_init(&zfs_write_limit_lock, NULL, MUTEX_DEFAULT, NULL); + /* + * Calculate maximum amount of dirty data per pool. + * + * If it has been set by /etc/system, take that. + * Otherwise, use a percentage of physical memory defined by + * zfs_dirty_data_max_percent (default 10%) with a cap at + * zfs_dirty_data_max_max (default 4GB). + */ + if (zfs_dirty_data_max == 0) { + zfs_dirty_data_max = ptob(physmem) * + zfs_dirty_data_max_percent / 100; + zfs_dirty_data_max = MIN(zfs_dirty_data_max, + zfs_dirty_data_max_max); + } #ifdef _KERNEL if (TUNABLE_INT_FETCH("vfs.zfs.prefetch_disable", &zfs_prefetch_disable)) @@ -4147,8 +4197,6 @@ arc_fini(void) mutex_destroy(&arc_l2c_only->arcs_locks[i].arcs_lock); } - mutex_destroy(&zfs_write_limit_lock); - buf_fini(); ASSERT(arc_loaned_bytes == 0); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Thu Jan 16 15:59:08 2014 (r260764) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Thu Jan 16 16:00:05 2014 (r260765) @@ -841,7 +841,7 @@ dbuf_free_range(dnode_t *dn, uint64_t st atomic_inc_64(&zfs_free_range_recv_miss); } - for (db = list_head(&dn->dn_dbufs); db; db = db_next) { + for (db = list_head(&dn->dn_dbufs); db != NULL; db = db_next) { db_next = list_next(&dn->dn_dbufs, db); ASSERT(db->db_blkid != DMU_BONUS_BLKID); @@ -1187,6 +1187,8 @@ dbuf_dirty(dmu_buf_impl_t *db, dmu_tx_t sizeof (dbuf_dirty_record_t), offsetof(dbuf_dirty_record_t, dr_dirty_node)); } + if (db->db_blkid != DMU_BONUS_BLKID && os->os_dsl_dataset != NULL) + dr->dr_accounted = db->db.db_size; dr->dr_dbuf = db; dr->dr_txg = tx->tx_txg; dr->dr_next = *drp; @@ -1270,7 +1272,10 @@ dbuf_dirty(dmu_buf_impl_t *db, dmu_tx_t dbuf_rele(parent, FTAG); mutex_enter(&db->db_mtx); - /* possible race with dbuf_undirty() */ + /* + * Since we've dropped the mutex, it's possible that + * dbuf_undirty() might have changed this out from under us. + */ if (db->db_last_dirty == dr || dn->dn_object == DMU_META_DNODE_OBJECT) { mutex_enter(&di->dt.di.dr_mtx); @@ -1340,7 +1345,11 @@ dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_ ASSERT(db->db.db_size != 0); - /* XXX would be nice to fix up dn_towrite_space[] */ + /* + * Any space we accounted for in dp_dirty_* will be cleaned up by + * dsl_pool_sync(). This is relatively rare so the discrepancy + * is not a big deal. + */ *drp = dr->dr_next; @@ -1520,7 +1529,7 @@ dbuf_assign_arcbuf(dmu_buf_impl_t *db, a /* * "Clear" the contents of this dbuf. This will mark the dbuf - * EVICTING and clear *most* of its references. Unfortunetely, + * EVICTING and clear *most* of its references. Unfortunately, * when we are not holding the dn_dbufs_mtx, we can't clear the * entry in the dn_dbufs list. We have to wait until dbuf_destroy() * in this case. For callers from the DMU we will usually see: @@ -1707,7 +1716,7 @@ dbuf_create(dnode_t *dn, uint8_t level, db->db.db_offset = 0; } else { int blocksize = - db->db_level ? 1<dn_indblkshift : dn->dn_datablksz; + db->db_level ? 1 << dn->dn_indblkshift : dn->dn_datablksz; db->db.db_size = blocksize; db->db.db_offset = db->db_blkid * blocksize; } @@ -1816,7 +1825,7 @@ dbuf_destroy(dmu_buf_impl_t *db) } void -dbuf_prefetch(dnode_t *dn, uint64_t blkid) +dbuf_prefetch(dnode_t *dn, uint64_t blkid, zio_priority_t prio) { dmu_buf_impl_t *db = NULL; blkptr_t *bp = NULL; @@ -1840,8 +1849,6 @@ dbuf_prefetch(dnode_t *dn, uint64_t blki if (dbuf_findbp(dn, 0, blkid, TRUE, &db, &bp) == 0) { if (bp && !BP_IS_HOLE(bp)) { - int priority = dn->dn_type == DMU_OT_DDT_ZAP ? - ZIO_PRIORITY_DDT_PREFETCH : ZIO_PRIORITY_ASYNC_READ; dsl_dataset_t *ds = dn->dn_objset->os_dsl_dataset; uint32_t aflags = ARC_NOWAIT | ARC_PREFETCH; zbookmark_t zb; @@ -1850,7 +1857,7 @@ dbuf_prefetch(dnode_t *dn, uint64_t blki dn->dn_object, 0, blkid); (void) arc_read(NULL, dn->dn_objset->os_spa, - bp, NULL, NULL, priority, + bp, NULL, NULL, prio, ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE, &aflags, &zb); } @@ -2535,6 +2542,38 @@ dbuf_write_ready(zio_t *zio, arc_buf_t * mutex_exit(&db->db_mtx); } +/* + * The SPA will call this callback several times for each zio - once + * for every physical child i/o (zio->io_phys_children times). This + * allows the DMU to monitor the progress of each logical i/o. For example, + * there may be 2 copies of an indirect block, or many fragments of a RAID-Z + * block. There may be a long delay before all copies/fragments are completed, + * so this callback allows us to retire dirty space gradually, as the physical + * i/os complete. + */ +/* ARGSUSED */ +static void +dbuf_write_physdone(zio_t *zio, arc_buf_t *buf, void *arg) +{ + dmu_buf_impl_t *db = arg; + objset_t *os = db->db_objset; + dsl_pool_t *dp = dmu_objset_pool(os); + dbuf_dirty_record_t *dr; + int delta = 0; + + dr = db->db_data_pending; + ASSERT3U(dr->dr_txg, ==, zio->io_txg); + + /* + * The callback will be called io_phys_children times. Retire one + * portion of our dirty space each time we are called. Any rounding + * error will be cleaned up by dsl_pool_sync()'s call to + * dsl_pool_undirty_space(). + */ + delta = dr->dr_accounted / zio->io_phys_children; + dsl_pool_undirty_space(dp, delta, zio->io_txg); +} + /* ARGSUSED */ static void dbuf_write_done(zio_t *zio, arc_buf_t *buf, void *vdb) @@ -2629,6 +2668,7 @@ dbuf_write_done(zio_t *zio, arc_buf_t *b ASSERT(db->db_dirtycnt > 0); db->db_dirtycnt -= 1; db->db_data_pending = NULL; + dbuf_rele_and_unlock(db, (void *)(uintptr_t)txg); } @@ -2747,8 +2787,8 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_ ASSERT(db->db_state != DB_NOFILL); dr->dr_zio = zio_write(zio, os->os_spa, txg, db->db_blkptr, data->b_data, arc_buf_size(data), &zp, - dbuf_write_override_ready, dbuf_write_override_done, dr, - ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); + dbuf_write_override_ready, NULL, dbuf_write_override_done, + dr, ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); mutex_enter(&db->db_mtx); dr->dt.dl.dr_override_state = DR_NOT_OVERRIDDEN; zio_write_override(dr->dr_zio, &dr->dt.dl.dr_overridden_by, @@ -2758,7 +2798,7 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_ ASSERT(zp.zp_checksum == ZIO_CHECKSUM_OFF); dr->dr_zio = zio_write(zio, os->os_spa, txg, db->db_blkptr, NULL, db->db.db_size, &zp, - dbuf_write_nofill_ready, dbuf_write_nofill_done, db, + dbuf_write_nofill_ready, NULL, dbuf_write_nofill_done, db, ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED | ZIO_FLAG_NODATA, &zb); } else { @@ -2766,7 +2806,7 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_ dr->dr_zio = arc_write(zio, os->os_spa, txg, db->db_blkptr, data, DBUF_IS_L2CACHEABLE(db), DBUF_IS_L2COMPRESSIBLE(db), &zp, dbuf_write_ready, - dbuf_write_done, db, ZIO_PRIORITY_ASYNC_WRITE, - ZIO_FLAG_MUSTSUCCEED, &zb); + dbuf_write_physdone, dbuf_write_done, db, + ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); } } Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 15:59:08 2014 (r260764) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 16:00:05 2014 (r260765) @@ -374,13 +374,11 @@ static int dmu_buf_hold_array_by_dnode(dnode_t *dn, uint64_t offset, uint64_t length, int read, void *tag, int *numbufsp, dmu_buf_t ***dbpp, uint32_t flags) { - dsl_pool_t *dp = NULL; dmu_buf_t **dbp; uint64_t blkid, nblks, i; uint32_t dbuf_flags; int err; zio_t *zio; - hrtime_t start; ASSERT(length <= DMU_MAX_ACCESS); @@ -408,9 +406,6 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn, } dbp = kmem_zalloc(sizeof (dmu_buf_t *) * nblks, KM_SLEEP); - if (dn->dn_objset->os_dsl_dataset) - dp = dn->dn_objset->os_dsl_dataset->ds_dir->dd_pool; - start = gethrtime(); zio = zio_root(dn->dn_objset->os_spa, NULL, NULL, ZIO_FLAG_CANFAIL); blkid = dbuf_whichblock(dn, offset); for (i = 0; i < nblks; i++) { @@ -434,9 +429,6 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn, /* wait for async i/o */ err = zio_wait(zio); - /* track read overhead when we are in sync context */ - if (dp && dsl_pool_sync_context(dp)) - dp->dp_read_overhead += gethrtime() - start; if (err) { dmu_buf_rele_array(dbp, nblks, tag); return (err); @@ -518,12 +510,22 @@ dmu_buf_rele_array(dmu_buf_t **dbp_fake, kmem_free(dbp, sizeof (dmu_buf_t *) * numbufs); } +/* + * Issue prefetch i/os for the given blocks. + * + * Note: The assumption is that we *know* these blocks will be needed + * almost immediately. Therefore, the prefetch i/os will be issued at + * ZIO_PRIORITY_SYNC_READ + * + * Note: indirect blocks and other metadata will be read synchronously, + * causing this function to block if they are not already cached. + */ void dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) { dnode_t *dn; uint64_t blkid; - int nblks, i, err; + int nblks, err; if (zfs_prefetch_disable) return; @@ -536,7 +538,7 @@ dmu_prefetch(objset_t *os, uint64_t obje rw_enter(&dn->dn_struct_rwlock, RW_READER); blkid = dbuf_whichblock(dn, object * sizeof (dnode_phys_t)); - dbuf_prefetch(dn, blkid); + dbuf_prefetch(dn, blkid, ZIO_PRIORITY_SYNC_READ); rw_exit(&dn->dn_struct_rwlock); return; } @@ -553,16 +555,16 @@ dmu_prefetch(objset_t *os, uint64_t obje rw_enter(&dn->dn_struct_rwlock, RW_READER); if (dn->dn_datablkshift) { int blkshift = dn->dn_datablkshift; - nblks = (P2ROUNDUP(offset+len, 1<> blkshift; + nblks = (P2ROUNDUP(offset + len, 1 << blkshift) - + P2ALIGN(offset, 1 << blkshift)) >> blkshift; } else { nblks = (offset < dn->dn_datablksz); } if (nblks != 0) { blkid = dbuf_whichblock(dn, offset); - for (i = 0; i < nblks; i++) - dbuf_prefetch(dn, blkid+i); + for (int i = 0; i < nblks; i++) + dbuf_prefetch(dn, blkid + i, ZIO_PRIORITY_SYNC_READ); } rw_exit(&dn->dn_struct_rwlock); @@ -1376,7 +1378,7 @@ dmu_sync_late_arrival(zio_t *pio, objset zio_nowait(zio_write(pio, os->os_spa, dmu_tx_get_txg(tx), zgd->zgd_bp, zgd->zgd_db->db_data, zgd->zgd_db->db_size, zp, - dmu_sync_late_arrival_ready, dmu_sync_late_arrival_done, dsa, + dmu_sync_late_arrival_ready, NULL, dmu_sync_late_arrival_done, dsa, ZIO_PRIORITY_SYNC_WRITE, ZIO_FLAG_CANFAIL, zb)); return (0); @@ -1516,8 +1518,9 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_s zio_nowait(arc_write(pio, os->os_spa, txg, bp, dr->dt.dl.dr_data, DBUF_IS_L2CACHEABLE(db), - DBUF_IS_L2COMPRESSIBLE(db), &zp, dmu_sync_ready, dmu_sync_done, - dsa, ZIO_PRIORITY_SYNC_WRITE, ZIO_FLAG_CANFAIL, &zb)); + DBUF_IS_L2COMPRESSIBLE(db), &zp, dmu_sync_ready, + NULL, dmu_sync_done, dsa, ZIO_PRIORITY_SYNC_WRITE, + ZIO_FLAG_CANFAIL, &zb)); return (0); } Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c Thu Jan 16 15:59:08 2014 (r260764) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c Thu Jan 16 16:00:05 2014 (r260765) @@ -1028,7 +1028,7 @@ dmu_objset_sync(objset_t *os, zio_t *pio zio = arc_write(pio, os->os_spa, tx->tx_txg, os->os_rootbp, os->os_phys_buf, DMU_OS_IS_L2CACHEABLE(os), DMU_OS_IS_L2COMPRESSIBLE(os), &zp, dmu_objset_write_ready, - dmu_objset_write_done, os, ZIO_PRIORITY_ASYNC_WRITE, + NULL, dmu_objset_write_done, os, ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); /* Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Thu Jan 16 15:59:08 2014 (r260764) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Thu Jan 16 16:00:05 2014 (r260765) @@ -54,6 +54,7 @@ dmu_tx_create_dd(dsl_dir_t *dd) offsetof(dmu_tx_hold_t, txh_node)); list_create(&tx->tx_callbacks, sizeof (dmu_tx_callback_t), offsetof(dmu_tx_callback_t, dcb_node)); + tx->tx_start = gethrtime(); #ifdef ZFS_DEBUG refcount_create(&tx->tx_space_written); refcount_create(&tx->tx_space_freed); @@ -597,13 +598,13 @@ dmu_tx_hold_free(dmu_tx_t *tx, uint64_t if (txh == NULL) return; dn = txh->txh_dnode; + dmu_tx_count_dnode(txh); if (off >= (dn->dn_maxblkid+1) * dn->dn_datablksz) return; if (len == DMU_OBJECT_END) len = (dn->dn_maxblkid+1) * dn->dn_datablksz - off; - dmu_tx_count_dnode(txh); /* * For i/o error checking, we read the first and last level-0 @@ -911,6 +912,162 @@ dmu_tx_dirty_buf(dmu_tx_t *tx, dmu_buf_i } #endif +/* + * If we can't do 10 iops, something is wrong. Let us go ahead + * and hit zfs_dirty_data_max. + */ +hrtime_t zfs_delay_max_ns = MSEC2NSEC(100); +int zfs_delay_resolution_ns = 100 * 1000; /* 100 microseconds */ + +/* + * We delay transactions when we've determined that the backend storage + * isn't able to accommodate the rate of incoming writes. + * + * If there is already a transaction waiting, we delay relative to when + * that transaction finishes waiting. This way the calculated min_time + * is independent of the number of threads concurrently executing + * transactions. + * + * If we are the only waiter, wait relative to when the transaction + * started, rather than the current time. This credits the transaction for + * "time already served", e.g. reading indirect blocks. + * + * The minimum time for a transaction to take is calculated as: + * min_time = scale * (dirty - min) / (max - dirty) + * min_time is then capped at zfs_delay_max_ns. + * + * The delay has two degrees of freedom that can be adjusted via tunables. + * The percentage of dirty data at which we start to delay is defined by + * zfs_delay_min_dirty_percent. This should typically be at or above + * zfs_vdev_async_write_active_max_dirty_percent so that we only start to + * delay after writing at full speed has failed to keep up with the incoming + * write rate. The scale of the curve is defined by zfs_delay_scale. Roughly + * speaking, this variable determines the amount of delay at the midpoint of + * the curve. + * + * delay + * 10ms +-------------------------------------------------------------*+ + * | *| + * 9ms + *+ + * | *| + * 8ms + *+ + * | * | + * 7ms + * + + * | * | + * 6ms + * + + * | * | + * 5ms + * + + * | * | + * 4ms + * + + * | * | + * 3ms + * + + * | * | + * 2ms + (midpoint) * + + * | | ** | + * 1ms + v *** + + * | zfs_delay_scale ----------> ******** | + * 0 +-------------------------------------*********----------------+ + * 0% <- zfs_dirty_data_max -> 100% + * + * Note that since the delay is added to the outstanding time remaining on the + * most recent transaction, the delay is effectively the inverse of IOPS. + * Here the midpoint of 500us translates to 2000 IOPS. The shape of the curve + * was chosen such that small changes in the amount of accumulated dirty data + * in the first 3/4 of the curve yield relatively small differences in the + * amount of delay. + * + * The effects can be easier to understand when the amount of delay is + * represented on a log scale: + * + * delay + * 100ms +-------------------------------------------------------------++ + * + + + * | | + * + *+ + * 10ms + *+ + * + ** + + * | (midpoint) ** | + * + | ** + + * 1ms + v **** + + * + zfs_delay_scale ----------> ***** + + * | **** | + * + **** + + * 100us + ** + + * + * + + * | * | + * + * + + * 10us + * + + * + + + * | | + * + + + * +--------------------------------------------------------------+ + * 0% <- zfs_dirty_data_max -> 100% + * + * Note here that only as the amount of dirty data approaches its limit does + * the delay start to increase rapidly. The goal of a properly tuned system + * should be to keep the amount of dirty data out of that range by first + * ensuring that the appropriate limits are set for the I/O scheduler to reach + * optimal throughput on the backend storage, and then by changing the value + * of zfs_delay_scale to increase the steepness of the curve. + */ +static void +dmu_tx_delay(dmu_tx_t *tx, uint64_t dirty) +{ + dsl_pool_t *dp = tx->tx_pool; + uint64_t delay_min_bytes = + zfs_dirty_data_max * zfs_delay_min_dirty_percent / 100; + hrtime_t wakeup, min_tx_time, now; + + if (dirty <= delay_min_bytes) + return; + + /* + * The caller has already waited until we are under the max. + * We make them pass us the amount of dirty data so we don't + * have to handle the case of it being >= the max, which could + * cause a divide-by-zero if it's == the max. + */ + ASSERT3U(dirty, <, zfs_dirty_data_max); + + now = gethrtime(); + min_tx_time = zfs_delay_scale * + (dirty - delay_min_bytes) / (zfs_dirty_data_max - dirty); + if (now > tx->tx_start + min_tx_time) + return; + + min_tx_time = MIN(min_tx_time, zfs_delay_max_ns); + + DTRACE_PROBE3(delay__mintime, dmu_tx_t *, tx, uint64_t, dirty, + uint64_t, min_tx_time); + + mutex_enter(&dp->dp_lock); + wakeup = MAX(tx->tx_start + min_tx_time, + dp->dp_last_wakeup + min_tx_time); + dp->dp_last_wakeup = wakeup; + mutex_exit(&dp->dp_lock); + +#ifdef _KERNEL +#ifdef illumos + mutex_enter(&curthread->t_delay_lock); + while (cv_timedwait_hires(&curthread->t_delay_cv, + &curthread->t_delay_lock, wakeup, zfs_delay_resolution_ns, + CALLOUT_FLAG_ABSOLUTE | CALLOUT_FLAG_ROUNDUP) > 0) + continue; + mutex_exit(&curthread->t_delay_lock); +#else + /* XXX High resolution callouts are not available */ + ASSERT(wakeup >= now); + pause("dmu_tx_delay", NSEC_TO_TICK(wakeup - now)); +#endif +#else + hrtime_t delta = wakeup - gethrtime(); + struct timespec ts; + ts.tv_sec = delta / NANOSEC; + ts.tv_nsec = delta % NANOSEC; + (void) nanosleep(&ts, NULL); +#endif +} + static int dmu_tx_try_assign(dmu_tx_t *tx, txg_how_t txg_how) { @@ -941,6 +1098,12 @@ dmu_tx_try_assign(dmu_tx_t *tx, txg_how_ return (SET_ERROR(ERESTART)); } + if (!tx->tx_waited && + dsl_pool_need_dirty_delay(tx->tx_pool)) { + tx->tx_wait_dirty = B_TRUE; + return (SET_ERROR(ERESTART)); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:04:21 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AB074701; Thu, 16 Jan 2014 16:04:21 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 957711A1D; Thu, 16 Jan 2014 16:04:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GG4LnA073576; Thu, 16 Jan 2014 16:04:21 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GG4LiS073572; Thu, 16 Jan 2014 16:04:21 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161604.s0GG4LiS073572@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:04:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260766 - in stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:04:21 -0000 Author: avg Date: Thu Jan 16 16:04:20 2014 New Revision: 260766 URL: http://svnweb.freebsd.org/changeset/base/260766 Log: MFC r258633: MFV r255256: 3954 metaslabs continue to load even after hitting zfs_mg_alloc_failure limit Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Thu Jan 16 16:00:05 2014 (r260765) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Thu Jan 16 16:04:20 2014 (r260766) @@ -58,7 +58,8 @@ int zfs_condense_pct = 200; /* * This value defines the number of allowed allocation failures per vdev. * If a device reaches this threshold in a given txg then we consider skipping - * allocations on that device. + * allocations on that device. The value of zfs_mg_alloc_failures is computed + * in zio_init() unless it has been overridden in /etc/system. */ int zfs_mg_alloc_failures = 0; @@ -69,6 +70,21 @@ SYSCTL_INT(_vfs_zfs, OID_AUTO, mg_alloc_ TUNABLE_INT("vfs.zfs.mg_alloc_failures", &zfs_mg_alloc_failures); /* + * The zfs_mg_noalloc_threshold defines which metaslab groups should + * be eligible for allocation. The value is defined as a percentage of + * a free space. Metaslab groups that have more free space than + * zfs_mg_noalloc_threshold are always eligible for allocations. Once + * a metaslab group's free space is less than or equal to the + * zfs_mg_noalloc_threshold the allocator will avoid allocating to that + * group unless all groups in the pool have reached zfs_mg_noalloc_threshold. + * Once all groups in the pool reach zfs_mg_noalloc_threshold then all + * groups are allowed to accept allocations. Gang blocks are always + * eligible to allocate on any metaslab group. The default value of 0 means + * no metaslab group will be excluded based on this criterion. + */ +int zfs_mg_noalloc_threshold = 0; + +/* * Metaslab debugging: when set, keeps all space maps in core to verify frees. */ static int metaslab_debug = 0; @@ -234,6 +250,53 @@ metaslab_compare(const void *x1, const v return (0); } +/* + * Update the allocatable flag and the metaslab group's capacity. + * The allocatable flag is set to true if the capacity is below + * the zfs_mg_noalloc_threshold. If a metaslab group transitions + * from allocatable to non-allocatable or vice versa then the metaslab + * group's class is updated to reflect the transition. + */ +static void +metaslab_group_alloc_update(metaslab_group_t *mg) +{ + vdev_t *vd = mg->mg_vd; + metaslab_class_t *mc = mg->mg_class; + vdev_stat_t *vs = &vd->vdev_stat; + boolean_t was_allocatable; + + ASSERT(vd == vd->vdev_top); + + mutex_enter(&mg->mg_lock); + was_allocatable = mg->mg_allocatable; + + mg->mg_free_capacity = ((vs->vs_space - vs->vs_alloc) * 100) / + (vs->vs_space + 1); + + mg->mg_allocatable = (mg->mg_free_capacity > zfs_mg_noalloc_threshold); + + /* + * The mc_alloc_groups maintains a count of the number of + * groups in this metaslab class that are still above the + * zfs_mg_noalloc_threshold. This is used by the allocating + * threads to determine if they should avoid allocations to + * a given group. The allocator will avoid allocations to a group + * if that group has reached or is below the zfs_mg_noalloc_threshold + * and there are still other groups that are above the threshold. + * When a group transitions from allocatable to non-allocatable or + * vice versa we update the metaslab class to reflect that change. + * When the mc_alloc_groups value drops to 0 that means that all + * groups have reached the zfs_mg_noalloc_threshold making all groups + * eligible for allocations. This effectively means that all devices + * are balanced again. + */ + if (was_allocatable && !mg->mg_allocatable) + mc->mc_alloc_groups--; + else if (!was_allocatable && mg->mg_allocatable) + mc->mc_alloc_groups++; + mutex_exit(&mg->mg_lock); +} + metaslab_group_t * metaslab_group_create(metaslab_class_t *mc, vdev_t *vd) { @@ -284,6 +347,7 @@ metaslab_group_activate(metaslab_group_t return; mg->mg_aliquot = metaslab_aliquot * MAX(1, mg->mg_vd->vdev_children); + metaslab_group_alloc_update(mg); if ((mgprev = mc->mc_rotor) == NULL) { mg->mg_prev = mg; @@ -369,6 +433,29 @@ metaslab_group_sort(metaslab_group_t *mg } /* + * Determine if a given metaslab group should skip allocations. A metaslab + * group should avoid allocations if its used capacity has crossed the + * zfs_mg_noalloc_threshold and there is at least one metaslab group + * that can still handle allocations. + */ +static boolean_t +metaslab_group_allocatable(metaslab_group_t *mg) +{ + vdev_t *vd = mg->mg_vd; + spa_t *spa = vd->vdev_spa; + metaslab_class_t *mc = mg->mg_class; + + /* + * A metaslab group is considered allocatable if its free capacity + * is greater than the set value of zfs_mg_noalloc_threshold, it's + * associated with a slog, or there are no other metaslab groups + * with free capacity greater than zfs_mg_noalloc_threshold. + */ + return (mg->mg_free_capacity > zfs_mg_noalloc_threshold || + mc != spa_normal_class(spa) || mc->mc_alloc_groups == 0); +} + +/* * ========================================================================== * Common allocator routines * ========================================================================== @@ -1317,6 +1404,8 @@ metaslab_sync_reassess(metaslab_group_t vdev_t *vd = mg->mg_vd; int64_t failures = mg->mg_alloc_failures; + metaslab_group_alloc_update(mg); + /* * Re-evaluate all metaslabs which have lower offsets than the * bonus area. @@ -1418,6 +1507,8 @@ metaslab_group_alloc(metaslab_group_t *m if (msp == NULL) return (-1ULL); + mutex_enter(&msp->ms_lock); + /* * If we've already reached the allowable number of failed * allocation attempts on this metaslab group then we @@ -1434,11 +1525,10 @@ metaslab_group_alloc(metaslab_group_t *m "asize %llu, failures %llu", spa_name(spa), mg->mg_vd->vdev_id, txg, mg, psize, asize, mg->mg_alloc_failures); + mutex_exit(&msp->ms_lock); return (-1ULL); } - mutex_enter(&msp->ms_lock); - /* * Ensure that the metaslab we have selected is still * capable of handling our request. It's possible that @@ -1591,6 +1681,21 @@ top: } else { allocatable = vdev_allocatable(vd); } + + /* + * Determine if the selected metaslab group is eligible + * for allocations. If we're ganging or have requested + * an allocation for the smallest gang block size + * then we don't want to avoid allocating to the this + * metaslab group. If we're in this condition we should + * try to allocate from any device possible so that we + * don't inadvertently return ENOSPC and suspend the pool + * even though space is still available. + */ + if (allocatable && CAN_FASTGANG(flags) && + psize > SPA_GANGBLOCKSIZE) + allocatable = metaslab_group_allocatable(mg); + if (!allocatable) goto next; Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h Thu Jan 16 16:00:05 2014 (r260765) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h Thu Jan 16 16:04:20 2014 (r260766) @@ -24,7 +24,7 @@ */ /* - * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ #ifndef _SYS_METASLAB_IMPL_H @@ -45,6 +45,7 @@ struct metaslab_class { metaslab_group_t *mc_rotor; space_map_ops_t *mc_ops; uint64_t mc_aliquot; + uint64_t mc_alloc_groups; /* # of allocatable groups */ uint64_t mc_alloc; /* total allocated space */ uint64_t mc_deferred; /* total deferred frees */ uint64_t mc_space; /* total space (alloc + free) */ @@ -57,6 +58,8 @@ struct metaslab_group { uint64_t mg_aliquot; uint64_t mg_bonus_area; uint64_t mg_alloc_failures; + boolean_t mg_allocatable; /* can we allocate? */ + uint64_t mg_free_capacity; /* percentage free */ int64_t mg_bias; int64_t mg_activation_count; metaslab_class_t *mg_class; Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 16:00:05 2014 (r260765) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 16:04:20 2014 (r260766) @@ -2418,7 +2418,7 @@ zio_alloc_zil(spa_t *spa, uint64_t txg, if (error) { error = metaslab_alloc(spa, spa_normal_class(spa), size, new_bp, 1, txg, old_bp, - METASLAB_HINTBP_AVOID | METASLAB_GANG_AVOID); + METASLAB_HINTBP_AVOID); } if (error == 0) { From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:04:37 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 98A4F905; Thu, 16 Jan 2014 16:04:37 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8383F1A22; Thu, 16 Jan 2014 16:04:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GG4bSu073656; Thu, 16 Jan 2014 16:04:37 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GG4aoZ073651; Thu, 16 Jan 2014 16:04:36 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161604.s0GG4aoZ073651@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:04:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260767 - in stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:04:37 -0000 Author: avg Date: Thu Jan 16 16:04:36 2014 New Revision: 260767 URL: http://svnweb.freebsd.org/changeset/base/260767 Log: MFC r258633: MFV r255256: 3954 metaslabs continue to load even after hitting zfs_mg_alloc_failure limit Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Thu Jan 16 16:04:20 2014 (r260766) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Thu Jan 16 16:04:36 2014 (r260767) @@ -58,7 +58,8 @@ int zfs_condense_pct = 200; /* * This value defines the number of allowed allocation failures per vdev. * If a device reaches this threshold in a given txg then we consider skipping - * allocations on that device. + * allocations on that device. The value of zfs_mg_alloc_failures is computed + * in zio_init() unless it has been overridden in /etc/system. */ int zfs_mg_alloc_failures = 0; @@ -69,6 +70,21 @@ SYSCTL_INT(_vfs_zfs, OID_AUTO, mg_alloc_ TUNABLE_INT("vfs.zfs.mg_alloc_failures", &zfs_mg_alloc_failures); /* + * The zfs_mg_noalloc_threshold defines which metaslab groups should + * be eligible for allocation. The value is defined as a percentage of + * a free space. Metaslab groups that have more free space than + * zfs_mg_noalloc_threshold are always eligible for allocations. Once + * a metaslab group's free space is less than or equal to the + * zfs_mg_noalloc_threshold the allocator will avoid allocating to that + * group unless all groups in the pool have reached zfs_mg_noalloc_threshold. + * Once all groups in the pool reach zfs_mg_noalloc_threshold then all + * groups are allowed to accept allocations. Gang blocks are always + * eligible to allocate on any metaslab group. The default value of 0 means + * no metaslab group will be excluded based on this criterion. + */ +int zfs_mg_noalloc_threshold = 0; + +/* * Metaslab debugging: when set, keeps all space maps in core to verify frees. */ static int metaslab_debug = 0; @@ -234,6 +250,53 @@ metaslab_compare(const void *x1, const v return (0); } +/* + * Update the allocatable flag and the metaslab group's capacity. + * The allocatable flag is set to true if the capacity is below + * the zfs_mg_noalloc_threshold. If a metaslab group transitions + * from allocatable to non-allocatable or vice versa then the metaslab + * group's class is updated to reflect the transition. + */ +static void +metaslab_group_alloc_update(metaslab_group_t *mg) +{ + vdev_t *vd = mg->mg_vd; + metaslab_class_t *mc = mg->mg_class; + vdev_stat_t *vs = &vd->vdev_stat; + boolean_t was_allocatable; + + ASSERT(vd == vd->vdev_top); + + mutex_enter(&mg->mg_lock); + was_allocatable = mg->mg_allocatable; + + mg->mg_free_capacity = ((vs->vs_space - vs->vs_alloc) * 100) / + (vs->vs_space + 1); + + mg->mg_allocatable = (mg->mg_free_capacity > zfs_mg_noalloc_threshold); + + /* + * The mc_alloc_groups maintains a count of the number of + * groups in this metaslab class that are still above the + * zfs_mg_noalloc_threshold. This is used by the allocating + * threads to determine if they should avoid allocations to + * a given group. The allocator will avoid allocations to a group + * if that group has reached or is below the zfs_mg_noalloc_threshold + * and there are still other groups that are above the threshold. + * When a group transitions from allocatable to non-allocatable or + * vice versa we update the metaslab class to reflect that change. + * When the mc_alloc_groups value drops to 0 that means that all + * groups have reached the zfs_mg_noalloc_threshold making all groups + * eligible for allocations. This effectively means that all devices + * are balanced again. + */ + if (was_allocatable && !mg->mg_allocatable) + mc->mc_alloc_groups--; + else if (!was_allocatable && mg->mg_allocatable) + mc->mc_alloc_groups++; + mutex_exit(&mg->mg_lock); +} + metaslab_group_t * metaslab_group_create(metaslab_class_t *mc, vdev_t *vd) { @@ -284,6 +347,7 @@ metaslab_group_activate(metaslab_group_t return; mg->mg_aliquot = metaslab_aliquot * MAX(1, mg->mg_vd->vdev_children); + metaslab_group_alloc_update(mg); if ((mgprev = mc->mc_rotor) == NULL) { mg->mg_prev = mg; @@ -369,6 +433,29 @@ metaslab_group_sort(metaslab_group_t *mg } /* + * Determine if a given metaslab group should skip allocations. A metaslab + * group should avoid allocations if its used capacity has crossed the + * zfs_mg_noalloc_threshold and there is at least one metaslab group + * that can still handle allocations. + */ +static boolean_t +metaslab_group_allocatable(metaslab_group_t *mg) +{ + vdev_t *vd = mg->mg_vd; + spa_t *spa = vd->vdev_spa; + metaslab_class_t *mc = mg->mg_class; + + /* + * A metaslab group is considered allocatable if its free capacity + * is greater than the set value of zfs_mg_noalloc_threshold, it's + * associated with a slog, or there are no other metaslab groups + * with free capacity greater than zfs_mg_noalloc_threshold. + */ + return (mg->mg_free_capacity > zfs_mg_noalloc_threshold || + mc != spa_normal_class(spa) || mc->mc_alloc_groups == 0); +} + +/* * ========================================================================== * Common allocator routines * ========================================================================== @@ -1317,6 +1404,8 @@ metaslab_sync_reassess(metaslab_group_t vdev_t *vd = mg->mg_vd; int64_t failures = mg->mg_alloc_failures; + metaslab_group_alloc_update(mg); + /* * Re-evaluate all metaslabs which have lower offsets than the * bonus area. @@ -1418,6 +1507,8 @@ metaslab_group_alloc(metaslab_group_t *m if (msp == NULL) return (-1ULL); + mutex_enter(&msp->ms_lock); + /* * If we've already reached the allowable number of failed * allocation attempts on this metaslab group then we @@ -1434,11 +1525,10 @@ metaslab_group_alloc(metaslab_group_t *m "asize %llu, failures %llu", spa_name(spa), mg->mg_vd->vdev_id, txg, mg, psize, asize, mg->mg_alloc_failures); + mutex_exit(&msp->ms_lock); return (-1ULL); } - mutex_enter(&msp->ms_lock); - /* * Ensure that the metaslab we have selected is still * capable of handling our request. It's possible that @@ -1591,6 +1681,21 @@ top: } else { allocatable = vdev_allocatable(vd); } + + /* + * Determine if the selected metaslab group is eligible + * for allocations. If we're ganging or have requested + * an allocation for the smallest gang block size + * then we don't want to avoid allocating to the this + * metaslab group. If we're in this condition we should + * try to allocate from any device possible so that we + * don't inadvertently return ENOSPC and suspend the pool + * even though space is still available. + */ + if (allocatable && CAN_FASTGANG(flags) && + psize > SPA_GANGBLOCKSIZE) + allocatable = metaslab_group_allocatable(mg); + if (!allocatable) goto next; Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h Thu Jan 16 16:04:20 2014 (r260766) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h Thu Jan 16 16:04:36 2014 (r260767) @@ -24,7 +24,7 @@ */ /* - * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ #ifndef _SYS_METASLAB_IMPL_H @@ -45,6 +45,7 @@ struct metaslab_class { metaslab_group_t *mc_rotor; space_map_ops_t *mc_ops; uint64_t mc_aliquot; + uint64_t mc_alloc_groups; /* # of allocatable groups */ uint64_t mc_alloc; /* total allocated space */ uint64_t mc_deferred; /* total deferred frees */ uint64_t mc_space; /* total space (alloc + free) */ @@ -57,6 +58,8 @@ struct metaslab_group { uint64_t mg_aliquot; uint64_t mg_bonus_area; uint64_t mg_alloc_failures; + boolean_t mg_allocatable; /* can we allocate? */ + uint64_t mg_free_capacity; /* percentage free */ int64_t mg_bias; int64_t mg_activation_count; metaslab_class_t *mg_class; Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 16:04:20 2014 (r260766) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 16:04:36 2014 (r260767) @@ -2417,7 +2417,7 @@ zio_alloc_zil(spa_t *spa, uint64_t txg, if (error) { error = metaslab_alloc(spa, spa_normal_class(spa), size, new_bp, 1, txg, old_bp, - METASLAB_HINTBP_AVOID | METASLAB_GANG_AVOID); + METASLAB_HINTBP_AVOID); } if (error == 0) { From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:05:22 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2BE22A41; Thu, 16 Jan 2014 16:05:22 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 10B251A2C; Thu, 16 Jan 2014 16:05:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GG5LkZ073828; Thu, 16 Jan 2014 16:05:21 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GG5LB7073825; Thu, 16 Jan 2014 16:05:21 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161605.s0GG5LB7073825@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:05:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260768 - in stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:05:22 -0000 Author: avg Date: Thu Jan 16 16:05:21 2014 New Revision: 260768 URL: http://svnweb.freebsd.org/changeset/base/260768 Log: MFC r258633: MFV r255256: 3954 metaslabs continue to load even after hitting zfs_mg_alloc_failure limit Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Thu Jan 16 16:04:36 2014 (r260767) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Thu Jan 16 16:05:21 2014 (r260768) @@ -65,7 +65,8 @@ int zfs_condense_pct = 200; /* * This value defines the number of allowed allocation failures per vdev. * If a device reaches this threshold in a given txg then we consider skipping - * allocations on that device. + * allocations on that device. The value of zfs_mg_alloc_failures is computed + * in zio_init() unless it has been overridden in /etc/system. */ int zfs_mg_alloc_failures = 0; TUNABLE_INT("vfs.zfs.mg_alloc_failures", &zfs_mg_alloc_failures); @@ -74,6 +75,21 @@ SYSCTL_INT(_vfs_zfs, OID_AUTO, mg_alloc_ "Number of allowed allocation failures per vdev"); /* + * The zfs_mg_noalloc_threshold defines which metaslab groups should + * be eligible for allocation. The value is defined as a percentage of + * a free space. Metaslab groups that have more free space than + * zfs_mg_noalloc_threshold are always eligible for allocations. Once + * a metaslab group's free space is less than or equal to the + * zfs_mg_noalloc_threshold the allocator will avoid allocating to that + * group unless all groups in the pool have reached zfs_mg_noalloc_threshold. + * Once all groups in the pool reach zfs_mg_noalloc_threshold then all + * groups are allowed to accept allocations. Gang blocks are always + * eligible to allocate on any metaslab group. The default value of 0 means + * no metaslab group will be excluded based on this criterion. + */ +int zfs_mg_noalloc_threshold = 0; + +/* * Metaslab debugging: when set, keeps all space maps in core to verify frees. */ static int metaslab_debug = 0; @@ -289,6 +305,53 @@ metaslab_compare(const void *x1, const v return (0); } +/* + * Update the allocatable flag and the metaslab group's capacity. + * The allocatable flag is set to true if the capacity is below + * the zfs_mg_noalloc_threshold. If a metaslab group transitions + * from allocatable to non-allocatable or vice versa then the metaslab + * group's class is updated to reflect the transition. + */ +static void +metaslab_group_alloc_update(metaslab_group_t *mg) +{ + vdev_t *vd = mg->mg_vd; + metaslab_class_t *mc = mg->mg_class; + vdev_stat_t *vs = &vd->vdev_stat; + boolean_t was_allocatable; + + ASSERT(vd == vd->vdev_top); + + mutex_enter(&mg->mg_lock); + was_allocatable = mg->mg_allocatable; + + mg->mg_free_capacity = ((vs->vs_space - vs->vs_alloc) * 100) / + (vs->vs_space + 1); + + mg->mg_allocatable = (mg->mg_free_capacity > zfs_mg_noalloc_threshold); + + /* + * The mc_alloc_groups maintains a count of the number of + * groups in this metaslab class that are still above the + * zfs_mg_noalloc_threshold. This is used by the allocating + * threads to determine if they should avoid allocations to + * a given group. The allocator will avoid allocations to a group + * if that group has reached or is below the zfs_mg_noalloc_threshold + * and there are still other groups that are above the threshold. + * When a group transitions from allocatable to non-allocatable or + * vice versa we update the metaslab class to reflect that change. + * When the mc_alloc_groups value drops to 0 that means that all + * groups have reached the zfs_mg_noalloc_threshold making all groups + * eligible for allocations. This effectively means that all devices + * are balanced again. + */ + if (was_allocatable && !mg->mg_allocatable) + mc->mc_alloc_groups--; + else if (!was_allocatable && mg->mg_allocatable) + mc->mc_alloc_groups++; + mutex_exit(&mg->mg_lock); +} + metaslab_group_t * metaslab_group_create(metaslab_class_t *mc, vdev_t *vd) { @@ -339,6 +402,7 @@ metaslab_group_activate(metaslab_group_t return; mg->mg_aliquot = metaslab_aliquot * MAX(1, mg->mg_vd->vdev_children); + metaslab_group_alloc_update(mg); if ((mgprev = mc->mc_rotor) == NULL) { mg->mg_prev = mg; @@ -426,6 +490,29 @@ metaslab_group_sort(metaslab_group_t *mg } /* + * Determine if a given metaslab group should skip allocations. A metaslab + * group should avoid allocations if its used capacity has crossed the + * zfs_mg_noalloc_threshold and there is at least one metaslab group + * that can still handle allocations. + */ +static boolean_t +metaslab_group_allocatable(metaslab_group_t *mg) +{ + vdev_t *vd = mg->mg_vd; + spa_t *spa = vd->vdev_spa; + metaslab_class_t *mc = mg->mg_class; + + /* + * A metaslab group is considered allocatable if its free capacity + * is greater than the set value of zfs_mg_noalloc_threshold, it's + * associated with a slog, or there are no other metaslab groups + * with free capacity greater than zfs_mg_noalloc_threshold. + */ + return (mg->mg_free_capacity > zfs_mg_noalloc_threshold || + mc != spa_normal_class(spa) || mc->mc_alloc_groups == 0); +} + +/* * ========================================================================== * Common allocator routines * ========================================================================== @@ -1374,6 +1461,8 @@ metaslab_sync_reassess(metaslab_group_t vdev_t *vd = mg->mg_vd; int64_t failures = mg->mg_alloc_failures; + metaslab_group_alloc_update(mg); + /* * Re-evaluate all metaslabs which have lower offsets than the * bonus area. @@ -1475,6 +1564,8 @@ metaslab_group_alloc(metaslab_group_t *m if (msp == NULL) return (-1ULL); + mutex_enter(&msp->ms_lock); + /* * If we've already reached the allowable number of failed * allocation attempts on this metaslab group then we @@ -1491,11 +1582,10 @@ metaslab_group_alloc(metaslab_group_t *m "asize %llu, failures %llu", spa_name(spa), mg->mg_vd->vdev_id, txg, mg, psize, asize, mg->mg_alloc_failures); + mutex_exit(&msp->ms_lock); return (-1ULL); } - mutex_enter(&msp->ms_lock); - /* * Ensure that the metaslab we have selected is still * capable of handling our request. It's possible that @@ -1648,6 +1738,21 @@ top: } else { allocatable = vdev_allocatable(vd); } + + /* + * Determine if the selected metaslab group is eligible + * for allocations. If we're ganging or have requested + * an allocation for the smallest gang block size + * then we don't want to avoid allocating to the this + * metaslab group. If we're in this condition we should + * try to allocate from any device possible so that we + * don't inadvertently return ENOSPC and suspend the pool + * even though space is still available. + */ + if (allocatable && CAN_FASTGANG(flags) && + psize > SPA_GANGBLOCKSIZE) + allocatable = metaslab_group_allocatable(mg); + if (!allocatable) goto next; Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h Thu Jan 16 16:04:36 2014 (r260767) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h Thu Jan 16 16:05:21 2014 (r260768) @@ -24,7 +24,7 @@ */ /* - * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ #ifndef _SYS_METASLAB_IMPL_H @@ -45,6 +45,7 @@ struct metaslab_class { metaslab_group_t *mc_rotor; space_map_ops_t *mc_ops; uint64_t mc_aliquot; + uint64_t mc_alloc_groups; /* # of allocatable groups */ uint64_t mc_alloc; /* total allocated space */ uint64_t mc_deferred; /* total deferred frees */ uint64_t mc_space; /* total space (alloc + free) */ @@ -58,6 +59,8 @@ struct metaslab_group { uint64_t mg_aliquot; uint64_t mg_bonus_area; uint64_t mg_alloc_failures; + boolean_t mg_allocatable; /* can we allocate? */ + uint64_t mg_free_capacity; /* percentage free */ int64_t mg_bias; int64_t mg_activation_count; metaslab_class_t *mg_class; Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 16:04:36 2014 (r260767) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Jan 16 16:05:21 2014 (r260768) @@ -2458,7 +2458,7 @@ zio_alloc_zil(spa_t *spa, uint64_t txg, if (error) { error = metaslab_alloc(spa, spa_normal_class(spa), size, new_bp, 1, txg, old_bp, - METASLAB_HINTBP_AVOID | METASLAB_GANG_AVOID); + METASLAB_HINTBP_AVOID); } if (error == 0) { From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:08:00 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8DA83BA2; Thu, 16 Jan 2014 16:08:00 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5E6ED1A48; Thu, 16 Jan 2014 16:08:00 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GG80K8074294; Thu, 16 Jan 2014 16:08:00 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GG7x11074281; Thu, 16 Jan 2014 16:07:59 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161607.s0GG7x11074281@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:07:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260769 - stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:08:00 -0000 Author: avg Date: Thu Jan 16 16:07:59 2014 New Revision: 260769 URL: http://svnweb.freebsd.org/changeset/base/260769 Log: MFC r258634: MFV r258376: 3964 L2ARC should always compress metadata buffers Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h Thu Jan 16 16:05:21 2014 (r260768) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h Thu Jan 16 16:07:59 2014 (r260769) @@ -329,7 +329,8 @@ boolean_t dbuf_is_metadata(dmu_buf_impl_ ((_db)->db_objset->os_secondary_cache == ZFS_CACHE_METADATA))) #define DBUF_IS_L2COMPRESSIBLE(_db) \ - ((_db)->db_objset->os_compress != ZIO_COMPRESS_OFF) + ((_db)->db_objset->os_compress != ZIO_COMPRESS_OFF || \ + (dbuf_is_metadata(_db) && zfs_mdcomp_disable == B_FALSE)) #ifdef ZFS_DEBUG Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 16:05:21 2014 (r260768) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 16:07:59 2014 (r260769) @@ -24,6 +24,7 @@ * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. + * Copyright 2013 DEY Storage Systems, Inc. */ /* Portions Copyright 2010 Robert Milkowski */ @@ -807,6 +808,8 @@ int dmu_diff(const char *tosnap_name, co #define ZFS_CRC64_POLY 0xC96C5795D7870F42ULL /* ECMA-182, reflected form */ extern uint64_t zfs_crc64_table[256]; +extern int zfs_mdcomp_disable; + #ifdef __cplusplus } #endif Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h Thu Jan 16 16:05:21 2014 (r260768) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h Thu Jan 16 16:07:59 2014 (r260769) @@ -130,7 +130,7 @@ struct objset { ((os)->os_secondary_cache == ZFS_CACHE_ALL || \ (os)->os_secondary_cache == ZFS_CACHE_METADATA) -#define DMU_OS_IS_L2COMPRESSIBLE(os) ((os)->os_compress != ZIO_COMPRESS_OFF) +#define DMU_OS_IS_L2COMPRESSIBLE(os) (zfs_mdcomp_disable == B_FALSE) /* called from zpl */ int dmu_objset_hold(const char *name, void *tag, objset_t **osp); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:08:15 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3E569CD1; Thu, 16 Jan 2014 16:08:15 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1CD891A4C; Thu, 16 Jan 2014 16:08:15 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GG8EgD074380; Thu, 16 Jan 2014 16:08:14 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GG8EKZ074377; Thu, 16 Jan 2014 16:08:14 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161608.s0GG8EKZ074377@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:08:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260770 - stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:08:15 -0000 Author: avg Date: Thu Jan 16 16:08:14 2014 New Revision: 260770 URL: http://svnweb.freebsd.org/changeset/base/260770 Log: MFC r258634: MFV r258376: 3964 L2ARC should always compress metadata buffers Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h Thu Jan 16 16:07:59 2014 (r260769) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h Thu Jan 16 16:08:14 2014 (r260770) @@ -329,7 +329,8 @@ boolean_t dbuf_is_metadata(dmu_buf_impl_ ((_db)->db_objset->os_secondary_cache == ZFS_CACHE_METADATA))) #define DBUF_IS_L2COMPRESSIBLE(_db) \ - ((_db)->db_objset->os_compress != ZIO_COMPRESS_OFF) + ((_db)->db_objset->os_compress != ZIO_COMPRESS_OFF || \ + (dbuf_is_metadata(_db) && zfs_mdcomp_disable == B_FALSE)) #ifdef ZFS_DEBUG Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 16:07:59 2014 (r260769) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 16:08:14 2014 (r260770) @@ -24,6 +24,7 @@ * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. + * Copyright 2013 DEY Storage Systems, Inc. */ /* Portions Copyright 2010 Robert Milkowski */ @@ -807,6 +808,8 @@ int dmu_diff(const char *tosnap_name, co #define ZFS_CRC64_POLY 0xC96C5795D7870F42ULL /* ECMA-182, reflected form */ extern uint64_t zfs_crc64_table[256]; +extern int zfs_mdcomp_disable; + #ifdef __cplusplus } #endif Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h Thu Jan 16 16:07:59 2014 (r260769) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h Thu Jan 16 16:08:14 2014 (r260770) @@ -130,7 +130,7 @@ struct objset { ((os)->os_secondary_cache == ZFS_CACHE_ALL || \ (os)->os_secondary_cache == ZFS_CACHE_METADATA) -#define DMU_OS_IS_L2COMPRESSIBLE(os) ((os)->os_compress != ZIO_COMPRESS_OFF) +#define DMU_OS_IS_L2COMPRESSIBLE(os) (zfs_mdcomp_disable == B_FALSE) /* called from zpl */ int dmu_objset_hold(const char *name, void *tag, objset_t **osp); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:08:27 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CB893E00; Thu, 16 Jan 2014 16:08:27 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id ACE7A1A50; Thu, 16 Jan 2014 16:08:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GG8Rjs074449; Thu, 16 Jan 2014 16:08:27 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GG8Ri1074445; Thu, 16 Jan 2014 16:08:27 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161608.s0GG8Ri1074445@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:08:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260771 - stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:08:28 -0000 Author: avg Date: Thu Jan 16 16:08:26 2014 New Revision: 260771 URL: http://svnweb.freebsd.org/changeset/base/260771 Log: MFC r258634: MFV r258376: 3964 L2ARC should always compress metadata buffers Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h Thu Jan 16 16:08:14 2014 (r260770) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h Thu Jan 16 16:08:26 2014 (r260771) @@ -329,7 +329,8 @@ boolean_t dbuf_is_metadata(dmu_buf_impl_ ((_db)->db_objset->os_secondary_cache == ZFS_CACHE_METADATA))) #define DBUF_IS_L2COMPRESSIBLE(_db) \ - ((_db)->db_objset->os_compress != ZIO_COMPRESS_OFF) + ((_db)->db_objset->os_compress != ZIO_COMPRESS_OFF || \ + (dbuf_is_metadata(_db) && zfs_mdcomp_disable == B_FALSE)) #ifdef ZFS_DEBUG Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 16:08:14 2014 (r260770) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 16:08:26 2014 (r260771) @@ -24,6 +24,7 @@ * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. + * Copyright 2013 DEY Storage Systems, Inc. */ /* Portions Copyright 2010 Robert Milkowski */ @@ -807,6 +808,8 @@ int dmu_diff(const char *tosnap_name, co #define ZFS_CRC64_POLY 0xC96C5795D7870F42ULL /* ECMA-182, reflected form */ extern uint64_t zfs_crc64_table[256]; +extern int zfs_mdcomp_disable; + #ifdef __cplusplus } #endif Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h Thu Jan 16 16:08:14 2014 (r260770) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h Thu Jan 16 16:08:26 2014 (r260771) @@ -130,7 +130,7 @@ struct objset { ((os)->os_secondary_cache == ZFS_CACHE_ALL || \ (os)->os_secondary_cache == ZFS_CACHE_METADATA) -#define DMU_OS_IS_L2COMPRESSIBLE(os) ((os)->os_compress != ZIO_COMPRESS_OFF) +#define DMU_OS_IS_L2COMPRESSIBLE(os) (zfs_mdcomp_disable == B_FALSE) /* called from zpl */ int dmu_objset_hold(const char *name, void *tag, objset_t **osp); From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:12:10 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0D8351BE; Thu, 16 Jan 2014 16:12:10 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id ECC151AD3; Thu, 16 Jan 2014 16:12:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GGC921077797; Thu, 16 Jan 2014 16:12:09 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GGC9Pv077791; Thu, 16 Jan 2014 16:12:09 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401161612.s0GGC9Pv077791@svn.freebsd.org> From: Glen Barber Date: Thu, 16 Jan 2014 16:12:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260772 - in head/release: . amd64 i386 pkg_repos scripts X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:12:10 -0000 Author: gjb Date: Thu Jan 16 16:12:09 2014 New Revision: 260772 URL: http://svnweb.freebsd.org/changeset/base/260772 Log: Update the pkg-stage target to be more compatible with pkg-1.2: - Add a release-dvd.conf pkg(8) configuration file to override the default FreeBSD.conf configuration. - Remove architecture-specific pkg-stage.conf files, consolidate, and move their contents to scripts/pkg-stage.sh. - Use 'pkg -vv' to determine the ABI, which is used as the cache directory. Prior to these changes, it would be possible for pkg-stage to fetch conflicting binary packages from multiple repositories. Tested against: head@r260522, stable/10@r260522 MFC after: 3 days X-Insta-MFC: possibly Sponsored by: The FreeBSD Foundation Added: head/release/pkg_repos/ head/release/pkg_repos/release-dvd.conf (contents, props changed) Deleted: head/release/amd64/pkg-stage.conf head/release/i386/pkg-stage.conf Modified: head/release/Makefile head/release/scripts/pkg-stage.sh Modified: head/release/Makefile ============================================================================== --- head/release/Makefile Thu Jan 16 16:08:26 2014 (r260771) +++ head/release/Makefile Thu Jan 16 16:12:09 2014 (r260772) @@ -224,9 +224,9 @@ packagesystem: base.txz kernel.txz ${EXT touch ${.TARGET} pkg-stage: -.if !defined(NOPKG) && exists(${.CURDIR}/${TARGET}/pkg-stage.conf) - sh ${.CURDIR}/scripts/pkg-stage.sh ${.CURDIR}/${TARGET}/pkg-stage.conf \ - ${REVISION} +.if !defined(NOPKG) + env REPOS_DIR=${.CURDIR}/pkg_repos/ \ + sh ${.CURDIR}/scripts/pkg-stage.sh mkdir -p ${.OBJDIR}/dvd/packages/repos/ cp ${.CURDIR}/scripts/FreeBSD_install_cdrom.conf \ ${.OBJDIR}/dvd/packages/repos/ Added: head/release/pkg_repos/release-dvd.conf ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/release/pkg_repos/release-dvd.conf Thu Jan 16 16:12:09 2014 (r260772) @@ -0,0 +1,8 @@ +# $FreeBSD$ +release: { + url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest", + mirror_type: "srv", + signature_type: "fingerprints", + fingerprints: "/usr/share/keys/pkg", + enabled: yes +} Modified: head/release/scripts/pkg-stage.sh ============================================================================== --- head/release/scripts/pkg-stage.sh Thu Jan 16 16:08:26 2014 (r260771) +++ head/release/scripts/pkg-stage.sh Thu Jan 16 16:12:09 2014 (r260772) @@ -5,24 +5,31 @@ set -e -usage() { - echo "$(basename ${0}) /path/to/pkg-stage.conf revision" - exit 1 -} - -if [ ! -e "${1}" ]; then - echo "Configuration file not specified." - echo - usage -fi - -if [ "$#" -lt 2 ]; then - usage -fi - -# Source config file for this architecture. -REVISION="${2}" -. "${1}" || exit 1 +export ASSUME_ALWAYS_YES=1 +export PKG_DBDIR="/tmp/pkg" +export PERMISSIVE="YES" +export REPO_AUTOUPDATE="NO" +export PKGCMD="/usr/sbin/pkg -d" + +DVD_PACKAGES="archivers/unzip +devel/subversion +devel/subversion-static +emulators/linux_base-f10 +misc/freebsd-doc-all +net/mpd5 +net/rsync +ports-mgmt/pkg +ports-mgmt/portmaster +shells/bash +shells/zsh +security/sudo +sysutils/screen +www/firefox +www/links +x11-drivers/xf86-video-vmware +x11/gnome2 +x11/kde4 +x11/xorg" # If NOPORTS is set for the release, do not attempt to build pkg(8). if [ ! -f /usr/ports/Makefile ]; then @@ -33,8 +40,13 @@ if [ ! -x /usr/local/sbin/pkg ]; then /usr/bin/make -C /usr/ports/ports-mgmt/pkg install clean fi +export PKG_ABI=$(pkg -vv | grep ^ABI | awk '{print $3}') +export PKG_CACHEDIR="dvd/packages/${PKG_ABI}" + /bin/mkdir -p ${PKG_CACHEDIR} +# Print pkg(8) information to make debugging easier. +${PKGCMD} -vv ${PKGCMD} update -f ${PKGCMD} fetch -d ${DVD_PACKAGES} From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:13:22 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0588D31A; Thu, 16 Jan 2014 16:13:22 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E52BC1AE6; Thu, 16 Jan 2014 16:13:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GGDL1Y078030; Thu, 16 Jan 2014 16:13:21 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GGDLoH078029; Thu, 16 Jan 2014 16:13:21 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161613.s0GGDLoH078029@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:13:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260773 - stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:13:22 -0000 Author: avg Date: Thu Jan 16 16:13:21 2014 New Revision: 260773 URL: http://svnweb.freebsd.org/changeset/base/260773 Log: MFC r258739: zfs mappedread_sf: assert that a page is never partially valid Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:12:09 2014 (r260772) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:13:21 2014 (r260773) @@ -580,8 +580,10 @@ mappedread_sf(vnode_t *vp, int nbytes, u vm_page_activate(pp); } vm_page_unlock(pp); - } else + } else { + ASSERT3U(pp->valid, ==, VM_PAGE_BITS_ALL); vm_page_sunbusy(pp); + } if (error) break; uio->uio_resid -= bytes; From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:13:33 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 35780406; Thu, 16 Jan 2014 16:13:33 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 21AAD1AEB; Thu, 16 Jan 2014 16:13:33 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GGDXoj078098; Thu, 16 Jan 2014 16:13:33 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GGDWc3078097; Thu, 16 Jan 2014 16:13:32 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161613.s0GGDWc3078097@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:13:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260774 - stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:13:33 -0000 Author: avg Date: Thu Jan 16 16:13:32 2014 New Revision: 260774 URL: http://svnweb.freebsd.org/changeset/base/260774 Log: MFC r258739: zfs mappedread_sf: assert that a page is never partially valid Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:13:21 2014 (r260773) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:13:32 2014 (r260774) @@ -572,6 +572,8 @@ mappedread_sf(vnode_t *vp, int nbytes, u vm_page_activate(pp); } vm_page_unlock(pp); + } else { + ASSERT3U(pp->valid, ==, VM_PAGE_BITS_ALL); } if (error) break; From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:13:44 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F0AC759C; Thu, 16 Jan 2014 16:13:44 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DBB4A1AF4; Thu, 16 Jan 2014 16:13:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GGDi9J078163; Thu, 16 Jan 2014 16:13:44 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GGDib8078162; Thu, 16 Jan 2014 16:13:44 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161613.s0GGDib8078162@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:13:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260775 - stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:13:45 -0000 Author: avg Date: Thu Jan 16 16:13:44 2014 New Revision: 260775 URL: http://svnweb.freebsd.org/changeset/base/260775 Log: MFC r258739: zfs mappedread_sf: assert that a page is never partially valid Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:13:32 2014 (r260774) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:13:44 2014 (r260775) @@ -567,7 +567,8 @@ again: pp->valid = VM_PAGE_BITS_ALL; vm_page_activate(pp); } - vm_page_unlock_queues(); + } else { + ASSERT3U(pp->valid, ==, VM_PAGE_BITS_ALL); } if (error) break; From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:15:39 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1D38F811; Thu, 16 Jan 2014 16:15:39 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 077E71B11; Thu, 16 Jan 2014 16:15:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GGFc8Z078634; Thu, 16 Jan 2014 16:15:38 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GGFc4e078629; Thu, 16 Jan 2014 16:15:38 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161615.s0GGFc4e078629@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:15:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260776 - stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:15:39 -0000 Author: avg Date: Thu Jan 16 16:15:38 2014 New Revision: 260776 URL: http://svnweb.freebsd.org/changeset/base/260776 Log: MFC r258720: MFV r258665: 4347 ZPL can use dmu_tx_assign(TXG_WAIT) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c Thu Jan 16 16:13:44 2014 (r260775) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c Thu Jan 16 16:15:38 2014 (r260776) @@ -951,7 +951,6 @@ zfs_make_xattrdir(znode_t *zp, vattr_t * return (SET_ERROR(EDQUOT)); } -top: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_sa_create(tx, acl_ids.z_aclp->z_acl_bytes + ZFS_SA_BASE_ATTR_SIZE); @@ -960,13 +959,8 @@ top: fuid_dirtied = zfsvfs->z_fuid_dirty; if (fuid_dirtied) zfs_fuid_txhold(zfsvfs, tx); - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto top; - } zfs_acl_ids_free(&acl_ids); dmu_tx_abort(tx); return (error); Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:13:44 2014 (r260775) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:15:38 2014 (r260776) @@ -107,11 +107,18 @@ * (3) All range locks must be grabbed before calling dmu_tx_assign(), * as they can span dmu_tx_assign() calls. * - * (4) Always pass TXG_NOWAIT as the second argument to dmu_tx_assign(). - * This is critical because we don't want to block while holding locks. - * Note, in particular, that if a lock is sometimes acquired before - * the tx assigns, and sometimes after (e.g. z_lock), then failing to - * use a non-blocking assign can deadlock the system. The scenario: + * (4) If ZPL locks are held, pass TXG_NOWAIT as the second argument to + * dmu_tx_assign(). This is critical because we don't want to block + * while holding locks. + * + * If no ZPL locks are held (aside from ZFS_ENTER()), use TXG_WAIT. This + * reduces lock contention and CPU usage when we must wait (note that if + * throughput is constrained by the storage, nearly every transaction + * must wait). + * + * Note, in particular, that if a lock is sometimes acquired before + * the tx assigns, and sometimes after (e.g. z_lock), then failing + * to use a non-blocking assign can deadlock the system. The scenario: * * Thread A has grabbed a lock before calling dmu_tx_assign(). * Thread B is in an already-assigned tx, and blocks for this lock. @@ -970,7 +977,6 @@ zfs_write(vnode_t *vp, uio_t *uio, int i while (n > 0) { abuf = NULL; woff = uio->uio_loffset; -again: if (zfs_owner_overquota(zfsvfs, zp, B_FALSE) || zfs_owner_overquota(zfsvfs, zp, B_TRUE)) { if (abuf != NULL) @@ -1022,13 +1028,8 @@ again: dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); dmu_tx_hold_write(tx, zp->z_id, woff, MIN(n, max_blksz)); zfs_sa_upgrade_txholds(tx, zp); - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto again; - } dmu_tx_abort(tx); if (abuf != NULL) dmu_return_arcbuf(abuf); @@ -3412,12 +3413,9 @@ top: zfs_sa_upgrade_txholds(tx, zp); - err = dmu_tx_assign(tx, TXG_NOWAIT); - if (err) { - if (err == ERESTART) - dmu_tx_wait(tx); + err = dmu_tx_assign(tx, TXG_WAIT); + if (err) goto out; - } count = 0; /* @@ -4525,19 +4523,13 @@ zfs_putapage(vnode_t *vp, page_t *pp, u_ err = SET_ERROR(EDQUOT); goto out; } -top: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_write(tx, zp->z_id, off, len); dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); zfs_sa_upgrade_txholds(tx, zp); - err = dmu_tx_assign(tx, TXG_NOWAIT); + err = dmu_tx_assign(tx, TXG_WAIT); if (err != 0) { - if (err == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto top; - } dmu_tx_abort(tx); goto out; } Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jan 16 16:13:44 2014 (r260775) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jan 16 16:15:38 2014 (r260776) @@ -1536,7 +1536,6 @@ zfs_extend(znode_t *zp, uint64_t end) zfs_range_unlock(rl); return (0); } -top: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); zfs_sa_upgrade_txholds(tx, zp); @@ -1556,13 +1555,8 @@ top: newblksz = 0; } - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto top; - } dmu_tx_abort(tx); zfs_range_unlock(rl); return (error); @@ -1670,17 +1664,11 @@ zfs_trunc(znode_t *zp, uint64_t end) zfs_range_unlock(rl); return (error); } -top: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); zfs_sa_upgrade_txholds(tx, zp); - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto top; - } dmu_tx_abort(tx); zfs_range_unlock(rl); return (error); @@ -1771,13 +1759,8 @@ log: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); zfs_sa_upgrade_txholds(tx, zp); - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto log; - } dmu_tx_abort(tx); return (error); } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:15:49 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 43094938; Thu, 16 Jan 2014 16:15:49 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2E72C1B13; Thu, 16 Jan 2014 16:15:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GGFni5078758; Thu, 16 Jan 2014 16:15:49 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GGFmDJ078750; Thu, 16 Jan 2014 16:15:48 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161615.s0GGFmDJ078750@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:15:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260777 - stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:15:49 -0000 Author: avg Date: Thu Jan 16 16:15:48 2014 New Revision: 260777 URL: http://svnweb.freebsd.org/changeset/base/260777 Log: MFC r258720: MFV r258665: 4347 ZPL can use dmu_tx_assign(TXG_WAIT) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c Thu Jan 16 16:15:38 2014 (r260776) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c Thu Jan 16 16:15:48 2014 (r260777) @@ -951,7 +951,6 @@ zfs_make_xattrdir(znode_t *zp, vattr_t * return (SET_ERROR(EDQUOT)); } -top: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_sa_create(tx, acl_ids.z_aclp->z_acl_bytes + ZFS_SA_BASE_ATTR_SIZE); @@ -960,13 +959,8 @@ top: fuid_dirtied = zfsvfs->z_fuid_dirty; if (fuid_dirtied) zfs_fuid_txhold(zfsvfs, tx); - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto top; - } zfs_acl_ids_free(&acl_ids); dmu_tx_abort(tx); return (error); Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:15:38 2014 (r260776) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:15:48 2014 (r260777) @@ -104,11 +104,18 @@ * (3) All range locks must be grabbed before calling dmu_tx_assign(), * as they can span dmu_tx_assign() calls. * - * (4) Always pass TXG_NOWAIT as the second argument to dmu_tx_assign(). - * This is critical because we don't want to block while holding locks. - * Note, in particular, that if a lock is sometimes acquired before - * the tx assigns, and sometimes after (e.g. z_lock), then failing to - * use a non-blocking assign can deadlock the system. The scenario: + * (4) If ZPL locks are held, pass TXG_NOWAIT as the second argument to + * dmu_tx_assign(). This is critical because we don't want to block + * while holding locks. + * + * If no ZPL locks are held (aside from ZFS_ENTER()), use TXG_WAIT. This + * reduces lock contention and CPU usage when we must wait (note that if + * throughput is constrained by the storage, nearly every transaction + * must wait). + * + * Note, in particular, that if a lock is sometimes acquired before + * the tx assigns, and sometimes after (e.g. z_lock), then failing + * to use a non-blocking assign can deadlock the system. The scenario: * * Thread A has grabbed a lock before calling dmu_tx_assign(). * Thread B is in an already-assigned tx, and blocks for this lock. @@ -961,7 +968,6 @@ zfs_write(vnode_t *vp, uio_t *uio, int i while (n > 0) { abuf = NULL; woff = uio->uio_loffset; -again: if (zfs_owner_overquota(zfsvfs, zp, B_FALSE) || zfs_owner_overquota(zfsvfs, zp, B_TRUE)) { if (abuf != NULL) @@ -1013,13 +1019,8 @@ again: dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); dmu_tx_hold_write(tx, zp->z_id, woff, MIN(n, max_blksz)); zfs_sa_upgrade_txholds(tx, zp); - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto again; - } dmu_tx_abort(tx); if (abuf != NULL) dmu_return_arcbuf(abuf); @@ -3406,12 +3407,9 @@ top: zfs_sa_upgrade_txholds(tx, zp); - err = dmu_tx_assign(tx, TXG_NOWAIT); - if (err) { - if (err == ERESTART) - dmu_tx_wait(tx); + err = dmu_tx_assign(tx, TXG_WAIT); + if (err) goto out; - } count = 0; /* @@ -4507,19 +4505,13 @@ zfs_putapage(vnode_t *vp, page_t *pp, u_ err = SET_ERROR(EDQUOT); goto out; } -top: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_write(tx, zp->z_id, off, len); dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); zfs_sa_upgrade_txholds(tx, zp); - err = dmu_tx_assign(tx, TXG_NOWAIT); + err = dmu_tx_assign(tx, TXG_WAIT); if (err != 0) { - if (err == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto top; - } dmu_tx_abort(tx); goto out; } Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jan 16 16:15:38 2014 (r260776) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jan 16 16:15:48 2014 (r260777) @@ -1536,7 +1536,6 @@ zfs_extend(znode_t *zp, uint64_t end) zfs_range_unlock(rl); return (0); } -top: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); zfs_sa_upgrade_txholds(tx, zp); @@ -1556,13 +1555,8 @@ top: newblksz = 0; } - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto top; - } dmu_tx_abort(tx); zfs_range_unlock(rl); return (error); @@ -1670,17 +1664,11 @@ zfs_trunc(znode_t *zp, uint64_t end) zfs_range_unlock(rl); return (error); } -top: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); zfs_sa_upgrade_txholds(tx, zp); - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto top; - } dmu_tx_abort(tx); zfs_range_unlock(rl); return (error); @@ -1771,13 +1759,8 @@ log: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); zfs_sa_upgrade_txholds(tx, zp); - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto log; - } dmu_tx_abort(tx); return (error); } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:15:58 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E56A9B30; Thu, 16 Jan 2014 16:15:57 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D15441B15; Thu, 16 Jan 2014 16:15:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GGFvBW078816; Thu, 16 Jan 2014 16:15:57 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GGFvPE078813; Thu, 16 Jan 2014 16:15:57 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161615.s0GGFvPE078813@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:15:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260778 - stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:15:58 -0000 Author: avg Date: Thu Jan 16 16:15:56 2014 New Revision: 260778 URL: http://svnweb.freebsd.org/changeset/base/260778 Log: MFC r258720: MFV r258665: 4347 ZPL can use dmu_tx_assign(TXG_WAIT) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c Thu Jan 16 16:15:48 2014 (r260777) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c Thu Jan 16 16:15:56 2014 (r260778) @@ -951,7 +951,6 @@ zfs_make_xattrdir(znode_t *zp, vattr_t * return (SET_ERROR(EDQUOT)); } -top: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_sa_create(tx, acl_ids.z_aclp->z_acl_bytes + ZFS_SA_BASE_ATTR_SIZE); @@ -960,13 +959,8 @@ top: fuid_dirtied = zfsvfs->z_fuid_dirty; if (fuid_dirtied) zfs_fuid_txhold(zfsvfs, tx); - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto top; - } zfs_acl_ids_free(&acl_ids); dmu_tx_abort(tx); return (error); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:15:48 2014 (r260777) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:15:56 2014 (r260778) @@ -105,11 +105,18 @@ * (3) All range locks must be grabbed before calling dmu_tx_assign(), * as they can span dmu_tx_assign() calls. * - * (4) Always pass TXG_NOWAIT as the second argument to dmu_tx_assign(). - * This is critical because we don't want to block while holding locks. - * Note, in particular, that if a lock is sometimes acquired before - * the tx assigns, and sometimes after (e.g. z_lock), then failing to - * use a non-blocking assign can deadlock the system. The scenario: + * (4) If ZPL locks are held, pass TXG_NOWAIT as the second argument to + * dmu_tx_assign(). This is critical because we don't want to block + * while holding locks. + * + * If no ZPL locks are held (aside from ZFS_ENTER()), use TXG_WAIT. This + * reduces lock contention and CPU usage when we must wait (note that if + * throughput is constrained by the storage, nearly every transaction + * must wait). + * + * Note, in particular, that if a lock is sometimes acquired before + * the tx assigns, and sometimes after (e.g. z_lock), then failing + * to use a non-blocking assign can deadlock the system. The scenario: * * Thread A has grabbed a lock before calling dmu_tx_assign(). * Thread B is in an already-assigned tx, and blocks for this lock. @@ -949,7 +956,6 @@ zfs_write(vnode_t *vp, uio_t *uio, int i while (n > 0) { abuf = NULL; woff = uio->uio_loffset; -again: if (zfs_owner_overquota(zfsvfs, zp, B_FALSE) || zfs_owner_overquota(zfsvfs, zp, B_TRUE)) { if (abuf != NULL) @@ -1001,13 +1007,8 @@ again: dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); dmu_tx_hold_write(tx, zp->z_id, woff, MIN(n, max_blksz)); zfs_sa_upgrade_txholds(tx, zp); - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto again; - } dmu_tx_abort(tx); if (abuf != NULL) dmu_return_arcbuf(abuf); @@ -3394,12 +3395,9 @@ top: zfs_sa_upgrade_txholds(tx, zp); - err = dmu_tx_assign(tx, TXG_NOWAIT); - if (err) { - if (err == ERESTART) - dmu_tx_wait(tx); + err = dmu_tx_assign(tx, TXG_WAIT); + if (err) goto out; - } count = 0; /* @@ -4495,19 +4493,13 @@ zfs_putapage(vnode_t *vp, page_t *pp, u_ err = SET_ERROR(EDQUOT); goto out; } -top: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_write(tx, zp->z_id, off, len); dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); zfs_sa_upgrade_txholds(tx, zp); - err = dmu_tx_assign(tx, TXG_NOWAIT); + err = dmu_tx_assign(tx, TXG_WAIT); if (err != 0) { - if (err == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto top; - } dmu_tx_abort(tx); goto out; } Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jan 16 16:15:48 2014 (r260777) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jan 16 16:15:56 2014 (r260778) @@ -1536,7 +1536,6 @@ zfs_extend(znode_t *zp, uint64_t end) zfs_range_unlock(rl); return (0); } -top: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); zfs_sa_upgrade_txholds(tx, zp); @@ -1556,13 +1555,8 @@ top: newblksz = 0; } - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto top; - } dmu_tx_abort(tx); zfs_range_unlock(rl); return (error); @@ -1670,17 +1664,11 @@ zfs_trunc(znode_t *zp, uint64_t end) zfs_range_unlock(rl); return (error); } -top: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); zfs_sa_upgrade_txholds(tx, zp); - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto top; - } dmu_tx_abort(tx); zfs_range_unlock(rl); return (error); @@ -1771,13 +1759,8 @@ log: tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); zfs_sa_upgrade_txholds(tx, zp); - error = dmu_tx_assign(tx, TXG_NOWAIT); + error = dmu_tx_assign(tx, TXG_WAIT); if (error) { - if (error == ERESTART) { - dmu_tx_wait(tx); - dmu_tx_abort(tx); - goto log; - } dmu_tx_abort(tx); return (error); } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:28:20 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8D425F37; Thu, 16 Jan 2014 16:28:20 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 78F221D03; Thu, 16 Jan 2014 16:28:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GGSKGW083007; Thu, 16 Jan 2014 16:28:20 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GGSKWb083006; Thu, 16 Jan 2014 16:28:20 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161628.s0GGSKWb083006@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:28:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260779 - stable/10/sys/dev/drm2/ttm X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:28:20 -0000 Author: avg Date: Thu Jan 16 16:28:19 2014 New Revision: 260779 URL: http://svnweb.freebsd.org/changeset/base/260779 Log: MFC r259612: ttm_bo_vm_lookup_rb: actually make use of the red-black tree Modified: stable/10/sys/dev/drm2/ttm/ttm_bo_vm.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/drm2/ttm/ttm_bo_vm.c ============================================================================== --- stable/10/sys/dev/drm2/ttm/ttm_bo_vm.c Thu Jan 16 16:15:56 2014 (r260778) +++ stable/10/sys/dev/drm2/ttm/ttm_bo_vm.c Thu Jan 16 16:28:19 2014 (r260779) @@ -76,13 +76,16 @@ static struct ttm_buffer_object *ttm_bo_ struct ttm_buffer_object *bo; struct ttm_buffer_object *best_bo = NULL; - RB_FOREACH(bo, ttm_bo_device_buffer_objects, &bdev->addr_space_rb) { + bo = RB_ROOT(&bdev->addr_space_rb); + while (bo != NULL) { cur_offset = bo->vm_node->start; if (page_start >= cur_offset) { best_bo = bo; if (page_start == cur_offset) break; - } + bo = RB_RIGHT(bo, vm_rb); + } else + bo = RB_LEFT(bo, vm_rb); } if (unlikely(best_bo == NULL)) From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:37:17 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C97BB608; Thu, 16 Jan 2014 16:37:17 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B45EB1E10; Thu, 16 Jan 2014 16:37:17 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GGbHNM086927; Thu, 16 Jan 2014 16:37:17 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GGbHxT086926; Thu, 16 Jan 2014 16:37:17 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161637.s0GGbHxT086926@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 16:37:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260780 - stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:37:17 -0000 Author: avg Date: Thu Jan 16 16:37:17 2014 New Revision: 260780 URL: http://svnweb.freebsd.org/changeset/base/260780 Log: MFC r243518: add zfs_bmap to aid vnode_pager_haspage Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:28:19 2014 (r260779) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 16:37:17 2014 (r260780) @@ -5737,6 +5737,30 @@ zfs_freebsd_getpages(ap) } static int +zfs_freebsd_bmap(ap) + struct vop_bmap_args /* { + struct vnode *a_vp; + daddr_t a_bn; + struct bufobj **a_bop; + daddr_t *a_bnp; + int *a_runp; + int *a_runb; + } */ *ap; +{ + + if (ap->a_bop != NULL) + *ap->a_bop = &ap->a_vp->v_bufobj; + if (ap->a_bnp != NULL) + *ap->a_bnp = ap->a_bn; + if (ap->a_runp != NULL) + *ap->a_runp = 0; + if (ap->a_runb != NULL) + *ap->a_runb = 0; + + return (0); +} + +static int zfs_freebsd_open(ap) struct vop_open_args /* { struct vnode *a_vp; @@ -6786,7 +6810,7 @@ struct vop_vector zfs_vnodeops = { .vop_remove = zfs_freebsd_remove, .vop_rename = zfs_freebsd_rename, .vop_pathconf = zfs_freebsd_pathconf, - .vop_bmap = VOP_EOPNOTSUPP, + .vop_bmap = zfs_freebsd_bmap, .vop_fid = zfs_freebsd_fid, .vop_getextattr = zfs_getextattr, .vop_deleteextattr = zfs_deleteextattr, From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 16:44:24 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7AE6EBFE; Thu, 16 Jan 2014 16:44:24 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 65B7E1EF5; Thu, 16 Jan 2014 16:44:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GGiOKG090769; Thu, 16 Jan 2014 16:44:24 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GGiOib090767; Thu, 16 Jan 2014 16:44:24 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401161644.s0GGiOib090767@svn.freebsd.org> From: Glen Barber Date: Thu, 16 Jan 2014 16:44:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260781 - in stable/10/release: . amd64 i386 pkg_repos scripts X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 16:44:24 -0000 Author: gjb Date: Thu Jan 16 16:44:23 2014 New Revision: 260781 URL: http://svnweb.freebsd.org/changeset/base/260781 Log: MFC r260772: Update the pkg-stage target to be more compatible with pkg-1.2: - Add a release-dvd.conf pkg(8) configuration file to override the default FreeBSD.conf configuration. - Remove architecture-specific pkg-stage.conf files, consolidate, and move their contents to scripts/pkg-stage.sh. - Use 'pkg -vv' to determine the ABI, which is used as the cache directory. Prior to these changes, it would be possible for pkg-stage to fetch conflicting binary packages from multiple repositories. Tested against: head@r260522, stable/10@r260522 Sponsored by: The FreeBSD Foundation Added: stable/10/release/pkg_repos/ - copied from r260772, head/release/pkg_repos/ Deleted: stable/10/release/amd64/pkg-stage.conf stable/10/release/i386/pkg-stage.conf Modified: stable/10/release/Makefile stable/10/release/scripts/pkg-stage.sh Directory Properties: stable/10/ (props changed) Modified: stable/10/release/Makefile ============================================================================== --- stable/10/release/Makefile Thu Jan 16 16:37:17 2014 (r260780) +++ stable/10/release/Makefile Thu Jan 16 16:44:23 2014 (r260781) @@ -224,9 +224,9 @@ packagesystem: base.txz kernel.txz ${EXT touch ${.TARGET} pkg-stage: -.if !defined(NOPKG) && exists(${.CURDIR}/${TARGET}/pkg-stage.conf) - sh ${.CURDIR}/scripts/pkg-stage.sh ${.CURDIR}/${TARGET}/pkg-stage.conf \ - ${REVISION} +.if !defined(NOPKG) + env REPOS_DIR=${.CURDIR}/pkg_repos/ \ + sh ${.CURDIR}/scripts/pkg-stage.sh mkdir -p ${.OBJDIR}/dvd/packages/repos/ cp ${.CURDIR}/scripts/FreeBSD_install_cdrom.conf \ ${.OBJDIR}/dvd/packages/repos/ Modified: stable/10/release/scripts/pkg-stage.sh ============================================================================== --- stable/10/release/scripts/pkg-stage.sh Thu Jan 16 16:37:17 2014 (r260780) +++ stable/10/release/scripts/pkg-stage.sh Thu Jan 16 16:44:23 2014 (r260781) @@ -5,24 +5,31 @@ set -e -usage() { - echo "$(basename ${0}) /path/to/pkg-stage.conf revision" - exit 1 -} - -if [ ! -e "${1}" ]; then - echo "Configuration file not specified." - echo - usage -fi - -if [ "$#" -lt 2 ]; then - usage -fi - -# Source config file for this architecture. -REVISION="${2}" -. "${1}" || exit 1 +export ASSUME_ALWAYS_YES=1 +export PKG_DBDIR="/tmp/pkg" +export PERMISSIVE="YES" +export REPO_AUTOUPDATE="NO" +export PKGCMD="/usr/sbin/pkg -d" + +DVD_PACKAGES="archivers/unzip +devel/subversion +devel/subversion-static +emulators/linux_base-f10 +misc/freebsd-doc-all +net/mpd5 +net/rsync +ports-mgmt/pkg +ports-mgmt/portmaster +shells/bash +shells/zsh +security/sudo +sysutils/screen +www/firefox +www/links +x11-drivers/xf86-video-vmware +x11/gnome2 +x11/kde4 +x11/xorg" # If NOPORTS is set for the release, do not attempt to build pkg(8). if [ ! -f /usr/ports/Makefile ]; then @@ -33,8 +40,13 @@ if [ ! -x /usr/local/sbin/pkg ]; then /usr/bin/make -C /usr/ports/ports-mgmt/pkg install clean fi +export PKG_ABI=$(pkg -vv | grep ^ABI | awk '{print $3}') +export PKG_CACHEDIR="dvd/packages/${PKG_ABI}" + /bin/mkdir -p ${PKG_CACHEDIR} +# Print pkg(8) information to make debugging easier. +${PKGCMD} -vv ${PKGCMD} update -f ${PKGCMD} fetch -d ${DVD_PACKAGES} From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 17:06:02 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A4309685; Thu, 16 Jan 2014 17:06:02 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9068D1103; Thu, 16 Jan 2014 17:06:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GH62HG099572; Thu, 16 Jan 2014 17:06:02 GMT (envelope-from wblock@svn.freebsd.org) Received: (from wblock@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GH62T4099571; Thu, 16 Jan 2014 17:06:02 GMT (envelope-from wblock@svn.freebsd.org) Message-Id: <201401161706.s0GH62T4099571@svn.freebsd.org> From: Warren Block Date: Thu, 16 Jan 2014 17:06:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260782 - head/bin/df X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 17:06:02 -0000 Author: wblock (doc committer) Date: Thu Jan 16 17:06:02 2014 New Revision: 260782 URL: http://svnweb.freebsd.org/changeset/base/260782 Log: -h and -H options backwards in manual page. PR: bin/183681 docs/183681 Submitted by: Robin Hahling MFC after: 3 days Modified: head/bin/df/df.1 Modified: head/bin/df/df.1 ============================================================================== --- head/bin/df/df.1 Thu Jan 16 16:44:23 2014 (r260781) +++ head/bin/df/df.1 Thu Jan 16 17:06:02 2014 (r260782) @@ -29,7 +29,7 @@ .\" @(#)df.1 8.3 (Berkeley) 5/8/95 .\" $FreeBSD$ .\" -.Dd January 24, 2013 +.Dd January 16, 2014 .Dt DF 1 .Os .Sh NAME @@ -83,13 +83,13 @@ Use 1073741824 byte (1 Gibibyte) blocks This overrides any .Ev BLOCKSIZE specification from the environment. -.It Fl H +.It Fl h .Dq Human-readable output. Use unit suffixes: Byte, Kibibyte, Mebibyte, Gibibyte, Tebibyte and Pebibyte (based on powers of 1024) in order to reduce the number of digits to four or fewer. -.It Fl h +.It Fl H .Dq Human-readable output. Use unit suffixes: Byte, Kilobyte, Megabyte, From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 17:41:48 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 46CEAA53; Thu, 16 Jan 2014 17:41:48 +0000 (UTC) Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1424B1482; Thu, 16 Jan 2014 17:41:46 +0000 (UTC) Received: from compute1.internal (compute1.nyi.mail.srv.osa [10.202.2.41]) by gateway1.nyi.mail.srv.osa (Postfix) with ESMTP id 8D6AB20F42; Thu, 16 Jan 2014 12:41:45 -0500 (EST) Received: from web3 ([10.202.2.213]) by compute1.internal (MEProxy); Thu, 16 Jan 2014 12:41:45 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=message-id:from:to:mime-version :content-transfer-encoding:content-type:subject:date:in-reply-to :references; s=smtpout; bh=Hn2v3oUWxJWtvCkMRnEZF9JB2vg=; b=VYInC gedxn46+tJUhKFdCLa0M1UCdmgJQrlEJVC7jXju4cUfjYhBGr7d6loJmbRSo3Wni rpoKJE5z35dUFj9F+b5zzUJraNQqtjYgO+DzPcb5osX5vzBMMU1wvCHGyL9ZG5Sz tIfhuSeCaLYAlpf0LsXLl8btW5iD2fL3Fix4gc= Received: by web3.nyi.mail.srv.osa (Postfix, from userid 99) id 60E9014972A; Thu, 16 Jan 2014 12:41:45 -0500 (EST) Message-Id: <1389894105.2790.71638533.0622D1C5@webmail.messagingengine.com> X-Sasl-Enc: d4xU7EgD6NRFxV0yxp3/Mij2tXP1yPTGoBcL8Scerpp+ 1389894105 From: Mark Felder To: Adam McDougall , svn-src-all@freebsd.org, "Justin T. Gibbs" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="ISO-8859-1" X-Mailer: MessagingEngine.com Webmail Interface - ajax-fdd84f42 Subject: Re: svn commit: r256423 - head/sys/dev/xen/blkfront Date: Thu, 16 Jan 2014 11:41:45 -0600 In-Reply-To: <52D800F1.7060706@egr.msu.edu> References: <201310130234.r9D2YKs2034280@svn.freebsd.org> <528E8272.1010301@egr.msu.edu> <528E87FA.7010902@egr.msu.edu> <52D800F1.7060706@egr.msu.edu> X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 17:41:48 -0000 On Thu, Jan 16, 2014, at 9:55, Adam McDougall wrote: > On 11/21/2013 17:23, Adam McDougall wrote: > > On 11/21/2013 17:00, Adam McDougall wrote: > >> On 10/12/2013 22:34, Justin T. Gibbs wrote: > >>> Author: gibbs > >>> Date: Sun Oct 13 02:34:20 2013 > >>> New Revision: 256423 > >>> URL: http://svnweb.freebsd.org/changeset/base/256423 > >>> > >>> Log: > >>> Allow FreeBSD to be booted from CDROM media on XenServer 6.2 and > >>> prior releases. > >>>=20=20=20 > >>> Submitted by: Roger Pau Monn=E9 > >>> Sponsored by: Citrix Systems R&D > >>> Reviewed by: gibbs > >>> Approved by: re (gjb) > >>>=20=20=20 > >>> sys/dev/xen/blkfront/blkfront.c: > >>> On XenServer versions up to an including 6.2, paravirtualized > >>> CDROM support is broken. When running in an HVM domain, > >>> ignore paravirtualized instances of CDROM media, and instead > >>> rely on native drivers attaching to emulated hardware. This > >>> functions correctly on all currently known Xen based > >>> platforms. > >> > >> Can this pretty please be MFC'ed for 10.0? I haven't heard of any > >> problems with it, only successes on freebsd-xen@freebsd.org (thread: > >> "FreeBSD Alpha5 amd64 - Citrix Xen 6.2 problem"). Thanks! > >=20 > > Oops nevermind! Mark clued me in to r256757 which is in BETA 3. Thanks > > again. > >=20 >=20 > Is it safe to MFC this for 9 as well? I checked to verify it doesn't > seem to be there: > http://svnweb.freebsd.org/base/stable/9/sys/dev/xen/blkfront/blkfront.c?r= evision=3D251973&view=3Dmarkup > I think Mark has been using a local patch for a while. Thanks. Yes I have been using a local patch for a very long time. Have not had a single issue. It would be appreciated if it was in 9.3-RELEASE, though I plan to upgrade as many as possible to 10.0-RELEASE for use of the GENERIC kernel From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 17:58:23 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 07C16EE9; Thu, 16 Jan 2014 17:58:23 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E755C15EE; Thu, 16 Jan 2014 17:58:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GHwMXu021926; Thu, 16 Jan 2014 17:58:22 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GHwMfV021924; Thu, 16 Jan 2014 17:58:22 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161758.s0GHwMfV021924@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 17:58:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260783 - stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 17:58:23 -0000 Author: avg Date: Thu Jan 16 17:58:22 2014 New Revision: 260783 URL: http://svnweb.freebsd.org/changeset/base/260783 Log: Revert r260780 "add zfs_bmap to aid vnode_pager_haspage" I thought that I had to have that commit in this branch, but now I decided to not bother. This is a direct commit, obviously. Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/cddl/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 17:06:02 2014 (r260782) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 17:58:22 2014 (r260783) @@ -5737,30 +5737,6 @@ zfs_freebsd_getpages(ap) } static int -zfs_freebsd_bmap(ap) - struct vop_bmap_args /* { - struct vnode *a_vp; - daddr_t a_bn; - struct bufobj **a_bop; - daddr_t *a_bnp; - int *a_runp; - int *a_runb; - } */ *ap; -{ - - if (ap->a_bop != NULL) - *ap->a_bop = &ap->a_vp->v_bufobj; - if (ap->a_bnp != NULL) - *ap->a_bnp = ap->a_bn; - if (ap->a_runp != NULL) - *ap->a_runp = 0; - if (ap->a_runb != NULL) - *ap->a_runb = 0; - - return (0); -} - -static int zfs_freebsd_open(ap) struct vop_open_args /* { struct vnode *a_vp; @@ -6810,7 +6786,7 @@ struct vop_vector zfs_vnodeops = { .vop_remove = zfs_freebsd_remove, .vop_rename = zfs_freebsd_rename, .vop_pathconf = zfs_freebsd_pathconf, - .vop_bmap = zfs_freebsd_bmap, + .vop_bmap = VOP_EOPNOTSUPP, .vop_fid = zfs_freebsd_fid, .vop_getextattr = zfs_getextattr, .vop_deleteextattr = zfs_deleteextattr, From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 18:01:58 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 60790302; Thu, 16 Jan 2014 18:01:58 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4BC431696; Thu, 16 Jan 2014 18:01:58 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GI1wpV025254; Thu, 16 Jan 2014 18:01:58 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GI1waY025253; Thu, 16 Jan 2014 18:01:58 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161801.s0GI1waY025253@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 18:01:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260784 - stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 18:01:58 -0000 Author: avg Date: Thu Jan 16 18:01:57 2014 New Revision: 260784 URL: http://svnweb.freebsd.org/changeset/base/260784 Log: fix a botched merge in r260775, MFC of r258739 This is a direct commit. Pointyhat to: avg Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 17:58:22 2014 (r260783) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 18:01:57 2014 (r260784) @@ -574,6 +574,7 @@ again: pp->valid = VM_PAGE_BITS_ALL; vm_page_activate(pp); } + vm_page_unlock_queues(); } else { ASSERT3U(pp->valid, ==, VM_PAGE_BITS_ALL); } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 18:04:44 2014 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DA1BF478; Thu, 16 Jan 2014 18:04:44 +0000 (UTC) Received: from h2.funkthat.com (gate2.funkthat.com [208.87.223.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AFBFA16B9; Thu, 16 Jan 2014 18:04:44 +0000 (UTC) Received: from h2.funkthat.com (localhost [127.0.0.1]) by h2.funkthat.com (8.14.3/8.14.3) with ESMTP id s0GI4hSC088725 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 16 Jan 2014 10:04:44 -0800 (PST) (envelope-from jmg@h2.funkthat.com) Received: (from jmg@localhost) by h2.funkthat.com (8.14.3/8.14.3/Submit) id s0GI4hg1088724; Thu, 16 Jan 2014 10:04:43 -0800 (PST) (envelope-from jmg) Date: Thu, 16 Jan 2014 10:04:43 -0800 From: John-Mark Gurney To: "Alexander V. Chernikov" Subject: Re: svn commit: r260702 - head/sys/netinet Message-ID: <20140116180443.GD75135@funkthat.com> References: <201401161150.s0GBo1c1069638@svn.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201401161150.s0GBo1c1069638@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i X-Operating-System: FreeBSD 7.2-RELEASE i386 X-PGP-Fingerprint: 54BA 873B 6515 3F10 9E88 9322 9CB1 8F74 6D3F A396 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.2 (h2.funkthat.com [127.0.0.1]); Thu, 16 Jan 2014 10:04:44 -0800 (PST) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 18:04:44 -0000 Alexander V. Chernikov wrote this message on Thu, Jan 16, 2014 at 11:50 +0000: > Author: melifaro > Date: Thu Jan 16 11:50:00 2014 > New Revision: 260702 > URL: http://svnweb.freebsd.org/changeset/base/260702 > > Log: > Fix ipfw fwd for IPv4 traffic broken by r249894. > > Problem case: > Original lookup returns route with GW set, so gw points to > rte->rt_gateway. > After that we're changing dst and performing lookup another time. > Since fwd host is most probably directly reachable, resulting > rte does not contain rt_gateway, so gw is not set. Finally, we > end with packet transmitted to proper interface but wrong > link-layer address. > > Found by: lstewart > Discussed with: ae,lstewart > MFC after: 2 weeks > Sponsored by: Yandex LLC This may be needed for 10.0 as this sounds suspiciously familar to the recent multicast code that was fixed too... It sounds like someone needs to audit this code to verify that there are no other code paths that can break because of this. -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not." From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 18:05:45 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 1033) id 5B90A6C3; Thu, 16 Jan 2014 18:05:45 +0000 (UTC) Date: Thu, 16 Jan 2014 18:05:45 +0000 From: Alexey Dokuchaev To: Andriy Gapon Subject: Re: svn commit: r260783 - stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs Message-ID: <20140116180545.GA10827@FreeBSD.org> References: <201401161758.s0GHwMfV021924@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201401161758.s0GHwMfV021924@svn.freebsd.org> User-Agent: Mutt/1.5.22 (2013-10-16) Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-8@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 18:05:45 -0000 On Thu, Jan 16, 2014 at 05:58:22PM +0000, Andriy Gapon wrote: > New Revision: 260783 > URL: http://svnweb.freebsd.org/changeset/base/260783 > > Log: > Revert r260780 "add zfs_bmap to aid vnode_pager_haspage" > > I thought that I had to have that commit in this branch, but now I > decided to not bother. Andriy, may I ask how soon you plan to finish merging to stable/8? I have a few patches (mostly GCC-related) to test against this branch, but rather wait for the dust to settle first to avoid any interference. ./danfe From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 18:13:19 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 84CDFBD8; Thu, 16 Jan 2014 18:13:19 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6E03117E9; Thu, 16 Jan 2014 18:13:19 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GIDJG2030313; Thu, 16 Jan 2014 18:13:19 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GIDIWj030305; Thu, 16 Jan 2014 18:13:18 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161813.s0GIDIWj030305@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 18:13:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260785 - in stable/9/sys/cddl: compat/opensolaris/sys contrib/opensolaris/uts/common/fs/zfs contrib/opensolaris/uts/common/fs/zfs/sys X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 18:13:19 -0000 Author: avg Date: Thu Jan 16 18:13:18 2014 New Revision: 260785 URL: http://svnweb.freebsd.org/changeset/base/260785 Log: MFC r258744-258746: zfs: add zfs_freebsd_putpages Added: stable/9/sys/cddl/compat/opensolaris/sys/vm.h (contents, props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Added: stable/9/sys/cddl/compat/opensolaris/sys/vm.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/9/sys/cddl/compat/opensolaris/sys/vm.h Thu Jan 16 18:13:18 2014 (r260785) @@ -0,0 +1,51 @@ +/*- + * Copyright (c) 2013 EMC Corp. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _OPENSOLARIS_SYS_VM_H_ +#define _OPENSOLARIS_SYS_VM_H_ + +#ifdef _KERNEL + +#include + +static inline caddr_t +zfs_map_page(vm_page_t pp, struct sf_buf **sfp) +{ + *sfp = sf_buf_alloc(pp, 0); + return ((caddr_t)sf_buf_kva(*sfp)); +} + +static inline void +zfs_unmap_page(struct sf_buf *sf) +{ + sf_buf_free(sf); +} + +#endif /* _KERNEL */ + +#endif /* _OPENSOLARIS_SYS_VM_H_ */ Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 18:01:57 2014 (r260784) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 18:13:18 2014 (r260785) @@ -45,6 +45,7 @@ #include #include #ifdef _KERNEL +#include #include #endif @@ -1184,6 +1185,64 @@ dmu_write_pages(objset_t *os, uint64_t o dmu_buf_rele_array(dbp, numbufs, FTAG); return (err); } + +#else + +int +dmu_write_pages(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, + vm_page_t *ma, dmu_tx_t *tx) +{ + dmu_buf_t **dbp; + struct sf_buf *sf; + int numbufs, i; + int err; + + if (size == 0) + return (0); + + err = dmu_buf_hold_array(os, object, offset, size, + FALSE, FTAG, &numbufs, &dbp); + if (err) + return (err); + + for (i = 0; i < numbufs; i++) { + int tocpy, copied, thiscpy; + int bufoff; + dmu_buf_t *db = dbp[i]; + caddr_t va; + + ASSERT(size > 0); + ASSERT3U(db->db_size, >=, PAGESIZE); + + bufoff = offset - db->db_offset; + tocpy = (int)MIN(db->db_size - bufoff, size); + + ASSERT(i == 0 || i == numbufs-1 || tocpy == db->db_size); + + if (tocpy == db->db_size) + dmu_buf_will_fill(db, tx); + else + dmu_buf_will_dirty(db, tx); + + for (copied = 0; copied < tocpy; copied += PAGESIZE) { + ASSERT3U(ptoa((*ma)->pindex), ==, db->db_offset + bufoff); + thiscpy = MIN(PAGESIZE, tocpy - copied); + va = zfs_map_page(*ma, &sf); + bcopy(va, (char *)db->db_data + bufoff, thiscpy); + zfs_unmap_page(sf); + ma += 1; + bufoff += PAGESIZE; + } + + if (tocpy == db->db_size) + dmu_buf_fill_done(db, tx); + + offset += tocpy; + size -= tocpy; + } + dmu_buf_rele_array(dbp, numbufs, FTAG); + return (err); +} #endif /* sun */ #endif Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 18:01:57 2014 (r260784) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 18:13:18 2014 (r260785) @@ -606,8 +606,15 @@ int dmu_write_uio(objset_t *os, uint64_t dmu_tx_t *tx); int dmu_write_uio_dbuf(dmu_buf_t *zdb, struct uio *uio, uint64_t size, dmu_tx_t *tx); +#ifdef _KERNEL +#ifdef sun int dmu_write_pages(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, struct page *pp, dmu_tx_t *tx); +#else +int dmu_write_pages(objset_t *os, uint64_t object, uint64_t offset, + uint64_t size, struct vm_page **ppa, dmu_tx_t *tx); +#endif +#endif struct arc_buf *dmu_request_arcbuf(dmu_buf_t *handle, int size); void dmu_return_arcbuf(struct arc_buf *buf); void dmu_assign_arcbuf(dmu_buf_t *handle, uint64_t offset, struct arc_buf *buf, Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 18:01:57 2014 (r260784) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 18:13:18 2014 (r260785) @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -69,7 +70,6 @@ #include #include #include -#include #include #include #include @@ -443,21 +443,6 @@ page_unhold(vm_page_t pp) vm_page_unlock(pp); } -static caddr_t -zfs_map_page(vm_page_t pp, struct sf_buf **sfp) -{ - - *sfp = sf_buf_alloc(pp, 0); - return ((caddr_t)sf_buf_kva(*sfp)); -} - -static void -zfs_unmap_page(struct sf_buf *sf) -{ - - sf_buf_free(sf); -} - /* * When a file is memory mapped, we must keep the IO data synchronized * between the DMU cache and the memory mapped pages. What this means: @@ -474,6 +459,7 @@ update_pages(vnode_t *vp, int64_t start, caddr_t va; int off; + ASSERT(segflg != UIO_NOCOPY); ASSERT(vp->v_mount != NULL); obj = vp->v_object; ASSERT(obj != NULL); @@ -484,27 +470,7 @@ update_pages(vnode_t *vp, int64_t start, vm_page_t pp; int nbytes = imin(PAGESIZE - off, len); - if (segflg == UIO_NOCOPY) { - pp = vm_page_lookup(obj, OFF_TO_IDX(start)); - KASSERT(pp != NULL, - ("zfs update_pages: NULL page in putpages case")); - KASSERT(off == 0, - ("zfs update_pages: unaligned data in putpages case")); - KASSERT(pp->valid == VM_PAGE_BITS_ALL, - ("zfs update_pages: invalid page in putpages case")); - KASSERT(pp->busy > 0, - ("zfs update_pages: unbusy page in putpages case")); - KASSERT(!pmap_page_is_write_mapped(pp), - ("zfs update_pages: writable page in putpages case")); - VM_OBJECT_UNLOCK(obj); - - va = zfs_map_page(pp, &sf); - (void) dmu_write(os, oid, start, nbytes, va, tx); - zfs_unmap_page(sf); - - VM_OBJECT_LOCK(obj); - vm_page_undirty(pp); - } else if ((pp = page_busy(vp, start, off, nbytes)) != NULL) { + if ((pp = page_busy(vp, start, off, nbytes)) != NULL) { VM_OBJECT_UNLOCK(obj); va = zfs_map_page(pp, &sf); @@ -518,8 +484,7 @@ update_pages(vnode_t *vp, int64_t start, len -= nbytes; off = 0; } - if (segflg != UIO_NOCOPY) - vm_object_pip_wakeupn(obj, 0); + vm_object_pip_wakeupn(obj, 0); VM_OBJECT_UNLOCK(obj); } @@ -5797,6 +5762,169 @@ zfs_freebsd_getpages(ap) } static int +zfs_putpages(struct vnode *vp, vm_page_t *ma, size_t len, int flags, + int *rtvals) +{ + znode_t *zp = VTOZ(vp); + zfsvfs_t *zfsvfs = zp->z_zfsvfs; + rl_t *rl; + dmu_tx_t *tx; + struct sf_buf *sf; + vm_object_t object; + vm_page_t m; + caddr_t va; + size_t tocopy; + size_t lo_len; + vm_ooffset_t lo_off; + vm_ooffset_t off; + uint_t blksz; + int ncount; + int pcount; + int err; + int i; + + ZFS_ENTER(zfsvfs); + ZFS_VERIFY_ZP(zp); + + object = vp->v_object; + pcount = btoc(len); + ncount = pcount; + + KASSERT(ma[0]->object == object, ("mismatching object")); + KASSERT(len > 0 && (len & PAGE_MASK) == 0, ("unexpected length")); + + for (i = 0; i < pcount; i++) + rtvals[i] = VM_PAGER_ERROR; + + off = IDX_TO_OFF(ma[0]->pindex); + blksz = zp->z_blksz; + lo_off = rounddown(off, blksz); + lo_len = roundup(len + (off - lo_off), blksz); + rl = zfs_range_lock(zp, lo_off, lo_len, RL_WRITER); + + VM_OBJECT_LOCK(object); + if (len + off > object->un_pager.vnp.vnp_size) { + if (object->un_pager.vnp.vnp_size > off) { + int pgoff; + + len = object->un_pager.vnp.vnp_size - off; + ncount = btoc(len); + if ((pgoff = (int)len & PAGE_MASK) != 0) { + /* + * If the object is locked and the following + * conditions hold, then the page's dirty + * field cannot be concurrently changed by a + * pmap operation. + */ + m = ma[ncount - 1]; + KASSERT(m->busy > 0, + ("zfs_putpages: page %p is not busy", m)); + KASSERT(!pmap_page_is_write_mapped(m), + ("zfs_putpages: page %p is not read-only", m)); + vm_page_clear_dirty(m, pgoff, PAGE_SIZE - + pgoff); + } + } else { + len = 0; + ncount = 0; + } + if (ncount < pcount) { + for (i = ncount; i < pcount; i++) { + rtvals[i] = VM_PAGER_BAD; + } + } + } + VM_OBJECT_UNLOCK(object); + + if (ncount == 0) + goto out; + + if (zfs_owner_overquota(zfsvfs, zp, B_FALSE) || + zfs_owner_overquota(zfsvfs, zp, B_TRUE)) { + goto out; + } + +top: + tx = dmu_tx_create(zfsvfs->z_os); + dmu_tx_hold_write(tx, zp->z_id, off, len); + + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); + zfs_sa_upgrade_txholds(tx, zp); + err = dmu_tx_assign(tx, TXG_NOWAIT); + if (err != 0) { + if (err == ERESTART) { + dmu_tx_wait(tx); + dmu_tx_abort(tx); + goto top; + } + dmu_tx_abort(tx); + goto out; + } + + if (zp->z_blksz < PAGE_SIZE) { + i = 0; + for (i = 0; len > 0; off += tocopy, len -= tocopy, i++) { + tocopy = len > PAGE_SIZE ? PAGE_SIZE : len; + va = zfs_map_page(ma[i], &sf); + dmu_write(zfsvfs->z_os, zp->z_id, off, tocopy, va, tx); + zfs_unmap_page(sf); + } + } else { + err = dmu_write_pages(zfsvfs->z_os, zp->z_id, off, len, ma, tx); + } + + if (err == 0) { + uint64_t mtime[2], ctime[2]; + sa_bulk_attr_t bulk[3]; + int count = 0; + + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MTIME(zfsvfs), NULL, + &mtime, 16); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zfsvfs), NULL, + &ctime, 16); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zfsvfs), NULL, + &zp->z_pflags, 8); + zfs_tstamp_update_setup(zp, CONTENT_MODIFIED, mtime, ctime, + B_TRUE); + zfs_log_write(zfsvfs->z_log, tx, TX_WRITE, zp, off, len, 0); + + VM_OBJECT_LOCK(object); + for (i = 0; i < ncount; i++) { + rtvals[i] = VM_PAGER_OK; + vm_page_undirty(ma[i]); + } + VM_OBJECT_UNLOCK(object); + PCPU_INC(cnt.v_vnodeout); + PCPU_ADD(cnt.v_vnodepgsout, ncount); + } + dmu_tx_commit(tx); + +out: + zfs_range_unlock(rl); + if ((flags & (VM_PAGER_PUT_SYNC | VM_PAGER_PUT_INVAL)) != 0 || + zfsvfs->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zfsvfs->z_log, zp->z_id); + ZFS_EXIT(zfsvfs); + return (rtvals[0]); +} + +int +zfs_freebsd_putpages(ap) + struct vop_putpages_args /* { + struct vnode *a_vp; + vm_page_t *a_m; + int a_count; + int a_sync; + int *a_rtvals; + vm_ooffset_t a_offset; + } */ *ap; +{ + + return (zfs_putpages(ap->a_vp, ap->a_m, ap->a_count, ap->a_sync, + ap->a_rtvals)); +} + +static int zfs_freebsd_bmap(ap) struct vop_bmap_args /* { struct vnode *a_vp; @@ -6885,6 +7013,7 @@ struct vop_vector zfs_vnodeops = { .vop_setacl = zfs_freebsd_setacl, .vop_aclcheck = zfs_freebsd_aclcheck, .vop_getpages = zfs_freebsd_getpages, + .vop_putpages = zfs_freebsd_putpages, }; struct vop_vector zfs_fifoops = { From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 18:15:51 2014 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 32179DD5; Thu, 16 Jan 2014 18:15:51 +0000 (UTC) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 81F3B182D; Thu, 16 Jan 2014 18:15:42 +0000 (UTC) Received: from porto.starpoint.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id UAA08887; Thu, 16 Jan 2014 20:15:41 +0200 (EET) (envelope-from avg@FreeBSD.org) Received: from localhost ([127.0.0.1]) by porto.starpoint.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1W3rTh-000KE1-8k; Thu, 16 Jan 2014 20:15:41 +0200 Message-ID: <52D82195.80703@FreeBSD.org> Date: Thu, 16 Jan 2014 20:14:45 +0200 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Alexey Dokuchaev Subject: Re: svn commit: r260783 - stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs References: <201401161758.s0GHwMfV021924@svn.freebsd.org> <20140116180545.GA10827@FreeBSD.org> In-Reply-To: <20140116180545.GA10827@FreeBSD.org> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: svn-src-stable@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, svn-src-stable-8@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 18:15:51 -0000 on 16/01/2014 20:05 Alexey Dokuchaev said the following: > On Thu, Jan 16, 2014 at 05:58:22PM +0000, Andriy Gapon wrote: >> New Revision: 260783 >> URL: http://svnweb.freebsd.org/changeset/base/260783 >> >> Log: >> Revert r260780 "add zfs_bmap to aid vnode_pager_haspage" >> >> I thought that I had to have that commit in this branch, but now I >> decided to not bother. > > Andriy, may I ask how soon you plan to finish merging to stable/8? I have > a few patches (mostly GCC-related) to test against this branch, but rather > wait for the dust to settle first to avoid any interference. I am done for today. -- Andriy Gapon From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 18:16:01 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2FC09EFD; Thu, 16 Jan 2014 18:16:01 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 185D11834; Thu, 16 Jan 2014 18:16:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GIG077030850; Thu, 16 Jan 2014 18:16:00 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GIG0Rc030837; Thu, 16 Jan 2014 18:16:00 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401161816.s0GIG0Rc030837@svn.freebsd.org> From: Andriy Gapon Date: Thu, 16 Jan 2014 18:16:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260786 - in stable/10/sys/cddl: compat/opensolaris/kern compat/opensolaris/sys contrib/opensolaris/uts/common/fs/zfs contrib/opensolaris/uts/common/fs/zfs/sys X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 18:16:01 -0000 Author: avg Date: Thu Jan 16 18:15:59 2014 New Revision: 260786 URL: http://svnweb.freebsd.org/changeset/base/260786 Log: MFC r258744-258746: zfs: add zfs_freebsd_putpages Modified: stable/10/sys/cddl/compat/opensolaris/kern/opensolaris_vm.c stable/10/sys/cddl/compat/opensolaris/sys/vm.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/compat/opensolaris/kern/opensolaris_vm.c ============================================================================== --- stable/10/sys/cddl/compat/opensolaris/kern/opensolaris_vm.c Thu Jan 16 18:13:18 2014 (r260785) +++ stable/10/sys/cddl/compat/opensolaris/kern/opensolaris_vm.c Thu Jan 16 18:15:59 2014 (r260786) @@ -40,6 +40,8 @@ __FBSDID("$FreeBSD$"); const int zfs_vm_pagerret_bad = VM_PAGER_BAD; const int zfs_vm_pagerret_error = VM_PAGER_ERROR; const int zfs_vm_pagerret_ok = VM_PAGER_OK; +const int zfs_vm_pagerput_sync = VM_PAGER_PUT_SYNC; +const int zfs_vm_pagerput_inval = VM_PAGER_PUT_INVAL; void zfs_vmobject_assert_wlocked(vm_object_t object) Modified: stable/10/sys/cddl/compat/opensolaris/sys/vm.h ============================================================================== --- stable/10/sys/cddl/compat/opensolaris/sys/vm.h Thu Jan 16 18:13:18 2014 (r260785) +++ stable/10/sys/cddl/compat/opensolaris/sys/vm.h Thu Jan 16 18:15:59 2014 (r260786) @@ -31,14 +31,31 @@ #ifdef _KERNEL +#include + extern const int zfs_vm_pagerret_bad; extern const int zfs_vm_pagerret_error; extern const int zfs_vm_pagerret_ok; +extern const int zfs_vm_pagerput_sync; +extern const int zfs_vm_pagerput_inval; void zfs_vmobject_assert_wlocked(vm_object_t object); void zfs_vmobject_wlock(vm_object_t object); void zfs_vmobject_wunlock(vm_object_t object); +static inline caddr_t +zfs_map_page(vm_page_t pp, struct sf_buf **sfp) +{ + *sfp = sf_buf_alloc(pp, 0); + return ((caddr_t)sf_buf_kva(*sfp)); +} + +static inline void +zfs_unmap_page(struct sf_buf *sf) +{ + sf_buf_free(sf); +} + #endif /* _KERNEL */ #endif /* _OPENSOLARIS_SYS_VM_H_ */ Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 18:13:18 2014 (r260785) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Thu Jan 16 18:15:59 2014 (r260786) @@ -45,6 +45,7 @@ #include #include #ifdef _KERNEL +#include #include #endif @@ -1184,6 +1185,64 @@ dmu_write_pages(objset_t *os, uint64_t o dmu_buf_rele_array(dbp, numbufs, FTAG); return (err); } + +#else + +int +dmu_write_pages(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, + vm_page_t *ma, dmu_tx_t *tx) +{ + dmu_buf_t **dbp; + struct sf_buf *sf; + int numbufs, i; + int err; + + if (size == 0) + return (0); + + err = dmu_buf_hold_array(os, object, offset, size, + FALSE, FTAG, &numbufs, &dbp); + if (err) + return (err); + + for (i = 0; i < numbufs; i++) { + int tocpy, copied, thiscpy; + int bufoff; + dmu_buf_t *db = dbp[i]; + caddr_t va; + + ASSERT(size > 0); + ASSERT3U(db->db_size, >=, PAGESIZE); + + bufoff = offset - db->db_offset; + tocpy = (int)MIN(db->db_size - bufoff, size); + + ASSERT(i == 0 || i == numbufs-1 || tocpy == db->db_size); + + if (tocpy == db->db_size) + dmu_buf_will_fill(db, tx); + else + dmu_buf_will_dirty(db, tx); + + for (copied = 0; copied < tocpy; copied += PAGESIZE) { + ASSERT3U(ptoa((*ma)->pindex), ==, db->db_offset + bufoff); + thiscpy = MIN(PAGESIZE, tocpy - copied); + va = zfs_map_page(*ma, &sf); + bcopy(va, (char *)db->db_data + bufoff, thiscpy); + zfs_unmap_page(sf); + ma += 1; + bufoff += PAGESIZE; + } + + if (tocpy == db->db_size) + dmu_buf_fill_done(db, tx); + + offset += tocpy; + size -= tocpy; + } + dmu_buf_rele_array(dbp, numbufs, FTAG); + return (err); +} #endif /* sun */ #endif Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 18:13:18 2014 (r260785) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Thu Jan 16 18:15:59 2014 (r260786) @@ -606,8 +606,15 @@ int dmu_write_uio(objset_t *os, uint64_t dmu_tx_t *tx); int dmu_write_uio_dbuf(dmu_buf_t *zdb, struct uio *uio, uint64_t size, dmu_tx_t *tx); +#ifdef _KERNEL +#ifdef sun int dmu_write_pages(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, struct page *pp, dmu_tx_t *tx); +#else +int dmu_write_pages(objset_t *os, uint64_t object, uint64_t offset, + uint64_t size, struct vm_page **ppa, dmu_tx_t *tx); +#endif +#endif struct arc_buf *dmu_request_arcbuf(dmu_buf_t *handle, int size); void dmu_return_arcbuf(struct arc_buf *buf); void dmu_assign_arcbuf(dmu_buf_t *handle, uint64_t offset, struct arc_buf *buf, Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 18:13:18 2014 (r260785) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jan 16 18:15:59 2014 (r260786) @@ -71,7 +71,6 @@ #include #include #include -#include #include #include #include @@ -452,21 +451,6 @@ page_unhold(vm_page_t pp) vm_page_unlock(pp); } -static caddr_t -zfs_map_page(vm_page_t pp, struct sf_buf **sfp) -{ - - *sfp = sf_buf_alloc(pp, 0); - return ((caddr_t)sf_buf_kva(*sfp)); -} - -static void -zfs_unmap_page(struct sf_buf *sf) -{ - - sf_buf_free(sf); -} - /* * When a file is memory mapped, we must keep the IO data synchronized * between the DMU cache and the memory mapped pages. What this means: @@ -483,6 +467,7 @@ update_pages(vnode_t *vp, int64_t start, caddr_t va; int off; + ASSERT(segflg != UIO_NOCOPY); ASSERT(vp->v_mount != NULL); obj = vp->v_object; ASSERT(obj != NULL); @@ -493,27 +478,7 @@ update_pages(vnode_t *vp, int64_t start, vm_page_t pp; int nbytes = imin(PAGESIZE - off, len); - if (segflg == UIO_NOCOPY) { - pp = vm_page_lookup(obj, OFF_TO_IDX(start)); - KASSERT(pp != NULL, - ("zfs update_pages: NULL page in putpages case")); - KASSERT(off == 0, - ("zfs update_pages: unaligned data in putpages case")); - KASSERT(pp->valid == VM_PAGE_BITS_ALL, - ("zfs update_pages: invalid page in putpages case")); - KASSERT(vm_page_sbusied(pp), - ("zfs update_pages: unbusy page in putpages case")); - KASSERT(!pmap_page_is_write_mapped(pp), - ("zfs update_pages: writable page in putpages case")); - zfs_vmobject_wunlock(obj); - - va = zfs_map_page(pp, &sf); - (void) dmu_write(os, oid, start, nbytes, va, tx); - zfs_unmap_page(sf); - - zfs_vmobject_wlock(obj); - vm_page_undirty(pp); - } else if ((pp = page_busy(vp, start, off, nbytes)) != NULL) { + if ((pp = page_busy(vp, start, off, nbytes)) != NULL) { zfs_vmobject_wunlock(obj); va = zfs_map_page(pp, &sf); @@ -527,8 +492,7 @@ update_pages(vnode_t *vp, int64_t start, len -= nbytes; off = 0; } - if (segflg != UIO_NOCOPY) - vm_object_pip_wakeupn(obj, 0); + vm_object_pip_wakeupn(obj, 0); zfs_vmobject_wunlock(obj); } @@ -5815,6 +5779,168 @@ zfs_freebsd_getpages(ap) } static int +zfs_putpages(struct vnode *vp, vm_page_t *ma, size_t len, int flags, + int *rtvals) +{ + znode_t *zp = VTOZ(vp); + zfsvfs_t *zfsvfs = zp->z_zfsvfs; + rl_t *rl; + dmu_tx_t *tx; + struct sf_buf *sf; + vm_object_t object; + vm_page_t m; + caddr_t va; + size_t tocopy; + size_t lo_len; + vm_ooffset_t lo_off; + vm_ooffset_t off; + uint_t blksz; + int ncount; + int pcount; + int err; + int i; + + ZFS_ENTER(zfsvfs); + ZFS_VERIFY_ZP(zp); + + object = vp->v_object; + pcount = btoc(len); + ncount = pcount; + + KASSERT(ma[0]->object == object, ("mismatching object")); + KASSERT(len > 0 && (len & PAGE_MASK) == 0, ("unexpected length")); + + for (i = 0; i < pcount; i++) + rtvals[i] = zfs_vm_pagerret_error; + + off = IDX_TO_OFF(ma[0]->pindex); + blksz = zp->z_blksz; + lo_off = rounddown(off, blksz); + lo_len = roundup(len + (off - lo_off), blksz); + rl = zfs_range_lock(zp, lo_off, lo_len, RL_WRITER); + + zfs_vmobject_wlock(object); + if (len + off > object->un_pager.vnp.vnp_size) { + if (object->un_pager.vnp.vnp_size > off) { + int pgoff; + + len = object->un_pager.vnp.vnp_size - off; + ncount = btoc(len); + if ((pgoff = (int)len & PAGE_MASK) != 0) { + /* + * If the object is locked and the following + * conditions hold, then the page's dirty + * field cannot be concurrently changed by a + * pmap operation. + */ + m = ma[ncount - 1]; + vm_page_assert_sbusied(m); + KASSERT(!pmap_page_is_write_mapped(m), + ("zfs_putpages: page %p is not read-only", m)); + vm_page_clear_dirty(m, pgoff, PAGE_SIZE - + pgoff); + } + } else { + len = 0; + ncount = 0; + } + if (ncount < pcount) { + for (i = ncount; i < pcount; i++) { + rtvals[i] = zfs_vm_pagerret_bad; + } + } + } + zfs_vmobject_wunlock(object); + + if (ncount == 0) + goto out; + + if (zfs_owner_overquota(zfsvfs, zp, B_FALSE) || + zfs_owner_overquota(zfsvfs, zp, B_TRUE)) { + goto out; + } + +top: + tx = dmu_tx_create(zfsvfs->z_os); + dmu_tx_hold_write(tx, zp->z_id, off, len); + + dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE); + zfs_sa_upgrade_txholds(tx, zp); + err = dmu_tx_assign(tx, TXG_NOWAIT); + if (err != 0) { + if (err == ERESTART) { + dmu_tx_wait(tx); + dmu_tx_abort(tx); + goto top; + } + dmu_tx_abort(tx); + goto out; + } + + if (zp->z_blksz < PAGE_SIZE) { + i = 0; + for (i = 0; len > 0; off += tocopy, len -= tocopy, i++) { + tocopy = len > PAGE_SIZE ? PAGE_SIZE : len; + va = zfs_map_page(ma[i], &sf); + dmu_write(zfsvfs->z_os, zp->z_id, off, tocopy, va, tx); + zfs_unmap_page(sf); + } + } else { + err = dmu_write_pages(zfsvfs->z_os, zp->z_id, off, len, ma, tx); + } + + if (err == 0) { + uint64_t mtime[2], ctime[2]; + sa_bulk_attr_t bulk[3]; + int count = 0; + + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MTIME(zfsvfs), NULL, + &mtime, 16); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zfsvfs), NULL, + &ctime, 16); + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zfsvfs), NULL, + &zp->z_pflags, 8); + zfs_tstamp_update_setup(zp, CONTENT_MODIFIED, mtime, ctime, + B_TRUE); + zfs_log_write(zfsvfs->z_log, tx, TX_WRITE, zp, off, len, 0); + + zfs_vmobject_wlock(object); + for (i = 0; i < ncount; i++) { + rtvals[i] = zfs_vm_pagerret_ok; + vm_page_undirty(ma[i]); + } + zfs_vmobject_wunlock(object); + PCPU_INC(cnt.v_vnodeout); + PCPU_ADD(cnt.v_vnodepgsout, ncount); + } + dmu_tx_commit(tx); + +out: + zfs_range_unlock(rl); + if ((flags & (zfs_vm_pagerput_sync | zfs_vm_pagerput_inval)) != 0 || + zfsvfs->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zfsvfs->z_log, zp->z_id); + ZFS_EXIT(zfsvfs); + return (rtvals[0]); +} + +int +zfs_freebsd_putpages(ap) + struct vop_putpages_args /* { + struct vnode *a_vp; + vm_page_t *a_m; + int a_count; + int a_sync; + int *a_rtvals; + vm_ooffset_t a_offset; + } */ *ap; +{ + + return (zfs_putpages(ap->a_vp, ap->a_m, ap->a_count, ap->a_sync, + ap->a_rtvals)); +} + +static int zfs_freebsd_bmap(ap) struct vop_bmap_args /* { struct vnode *a_vp; @@ -6960,6 +7086,7 @@ struct vop_vector zfs_vnodeops = { .vop_setacl = zfs_freebsd_setacl, .vop_aclcheck = zfs_freebsd_aclcheck, .vop_getpages = zfs_freebsd_getpages, + .vop_putpages = zfs_freebsd_putpages, }; struct vop_vector zfs_fifoops = { From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 18:33:11 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1D7644AB; Thu, 16 Jan 2014 18:33:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F1E081A09; Thu, 16 Jan 2014 18:33:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GIXAT0038756; Thu, 16 Jan 2014 18:33:10 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GIXAID038753; Thu, 16 Jan 2014 18:33:10 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401161833.s0GIXAID038753@svn.freebsd.org> From: Glen Barber Date: Thu, 16 Jan 2014 18:33:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260787 - in releng/10.0/release: . amd64 i386 pkg_repos scripts X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 18:33:11 -0000 Author: gjb Date: Thu Jan 16 18:33:10 2014 New Revision: 260787 URL: http://svnweb.freebsd.org/changeset/base/260787 Log: MFreleng10 r259582 (reverse), MFstable10 r259491, r259492, r260781: r259582 (reverted): Set PACKAGESITE to 'release/0' for the pkg-stage target to pull the release set of packages. (Required to eliminate conflicts.) r259491: Prevent release build errors found during snapshot builds where if NOPORTS=1, pkg-stage.sh cannot build the ports-mgmt/pkg port if WITH_DVD=1. r259492: Add NOPKG to disable pkg-stage. r260781: Update the pkg-stage target to be more compatible with pkg-1.2: - Add a release-dvd.conf pkg(8) configuration file to override the default FreeBSD.conf configuration. - Remove architecture-specific pkg-stage.conf files, consolidate, and move their contents to scripts/pkg-stage.sh. - Use 'pkg -vv' to determine the ABI, which is used as the cache directory. Prior to these changes, it would be possible for pkg-stage to fetch conflicting binary packages from multiple repositories. A change local to releng/10.0 sets the package fetch URL to 'release/0'. Approved by: re (delphij) Sponsored by: The FreeBSD Foundation Added: releng/10.0/release/pkg_repos/ - copied from r260781, stable/10/release/pkg_repos/ Deleted: releng/10.0/release/amd64/pkg-stage.conf releng/10.0/release/i386/pkg-stage.conf Modified: releng/10.0/release/Makefile releng/10.0/release/pkg_repos/release-dvd.conf releng/10.0/release/scripts/pkg-stage.sh Directory Properties: releng/10.0/ (props changed) Modified: releng/10.0/release/Makefile ============================================================================== --- releng/10.0/release/Makefile Thu Jan 16 18:15:59 2014 (r260786) +++ releng/10.0/release/Makefile Thu Jan 16 18:33:10 2014 (r260787) @@ -15,6 +15,7 @@ # (by default, the directory above this one) # PORTSDIR: location of ports tree to distribute (default: /usr/ports) # DOCDIR: location of doc tree (default: /usr/doc) +# NOPKG: if set, do not distribute third-party packages # NOPORTS: if set, do not distribute ports tree # NOSRC: if set, do not distribute source tree # NODOC: if set, do not generate release documentation @@ -214,9 +215,9 @@ packagesystem: base.txz kernel.txz ${EXT touch ${.TARGET} pkg-stage: -.if(exists(${.CURDIR}/${TARGET}/pkg-stage.conf)) - sh ${.CURDIR}/scripts/pkg-stage.sh ${.CURDIR}/${TARGET}/pkg-stage.conf \ - ${REVISION} +.if !defined(NOPKG) + env REPOS_DIR=${.CURDIR}/pkg_repos/ \ + sh ${.CURDIR}/scripts/pkg-stage.sh mkdir -p ${.OBJDIR}/dvd/packages/repos/ cp ${.CURDIR}/scripts/FreeBSD_install_cdrom.conf \ ${.OBJDIR}/dvd/packages/repos/ Modified: releng/10.0/release/pkg_repos/release-dvd.conf ============================================================================== --- stable/10/release/pkg_repos/release-dvd.conf Thu Jan 16 16:44:23 2014 (r260781) +++ releng/10.0/release/pkg_repos/release-dvd.conf Thu Jan 16 18:33:10 2014 (r260787) @@ -1,6 +1,6 @@ # $FreeBSD$ release: { - url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest", + url: "pkg+http://pkg.FreeBSD.org/${ABI}/release/0", mirror_type: "srv", signature_type: "fingerprints", fingerprints: "/usr/share/keys/pkg", Modified: releng/10.0/release/scripts/pkg-stage.sh ============================================================================== --- releng/10.0/release/scripts/pkg-stage.sh Thu Jan 16 18:15:59 2014 (r260786) +++ releng/10.0/release/scripts/pkg-stage.sh Thu Jan 16 18:33:10 2014 (r260787) @@ -5,31 +5,48 @@ set -e -usage() { - echo "$(basename ${0}) /path/to/pkg-stage.conf revision" - exit 1 -} - -if [ ! -e "${1}" ]; then - echo "Configuration file not specified." - echo - usage +export ASSUME_ALWAYS_YES=1 +export PKG_DBDIR="/tmp/pkg" +export PERMISSIVE="YES" +export REPO_AUTOUPDATE="NO" +export PKGCMD="/usr/sbin/pkg -d" + +DVD_PACKAGES="archivers/unzip +devel/subversion +devel/subversion-static +emulators/linux_base-f10 +misc/freebsd-doc-all +net/mpd5 +net/rsync +ports-mgmt/pkg +ports-mgmt/portmaster +shells/bash +shells/zsh +security/sudo +sysutils/screen +www/firefox +www/links +x11-drivers/xf86-video-vmware +x11/gnome2 +x11/kde4 +x11/xorg" + +# If NOPORTS is set for the release, do not attempt to build pkg(8). +if [ ! -f /usr/ports/Makefile ]; then + exit 0 fi -if [ "$#" -lt 2 ]; then - usage -fi - -# Source config file for this architecture. -REVISION="${2}" -. "${1}" || exit 1 - if [ ! -x /usr/local/sbin/pkg ]; then /usr/bin/make -C /usr/ports/ports-mgmt/pkg install clean fi +export PKG_ABI=$(pkg -vv | grep ^ABI | awk '{print $3}') +export PKG_CACHEDIR="dvd/packages/${PKG_ABI}" + /bin/mkdir -p ${PKG_CACHEDIR} +# Print pkg(8) information to make debugging easier. +${PKGCMD} -vv ${PKGCMD} update -f ${PKGCMD} fetch -d ${DVD_PACKAGES} From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 18:36:40 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5C50C8BA; Thu, 16 Jan 2014 18:36:40 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 308C51A47; Thu, 16 Jan 2014 18:36:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GIaeKg039487; Thu, 16 Jan 2014 18:36:40 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GIaeWc039486; Thu, 16 Jan 2014 18:36:40 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401161836.s0GIaeWc039486@svn.freebsd.org> From: Glen Barber Date: Thu, 16 Jan 2014 18:36:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-release@freebsd.org Subject: svn commit: r260788 - release/10.0.0 X-SVN-Group: release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 18:36:40 -0000 Author: gjb Date: Thu Jan 16 18:36:39 2014 New Revision: 260788 URL: http://svnweb.freebsd.org/changeset/base/260788 Log: Remove the release/10.0.0 tag in preparation of re-tagging after r260787. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Deleted: release/10.0.0/ From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 18:43:50 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EB841DCD; Thu, 16 Jan 2014 18:43:50 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BEA9C1B1F; Thu, 16 Jan 2014 18:43:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GIhoxq043662; Thu, 16 Jan 2014 18:43:50 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GIhoCj043661; Thu, 16 Jan 2014 18:43:50 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401161843.s0GIhoCj043661@svn.freebsd.org> From: Glen Barber Date: Thu, 16 Jan 2014 18:43:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-release@freebsd.org Subject: svn commit: r260789 - release/10.0.0 X-SVN-Group: release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 18:43:51 -0000 Author: gjb Date: Thu Jan 16 18:43:50 2014 New Revision: 260789 URL: http://svnweb.freebsd.org/changeset/base/260789 Log: Copy releng/10.0 to release/10.0.0 as part of the 10.0-RELEASE cycle. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Added: release/10.0.0/ - copied from r260788, releng/10.0/ From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 20:40:02 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E1A25DE7; Thu, 16 Jan 2014 20:40:02 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CE3461688; Thu, 16 Jan 2014 20:40:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GKe2uv088133; Thu, 16 Jan 2014 20:40:02 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GKe2Gm088131; Thu, 16 Jan 2014 20:40:02 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201401162040.s0GKe2Gm088131@svn.freebsd.org> From: Warner Losh Date: Thu, 16 Jan 2014 20:40:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260790 - head/sys/mips/cavium X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 20:40:03 -0000 Author: imp Date: Thu Jan 16 20:40:02 2014 New Revision: 260790 URL: http://svnweb.freebsd.org/changeset/base/260790 Log: Remove two redundantly repetitive assignments. Modified: head/sys/mips/cavium/ciu.c Modified: head/sys/mips/cavium/ciu.c ============================================================================== --- head/sys/mips/cavium/ciu.c Thu Jan 16 18:43:50 2014 (r260789) +++ head/sys/mips/cavium/ciu.c Thu Jan 16 20:40:02 2014 (r260790) @@ -433,7 +433,6 @@ ciu_intr(void *arg) if (en0_sum == 0 && en1_sum == 0) return (FILTER_STRAY); - irq_index = 0; for (irq_index = 0; en0_sum != 0; irq_index++, en0_sum >>= 1) { if ((en0_sum & 1) == 0) continue; @@ -445,7 +444,6 @@ ciu_intr(void *arg) printf("%s: stray en0 irq%d\n", __func__, irq_index); } - irq_index = 0; for (irq_index = 0; en1_sum != 0; irq_index++, en1_sum >>= 1) { if ((en1_sum & 1) == 0) continue; From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 20:46:14 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0430E81C; Thu, 16 Jan 2014 20:46:14 +0000 (UTC) Received: from mail-ea0-x22d.google.com (mail-ea0-x22d.google.com [IPv6:2a00:1450:4013:c01::22d]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 138081754; Thu, 16 Jan 2014 20:46:12 +0000 (UTC) Received: by mail-ea0-f173.google.com with SMTP id o10so1383749eaj.4 for ; Thu, 16 Jan 2014 12:46:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=DMH58uIPInWsE7ei8lNZ8YoIVzqv7PV1zWc/PdnE+UY=; b=EFM+8TW5/+dn1FUUUcKLJqHFBlZvhq8rdoNDWbzufH+YL6R520Mmd7p1uqFkcVX65t kFCMFh0xUDqKWUYDxhPyCo1SyihUIVH6U/yaB+KWsPamu8v+DosOj+NWqKXzMN4zwK9U qSM8wPGxx6ukFfaVHuXAGOHnbA0L/cD2FzOdTH8+ZsmmpTkDJhWL0V53VlMSg4zJIPGU Er+c3mKgf5TeMgXol2xOmDZchPA3MUNEDhKLppUduMw5YiImfQRdqdeR75EoCByuCH1M oClPQuvX/SV1kPATAgRbS22o1TuKB2gkqksiQIqHdbeqPdPgLRPRaYu0TB5YhblyKRt4 D3Cg== MIME-Version: 1.0 X-Received: by 10.15.95.72 with SMTP id bc48mr14780471eeb.49.1389905170890; Thu, 16 Jan 2014 12:46:10 -0800 (PST) Sender: hiren.panchasara@gmail.com Received: by 10.14.2.66 with HTTP; Thu, 16 Jan 2014 12:46:10 -0800 (PST) In-Reply-To: <201401160020.s0G0KgwY004039@svn.freebsd.org> References: <201401160020.s0G0KgwY004039@svn.freebsd.org> Date: Thu, 16 Jan 2014 12:46:10 -0800 X-Google-Sender-Auth: hp7DjWMVAv2cQNNC5yt-vM5yAQw Message-ID: Subject: Re: svn commit: r260700 - in head: sys/dev/netmap tools/tools/netmap From: hiren panchasara To: Luigi Rizzo Content-Type: text/plain; charset=UTF-8 Cc: svn-src-head , svn-src-all , src-committers X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 20:46:14 -0000 On Wed, Jan 15, 2014 at 4:20 PM, Luigi Rizzo wrote: > Author: luigi > Date: Thu Jan 16 00:20:42 2014 > New Revision: 260700 > URL: http://svnweb.freebsd.org/changeset/base/260700 > > Log: > netmap_user.h: > add separate rx/tx ring indexes > add ring specifier in nm_open device name > > netmap.c, netmap_vale.c > more consistent errno numbers > > netmap_generic.c > correctly handle failure in registering interfaces. > > tools/tools/netmap/ > massive cleanup of the example programs > (a lot of common code is now in netmap_user.h.) > > nm_util.[ch] are going away soon. > pcap.c will also go when i commit the native netmap support for libpcap. > > Modified: > head/sys/dev/netmap/netmap.c > head/sys/dev/netmap/netmap_generic.c > head/sys/dev/netmap/netmap_vale.c > head/tools/tools/netmap/Makefile > head/tools/tools/netmap/bridge.c > head/tools/tools/netmap/nm_util.c > head/tools/tools/netmap/nm_util.h > head/tools/tools/netmap/pcap.c > head/tools/tools/netmap/pkt-gen.c > head/tools/tools/netmap/vale-ctl.c > Hi Luigi, Doing make in tools/tools/netmap gives me a bunch of errors because "struct nm_desc_t" doesn't have members like if_flags, if_reqcap and if_curcap. It seems those members were coming from struct my_ring which is no more there. FreeBSD 11.0-CURRENT #0 r260789 cheers, Hiren From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 21:46:44 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2106ACC5; Thu, 16 Jan 2014 21:46:44 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E64241D0F; Thu, 16 Jan 2014 21:46:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GLkh3R015911; Thu, 16 Jan 2014 21:46:43 GMT (envelope-from gnn@svn.freebsd.org) Received: (from gnn@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GLkhdB015910; Thu, 16 Jan 2014 21:46:43 GMT (envelope-from gnn@svn.freebsd.org) Message-Id: <201401162146.s0GLkhdB015910@svn.freebsd.org> From: "George V. Neville-Neil" Date: Thu, 16 Jan 2014 21:46:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260791 - head/tools/tools/mcgrab X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 21:46:44 -0000 Author: gnn Date: Thu Jan 16 21:46:43 2014 New Revision: 260791 URL: http://svnweb.freebsd.org/changeset/base/260791 Log: Add a command line argument to turn off blocking waiting for the user to press Ctrl-C (-b). This allows tests with tight loops of mcgrabs that can stress the multicast tables. MFC after: 2 weeks Modified: head/tools/tools/mcgrab/mcgrab.cc Modified: head/tools/tools/mcgrab/mcgrab.cc ============================================================================== --- head/tools/tools/mcgrab/mcgrab.cc Thu Jan 16 20:40:02 2014 (r260790) +++ head/tools/tools/mcgrab/mcgrab.cc Thu Jan 16 21:46:43 2014 (r260791) @@ -88,7 +88,7 @@ void usage(string message) // // @return 0 for 0K, -1 for error, sets errno // -void grab(char *interface, struct in_addr *group, int number) { +void grab(char *interface, struct in_addr *group, int number, int block) { int sock; @@ -138,8 +138,10 @@ void grab(char *interface, struct in_add group->s_addr = htonl(ntohl(group->s_addr) + 1); } - printf("Press Control-C to exit.\n"); - sleep(INT_MAX); + if (block > 0) { + printf("Press Control-C to exit.\n"); + sleep(INT_MAX); + } } @@ -160,11 +162,12 @@ int main(int argc, char**argv) char* interface = 0; ///< Name of the interface struct in_addr *group = NULL; ///< the multicast group address int number = 0; ///< Number of addresses to grab + int block = 1; ///< Do we block or just return? - if (argc != 7) + if ((argc < 7) || (argc > 8)) usage(); - while ((ch = getopt(argc, argv, "g:i:n:h")) != -1) { + while ((ch = getopt(argc, argv, "g:i:n:bh")) != -1) { switch (ch) { case 'g': group = new (struct in_addr ); @@ -178,12 +181,15 @@ int main(int argc, char**argv) case 'n': number = atoi(optarg); break; + case 'b': + block = 0; + break; case 'h': usage(string("Help\n")); break; } } - grab(interface, group, number); + grab(interface, group, number, block); } From owner-svn-src-all@FreeBSD.ORG Thu Jan 16 22:14:55 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8597063B; Thu, 16 Jan 2014 22:14:55 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 657AD1F06; Thu, 16 Jan 2014 22:14:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0GMEtdw027527; Thu, 16 Jan 2014 22:14:55 GMT (envelope-from gnn@svn.freebsd.org) Received: (from gnn@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0GMEtd3027526; Thu, 16 Jan 2014 22:14:55 GMT (envelope-from gnn@svn.freebsd.org) Message-Id: <201401162214.s0GMEtd3027526@svn.freebsd.org> From: "George V. Neville-Neil" Date: Thu, 16 Jan 2014 22:14:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260796 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jan 2014 22:14:55 -0000 Author: gnn Date: Thu Jan 16 22:14:54 2014 New Revision: 260796 URL: http://svnweb.freebsd.org/changeset/base/260796 Log: Fix various places where we don't properly release a lock PR: 185043 Submitted by: Michael Bentkofsky MFC after: 2 weeks Modified: head/sys/netinet/in_mcast.c Modified: head/sys/netinet/in_mcast.c ============================================================================== --- head/sys/netinet/in_mcast.c Thu Jan 16 21:56:05 2014 (r260795) +++ head/sys/netinet/in_mcast.c Thu Jan 16 22:14:54 2014 (r260796) @@ -1496,7 +1496,7 @@ inp_block_unblock_source(struct inpcb *i error = inm_merge(inm, imf); if (error) { CTR1(KTR_IGMPV3, "%s: failed to merge inm state", __func__); - goto out_imf_rollback; + goto out_in_multi_locked; } CTR1(KTR_IGMPV3, "%s: doing igmp downcall", __func__); @@ -1504,6 +1504,8 @@ inp_block_unblock_source(struct inpcb *i if (error) CTR1(KTR_IGMPV3, "%s: failed igmp downcall", __func__); +out_in_multi_locked: + IN_MULTI_UNLOCK(); out_imf_rollback: @@ -2172,8 +2174,12 @@ inp_join_group(struct inpcb *inp, struct if (is_new) { error = in_joingroup_locked(ifp, &gsa->sin.sin_addr, imf, &inm); - if (error) + if (error) { + CTR1(KTR_IGMPV3, "%s: in_joingroup_locked failed", + __func__); + IN_MULTI_UNLOCK(); goto out_imo_free; + } imo->imo_membership[idx] = inm; } else { CTR1(KTR_IGMPV3, "%s: merge inm state", __func__); @@ -2181,20 +2187,21 @@ inp_join_group(struct inpcb *inp, struct if (error) { CTR1(KTR_IGMPV3, "%s: failed to merge inm state", __func__); - goto out_imf_rollback; + goto out_in_multi_locked; } CTR1(KTR_IGMPV3, "%s: doing igmp downcall", __func__); error = igmp_change_state(inm); if (error) { CTR1(KTR_IGMPV3, "%s: failed igmp downcall", __func__); - goto out_imf_rollback; + goto out_in_multi_locked; } } +out_in_multi_locked: + IN_MULTI_UNLOCK(); -out_imf_rollback: INP_WLOCK_ASSERT(inp); if (error) { imf_rollback(imf); @@ -2398,7 +2405,7 @@ inp_leave_group(struct inpcb *inp, struc if (error) { CTR1(KTR_IGMPV3, "%s: failed to merge inm state", __func__); - goto out_imf_rollback; + goto out_in_multi_locked; } CTR1(KTR_IGMPV3, "%s: doing igmp downcall", __func__); @@ -2409,9 +2416,10 @@ inp_leave_group(struct inpcb *inp, struc } } +out_in_multi_locked: + IN_MULTI_UNLOCK(); -out_imf_rollback: if (error) imf_rollback(imf); else @@ -2645,7 +2653,7 @@ inp_set_source_filters(struct inpcb *inp error = inm_merge(inm, imf); if (error) { CTR1(KTR_IGMPV3, "%s: failed to merge inm state", __func__); - goto out_imf_rollback; + goto out_in_multi_locked; } CTR1(KTR_IGMPV3, "%s: doing igmp downcall", __func__); @@ -2653,6 +2661,8 @@ inp_set_source_filters(struct inpcb *inp if (error) CTR1(KTR_IGMPV3, "%s: failed igmp downcall", __func__); +out_in_multi_locked: + IN_MULTI_UNLOCK(); out_imf_rollback: From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 03:30:25 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 536A6F81; Fri, 17 Jan 2014 03:30:25 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 401E71720; Fri, 17 Jan 2014 03:30:25 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0H3UPRM052872; Fri, 17 Jan 2014 03:30:25 GMT (envelope-from csjp@svn.freebsd.org) Received: (from csjp@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0H3UP5t052870; Fri, 17 Jan 2014 03:30:25 GMT (envelope-from csjp@svn.freebsd.org) Message-Id: <201401170330.s0H3UP5t052870@svn.freebsd.org> From: "Christian S.J. Peron" Date: Fri, 17 Jan 2014 03:30:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260800 - head/usr.bin/killall X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 03:30:25 -0000 Author: csjp Date: Fri Jan 17 03:30:24 2014 New Revision: 260800 URL: http://svnweb.freebsd.org/changeset/base/260800 Log: fix a regression introduced in r237618 that would result in killall confusing killall -INT with killall -I (interactive confirmation) which resulted in the wrong signal (TERM) being delivered to the process(s). Discussed with: delphij MFC after: 2 weeks Modified: head/usr.bin/killall/killall.c Modified: head/usr.bin/killall/killall.c ============================================================================== --- head/usr.bin/killall/killall.c Fri Jan 17 01:23:31 2014 (r260799) +++ head/usr.bin/killall/killall.c Fri Jan 17 03:30:24 2014 (r260800) @@ -144,9 +144,6 @@ main(int ac, char **av) if (**av == '-') { ++*av; switch (**av) { - case 'I': - Iflag = 1; - break; case 'j': ++*av; if (**av == '\0') { @@ -213,6 +210,15 @@ main(int ac, char **av) case 'z': zflag++; break; + case 'I': + /* + * NB: do not confuse -INT with -I + */ + if (strncmp(*av, "INT", 3) != 0) { + Iflag = 1; + break; + } + /* FALLTHROUGH */ default: if (isalpha((unsigned char)**av)) { if (strncasecmp(*av, "SIG", 3) == 0) From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 04:16:39 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CBAE2B1C; Fri, 17 Jan 2014 04:16:39 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B838E1A3D; Fri, 17 Jan 2014 04:16:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0H4Gdwc070001; Fri, 17 Jan 2014 04:16:39 GMT (envelope-from csjp@svn.freebsd.org) Received: (from csjp@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0H4GdUI070000; Fri, 17 Jan 2014 04:16:39 GMT (envelope-from csjp@svn.freebsd.org) Message-Id: <201401170416.s0H4GdUI070000@svn.freebsd.org> From: "Christian S.J. Peron" Date: Fri, 17 Jan 2014 04:16:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260801 - head/usr.bin/killall X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 04:16:39 -0000 Author: csjp Date: Fri Jan 17 04:16:39 2014 New Revision: 260801 URL: http://svnweb.freebsd.org/changeset/base/260801 Log: Re-work r260800 to include other signals which start with 'I' such as ILL, INFO etc.. Submitted by: delphij MFC after: 2 weeks Modified: head/usr.bin/killall/killall.c Modified: head/usr.bin/killall/killall.c ============================================================================== --- head/usr.bin/killall/killall.c Fri Jan 17 03:30:24 2014 (r260800) +++ head/usr.bin/killall/killall.c Fri Jan 17 04:16:39 2014 (r260801) @@ -90,6 +90,7 @@ nosig(char *name) int main(int ac, char **av) { + char **saved_av; struct kinfo_proc *procs, *newprocs; struct stat sb; struct passwd *pw; @@ -210,16 +211,8 @@ main(int ac, char **av) case 'z': zflag++; break; - case 'I': - /* - * NB: do not confuse -INT with -I - */ - if (strncmp(*av, "INT", 3) != 0) { - Iflag = 1; - break; - } - /* FALLTHROUGH */ default: + saved_av = av; if (isalpha((unsigned char)**av)) { if (strncasecmp(*av, "SIG", 3) == 0) *av += 3; @@ -229,8 +222,14 @@ main(int ac, char **av) sig = p - sys_signame; break; } - if (!sig) - nosig(*av); + if (!sig) { + if (**saved_av == 'I') { + av = saved_av; + Iflag = 1; + break; + } else + nosig(*av); + } } else if (isdigit((unsigned char)**av)) { sig = strtol(*av, &ep, 10); if (!*av || *ep) From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 04:21:39 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E99BCD7F; Fri, 17 Jan 2014 04:21:39 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D63F91AB9; Fri, 17 Jan 2014 04:21:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0H4Lde5073369; Fri, 17 Jan 2014 04:21:39 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0H4LdLE073366; Fri, 17 Jan 2014 04:21:39 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201401170421.s0H4LdLE073366@svn.freebsd.org> From: Neel Natu Date: Fri, 17 Jan 2014 04:21:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260802 - head/sys/amd64/vmm/intel X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 04:21:40 -0000 Author: neel Date: Fri Jan 17 04:21:39 2014 New Revision: 260802 URL: http://svnweb.freebsd.org/changeset/base/260802 Log: If a VM-exit happens during an NMI injection then clear the "NMI Blocking" bit in the Guest Interruptibility-state VMCS field. If we fail to do this then a subsequent VM-entry will fail because it is an error to inject an NMI into the guest while "NMI Blocking" is turned on. This is described in "Checks on Guest Non-Register State" in the Intel SDM. Submitted by: David Reed (david.reed@tidalscale.com) Modified: head/sys/amd64/vmm/intel/vmcs.h head/sys/amd64/vmm/intel/vmx.c Modified: head/sys/amd64/vmm/intel/vmcs.h ============================================================================== --- head/sys/amd64/vmm/intel/vmcs.h Fri Jan 17 04:16:39 2014 (r260801) +++ head/sys/amd64/vmm/intel/vmcs.h Fri Jan 17 04:21:39 2014 (r260802) @@ -333,10 +333,10 @@ vmcs_write(uint32_t encoding, uint64_t v /* * VMCS interrupt information fields */ -#define VMCS_INTR_INFO_VALID (1U << 31) -#define VMCS_INTR_INFO_TYPE(info) (((info) >> 8) & 0x7) -#define VMCS_INTR_INFO_HW_INTR (0 << 8) -#define VMCS_INTR_INFO_NMI (2 << 8) +#define VMCS_INTR_VALID (1U << 31) +#define VMCS_INTR_T_MASK 0x700 /* Interruption-info type */ +#define VMCS_INTR_T_HWINTR (0 << 8) +#define VMCS_INTR_T_NMI (2 << 8) /* * VMCS IDT-Vectoring information fields Modified: head/sys/amd64/vmm/intel/vmx.c ============================================================================== --- head/sys/amd64/vmm/intel/vmx.c Fri Jan 17 04:16:39 2014 (r260801) +++ head/sys/amd64/vmm/intel/vmx.c Fri Jan 17 04:21:39 2014 (r260802) @@ -1065,7 +1065,7 @@ vmx_inject_nmi(struct vmx *vmx, int vcpu * Inject the virtual NMI. The vector must be the NMI IDT entry * or the VMCS entry check will fail. */ - info = VMCS_INTR_INFO_NMI | VMCS_INTR_INFO_VALID; + info = VMCS_INTR_T_NMI | VMCS_INTR_VALID; info |= IDT_NMI; vmcs_write(VMCS_ENTRY_INTR_INFO, info); @@ -1103,7 +1103,7 @@ vmx_inject_interrupts(struct vmx *vmx, i * because of a pending AST. */ info = vmcs_read(VMCS_ENTRY_INTR_INFO); - if (info & VMCS_INTR_INFO_VALID) + if (info & VMCS_INTR_VALID) return; /* @@ -1134,7 +1134,7 @@ vmx_inject_interrupts(struct vmx *vmx, i goto cantinject; /* Inject the interrupt */ - info = VMCS_INTR_INFO_HW_INTR | VMCS_INTR_INFO_VALID; + info = VMCS_INTR_T_HWINTR | VMCS_INTR_VALID; info |= vector; vmcs_write(VMCS_ENTRY_INTR_INFO, info); @@ -1444,10 +1444,12 @@ vmx_exit_process(struct vmx *vmx, int vc int error, handled; struct vmxctx *vmxctx; struct vlapic *vlapic; - uint32_t eax, ecx, edx, idtvec_info, idtvec_err, intr_info, reason; + uint32_t eax, ecx, edx, gi, idtvec_info, idtvec_err, intr_info, reason; uint64_t qual, gpa; bool retu; + CTASSERT((PINBASED_CTLS_ONE_SETTING & PINBASED_VIRTUAL_NMI) != 0); + handled = 0; vmxctx = &vmx->ctx[vcpu]; @@ -1480,6 +1482,18 @@ vmx_exit_process(struct vmx *vmx, int vc vmcs_write(VMCS_ENTRY_EXCEPTION_ERROR, idtvec_err); } + /* + * If 'virtual NMIs' are being used and the VM-exit + * happened while injecting an NMI during the previous + * VM-entry, then clear "blocking by NMI" in the Guest + * Interruptibility-state. + */ + if ((idtvec_info & VMCS_INTR_T_MASK) == + VMCS_INTR_T_NMI) { + gi = vmcs_read(VMCS_GUEST_INTERRUPTIBILITY); + gi &= ~VMCS_INTERRUPTIBILITY_NMI_BLOCKING; + vmcs_write(VMCS_GUEST_INTERRUPTIBILITY, gi); + } vmcs_write(VMCS_ENTRY_INST_LENGTH, vmexit->inst_length); } default: @@ -1556,8 +1570,8 @@ vmx_exit_process(struct vmx *vmx, int vc * this virtual interrupt during the subsequent VM enter. */ intr_info = vmcs_read(VMCS_EXIT_INTR_INFO); - KASSERT((intr_info & VMCS_INTR_INFO_VALID) != 0 && - VMCS_INTR_INFO_TYPE(intr_info) == 0, + KASSERT((intr_info & VMCS_INTR_VALID) != 0 && + (intr_info & VMCS_INTR_T_MASK) == VMCS_INTR_T_HWINTR, ("VM exit interruption info invalid: %#x", intr_info)); vmx_trigger_hostintr(intr_info & 0xff); @@ -2039,11 +2053,11 @@ vmx_inject(void *arg, int vcpu, int type if (error) return (error); - if (info & VMCS_INTR_INFO_VALID) + if (info & VMCS_INTR_VALID) return (EAGAIN); info = vector | (type_map[type] << 8) | (code_valid ? 1 << 11 : 0); - info |= VMCS_INTR_INFO_VALID; + info |= VMCS_INTR_VALID; error = vmcs_setreg(vmcs, 0, VMCS_IDENT(VMCS_ENTRY_INTR_INFO), info); if (error != 0) return (error); From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 04:38:59 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 560E51F0; Fri, 17 Jan 2014 04:38:59 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 364871C8D; Fri, 17 Jan 2014 04:38:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0H4cxfR077967; Fri, 17 Jan 2014 04:38:59 GMT (envelope-from luigi@svn.freebsd.org) Received: (from luigi@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0H4cxRf077966; Fri, 17 Jan 2014 04:38:59 GMT (envelope-from luigi@svn.freebsd.org) Message-Id: <201401170438.s0H4cxRf077966@svn.freebsd.org> From: Luigi Rizzo Date: Fri, 17 Jan 2014 04:38:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260803 - head/sys/net X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 04:38:59 -0000 Author: luigi Date: Fri Jan 17 04:38:58 2014 New Revision: 260803 URL: http://svnweb.freebsd.org/changeset/base/260803 Log: forgot to update this file in 2607000 Modified: head/sys/net/netmap_user.h Modified: head/sys/net/netmap_user.h ============================================================================== --- head/sys/net/netmap_user.h Fri Jan 17 04:21:39 2014 (r260802) +++ head/sys/net/netmap_user.h Fri Jan 17 04:38:58 2014 (r260803) @@ -139,11 +139,8 @@ nm_ring_space(struct netmap_ring *ring) #include /* EINVAL */ #include /* O_RDWR */ #include /* close() */ -#ifdef __FreeBSD__ +#include #include -#else -#include /* on FreeBSD it is stdlib.h */ -#endif struct nm_hdr_t { /* same as pcap_pkthdr */ struct timeval ts; @@ -151,15 +148,43 @@ struct nm_hdr_t { /* same as pcap_pkthdr uint32_t len; }; +struct nm_stat_t { // pcap_stat + u_int ps_recv; + u_int ps_drop; + u_int ps_ifdrop; +#ifdef WIN32 + u_int bs_capt; +#endif /* WIN32 */ +}; + +#define NM_ERRBUF_SIZE 512 + struct nm_desc_t { struct nm_desc_t *self; int fd; void *mem; int memsize; struct netmap_if *nifp; - uint16_t first_ring, last_ring, cur_ring; - struct nmreq req; + uint16_t first_tx_ring, last_tx_ring, cur_tx_ring; + uint16_t first_rx_ring, last_rx_ring, cur_rx_ring; + struct nmreq req; /* also contains the nr_name = ifname */ struct nm_hdr_t hdr; + + struct netmap_ring *tx, *rx; /* shortcuts to base hw/sw rings */ + + /* parameters from pcap_open_live */ + int snaplen; + int promisc; + int to_ms; + char *errbuf; + + /* save flags so we can restore them on close */ + uint32_t if_flags; + uint32_t if_reqcap; + uint32_t if_curcap; + + struct nm_stat_t st; + char msg[NM_ERRBUF_SIZE]; }; /* @@ -248,7 +273,8 @@ static struct nm_desc_t * nm_open(const char *ifname, const char *ring_name, int flags, int ring_flags) { struct nm_desc_t *d; - u_int n; + u_int n, namelen; + char *port = NULL; if (strncmp(ifname, "netmap:", 7) && strncmp(ifname, "vale", 4)) { errno = 0; /* name not recognised */ @@ -256,6 +282,20 @@ nm_open(const char *ifname, const char * } if (ifname[0] == 'n') ifname += 7; + port = strchr(ifname, '-'); + if (!port) { + namelen = strlen(ifname); + } else { + namelen = port - ifname; + flags &= ~(NETMAP_SW_RING | NETMAP_HW_RING | NETMAP_RING_MASK); + if (port[1] == 's') + flags |= NETMAP_SW_RING; + else + ring_name = port; + } + if (namelen >= sizeof(d->req.nr_name)) + namelen = sizeof(d->req.nr_name) - 1; + d = (struct nm_desc_t *)calloc(1, sizeof(*d)); if (d == NULL) { errno = ENOMEM; @@ -279,9 +319,11 @@ nm_open(const char *ifname, const char * } d->req.nr_ringid |= (flags & ~NETMAP_RING_MASK); d->req.nr_version = NETMAP_API; - strncpy(d->req.nr_name, ifname, sizeof(d->req.nr_name)); - if (ioctl(d->fd, NIOCREGIF, &d->req)) + memcpy(d->req.nr_name, ifname, namelen); + d->req.nr_name[namelen] = '\0'; + if (ioctl(d->fd, NIOCREGIF, &d->req)) { goto fail; + } d->memsize = d->req.nr_memsize; d->mem = mmap(0, d->memsize, PROT_WRITE | PROT_READ, MAP_SHARED, @@ -290,18 +332,27 @@ nm_open(const char *ifname, const char * goto fail; d->nifp = NETMAP_IF(d->mem, d->req.nr_offset); if (d->req.nr_ringid & NETMAP_SW_RING) { - d->first_ring = d->last_ring = d->req.nr_rx_rings; + d->first_tx_ring = d->last_tx_ring = d->req.nr_tx_rings; + d->first_rx_ring = d->last_rx_ring = d->req.nr_rx_rings; } else if (d->req.nr_ringid & NETMAP_HW_RING) { - d->first_ring = d->last_ring = + /* XXX check validity */ + d->first_tx_ring = d->last_tx_ring = + d->first_rx_ring = d->last_rx_ring = d->req.nr_ringid & NETMAP_RING_MASK; } else { - d->first_ring = 0; - d->last_ring = d->req.nr_rx_rings - 1; + d->first_tx_ring = d->last_rx_ring = 0; + d->last_tx_ring = d->req.nr_tx_rings - 1; + d->last_rx_ring = d->req.nr_rx_rings - 1; } - d->cur_ring = d->first_ring; - for (n = d->first_ring; n <= d->last_ring; n++) { - struct netmap_ring *ring = NETMAP_RXRING(d->nifp, n); - ring->flags |= ring_flags; + d->tx = NETMAP_TXRING(d->nifp, 0); + d->rx = NETMAP_RXRING(d->nifp, 0); + d->cur_tx_ring = d->first_tx_ring; + d->cur_rx_ring = d->first_rx_ring; + for (n = d->first_tx_ring; n <= d->last_tx_ring; n++) { + d->tx[n].flags |= ring_flags; + } + for (n = d->first_rx_ring; n <= d->last_rx_ring; n++) { + d->rx[n].flags |= ring_flags; } return d; @@ -340,30 +391,25 @@ nm_close(struct nm_desc_t *d) static int nm_inject(struct nm_desc_t *d, const void *buf, size_t size) { - u_int c, n = d->last_ring - d->first_ring + 1; + u_int c, n = d->last_tx_ring - d->first_tx_ring + 1; - if (0) fprintf(stderr, "%s rings %d %d %d\n", __FUNCTION__, - d->first_ring, d->cur_ring, d->last_ring); for (c = 0; c < n ; c++) { /* compute current ring to use */ struct netmap_ring *ring; uint32_t i, idx; - uint32_t ri = d->cur_ring + c; + uint32_t ri = d->cur_tx_ring + c; - if (ri > d->last_ring) - ri = d->first_ring; + if (ri > d->last_tx_ring) + ri = d->first_tx_ring; ring = NETMAP_TXRING(d->nifp, ri); if (nm_ring_empty(ring)) { - if (0) fprintf(stderr, "%s ring %d cur %d tail %d\n", - __FUNCTION__, - ri, ring->cur, ring->tail); continue; } i = ring->cur; idx = ring->slot[i].buf_idx; ring->slot[i].len = size; pkt_copy(buf, NETMAP_BUF(ring, idx), size); - d->cur_ring = ri; + d->cur_tx_ring = ri; ring->head = ring->cur = nm_ring_next(ring, i); return size; } @@ -377,8 +423,8 @@ nm_inject(struct nm_desc_t *d, const voi static int nm_dispatch(struct nm_desc_t *d, int cnt, nm_cb_t cb, u_char *arg) { - int n = d->last_ring - d->first_ring + 1; - int c, got = 0, ri = d->cur_ring; + int n = d->last_rx_ring - d->first_rx_ring + 1; + int c, got = 0, ri = d->cur_rx_ring; if (cnt == 0) cnt = -1; @@ -390,30 +436,30 @@ nm_dispatch(struct nm_desc_t *d, int cnt /* compute current ring to use */ struct netmap_ring *ring; - ri = d->cur_ring + c; - if (ri > d->last_ring) - ri = d->first_ring; + ri = d->cur_rx_ring + c; + if (ri > d->last_rx_ring) + ri = d->first_rx_ring; ring = NETMAP_RXRING(d->nifp, ri); for ( ; !nm_ring_empty(ring) && cnt != got; got++) { u_int i = ring->cur; u_int idx = ring->slot[i].buf_idx; u_char *buf = (u_char *)NETMAP_BUF(ring, idx); - // XXX should check valid buf - // prefetch(buf); + + // __builtin_prefetch(buf); d->hdr.len = d->hdr.caplen = ring->slot[i].len; d->hdr.ts = ring->ts; cb(arg, &d->hdr, buf); ring->head = ring->cur = nm_ring_next(ring, i); } } - d->cur_ring = ri; + d->cur_rx_ring = ri; return got; } static u_char * nm_nextpkt(struct nm_desc_t *d, struct nm_hdr_t *hdr) { - int ri = d->cur_ring; + int ri = d->cur_rx_ring; do { /* compute current ring to use */ @@ -422,8 +468,8 @@ nm_nextpkt(struct nm_desc_t *d, struct n u_int i = ring->cur; u_int idx = ring->slot[i].buf_idx; u_char *buf = (u_char *)NETMAP_BUF(ring, idx); - // XXX should check valid buf - // prefetch(buf); + + // __builtin_prefetch(buf); hdr->ts = ring->ts; hdr->len = hdr->caplen = ring->slot[i].len; ring->cur = nm_ring_next(ring, i); @@ -432,13 +478,13 @@ nm_nextpkt(struct nm_desc_t *d, struct n * the future. */ ring->head = ring->cur; - d->cur_ring = ri; + d->cur_rx_ring = ri; return buf; } ri++; - if (ri > d->last_ring) - ri = d->first_ring; - } while (ri != d->cur_ring); + if (ri > d->last_rx_ring) + ri = d->first_rx_ring; + } while (ri != d->cur_rx_ring); return NULL; /* nothing found */ } From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 04:40:30 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 865DC354; Fri, 17 Jan 2014 04:40:30 +0000 (UTC) Received: from onelab2.iet.unipi.it (onelab2.iet.unipi.it [131.114.59.238]) by mx1.freebsd.org (Postfix) with ESMTP id 425DB1C9B; Fri, 17 Jan 2014 04:40:30 +0000 (UTC) Received: by onelab2.iet.unipi.it (Postfix, from userid 275) id 7A2C97300A; Fri, 17 Jan 2014 05:42:54 +0100 (CET) Date: Fri, 17 Jan 2014 05:42:54 +0100 From: Luigi Rizzo To: hiren panchasara Subject: Re: svn commit: r260700 - in head: sys/dev/netmap tools/tools/netmap Message-ID: <20140117044254.GB56239@onelab2.iet.unipi.it> References: <201401160020.s0G0KgwY004039@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) Cc: svn-src-head , Luigi Rizzo , src-committers , svn-src-all X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 04:40:30 -0000 On Thu, Jan 16, 2014 at 12:46:10PM -0800, hiren panchasara wrote: > On Wed, Jan 15, 2014 at 4:20 PM, Luigi Rizzo wrote: > > Author: luigi > > Date: Thu Jan 16 00:20:42 2014 > > New Revision: 260700 > > URL: http://svnweb.freebsd.org/changeset/base/260700 > > > > Log: > > netmap_user.h: > > add separate rx/tx ring indexes > > add ring specifier in nm_open device name > > > > netmap.c, netmap_vale.c > > more consistent errno numbers > > > > netmap_generic.c > > correctly handle failure in registering interfaces. > > > > tools/tools/netmap/ > > massive cleanup of the example programs > > (a lot of common code is now in netmap_user.h.) > > > > nm_util.[ch] are going away soon. > > pcap.c will also go when i commit the native netmap support for libpcap. > > > > Modified: > > head/sys/dev/netmap/netmap.c > > head/sys/dev/netmap/netmap_generic.c > > head/sys/dev/netmap/netmap_vale.c > > head/tools/tools/netmap/Makefile > > head/tools/tools/netmap/bridge.c > > head/tools/tools/netmap/nm_util.c > > head/tools/tools/netmap/nm_util.h > > head/tools/tools/netmap/pcap.c > > head/tools/tools/netmap/pkt-gen.c > > head/tools/tools/netmap/vale-ctl.c > > > > Hi Luigi, > > Doing make in tools/tools/netmap gives me a bunch of errors because > "struct nm_desc_t" doesn't have members like if_flags, if_reqcap and > if_curcap. It seems those members were coming from struct my_ring > which is no more there. sorry my bad, i forgot to include sys/net/netmap_user.h in the commit. Fixed in rev 260803 cheers luigi From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 05:13:09 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 088BC79E; Fri, 17 Jan 2014 05:13:09 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E971F1E9D; Fri, 17 Jan 2014 05:13:08 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0H5D8U8092968; Fri, 17 Jan 2014 05:13:08 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0H5D8RH092967; Fri, 17 Jan 2014 05:13:08 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201401170513.s0H5D8RH092967@svn.freebsd.org> From: Adrian Chadd Date: Fri, 17 Jan 2014 05:13:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260804 - head/sys/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 05:13:09 -0000 Author: adrian Date: Fri Jan 17 05:13:08 2014 New Revision: 260804 URL: http://svnweb.freebsd.org/changeset/base/260804 Log: Implement the extension api for sendfile to allow for kqueue notifications. This is still under a bit of flux, as the final API hasn't been nailed down. It's also unclear whether we should define the two new types in the header or not - it may allow bad code to compile that shouldn't (ie, since uintX's are defined, the developer may not include sys/types.h.) Reviewed by: peter, imp, bde Sponsored by: Netflix, Inc. Modified: head/sys/sys/socket.h Modified: head/sys/sys/socket.h ============================================================================== --- head/sys/sys/socket.h Fri Jan 17 04:38:58 2014 (r260803) +++ head/sys/sys/socket.h Fri Jan 17 05:13:08 2014 (r260804) @@ -84,6 +84,16 @@ typedef __uid_t uid_t; #endif #endif +#ifndef _UINT32_T_DECLARED +typedef __uint32_t uint32_t; +#define _UINT32_T_DECLARED +#endif + +#ifndef _UINTPTR_T_DECLARED +typedef __uintptr_t uintptr_t; +#define _UINTPTR_T_DECLARED +#endif + /* * Types */ @@ -577,11 +587,27 @@ struct sf_hdtr { }; /* + * sendfile(2) kqueue information + */ +struct sf_hdtr_kq { + uintptr_t kq_ident; /* ident (from userland?) */ + void *kq_udata; /* user data pointer */ + uint32_t kq_flags; /* extra flags to pass in */ + int kq_fd; /* kq fd to post completion events on */ +}; + +struct sf_hdtr_all { + struct sf_hdtr hdtr; + struct sf_hdtr_kq kq; +}; + +/* * Sendfile-specific flag(s) */ #define SF_NODISKIO 0x00000001 #define SF_MNOWAIT 0x00000002 #define SF_SYNC 0x00000004 +#define SF_KQUEUE 0x00000008 #ifdef _KERNEL #define SFK_COMPAT 0x00000001 From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 05:15:45 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1A62C8E9; Fri, 17 Jan 2014 05:15:45 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 07A911EA8; Fri, 17 Jan 2014 05:15:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0H5FiVf093418; Fri, 17 Jan 2014 05:15:44 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0H5Fimg093417; Fri, 17 Jan 2014 05:15:44 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201401170515.s0H5Fimg093417@svn.freebsd.org> From: Adrian Chadd Date: Fri, 17 Jan 2014 05:15:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260805 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 05:15:45 -0000 Author: adrian Date: Fri Jan 17 05:15:44 2014 New Revision: 260805 URL: http://svnweb.freebsd.org/changeset/base/260805 Log: Add in a default initialiser for the EVOPS_SENDFILE kqueue filterops. Sponsored by: Netflix, Inc. Modified: head/sys/kern/kern_event.c Modified: head/sys/kern/kern_event.c ============================================================================== --- head/sys/kern/kern_event.c Fri Jan 17 05:13:08 2014 (r260804) +++ head/sys/kern/kern_event.c Fri Jan 17 05:15:44 2014 (r260805) @@ -294,6 +294,7 @@ static struct { { &fs_filtops }, /* EVFILT_FS */ { &null_filtops }, /* EVFILT_LIO */ { &user_filtops }, /* EVFILT_USER */ + { &null_filtops }, /* EVFILT_SENDFILE */ }; /* From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 05:26:56 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A94D5A90; Fri, 17 Jan 2014 05:26:56 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9523F1F36; Fri, 17 Jan 2014 05:26:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0H5QuCS097444; Fri, 17 Jan 2014 05:26:56 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0H5QtFI097439; Fri, 17 Jan 2014 05:26:55 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201401170526.s0H5QtFI097439@svn.freebsd.org> From: Adrian Chadd Date: Fri, 17 Jan 2014 05:26:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260806 - in head/sys: compat/freebsd32 kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 05:26:56 -0000 Author: adrian Date: Fri Jan 17 05:26:55 2014 New Revision: 260806 URL: http://svnweb.freebsd.org/changeset/base/260806 Log: Implement a kqueue notification path for sendfile. This fires off a kqueue note (of type sendfile) to the configured kqfd when the sendfile transaction has completed and the relevant memory backing the transaction is no longer in use by this transaction. This is analogous to SF_SYNC waiting for the mbufs to complete - except now you don't have to wait. Both SF_SYNC and SF_KQUEUE should work together, even if it doesn't necessarily make any practical sense. This is designed for use by applications which use backing cache/store files (eg Varnish) or POSIX shared memory (not sure anything is using it yet!) to know when a region of memory is free for re-use. Note it doesn't mark the region as free overall - only free from this transaction. The application developer still needs to track which ranges are in the process of being recycled and wait until all pending transactions are completed. TODO: * documentation, as always Sponsored by: Netflix, Inc. Modified: head/sys/compat/freebsd32/freebsd32_misc.c head/sys/kern/uipc_syscalls.c head/sys/sys/sf_base.h head/sys/sys/sf_sync.h Modified: head/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_misc.c Fri Jan 17 05:15:44 2014 (r260805) +++ head/sys/compat/freebsd32/freebsd32_misc.c Fri Jan 17 05:26:55 2014 (r260806) @@ -1644,18 +1644,28 @@ struct sf_hdtr32 { int trl_cnt; }; +struct sf_hdtr_kq32 { + int kq_fd; + uint32_t kq_flags; + uint32_t kq_udata; /* 32-bit void ptr */ + uint32_t kq_ident; /* 32-bit uintptr_t */ +}; + static int freebsd32_do_sendfile(struct thread *td, struct freebsd32_sendfile_args *uap, int compat) { struct sf_hdtr32 hdtr32; struct sf_hdtr hdtr; + struct sf_hdtr_kq32 hdtr_kq32; + struct sf_hdtr_kq hdtr_kq; struct uio *hdr_uio, *trl_uio; struct iovec32 *iov32; off_t offset; int error; off_t sbytes; struct sendfile_sync *sfs; + int do_kqueue = 0; offset = PAIR32TO64(off_t, uap->offset); if (offset < 0) @@ -1687,10 +1697,32 @@ freebsd32_do_sendfile(struct thread *td, if (error) goto out; } + + /* + * If SF_KQUEUE is set, then we need to also copy in + * the kqueue data after the normal hdtr set and set do_kqueue=1. + */ + if (uap->flags & SF_KQUEUE) { + error = copyin(((char *) uap->hdtr) + sizeof(hdtr32), + &hdtr_kq32, + sizeof(hdtr_kq32)); + if (error != 0) + goto out; + + /* 32->64 bit fields */ + CP(hdtr_kq32, hdtr_kq, kq_fd); + CP(hdtr_kq32, hdtr_kq, kq_flags); + PTRIN_CP(hdtr_kq32, hdtr_kq, kq_udata); + CP(hdtr_kq32, hdtr_kq, kq_ident); + do_kqueue = 1; + } } + + /* Call sendfile */ + /* XXX stack depth! */ error = _do_sendfile(td, uap->fd, uap->s, uap->flags, compat, - offset, uap->nbytes, &sbytes, hdr_uio, trl_uio); + offset, uap->nbytes, &sbytes, hdr_uio, trl_uio, &hdtr_kq); if (uap->sbytes != NULL) copyout(&sbytes, uap->sbytes, sizeof(off_t)); Modified: head/sys/kern/uipc_syscalls.c ============================================================================== --- head/sys/kern/uipc_syscalls.c Fri Jan 17 05:15:44 2014 (r260805) +++ head/sys/kern/uipc_syscalls.c Fri Jan 17 05:26:55 2014 (r260806) @@ -123,6 +123,10 @@ static int getpeername1(struct thread *t counter_u64_t sfstat[sizeof(struct sfstat) / sizeof(uint64_t)]; +static int filt_sfsync_attach(struct knote *kn); +static void filt_sfsync_detach(struct knote *kn); +static int filt_sfsync(struct knote *kn, long hint); + /* * sendfile(2)-related variables and associated sysctls */ @@ -132,8 +136,28 @@ static int sfreadahead = 1; SYSCTL_INT(_kern_ipc_sendfile, OID_AUTO, readahead, CTLFLAG_RW, &sfreadahead, 0, "Number of sendfile(2) read-ahead MAXBSIZE blocks"); +#ifdef SFSYNC_DEBUG +static int sf_sync_debug = 0; +SYSCTL_INT(_debug, OID_AUTO, sf_sync_debug, CTLFLAG_RW, + &sf_sync_debug, 0, "Output debugging during sf_sync lifecycle"); +#define SFSYNC_DPRINTF(s, ...) \ + do { \ + if (sf_sync_debug) \ + printf((s), ##__VA_ARGS__); \ + } while (0) +#else +#define SFSYNC_DPRINTF(c, ...) +#endif + static uma_zone_t zone_sfsync; +static struct filterops sendfile_filtops = { + .f_isfd = 0, + .f_attach = filt_sfsync_attach, + .f_detach = filt_sfsync_detach, + .f_event = filt_sfsync, +}; + static void sfstat_init(const void *unused) { @@ -152,6 +176,7 @@ sf_sync_init(const void *unused) NULL, NULL, UMA_ALIGN_CACHE, 0); + kqueue_add_filteropts(EVFILT_SENDFILE, &sendfile_filtops); } SYSINIT(sf_sync, SI_SUB_MBUF, SI_ORDER_FIRST, sf_sync_init, NULL); @@ -1860,6 +1885,118 @@ getsockaddr(namp, uaddr, len) return (error); } +static int +filt_sfsync_attach(struct knote *kn) +{ + struct sendfile_sync *sfs = (struct sendfile_sync *) kn->kn_sdata; + struct knlist *knl = &sfs->klist; + + SFSYNC_DPRINTF("%s: kn=%p, sfs=%p\n", __func__, kn, sfs); + + /* + * Validate that we actually received this via the kernel API. + */ + if ((kn->kn_flags & EV_FLAG1) == 0) + return (EPERM); + + kn->kn_ptr.p_v = sfs; + kn->kn_flags &= ~EV_FLAG1; + + knl->kl_lock(knl->kl_lockarg); + /* + * If we're in the "freeing" state, + * don't allow the add. That way we don't + * end up racing with some other thread that + * is trying to finish some setup. + */ + if (sfs->state == SF_STATE_FREEING) { + knl->kl_unlock(knl->kl_lockarg); + return (EINVAL); + } + knlist_add(&sfs->klist, kn, 1); + knl->kl_unlock(knl->kl_lockarg); + + return (0); +} + +/* + * Called when a knote is being detached. + */ +static void +filt_sfsync_detach(struct knote *kn) +{ + struct knlist *knl; + struct sendfile_sync *sfs; + int do_free = 0; + + sfs = kn->kn_ptr.p_v; + knl = &sfs->klist; + + SFSYNC_DPRINTF("%s: kn=%p, sfs=%p\n", __func__, kn, sfs); + + knl->kl_lock(knl->kl_lockarg); + if (!knlist_empty(knl)) + knlist_remove(knl, kn, 1); + + /* + * If the list is empty _AND_ the refcount is 0 + * _AND_ we've finished the setup phase and now + * we're in the running phase, we can free the + * underlying sendfile_sync. + * + * But we shouldn't do it before finishing the + * underlying divorce from the knote. + * + * So, we have the sfsync lock held; transition + * it to "freeing", then unlock, then free + * normally. + */ + if (knlist_empty(knl)) { + if (sfs->state == SF_STATE_COMPLETED && sfs->count == 0) { + SFSYNC_DPRINTF("%s: (%llu) sfs=%p; completed, " + "count==0, empty list: time to free!\n", + __func__, + (unsigned long long) curthread->td_tid, + sfs); + sf_sync_set_state(sfs, SF_STATE_FREEING, 1); + do_free = 1; + } + } + knl->kl_unlock(knl->kl_lockarg); + + /* + * Only call free if we're the one who has transitioned things + * to free. Otherwise we could race with another thread that + * is currently tearing things down. + */ + if (do_free == 1) { + SFSYNC_DPRINTF("%s: (%llu) sfs=%p, %s:%d\n", + __func__, + (unsigned long long) curthread->td_tid, + sfs, + __FILE__, + __LINE__); + sf_sync_free(sfs); + } +} + +static int +filt_sfsync(struct knote *kn, long hint) +{ + struct sendfile_sync *sfs = (struct sendfile_sync *) kn->kn_ptr.p_v; + int ret; + + SFSYNC_DPRINTF("%s: kn=%p, sfs=%p\n", __func__, kn, sfs); + + /* + * XXX add a lock assertion here! + */ + ret = (sfs->count == 0 && sfs->state == SF_STATE_COMPLETED); + + return (ret); +} + + /* * Detach mapped page and release resources back to the system. */ @@ -1885,21 +2022,97 @@ sf_buf_mext(struct mbuf *mb, void *addr, sfs = addr; sf_sync_deref(sfs); } + /* + * sfs may be invalid at this point, don't use it! + */ return (EXT_FREE_OK); } +/* + * Called to remove a reference to a sf_sync object. + * + * This is generally done during the mbuf free path to signify + * that one of the mbufs in the transaction has been completed. + * + * If we're doing SF_SYNC and the refcount is zero then we'll wake + * up any waiters. + * + * IF we're doing SF_KQUEUE and the refcount is zero then we'll + * fire off the knote. + */ void sf_sync_deref(struct sendfile_sync *sfs) { + int do_free = 0; if (sfs == NULL) return; mtx_lock(&sfs->mtx); KASSERT(sfs->count> 0, ("Sendfile sync botchup count == 0")); - if (--sfs->count == 0) - cv_signal(&sfs->cv); + sfs->count --; + + /* + * Only fire off the wakeup / kqueue notification if + * we are in the running state. + */ + if (sfs->count == 0 && sfs->state == SF_STATE_COMPLETED) { + if (sfs->flags & SF_SYNC) + cv_signal(&sfs->cv); + + if (sfs->flags & SF_KQUEUE) { + SFSYNC_DPRINTF("%s: (%llu) sfs=%p: knote!\n", + __func__, + (unsigned long long) curthread->td_tid, + sfs); + KNOTE_LOCKED(&sfs->klist, 1); + } + + /* + * If we're not waiting around for a sync, + * check if the knote list is empty. + * If it is, we transition to free. + * + * XXX I think it's about time I added some state + * or flag that says whether we're supposed to be + * waiting around until we've done a signal. + * + * XXX Ie, the reason that I don't free it here + * is because the caller will free the last reference, + * not us. That should be codified in some flag + * that indicates "self-free" rather than checking + * for SF_SYNC all the time. + */ + if ((sfs->flags & SF_SYNC) == 0 && knlist_empty(&sfs->klist)) { + SFSYNC_DPRINTF("%s: (%llu) sfs=%p; completed, " + "count==0, empty list: time to free!\n", + __func__, + (unsigned long long) curthread->td_tid, + sfs); + sf_sync_set_state(sfs, SF_STATE_FREEING, 1); + do_free = 1; + } + + } mtx_unlock(&sfs->mtx); + + /* + * Attempt to do a free here. + * + * We do this outside of the lock because it may destroy the + * lock in question as it frees things. We can optimise this + * later. + * + * XXX yes, we should make it a requirement to hold the + * lock across sf_sync_free(). + */ + if (do_free == 1) { + SFSYNC_DPRINTF("%s: (%llu) sfs=%p\n", + __func__, + (unsigned long long) curthread->td_tid, + sfs); + sf_sync_free(sfs); + } } /* @@ -1917,6 +2130,10 @@ sf_sync_alloc(uint32_t flags) mtx_init(&sfs->mtx, "sendfile", NULL, MTX_DEF); cv_init(&sfs->cv, "sendfile"); sfs->flags = flags; + sfs->state = SF_STATE_SETUP; + knlist_init_mtx(&sfs->klist, &sfs->mtx); + + SFSYNC_DPRINTF("%s: sfs=%p, flags=0x%08x\n", __func__, sfs, sfs->flags); return (sfs); } @@ -1946,13 +2163,49 @@ sf_sync_syscall_wait(struct sendfile_syn if (sfs == NULL) return; - mtx_lock(&sfs->mtx); + KASSERT(mtx_owned(&sfs->mtx), ("%s: sfs=%p: not locked but should be!", + __func__, + sfs)); + + /* + * If we're not requested to wait during the syscall, + * don't bother waiting. + */ + if ((sfs->flags & SF_SYNC) == 0) + goto out; + + /* + * This is a bit suboptimal and confusing, so bear with me. + * + * Ideally sf_sync_syscall_wait() will wait until + * all pending mbuf transmit operations are done. + * This means that when sendfile becomes async, it'll + * run in the background and will transition from + * RUNNING to COMPLETED when it's finished acquiring + * new things to send. Then, when the mbufs finish + * sending, COMPLETED + sfs->count == 0 is enough to + * know that no further work is being done. + * + * So, we will sleep on both RUNNING and COMPLETED. + * It's up to the (in progress) async sendfile loop + * to transition the sf_sync from RUNNING to + * COMPLETED so the wakeup above will actually + * do the cv_signal() call. + */ + if (sfs->state != SF_STATE_COMPLETED && sfs->state != SF_STATE_RUNNING) + goto out; + if (sfs->count != 0) cv_wait(&sfs->cv, &sfs->mtx); KASSERT(sfs->count == 0, ("sendfile sync still busy")); - mtx_unlock(&sfs->mtx); + +out: + return; } +/* + * Free an sf_sync if it's appropriate to. + */ void sf_sync_free(struct sendfile_sync *sfs) { @@ -1960,18 +2213,158 @@ sf_sync_free(struct sendfile_sync *sfs) if (sfs == NULL) return; + SFSYNC_DPRINTF("%s: (%lld) sfs=%p; called; state=%d, flags=0x%08x " + "count=%d\n", + __func__, + (long long) curthread->td_tid, + sfs, + sfs->state, + sfs->flags, + sfs->count); + + mtx_lock(&sfs->mtx); + /* - * XXX we should ensure that nothing else has this - * locked before freeing. + * We keep the sf_sync around if the state is active, + * we are doing kqueue notification and we have active + * knotes. + * + * If the caller wants to free us right this second it + * should transition this to the freeing state. + * + * So, complain loudly if they break this rule. */ - mtx_lock(&sfs->mtx); + if (sfs->state != SF_STATE_FREEING) { + printf("%s: (%llu) sfs=%p; not freeing; let's wait!\n", + __func__, + (unsigned long long) curthread->td_tid, + sfs); + mtx_unlock(&sfs->mtx); + return; + } + KASSERT(sfs->count == 0, ("sendfile sync still busy")); cv_destroy(&sfs->cv); + /* + * This doesn't call knlist_detach() on each knote; it just frees + * the entire list. + */ + knlist_delete(&sfs->klist, curthread, 1); mtx_destroy(&sfs->mtx); + SFSYNC_DPRINTF("%s: (%llu) sfs=%p; freeing\n", + __func__, + (unsigned long long) curthread->td_tid, + sfs); uma_zfree(zone_sfsync, sfs); } /* + * Setup a sf_sync to post a kqueue notification when things are complete. + */ +int +sf_sync_kqueue_setup(struct sendfile_sync *sfs, struct sf_hdtr_kq *sfkq) +{ + struct kevent kev; + int error; + + sfs->flags |= SF_KQUEUE; + + /* Check the flags are valid */ + if ((sfkq->kq_flags & ~(EV_CLEAR | EV_DISPATCH | EV_ONESHOT)) != 0) + return (EINVAL); + + SFSYNC_DPRINTF("%s: sfs=%p: kqfd=%d, flags=0x%08x, ident=%p, udata=%p\n", + __func__, + sfs, + sfkq->kq_fd, + sfkq->kq_flags, + (void *) sfkq->kq_ident, + (void *) sfkq->kq_udata); + + /* Setup and register a knote on the given kqfd. */ + kev.ident = (uintptr_t) sfkq->kq_ident; + kev.filter = EVFILT_SENDFILE; + kev.flags = EV_ADD | EV_ENABLE | EV_FLAG1 | sfkq->kq_flags; + kev.data = (intptr_t) sfs; + kev.udata = sfkq->kq_udata; + + error = kqfd_register(sfkq->kq_fd, &kev, curthread, 1); + if (error != 0) { + SFSYNC_DPRINTF("%s: returned %d\n", __func__, error); + } + return (error); +} + +void +sf_sync_set_state(struct sendfile_sync *sfs, sendfile_sync_state_t state, + int islocked) +{ + sendfile_sync_state_t old_state; + + if (! islocked) + mtx_lock(&sfs->mtx); + + /* + * Update our current state. + */ + old_state = sfs->state; + sfs->state = state; + SFSYNC_DPRINTF("%s: (%llu) sfs=%p; going from %d to %d\n", + __func__, + (unsigned long long) curthread->td_tid, + sfs, + old_state, + state); + + /* + * If we're transitioning from RUNNING to COMPLETED and the count is + * zero, then post the knote. The caller may have completed the + * send before we updated the state to COMPLETED and we need to make + * sure this is communicated. + */ + if (old_state == SF_STATE_RUNNING + && state == SF_STATE_COMPLETED + && sfs->count == 0 + && sfs->flags & SF_KQUEUE) { + SFSYNC_DPRINTF("%s: (%llu) sfs=%p: triggering knote!\n", + __func__, + (unsigned long long) curthread->td_tid, + sfs); + KNOTE_LOCKED(&sfs->klist, 1); + } + + if (! islocked) + mtx_unlock(&sfs->mtx); +} + +/* + * Set the retval/errno for the given transaction. + * + * This will eventually/ideally be used when the KNOTE is fired off + * to signify the completion of this transaction. + * + * The sfsync lock should be held before entering this function. + */ +void +sf_sync_set_retval(struct sendfile_sync *sfs, off_t retval, int xerrno) +{ + + KASSERT(mtx_owned(&sfs->mtx), ("%s: sfs=%p: not locked but should be!", + __func__, + sfs)); + + SFSYNC_DPRINTF("%s: (%llu) sfs=%p: errno=%d, retval=%jd\n", + __func__, + (unsigned long long) curthread->td_tid, + sfs, + xerrno, + (intmax_t) retval); + + sfs->retval = retval; + sfs->xerrno = xerrno; +} + +/* * sendfile(2) * * int sendfile(int fd, int s, off_t offset, size_t nbytes, @@ -1992,15 +2385,21 @@ sys_sendfile(struct thread *td, struct s int _do_sendfile(struct thread *td, int src_fd, int sock_fd, int flags, int compat, off_t offset, size_t nbytes, off_t *sbytes, - struct uio *hdr_uio, struct uio *trl_uio) + struct uio *hdr_uio, + struct uio *trl_uio, struct sf_hdtr_kq *hdtr_kq) { cap_rights_t rights; struct sendfile_sync *sfs = NULL; struct file *fp; int error; + int do_kqueue = 0; + int do_free = 0; AUDIT_ARG_FD(src_fd); + if (hdtr_kq != NULL) + do_kqueue = 1; + /* * sendfile(2) can start at any offset within a file so we require * CAP_READ+CAP_SEEK = CAP_PREAD. @@ -2011,20 +2410,121 @@ _do_sendfile(struct thread *td, int src_ } /* + * IF SF_KQUEUE is set but we haven't copied in anything for + * kqueue data, error out. + */ + if (flags & SF_KQUEUE && do_kqueue == 0) { + SFSYNC_DPRINTF("%s: SF_KQUEUE but no KQUEUE data!\n", __func__); + goto out; + } + + /* * If we need to wait for completion, initialise the sfsync * state here. */ - if (flags & SF_SYNC) - sfs = sf_sync_alloc(flags & SF_SYNC); + if (flags & (SF_SYNC | SF_KQUEUE)) + sfs = sf_sync_alloc(flags & (SF_SYNC | SF_KQUEUE)); + + if (flags & SF_KQUEUE) { + error = sf_sync_kqueue_setup(sfs, hdtr_kq); + if (error) { + SFSYNC_DPRINTF("%s: (%llu) error; sfs=%p\n", + __func__, + (unsigned long long) curthread->td_tid, + sfs); + sf_sync_set_state(sfs, SF_STATE_FREEING, 0); + sf_sync_free(sfs); + goto out; + } + } + /* + * Do the sendfile call. + * + * If this fails, it'll free the mbuf chain which will free up the + * sendfile_sync references. + */ error = fo_sendfile(fp, sock_fd, hdr_uio, trl_uio, offset, nbytes, sbytes, flags, compat ? SFK_COMPAT : 0, sfs, td); /* - * If appropriate, do the wait and free here. + * If the sendfile call succeeded, transition the sf_sync state + * to RUNNING, then COMPLETED. + * + * If the sendfile call failed, then the sendfile call may have + * actually sent some data first - so we check to see whether + * any data was sent. If some data was queued (ie, count > 0) + * then we can't call free; we have to wait until the partial + * transaction completes before we continue along. + * + * This has the side effect of firing off the knote + * if the refcount has hit zero by the time we get here. */ if (sfs != NULL) { + mtx_lock(&sfs->mtx); + if (error == 0 || sfs->count > 0) { + /* + * When it's time to do async sendfile, the transition + * to RUNNING signifies that we're actually actively + * adding and completing mbufs. When the last disk + * buffer is read (ie, when we're not doing any + * further read IO and all subsequent stuff is mbuf + * transmissions) we'll transition to COMPLETED + * and when the final mbuf is freed, the completion + * will be signaled. + */ + sf_sync_set_state(sfs, SF_STATE_RUNNING, 1); + + /* + * Set the retval before we signal completed. + * If we do it the other way around then transitioning to + * COMPLETED may post the knote before you set the return + * status! + * + * XXX for now, errno is always 0, as we don't post + * knotes if sendfile failed. Maybe that'll change later. + */ + sf_sync_set_retval(sfs, *sbytes, error); + + /* + * And now transition to completed, which will kick off + * the knote if required. + */ + sf_sync_set_state(sfs, SF_STATE_COMPLETED, 1); + } else { + /* + * Error isn't zero, sfs_count is zero, so we + * won't have some other thing to wake things up. + * Thus free. + */ + sf_sync_set_state(sfs, SF_STATE_FREEING, 1); + do_free = 1; + } + + /* + * Next - wait if appropriate. + */ sf_sync_syscall_wait(sfs); + + /* + * If we're not doing kqueue notifications, we can + * transition this immediately to the freeing state. + */ + if ((sfs->flags & SF_KQUEUE) == 0) { + sf_sync_set_state(sfs, SF_STATE_FREEING, 1); + do_free = 1; + } + + mtx_unlock(&sfs->mtx); + } + + /* + * If do_free is set, free here. + * + * If we're doing no-kqueue notification and it's just sleep notification, + * we also do free; it's the only chance we have. + */ + if (sfs != NULL && do_free == 1) { sf_sync_free(sfs); } @@ -2036,16 +2536,20 @@ _do_sendfile(struct thread *td, int src_ fdrop(fp, td); out: + /* Return error */ return (error); } + static int do_sendfile(struct thread *td, struct sendfile_args *uap, int compat) { struct sf_hdtr hdtr; + struct sf_hdtr_kq hdtr_kq; struct uio *hdr_uio, *trl_uio; int error; off_t sbytes; + int do_kqueue = 0; /* * File offset must be positive. If it goes beyond EOF @@ -2070,10 +2574,25 @@ do_sendfile(struct thread *td, struct se if (error != 0) goto out; } + + /* + * If SF_KQUEUE is set, then we need to also copy in + * the kqueue data after the normal hdtr set and set + * do_kqueue=1. + */ + if (uap->flags & SF_KQUEUE) { + error = copyin(((char *) uap->hdtr) + sizeof(hdtr), + &hdtr_kq, + sizeof(hdtr_kq)); + if (error != 0) + goto out; + do_kqueue = 1; + } } + /* Call sendfile */ error = _do_sendfile(td, uap->fd, uap->s, uap->flags, compat, - uap->offset, uap->nbytes, &sbytes, hdr_uio, trl_uio); + uap->offset, uap->nbytes, &sbytes, hdr_uio, trl_uio, &hdtr_kq); if (uap->sbytes != NULL) { copyout(&sbytes, uap->sbytes, sizeof(off_t)); Modified: head/sys/sys/sf_base.h ============================================================================== --- head/sys/sys/sf_base.h Fri Jan 17 05:15:44 2014 (r260805) +++ head/sys/sys/sf_base.h Fri Jan 17 05:26:55 2014 (r260806) @@ -31,6 +31,7 @@ extern int _do_sendfile(struct thread *, int src_fd, int sock_fd, int flags, int compat, off_t offset, size_t nbytes, off_t *sbytes, - struct uio *hdr_uio, struct uio *trl_uio); + struct uio *hdr_uio, struct uio *trl_uio, + struct sf_hdtr_kq *hdtr_kq); #endif /* _SYS_SF_BASE_H_ */ Modified: head/sys/sys/sf_sync.h ============================================================================== --- head/sys/sys/sf_sync.h Fri Jan 17 05:15:44 2014 (r260805) +++ head/sys/sys/sf_sync.h Fri Jan 17 05:26:55 2014 (r260806) @@ -29,17 +29,36 @@ #ifndef _SYS_SF_SYNC_H_ #define _SYS_SF_SYNC_H_ +typedef enum { + SF_STATE_NONE, + SF_STATE_SETUP, + SF_STATE_RUNNING, + SF_STATE_COMPLETED, + SF_STATE_FREEING +} sendfile_sync_state_t; + struct sendfile_sync { - uint32_t flags; struct mtx mtx; struct cv cv; - unsigned count; + struct knlist klist; + uint32_t flags; + uint32_t count; + int32_t xerrno; /* Completion errno, if retval < 0 */ + off_t retval; /* Completion retval (eg written bytes) */ + sendfile_sync_state_t state; }; +/* XXX pollution */ +struct sf_hdtr_kq; + extern struct sendfile_sync * sf_sync_alloc(uint32_t flags); extern void sf_sync_syscall_wait(struct sendfile_sync *); extern void sf_sync_free(struct sendfile_sync *); +extern void sf_sync_try_free(struct sendfile_sync *); extern void sf_sync_ref(struct sendfile_sync *); extern void sf_sync_deref(struct sendfile_sync *); +extern int sf_sync_kqueue_setup(struct sendfile_sync *, struct sf_hdtr_kq *); +extern void sf_sync_set_state(struct sendfile_sync *, sendfile_sync_state_t, int); +extern void sf_sync_set_retval(struct sendfile_sync *, off_t, int); #endif /* !_SYS_SF_BUF_H_ */ From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 06:33:24 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 26D3B336; Fri, 17 Jan 2014 06:33:24 +0000 (UTC) Received: from mail-ea0-x22f.google.com (mail-ea0-x22f.google.com [IPv6:2a00:1450:4013:c01::22f]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3AC0E1331; Fri, 17 Jan 2014 06:33:23 +0000 (UTC) Received: by mail-ea0-f175.google.com with SMTP id z10so1517498ead.6 for ; Thu, 16 Jan 2014 22:33:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=MeP6NWHF8d5MAc8bAfV7GJB1uyDf352YSmsQIaWiAv8=; b=evHfPPNHMvV3eJW6IFy07iwm14/ocNMhdettz2iJD2+m7F/7mvznLZKIizWYSWXbCm gf/hraoGM0MCUYVfh+QNM1ml9nQVFJiCd1dTns//JY/oC009MDsM2mtD8iHpr/KgwZwJ vAuNp+xAuXhSgd5AQHraYYvj+I868k1skD8LnUSAAETqHQbB6+V5Ww6SQ0Iw1SFWR7/i OB7CoFO8ZEJXAY7d1y15lI2059pC9waUC2e2tSIKAa9rEsbAQNsJOfDfbODLchkIUZyx pO09G2edgC3Dlu+aEUALqRXlRD5cGlv7ACgXwetR3KLrYsCyjmzwPnqI88cyJlYx/Iqn O4bw== MIME-Version: 1.0 X-Received: by 10.14.6.5 with SMTP id 5mr170605eem.51.1389940401294; Thu, 16 Jan 2014 22:33:21 -0800 (PST) Sender: hiren.panchasara@gmail.com Received: by 10.14.2.66 with HTTP; Thu, 16 Jan 2014 22:33:21 -0800 (PST) In-Reply-To: <20140117044254.GB56239@onelab2.iet.unipi.it> References: <201401160020.s0G0KgwY004039@svn.freebsd.org> <20140117044254.GB56239@onelab2.iet.unipi.it> Date: Thu, 16 Jan 2014 22:33:21 -0800 X-Google-Sender-Auth: -yOH-gBWh43N9qfhnAn6QICLW0I Message-ID: Subject: Re: svn commit: r260700 - in head: sys/dev/netmap tools/tools/netmap From: hiren panchasara To: Luigi Rizzo Content-Type: text/plain; charset=UTF-8 Cc: svn-src-head , Luigi Rizzo , src-committers , svn-src-all X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 06:33:24 -0000 On Thu, Jan 16, 2014 at 8:42 PM, Luigi Rizzo wrote: > On Thu, Jan 16, 2014 at 12:46:10PM -0800, hiren panchasara wrote: >> On Wed, Jan 15, 2014 at 4:20 PM, Luigi Rizzo wrote: >> > Author: luigi >> > Date: Thu Jan 16 00:20:42 2014 >> > New Revision: 260700 >> > URL: http://svnweb.freebsd.org/changeset/base/260700 >> > >> > Log: >> > netmap_user.h: >> > add separate rx/tx ring indexes >> > add ring specifier in nm_open device name >> > >> > netmap.c, netmap_vale.c >> > more consistent errno numbers >> > >> > netmap_generic.c >> > correctly handle failure in registering interfaces. >> > >> > tools/tools/netmap/ >> > massive cleanup of the example programs >> > (a lot of common code is now in netmap_user.h.) >> > >> > nm_util.[ch] are going away soon. >> > pcap.c will also go when i commit the native netmap support for libpcap. >> > >> > Modified: >> > head/sys/dev/netmap/netmap.c >> > head/sys/dev/netmap/netmap_generic.c >> > head/sys/dev/netmap/netmap_vale.c >> > head/tools/tools/netmap/Makefile >> > head/tools/tools/netmap/bridge.c >> > head/tools/tools/netmap/nm_util.c >> > head/tools/tools/netmap/nm_util.h >> > head/tools/tools/netmap/pcap.c >> > head/tools/tools/netmap/pkt-gen.c >> > head/tools/tools/netmap/vale-ctl.c >> > >> >> Hi Luigi, >> >> Doing make in tools/tools/netmap gives me a bunch of errors because >> "struct nm_desc_t" doesn't have members like if_flags, if_reqcap and >> if_curcap. It seems those members were coming from struct my_ring >> which is no more there. > > sorry my bad, i forgot to include sys/net/netmap_user.h in the commit. > Fixed in rev 260803 Thank you, Hiren From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 08:21:10 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8B76C568; Fri, 17 Jan 2014 08:21:10 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 785F41ADC; Fri, 17 Jan 2014 08:21:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0H8LAYK067700; Fri, 17 Jan 2014 08:21:10 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0H8LA1C067699; Fri, 17 Jan 2014 08:21:10 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401170821.s0H8LA1C067699@svn.freebsd.org> From: Hans Petter Selasky Date: Fri, 17 Jan 2014 08:21:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260808 - head/sys/dev/usb X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 08:21:10 -0000 Author: hselasky Date: Fri Jan 17 08:21:09 2014 New Revision: 260808 URL: http://svnweb.freebsd.org/changeset/base/260808 Log: Close a minor deadlock. MFC after: 1 week Modified: head/sys/dev/usb/usb_dev.c Modified: head/sys/dev/usb/usb_dev.c ============================================================================== --- head/sys/dev/usb/usb_dev.c Fri Jan 17 06:43:35 2014 (r260807) +++ head/sys/dev/usb/usb_dev.c Fri Jan 17 08:21:09 2014 (r260808) @@ -597,6 +597,13 @@ usb_fifo_free(struct usb_fifo *f) mtx_unlock(f->priv_mtx); mtx_lock(&usb_ref_lock); + /* + * Check if the "f->refcount" variable reached zero + * during the unlocked time before entering wait: + */ + if (f->refcount == 0) + break; + /* wait for sync */ cv_wait(&f->cv_drain, &usb_ref_lock); } From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 09:11:45 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 78D44D4D; Fri, 17 Jan 2014 09:11:45 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6529B1EEF; Fri, 17 Jan 2014 09:11:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0H9BjJi087937; Fri, 17 Jan 2014 09:11:45 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0H9BjUP087936; Fri, 17 Jan 2014 09:11:45 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201401170911.s0H9BjUP087936@svn.freebsd.org> From: Gleb Smirnoff Date: Fri, 17 Jan 2014 09:11:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260810 - head/usr.bin/ktrdump X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 09:11:45 -0000 Author: glebius Date: Fri Jan 17 09:11:44 2014 New Revision: 260810 URL: http://svnweb.freebsd.org/changeset/base/260810 Log: Print the ktr(4) format line that caused a failure. Sponsored by: Nginx, Inc. Modified: head/usr.bin/ktrdump/ktrdump.c Modified: head/usr.bin/ktrdump/ktrdump.c ============================================================================== --- head/usr.bin/ktrdump/ktrdump.c Fri Jan 17 08:44:12 2014 (r260809) +++ head/usr.bin/ktrdump/ktrdump.c Fri Jan 17 09:11:44 2014 (r260810) @@ -236,7 +236,7 @@ main(int ac, char **av) next: if ((c = *p++) == '\0') break; if (parm == KTR_PARMS) - errx(1, "too many parameters"); + errx(1, "too many parameters in \"%s\"", desc); switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 10:18:46 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 745FFD86; Fri, 17 Jan 2014 10:18:46 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5EB301364; Fri, 17 Jan 2014 10:18:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HAIkLh013523; Fri, 17 Jan 2014 10:18:46 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HAIknP013522; Fri, 17 Jan 2014 10:18:46 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401171018.s0HAIknP013522@svn.freebsd.org> From: Andriy Gapon Date: Fri, 17 Jan 2014 10:18:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260811 - head/cddl/contrib/opensolaris/cmd/zdb X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 10:18:46 -0000 Author: avg Date: Fri Jan 17 10:18:45 2014 New Revision: 260811 URL: http://svnweb.freebsd.org/changeset/base/260811 Log: zdb -R: do not treat numeric parameters to a flag as more flags Reviewed by: Matthew Ahrens MFC after: 1 week Modified: head/cddl/contrib/opensolaris/cmd/zdb/zdb.c Modified: head/cddl/contrib/opensolaris/cmd/zdb/zdb.c ============================================================================== --- head/cddl/contrib/opensolaris/cmd/zdb/zdb.c Fri Jan 17 09:11:44 2014 (r260810) +++ head/cddl/contrib/opensolaris/cmd/zdb/zdb.c Fri Jan 17 10:18:45 2014 (r260811) @@ -3012,6 +3012,7 @@ zdb_read_block(char *thing, spa_t *spa) free(dup); return; } + i += p - &flagstr[i + 1]; /* skip over the number */ } } From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 10:23:47 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1B1F5FE9; Fri, 17 Jan 2014 10:23:47 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DD16013E3; Fri, 17 Jan 2014 10:23:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HANkwa016914; Fri, 17 Jan 2014 10:23:46 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HANkNC016913; Fri, 17 Jan 2014 10:23:46 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401171023.s0HANkNC016913@svn.freebsd.org> From: Andriy Gapon Date: Fri, 17 Jan 2014 10:23:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260812 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 10:23:47 -0000 Author: avg Date: Fri Jan 17 10:23:46 2014 New Revision: 260812 URL: http://svnweb.freebsd.org/changeset/base/260812 Log: traverse_visitbp: visit DMU_GROUPUSED_OBJECT before DMU_USERUSED_OBJECT This is done to ensure that visited object IDs are always increasing. Also, pass correct object ID to prefetch_dnode_metadata for os_groupused_dnode. Without this change we would hit an assert if traversal was paused on a GROUPUSED object, which is unlikely but possible. Apparently the same change was independently developed by Deplhix. Reviewed by: Matthew Ahrens MFC after: 10 days Sponsored by: HybridCluster Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c Fri Jan 17 10:18:45 2014 (r260811) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c Fri Jan 17 10:23:46 2014 (r260812) @@ -351,9 +351,9 @@ traverse_visitbp(traverse_data_t *td, co prefetch_dnode_metadata(td, dnp, zb->zb_objset, DMU_META_DNODE_OBJECT); if (arc_buf_size(buf) >= sizeof (objset_phys_t)) { - prefetch_dnode_metadata(td, &osp->os_userused_dnode, - zb->zb_objset, DMU_USERUSED_OBJECT); prefetch_dnode_metadata(td, &osp->os_groupused_dnode, + zb->zb_objset, DMU_GROUPUSED_OBJECT); + prefetch_dnode_metadata(td, &osp->os_userused_dnode, zb->zb_objset, DMU_USERUSED_OBJECT); } @@ -364,18 +364,18 @@ traverse_visitbp(traverse_data_t *td, co err = 0; } if (err == 0 && arc_buf_size(buf) >= sizeof (objset_phys_t)) { - dnp = &osp->os_userused_dnode; + dnp = &osp->os_groupused_dnode; err = traverse_dnode(td, dnp, zb->zb_objset, - DMU_USERUSED_OBJECT); + DMU_GROUPUSED_OBJECT); } if (err && hard) { lasterr = err; err = 0; } if (err == 0 && arc_buf_size(buf) >= sizeof (objset_phys_t)) { - dnp = &osp->os_groupused_dnode; + dnp = &osp->os_userused_dnode; err = traverse_dnode(td, dnp, zb->zb_objset, - DMU_GROUPUSED_OBJECT); + DMU_USERUSED_OBJECT); } } From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 10:34:02 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BE90B470; Fri, 17 Jan 2014 10:34:02 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A971D14E8; Fri, 17 Jan 2014 10:34:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HAY2vU021091; Fri, 17 Jan 2014 10:34:02 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HAY2lZ021083; Fri, 17 Jan 2014 10:34:02 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401171034.s0HAY2lZ021083@svn.freebsd.org> From: Andriy Gapon Date: Fri, 17 Jan 2014 10:34:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260813 - in stable/10/sys: kern modules/dtrace modules/dtrace/dtio modules/dtrace/dtraceall X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 10:34:02 -0000 Author: avg Date: Fri Jan 17 10:34:01 2014 New Revision: 260813 URL: http://svnweb.freebsd.org/changeset/base/260813 Log: MFC r257037: Redefine the io provider using the SDT(9) macros MFC slacker: markj Deleted: stable/10/sys/kern/dtio_kdtrace.c stable/10/sys/modules/dtrace/dtio/ Modified: stable/10/sys/kern/subr_devstat.c stable/10/sys/modules/dtrace/Makefile stable/10/sys/modules/dtrace/dtraceall/dtraceall.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/kern/subr_devstat.c ============================================================================== --- stable/10/sys/kern/subr_devstat.c Fri Jan 17 10:23:46 2014 (r260812) +++ stable/10/sys/kern/subr_devstat.c Fri Jan 17 10:34:01 2014 (r260813) @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -46,57 +47,21 @@ __FBSDID("$FreeBSD$"); #include -#ifdef KDTRACE_HOOKS -#include +SDT_PROVIDER_DEFINE(io); -dtrace_io_start_probe_func_t dtrace_io_start_probe; -dtrace_io_done_probe_func_t dtrace_io_done_probe; -dtrace_io_wait_start_probe_func_t dtrace_io_wait_start_probe; -dtrace_io_wait_done_probe_func_t dtrace_io_wait_done_probe; - -uint32_t dtio_start_id; -uint32_t dtio_done_id; -uint32_t dtio_wait_start_id; -uint32_t dtio_wait_done_id; - -#define DTRACE_DEVSTAT_START() \ - if (dtrace_io_start_probe != NULL) \ - (*dtrace_io_start_probe)(dtio_start_id, NULL, ds); - -#define DTRACE_DEVSTAT_BIO_START() \ - if (dtrace_io_start_probe != NULL) \ - (*dtrace_io_start_probe)(dtio_start_id, bp, ds); - -#define DTRACE_DEVSTAT_DONE() \ - if (dtrace_io_done_probe != NULL) \ - (*dtrace_io_done_probe)(dtio_done_id, NULL, ds); - -#define DTRACE_DEVSTAT_BIO_DONE() \ - if (dtrace_io_done_probe != NULL) \ - (*dtrace_io_done_probe)(dtio_done_id, bp, ds); - -#define DTRACE_DEVSTAT_WAIT_START() \ - if (dtrace_io_wait_start_probe != NULL) \ - (*dtrace_io_wait_start_probe)(dtio_wait_start_id, NULL, ds); - -#define DTRACE_DEVSTAT_WAIT_DONE() \ - if (dtrace_io_wait_done_probe != NULL) \ - (*dtrace_io_wait_done_probe)(dtio_wait_done_id, NULL, ds); - -#else /* ! KDTRACE_HOOKS */ - -#define DTRACE_DEVSTAT_START() - -#define DTRACE_DEVSTAT_BIO_START() - -#define DTRACE_DEVSTAT_DONE() - -#define DTRACE_DEVSTAT_BIO_DONE() - -#define DTRACE_DEVSTAT_WAIT_START() - -#define DTRACE_DEVSTAT_WAIT_DONE() -#endif /* KDTRACE_HOOKS */ +SDT_PROBE_DEFINE2(io, , , start, start, "struct bio *", "struct devstat *"); +SDT_PROBE_DEFINE2(io, , , done, done, "struct bio *", "struct devstat *"); +SDT_PROBE_DEFINE2(io, , , wait_start, wait-start, "struct bio *", + "struct devstat *"); +SDT_PROBE_DEFINE2(io, , , wait_done, wait-done, "struct bio *", + "struct devstat *"); + +#define DTRACE_DEVSTAT_START() SDT_PROBE2(io, , , start, NULL, ds) +#define DTRACE_DEVSTAT_BIO_START() SDT_PROBE2(io, , , start, bp, ds) +#define DTRACE_DEVSTAT_DONE() SDT_PROBE2(io, , , done, NULL, ds) +#define DTRACE_DEVSTAT_BIO_DONE() SDT_PROBE2(io, , , done, bp, ds) +#define DTRACE_DEVSTAT_WAIT_START() SDT_PROBE2(io, , , wait_start, NULL, ds) +#define DTRACE_DEVSTAT_WAIT_DONE() SDT_PROBE2(io, , , wait_done, NULL, ds) static int devstat_num_devs; static long devstat_generation = 1; Modified: stable/10/sys/modules/dtrace/Makefile ============================================================================== --- stable/10/sys/modules/dtrace/Makefile Fri Jan 17 10:23:46 2014 (r260812) +++ stable/10/sys/modules/dtrace/Makefile Fri Jan 17 10:34:01 2014 (r260813) @@ -9,7 +9,6 @@ SUBDIR= dtmalloc \ dtrace \ dtraceall \ dtrace_test \ - dtio \ lockstat \ profile \ prototype \ Modified: stable/10/sys/modules/dtrace/dtraceall/dtraceall.c ============================================================================== --- stable/10/sys/modules/dtrace/dtraceall/dtraceall.c Fri Jan 17 10:23:46 2014 (r260812) +++ stable/10/sys/modules/dtrace/dtraceall/dtraceall.c Fri Jan 17 10:34:01 2014 (r260813) @@ -66,7 +66,6 @@ MODULE_VERSION(dtraceall, 1); MODULE_DEPEND(dtraceall, cyclic, 1, 1, 1); MODULE_DEPEND(dtraceall, opensolaris, 1, 1, 1); MODULE_DEPEND(dtraceall, dtrace, 1, 1, 1); -MODULE_DEPEND(dtraceall, dtio, 1, 1, 1); MODULE_DEPEND(dtraceall, dtmalloc, 1, 1, 1); MODULE_DEPEND(dtraceall, dtnfscl, 1, 1, 1); #if defined(NFSCLIENT) From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 10:35:19 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 724505B4; Fri, 17 Jan 2014 10:35:19 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5E5FD14FB; Fri, 17 Jan 2014 10:35:19 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HAZJaJ021309; Fri, 17 Jan 2014 10:35:19 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HAZJ3X021307; Fri, 17 Jan 2014 10:35:19 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401171035.s0HAZJ3X021307@svn.freebsd.org> From: Hans Petter Selasky Date: Fri, 17 Jan 2014 10:35:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260814 - head/sys/dev/usb X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 10:35:19 -0000 Author: hselasky Date: Fri Jan 17 10:35:18 2014 New Revision: 260814 URL: http://svnweb.freebsd.org/changeset/base/260814 Log: Fix a possible memory use after free and leak situation associated with USB device detach when using character device handles. This also includes LibUSB. It turns out that "usb_close()" cannot always get a reference to clean up its USB transfers and such, if called during the kernel USB device detach. Analysis by: hselasky @ Reported by: Juergen Lock MFC after: 1 week Modified: head/sys/dev/usb/usb_dev.c head/sys/dev/usb/usb_device.c Modified: head/sys/dev/usb/usb_dev.c ============================================================================== --- head/sys/dev/usb/usb_dev.c Fri Jan 17 10:34:01 2014 (r260813) +++ head/sys/dev/usb/usb_dev.c Fri Jan 17 10:35:18 2014 (r260814) @@ -207,6 +207,11 @@ usb_ref_device(struct usb_cdev_privdata DPRINTFN(2, "no device at %u\n", cpd->dev_index); goto error; } + if (cpd->udev->state == USB_STATE_DETACHED && + (need_uref != 2)) { + DPRINTFN(2, "device is detached\n"); + goto error; + } if (cpd->udev->refcount == USB_DEV_REF_MAX) { DPRINTFN(2, "no dev ref\n"); goto error; @@ -922,23 +927,12 @@ usb_close(void *arg) DPRINTFN(2, "cpd=%p\n", cpd); - err = usb_ref_device(cpd, &refs, 0); - if (err) + err = usb_ref_device(cpd, &refs, + 2 /* uref and allow detached state */); + if (err) { + DPRINTFN(0, "Cannot grab USB reference when " + "closing USB file handle\n"); goto done; - - /* - * If this function is not called directly from the root HUB - * thread, there is usually a need to lock the enumeration - * lock. Check this. - */ - if (!usbd_enum_is_locked(cpd->udev)) { - - DPRINTFN(2, "Locking enumeration\n"); - - /* reference device */ - err = usb_usb_ref_device(cpd, &refs); - if (err) - goto done; } if (cpd->fflags & FREAD) { usb_fifo_close(refs.rxfifo, cpd->fflags); Modified: head/sys/dev/usb/usb_device.c ============================================================================== --- head/sys/dev/usb/usb_device.c Fri Jan 17 10:34:01 2014 (r260813) +++ head/sys/dev/usb/usb_device.c Fri Jan 17 10:35:18 2014 (r260814) @@ -2070,6 +2070,8 @@ usb_free_device(struct usb_device *udev, DPRINTFN(4, "udev=%p port=%d\n", udev, udev->port_no); bus = udev->bus; + + /* set DETACHED state to prevent any further references */ usb_set_device_state(udev, USB_STATE_DETACHED); #if USB_HAVE_DEVCTL @@ -2085,16 +2087,7 @@ usb_free_device(struct usb_device *udev, usb_free_symlink(udev->ugen_symlink); udev->ugen_symlink = NULL; } -#endif - /* - * Unregister our device first which will prevent any further - * references: - */ - usb_bus_port_set_device(bus, udev->parent_hub ? - udev->parent_hub->hub->ports + udev->port_index : NULL, - NULL, USB_ROOT_HUB_ADDR); -#if USB_HAVE_UGEN /* wait for all pending references to go away: */ mtx_lock(&usb_ref_lock); udev->refcount--; @@ -2114,6 +2107,11 @@ usb_free_device(struct usb_device *udev, /* the following will get the device unconfigured in software */ usb_unconfigure(udev, USB_UNCFG_FLAG_FREE_EP0); + /* final device unregister after all character devices are closed */ + usb_bus_port_set_device(bus, udev->parent_hub ? + udev->parent_hub->hub->ports + udev->port_index : NULL, + NULL, USB_ROOT_HUB_ADDR); + /* unsetup any leftover default USB transfers */ usbd_transfer_unsetup(udev->ctrl_xfer, USB_CTRL_XFER_MAX); @@ -2647,8 +2645,14 @@ usb_set_device_state(struct usb_device * DPRINTF("udev %p state %s -> %s\n", udev, usb_statestr(udev->state), usb_statestr(state)); - udev->state = state; +#if USB_HAVE_UGEN + mtx_lock(&usb_ref_lock); +#endif + udev->state = state; +#if USB_HAVE_UGEN + mtx_unlock(&usb_ref_lock); +#endif if (udev->bus->methods->device_state_change != NULL) (udev->bus->methods->device_state_change) (udev); } From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 10:48:45 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E0707884; Fri, 17 Jan 2014 10:48:44 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C12C815C6; Fri, 17 Jan 2014 10:48:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HAmiB3025686; Fri, 17 Jan 2014 10:48:44 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HAmiPf025684; Fri, 17 Jan 2014 10:48:44 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401171048.s0HAmiPf025684@svn.freebsd.org> From: Andriy Gapon Date: Fri, 17 Jan 2014 10:48:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260815 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 10:48:45 -0000 Author: avg Date: Fri Jan 17 10:48:44 2014 New Revision: 260815 URL: http://svnweb.freebsd.org/changeset/base/260815 Log: MFC r258605: Convert over the TCP probes to use mtod() MFC slacker: adrian Modified: stable/10/sys/netinet/tcp_input.c stable/10/sys/netinet/tcp_subr.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/tcp_input.c ============================================================================== --- stable/10/sys/netinet/tcp_input.c Fri Jan 17 10:35:18 2014 (r260814) +++ stable/10/sys/netinet/tcp_input.c Fri Jan 17 10:48:44 2014 (r260815) @@ -1393,7 +1393,7 @@ relocked: } #endif - TCP_PROBE5(receive, NULL, tp, m->m_data, tp, th); + TCP_PROBE5(receive, NULL, tp, mtod(m, const char *), tp, th); /* * Segment belongs to a connection in SYN_SENT, ESTABLISHED or later @@ -1405,7 +1405,7 @@ relocked: return; dropwithreset: - TCP_PROBE5(receive, NULL, tp, m->m_data, tp, th); + TCP_PROBE5(receive, NULL, tp, mtod(m, const char *), tp, th); if (ti_locked == TI_WLOCKED) { INP_INFO_WUNLOCK(&V_tcbinfo); @@ -1429,7 +1429,7 @@ dropwithreset: dropunlock: if (m != NULL) - TCP_PROBE5(receive, NULL, tp, m->m_data, tp, th); + TCP_PROBE5(receive, NULL, tp, mtod(m, const char *), tp, th); if (ti_locked == TI_WLOCKED) { INP_INFO_WUNLOCK(&V_tcbinfo); @@ -1928,8 +1928,8 @@ tcp_do_segment(struct mbuf *m, struct tc goto dropwithreset; } if ((thflags & (TH_ACK|TH_RST)) == (TH_ACK|TH_RST)) { - TCP_PROBE5(connect_refused, NULL, tp, m->m_data, tp, - th); + TCP_PROBE5(connect_refused, NULL, tp, + mtod(m, const char *), tp, th); tp = tcp_drop(tp, ECONNREFUSED); } if (thflags & TH_RST) @@ -1982,7 +1982,7 @@ tcp_do_segment(struct mbuf *m, struct tc } else { tcp_state_change(tp, TCPS_ESTABLISHED); TCP_PROBE5(connect_established, NULL, tp, - m->m_data, tp, th); + mtod(m, const char *), tp, th); cc_conn_init(tp); tcp_timer_activate(tp, TT_KEEP, TP_KEEPIDLE(tp)); @@ -2387,8 +2387,8 @@ tcp_do_segment(struct mbuf *m, struct tc tp->t_flags &= ~TF_NEEDFIN; } else { tcp_state_change(tp, TCPS_ESTABLISHED); - TCP_PROBE5(accept_established, NULL, tp, m->m_data, tp, - th); + TCP_PROBE5(accept_established, NULL, tp, + mtod(m, const char *), tp, th); cc_conn_init(tp); tcp_timer_activate(tp, TT_KEEP, TP_KEEPIDLE(tp)); } Modified: stable/10/sys/netinet/tcp_subr.c ============================================================================== --- stable/10/sys/netinet/tcp_subr.c Fri Jan 17 10:35:18 2014 (r260814) +++ stable/10/sys/netinet/tcp_subr.c Fri Jan 17 10:48:44 2014 (r260815) @@ -706,9 +706,10 @@ tcp_respond(struct tcpcb *tp, void *ipge tcp_trace(TA_OUTPUT, 0, tp, mtod(m, void *), th, 0); #endif if (flags & TH_RST) - TCP_PROBE5(accept_refused, NULL, NULL, m->m_data, tp, nth); + TCP_PROBE5(accept_refused, NULL, NULL, mtod(m, const char *), + tp, nth); - TCP_PROBE5(send, NULL, tp, m->m_data, tp, nth); + TCP_PROBE5(send, NULL, tp, mtod(m, const char *), tp, nth); #ifdef INET6 if (isipv6) (void) ip6_output(m, NULL, NULL, ipflags, NULL, NULL, inp); From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 10:50:47 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D99BF9C2; Fri, 17 Jan 2014 10:50:46 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C4E9C15D1; Fri, 17 Jan 2014 10:50:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HAokE0028284; Fri, 17 Jan 2014 10:50:46 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HAokPv028282; Fri, 17 Jan 2014 10:50:46 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401171050.s0HAokPv028282@svn.freebsd.org> From: Andriy Gapon Date: Fri, 17 Jan 2014 10:50:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260816 - in stable/9/sys: kern modules/dtrace/dtio modules/dtrace/dtraceall X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 10:50:47 -0000 Author: avg Date: Fri Jan 17 10:50:46 2014 New Revision: 260816 URL: http://svnweb.freebsd.org/changeset/base/260816 Log: MFC r257037: Redefine the io provider using the SDT(9) macros MFC slacker: markj Deleted: stable/9/sys/kern/dtio_kdtrace.c stable/9/sys/modules/dtrace/dtio/ Modified: stable/9/sys/kern/subr_devstat.c stable/9/sys/modules/dtrace/dtraceall/dtraceall.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/kern/subr_devstat.c ============================================================================== --- stable/9/sys/kern/subr_devstat.c Fri Jan 17 10:48:44 2014 (r260815) +++ stable/9/sys/kern/subr_devstat.c Fri Jan 17 10:50:46 2014 (r260816) @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -46,57 +47,21 @@ __FBSDID("$FreeBSD$"); #include -#ifdef KDTRACE_HOOKS -#include +SDT_PROVIDER_DEFINE(io); -dtrace_io_start_probe_func_t dtrace_io_start_probe; -dtrace_io_done_probe_func_t dtrace_io_done_probe; -dtrace_io_wait_start_probe_func_t dtrace_io_wait_start_probe; -dtrace_io_wait_done_probe_func_t dtrace_io_wait_done_probe; - -uint32_t dtio_start_id; -uint32_t dtio_done_id; -uint32_t dtio_wait_start_id; -uint32_t dtio_wait_done_id; - -#define DTRACE_DEVSTAT_START() \ - if (dtrace_io_start_probe != NULL) \ - (*dtrace_io_start_probe)(dtio_start_id, NULL, ds); - -#define DTRACE_DEVSTAT_BIO_START() \ - if (dtrace_io_start_probe != NULL) \ - (*dtrace_io_start_probe)(dtio_start_id, bp, ds); - -#define DTRACE_DEVSTAT_DONE() \ - if (dtrace_io_done_probe != NULL) \ - (*dtrace_io_done_probe)(dtio_done_id, NULL, ds); - -#define DTRACE_DEVSTAT_BIO_DONE() \ - if (dtrace_io_done_probe != NULL) \ - (*dtrace_io_done_probe)(dtio_done_id, bp, ds); - -#define DTRACE_DEVSTAT_WAIT_START() \ - if (dtrace_io_wait_start_probe != NULL) \ - (*dtrace_io_wait_start_probe)(dtio_wait_start_id, NULL, ds); - -#define DTRACE_DEVSTAT_WAIT_DONE() \ - if (dtrace_io_wait_done_probe != NULL) \ - (*dtrace_io_wait_done_probe)(dtio_wait_done_id, NULL, ds); - -#else /* ! KDTRACE_HOOKS */ - -#define DTRACE_DEVSTAT_START() - -#define DTRACE_DEVSTAT_BIO_START() - -#define DTRACE_DEVSTAT_DONE() - -#define DTRACE_DEVSTAT_BIO_DONE() - -#define DTRACE_DEVSTAT_WAIT_START() - -#define DTRACE_DEVSTAT_WAIT_DONE() -#endif /* KDTRACE_HOOKS */ +SDT_PROBE_DEFINE2(io, , , start, start, "struct bio *", "struct devstat *"); +SDT_PROBE_DEFINE2(io, , , done, done, "struct bio *", "struct devstat *"); +SDT_PROBE_DEFINE2(io, , , wait_start, wait-start, "struct bio *", + "struct devstat *"); +SDT_PROBE_DEFINE2(io, , , wait_done, wait-done, "struct bio *", + "struct devstat *"); + +#define DTRACE_DEVSTAT_START() SDT_PROBE2(io, , , start, NULL, ds) +#define DTRACE_DEVSTAT_BIO_START() SDT_PROBE2(io, , , start, bp, ds) +#define DTRACE_DEVSTAT_DONE() SDT_PROBE2(io, , , done, NULL, ds) +#define DTRACE_DEVSTAT_BIO_DONE() SDT_PROBE2(io, , , done, bp, ds) +#define DTRACE_DEVSTAT_WAIT_START() SDT_PROBE2(io, , , wait_start, NULL, ds) +#define DTRACE_DEVSTAT_WAIT_DONE() SDT_PROBE2(io, , , wait_done, NULL, ds) static int devstat_num_devs; static long devstat_generation = 1; Modified: stable/9/sys/modules/dtrace/dtraceall/dtraceall.c ============================================================================== --- stable/9/sys/modules/dtrace/dtraceall/dtraceall.c Fri Jan 17 10:48:44 2014 (r260815) +++ stable/9/sys/modules/dtrace/dtraceall/dtraceall.c Fri Jan 17 10:50:46 2014 (r260816) @@ -65,7 +65,6 @@ MODULE_VERSION(dtraceall, 1); MODULE_DEPEND(dtraceall, cyclic, 1, 1, 1); MODULE_DEPEND(dtraceall, opensolaris, 1, 1, 1); MODULE_DEPEND(dtraceall, dtrace, 1, 1, 1); -MODULE_DEPEND(dtraceall, dtio, 1, 1, 1); MODULE_DEPEND(dtraceall, dtmalloc, 1, 1, 1); MODULE_DEPEND(dtraceall, dtnfscl, 1, 1, 1); MODULE_DEPEND(dtraceall, dtnfsclient, 1, 1, 1); From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 10:59:06 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4876AC92; Fri, 17 Jan 2014 10:59:06 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 301771674; Fri, 17 Jan 2014 10:59:06 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HAx6Kn029782; Fri, 17 Jan 2014 10:59:06 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HAx0nE029733; Fri, 17 Jan 2014 10:59:00 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401171059.s0HAx0nE029733@svn.freebsd.org> From: Andriy Gapon Date: Fri, 17 Jan 2014 10:59:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260817 - in stable/10: share/man/man9 sys/cam/ctl sys/cddl/dev/dtrace sys/cddl/dev/sdt sys/compat/linux sys/dev/xen/blkback sys/kern sys/net sys/netinet sys/opencrypto sys/security/mac... X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 10:59:06 -0000 Author: avg Date: Fri Jan 17 10:58:59 2014 New Revision: 260817 URL: http://svnweb.freebsd.org/changeset/base/260817 Log: MFC r258622: dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE Modified: stable/10/share/man/man9/SDT.9 stable/10/sys/cam/ctl/ctl_backend_block.c stable/10/sys/cddl/dev/dtrace/dtrace_test.c stable/10/sys/cddl/dev/sdt/sdt.c stable/10/sys/compat/linux/linux_dtrace.h stable/10/sys/dev/xen/blkback/blkback.c stable/10/sys/kern/kern_clock.c stable/10/sys/kern/kern_exec.c stable/10/sys/kern/kern_exit.c stable/10/sys/kern/kern_fork.c stable/10/sys/kern/kern_priv.c stable/10/sys/kern/kern_proc.c stable/10/sys/kern/kern_racct.c stable/10/sys/kern/kern_sig.c stable/10/sys/kern/kern_synch.c stable/10/sys/kern/kern_thread.c stable/10/sys/kern/kern_timeout.c stable/10/sys/kern/sched_4bsd.c stable/10/sys/kern/sched_ule.c stable/10/sys/kern/subr_devstat.c stable/10/sys/kern/subr_turnstile.c stable/10/sys/kern/vfs_cache.c stable/10/sys/kern/vfs_lookup.c stable/10/sys/kern/vfs_syscalls.c stable/10/sys/net/vnet.c stable/10/sys/netinet/in_kdtrace.c stable/10/sys/netinet/in_kdtrace.h stable/10/sys/netinet/sctp_dtrace_define.h stable/10/sys/netinet/tcp_input.c stable/10/sys/netinet/tcp_output.c stable/10/sys/netinet/tcp_subr.c stable/10/sys/opencrypto/cryptodeflate.c stable/10/sys/security/mac/mac_framework.c stable/10/sys/security/mac/mac_internal.h stable/10/sys/sys/sdt.h stable/10/sys/tools/vnode_if.awk Directory Properties: stable/10/ (props changed) Modified: stable/10/share/man/man9/SDT.9 ============================================================================== --- stable/10/share/man/man9/SDT.9 Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/share/man/man9/SDT.9 Fri Jan 17 10:58:59 2014 (r260817) @@ -35,28 +35,28 @@ .Fn SDT_PROVIDER_DECLARE prov .Fn SDT_PROVIDER_DEFINE prov .Fn SDT_PROBE_DECLARE prov mod func name -.Fn SDT_PROBE_DEFINE prov mod func name sname -.Fn SDT_PROBE_DEFINE0 prov mod func name sname -.Fn SDT_PROBE_DEFINE1 prov mod func name sname arg0 -.Fn SDT_PROBE_DEFINE2 prov mod func name sname arg0 arg1 -.Fn SDT_PROBE_DEFINE3 prov mod func name sname arg0 arg1 arg2 -.Fn SDT_PROBE_DEFINE4 prov mod func name sname arg0 arg1 arg2 arg3 -.Fn SDT_PROBE_DEFINE5 prov mod func name sname arg0 arg1 arg2 arg3 arg4 -.Fn SDT_PROBE_DEFINE6 prov mod func name sname arg0 arg1 arg2 arg3 arg4 arg5 -.Fn SDT_PROBE_DEFINE7 prov mod func name sname arg0 arg1 arg2 arg3 arg4 arg5 \ +.Fn SDT_PROBE_DEFINE prov mod func name +.Fn SDT_PROBE_DEFINE0 prov mod func name +.Fn SDT_PROBE_DEFINE1 prov mod func name arg0 +.Fn SDT_PROBE_DEFINE2 prov mod func name arg0 arg1 +.Fn SDT_PROBE_DEFINE3 prov mod func name arg0 arg1 arg2 +.Fn SDT_PROBE_DEFINE4 prov mod func name arg0 arg1 arg2 arg3 +.Fn SDT_PROBE_DEFINE5 prov mod func name arg0 arg1 arg2 arg3 arg4 +.Fn SDT_PROBE_DEFINE6 prov mod func name arg0 arg1 arg2 arg3 arg4 arg5 +.Fn SDT_PROBE_DEFINE7 prov mod func name arg0 arg1 arg2 arg3 arg4 arg5 \ arg6 -.Fn SDT_PROBE_DEFINE0_XLATE prov mod func name sname -.Fn SDT_PROBE_DEFINE1_XLATE prov mod func name sname arg0 xarg0 -.Fn SDT_PROBE_DEFINE2_XLATE prov mod func name sname arg0 xarg0 arg1 xarg1 -.Fn SDT_PROBE_DEFINE3_XLATE prov mod func name sname arg0 xarg0 arg1 xarg1 \ +.Fn SDT_PROBE_DEFINE0_XLATE prov mod func name +.Fn SDT_PROBE_DEFINE1_XLATE prov mod func name arg0 xarg0 +.Fn SDT_PROBE_DEFINE2_XLATE prov mod func name arg0 xarg0 arg1 xarg1 +.Fn SDT_PROBE_DEFINE3_XLATE prov mod func name arg0 xarg0 arg1 xarg1 \ arg2 xarg2 -.Fn SDT_PROBE_DEFINE4_XLATE prov mod func name sname arg0 xarg0 arg1 xarg1 \ +.Fn SDT_PROBE_DEFINE4_XLATE prov mod func name arg0 xarg0 arg1 xarg1 \ arg2 xarg2 arg3 xarg3 -.Fn SDT_PROBE_DEFINE5_XLATE prov mod func name sname arg0 xarg0 arg1 xarg1 \ +.Fn SDT_PROBE_DEFINE5_XLATE prov mod func name arg0 xarg0 arg1 xarg1 \ arg2 xarg2 arg3 xarg3 arg4 xarg4 -.Fn SDT_PROBE_DEFINE6_XLATE prov mod func name sname arg0 xarg0 arg1 xarg1 \ +.Fn SDT_PROBE_DEFINE6_XLATE prov mod func name arg0 xarg0 arg1 xarg1 \ arg2 xarg2 arg3 xarg3 arg4 xarg4 arg5 xarg5 -.Fn SDT_PROBE_DEFINE7_XLATE prov mod func name sname arg0 xarg0 arg1 xarg1 \ +.Fn SDT_PROBE_DEFINE7_XLATE prov mod func name arg0 xarg0 arg1 xarg1 \ arg2 xarg2 arg3 xarg3 arg4 xarg4 arg5 xarg5 arg6 xarg6 .Fn SDT_PROBE0 prov mod func name .Fn SDT_PROBE1 prov mod func name arg0 @@ -136,20 +136,19 @@ See the section. Note in particular that probes must not be defined across multiple kernel modules. -The -.Fn SDT_PROBE_DEFINE* -macros also take an extra -.Ar sname -parameter. -This is used to allow the creation of probes with names containing the +.Pp +If .Ql - -character. -Specifically, the +character (dash) is wanted in a probe name, +then it should be represented as +.Ql __ +(double underscore) in the probe .Ar name -argument should contain the probe name with all dashes converted to underscores, -and the -.Ar sname -argument should be the probe name as it will be referenced by D scripts. +parameter passed to various +.Fn SDT_* +macros, +because of technical reasons +(a dash is not valid in C identifiers). .Pp The .Fn SDT_PROBE_DEFINE* Modified: stable/10/sys/cam/ctl/ctl_backend_block.c ============================================================================== --- stable/10/sys/cam/ctl/ctl_backend_block.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/cam/ctl/ctl_backend_block.c Fri Jan 17 10:58:59 2014 (r260817) @@ -630,10 +630,10 @@ ctl_be_block_flush_file(struct ctl_be_bl ctl_complete_beio(beio); } -SDT_PROBE_DEFINE1(cbb, kernel, read, file_start, file_start, "uint64_t"); -SDT_PROBE_DEFINE1(cbb, kernel, write, file_start, file_start, "uint64_t"); -SDT_PROBE_DEFINE1(cbb, kernel, read, file_done, file_done,"uint64_t"); -SDT_PROBE_DEFINE1(cbb, kernel, write, file_done, file_done, "uint64_t"); +SDT_PROBE_DEFINE1(cbb, kernel, read, file_start, "uint64_t"); +SDT_PROBE_DEFINE1(cbb, kernel, write, file_start, "uint64_t"); +SDT_PROBE_DEFINE1(cbb, kernel, read, file_done,"uint64_t"); +SDT_PROBE_DEFINE1(cbb, kernel, write, file_done, "uint64_t"); static void ctl_be_block_dispatch_file(struct ctl_be_block_lun *be_lun, @@ -962,10 +962,10 @@ ctl_be_block_cw_dispatch(struct ctl_be_b } } -SDT_PROBE_DEFINE1(cbb, kernel, read, start, start, "uint64_t"); -SDT_PROBE_DEFINE1(cbb, kernel, write, start, start, "uint64_t"); -SDT_PROBE_DEFINE1(cbb, kernel, read, alloc_done, alloc_done, "uint64_t"); -SDT_PROBE_DEFINE1(cbb, kernel, write, alloc_done, alloc_done, "uint64_t"); +SDT_PROBE_DEFINE1(cbb, kernel, read, start, "uint64_t"); +SDT_PROBE_DEFINE1(cbb, kernel, write, start, "uint64_t"); +SDT_PROBE_DEFINE1(cbb, kernel, read, alloc_done, "uint64_t"); +SDT_PROBE_DEFINE1(cbb, kernel, write, alloc_done, "uint64_t"); static void ctl_be_block_dispatch(struct ctl_be_block_lun *be_lun, Modified: stable/10/sys/cddl/dev/dtrace/dtrace_test.c ============================================================================== --- stable/10/sys/cddl/dev/dtrace/dtrace_test.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/cddl/dev/dtrace/dtrace_test.c Fri Jan 17 10:58:59 2014 (r260817) @@ -41,7 +41,7 @@ SDT_PROVIDER_DEFINE(test); -SDT_PROBE_DEFINE7(test, , , sdttest, sdttest, "int", "int", "int", "int", "int", +SDT_PROBE_DEFINE7(test, , , sdttest, "int", "int", "int", "int", "int", "int", "int"); /* Modified: stable/10/sys/cddl/dev/sdt/sdt.c ============================================================================== --- stable/10/sys/cddl/dev/sdt/sdt.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/cddl/dev/sdt/sdt.c Fri Jan 17 10:58:59 2014 (r260817) @@ -133,6 +133,8 @@ sdt_create_probe(struct sdt_probe *probe char mod[DTRACE_MODNAMELEN]; char func[DTRACE_FUNCNAMELEN]; char name[DTRACE_NAMELEN]; + const char *from; + char *to; size_t len; TAILQ_FOREACH(prov, &sdt_prov_list, prov_entry) @@ -156,7 +158,18 @@ sdt_create_probe(struct sdt_probe *probe * in the C compiler, so we have to respect const vs non-const. */ strlcpy(func, probe->func, sizeof(func)); - strlcpy(name, probe->name, sizeof(name)); + + from = probe->name; + to = name; + for (len = 0; len < (sizeof(name) - 1) && *from != '\0'; + len++, from++, to++) { + if (from[0] == '_' && from[1] == '_') { + *to = '-'; + from++; + } else + *to = *from; + } + *to = '\0'; if (dtrace_probe_lookup(prov->id, mod, func, name) != DTRACE_IDNONE) return; Modified: stable/10/sys/compat/linux/linux_dtrace.h ============================================================================== --- stable/10/sys/compat/linux/linux_dtrace.h Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/compat/linux/linux_dtrace.h Fri Jan 17 10:58:59 2014 (r260817) @@ -48,27 +48,27 @@ LINUX_DTRACE, a, b, c) #define _LIN_SDT_PROBE_DEFINE0(a, b, c, d) SDT_PROBE_DEFINE(a, \ - b, c, d, d) + b, c, d) #define LIN_SDT_PROBE_DEFINE0(a, b, c) _LIN_SDT_PROBE_DEFINE0(\ LINUX_DTRACE, a, b, c) #define _LIN_SDT_PROBE_DEFINE1(a, b, c, d, e) SDT_PROBE_DEFINE1(a, \ - b, c, d, d, e) + b, c, d, e) #define LIN_SDT_PROBE_DEFINE1(a, b, c, d) _LIN_SDT_PROBE_DEFINE1(\ LINUX_DTRACE, a, b, c, d) #define _LIN_SDT_PROBE_DEFINE2(a, b, c, d, e, f) SDT_PROBE_DEFINE2(a, \ - b, c, d, d, e, f) + b, c, d, e, f) #define LIN_SDT_PROBE_DEFINE2(a, b, c, d, e) _LIN_SDT_PROBE_DEFINE2(\ LINUX_DTRACE, a, b, c, d, e) #define _LIN_SDT_PROBE_DEFINE3(a, b, c, d, e, f, g) SDT_PROBE_DEFINE3(a, \ - b, c, d, d, e, f, g) + b, c, d, e, f, g) #define LIN_SDT_PROBE_DEFINE3(a, b, c, d, e, f) _LIN_SDT_PROBE_DEFINE3(\ LINUX_DTRACE, a, b, c, d, e, f) #define _LIN_SDT_PROBE_DEFINE4(a, b, c, d, e, f, g, h) SDT_PROBE_DEFINE4(a, \ - b, c, d, d, e, f, g, h) + b, c, d, e, f, g, h) #define LIN_SDT_PROBE_DEFINE4(a, b, c, d, e, f, g) _LIN_SDT_PROBE_DEFINE4(\ LINUX_DTRACE, a, b, c, d, e, f, g) #define _LIN_SDT_PROBE_DEFINE5(a, b, c, d, e, f, g, h, i) \ - SDT_PROBE_DEFINE5(a, b, c, d, d, e, f, g, h, i) + SDT_PROBE_DEFINE5(a, b, c, d, e, f, g, h, i) #define LIN_SDT_PROBE_DEFINE5(a, b, c, d, e, f, g, h) _LIN_SDT_PROBE_DEFINE5(\ LINUX_DTRACE, a, b, c, d, e, f, g, h) Modified: stable/10/sys/dev/xen/blkback/blkback.c ============================================================================== --- stable/10/sys/dev/xen/blkback/blkback.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/dev/xen/blkback/blkback.c Fri Jan 17 10:58:59 2014 (r260817) @@ -2032,10 +2032,10 @@ xbb_filter(void *arg) } SDT_PROVIDER_DEFINE(xbb); -SDT_PROBE_DEFINE1(xbb, kernel, xbb_dispatch_dev, flush, flush, "int"); -SDT_PROBE_DEFINE3(xbb, kernel, xbb_dispatch_dev, read, read, "int", "uint64_t", +SDT_PROBE_DEFINE1(xbb, kernel, xbb_dispatch_dev, flush, "int"); +SDT_PROBE_DEFINE3(xbb, kernel, xbb_dispatch_dev, read, "int", "uint64_t", "uint64_t"); -SDT_PROBE_DEFINE3(xbb, kernel, xbb_dispatch_dev, write, write, "int", +SDT_PROBE_DEFINE3(xbb, kernel, xbb_dispatch_dev, write, "int", "uint64_t", "uint64_t"); /*----------------------------- Backend Handlers -----------------------------*/ @@ -2211,10 +2211,10 @@ fail_free_bios: return (error); } -SDT_PROBE_DEFINE1(xbb, kernel, xbb_dispatch_file, flush, flush, "int"); -SDT_PROBE_DEFINE3(xbb, kernel, xbb_dispatch_file, read, read, "int", "uint64_t", +SDT_PROBE_DEFINE1(xbb, kernel, xbb_dispatch_file, flush, "int"); +SDT_PROBE_DEFINE3(xbb, kernel, xbb_dispatch_file, read, "int", "uint64_t", "uint64_t"); -SDT_PROBE_DEFINE3(xbb, kernel, xbb_dispatch_file, write, write, "int", +SDT_PROBE_DEFINE3(xbb, kernel, xbb_dispatch_file, write, "int", "uint64_t", "uint64_t"); /** Modified: stable/10/sys/kern/kern_clock.c ============================================================================== --- stable/10/sys/kern/kern_clock.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/kern_clock.c Fri Jan 17 10:58:59 2014 (r260817) @@ -93,7 +93,7 @@ SYSINIT(clocks, SI_SUB_CLOCKS, SI_ORDER_ static struct mtx time_lock; SDT_PROVIDER_DECLARE(sched); -SDT_PROBE_DEFINE2(sched, , , tick, tick, "struct thread *", "struct proc *"); +SDT_PROBE_DEFINE2(sched, , , tick, "struct thread *", "struct proc *"); static int sysctl_kern_cp_time(SYSCTL_HANDLER_ARGS) Modified: stable/10/sys/kern/kern_exec.c ============================================================================== --- stable/10/sys/kern/kern_exec.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/kern_exec.c Fri Jan 17 10:58:59 2014 (r260817) @@ -96,9 +96,9 @@ dtrace_execexit_func_t dtrace_fasttrap_e #endif SDT_PROVIDER_DECLARE(proc); -SDT_PROBE_DEFINE1(proc, kernel, , exec, exec, "char *"); -SDT_PROBE_DEFINE1(proc, kernel, , exec_failure, exec-failure, "int"); -SDT_PROBE_DEFINE1(proc, kernel, , exec_success, exec-success, "char *"); +SDT_PROBE_DEFINE1(proc, kernel, , exec, "char *"); +SDT_PROBE_DEFINE1(proc, kernel, , exec__failure, "int"); +SDT_PROBE_DEFINE1(proc, kernel, , exec__success, "char *"); MALLOC_DEFINE(M_PARGS, "proc-args", "Process arguments"); @@ -833,7 +833,7 @@ interpret: vfs_mark_atime(imgp->vp, td->td_ucred); - SDT_PROBE(proc, kernel, , exec_success, args->fname, 0, 0, 0, 0); + SDT_PROBE(proc, kernel, , exec__success, args->fname, 0, 0, 0, 0); done1: /* @@ -905,7 +905,7 @@ exec_fail: p->p_flag &= ~P_INEXEC; PROC_UNLOCK(p); - SDT_PROBE(proc, kernel, , exec_failure, error, 0, 0, 0, 0); + SDT_PROBE(proc, kernel, , exec__failure, error, 0, 0, 0, 0); done2: #ifdef MAC Modified: stable/10/sys/kern/kern_exit.c ============================================================================== --- stable/10/sys/kern/kern_exit.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/kern_exit.c Fri Jan 17 10:58:59 2014 (r260817) @@ -94,7 +94,7 @@ dtrace_execexit_func_t dtrace_fasttrap_e #endif SDT_PROVIDER_DECLARE(proc); -SDT_PROBE_DEFINE1(proc, kernel, , exit, exit, "int"); +SDT_PROBE_DEFINE1(proc, kernel, , exit, "int"); /* Hook for NFS teardown procedure. */ void (*nlminfo_release_p)(struct proc *p); Modified: stable/10/sys/kern/kern_fork.c ============================================================================== --- stable/10/sys/kern/kern_fork.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/kern_fork.c Fri Jan 17 10:58:59 2014 (r260817) @@ -89,7 +89,7 @@ dtrace_fork_func_t dtrace_fasttrap_fork; #endif SDT_PROVIDER_DECLARE(proc); -SDT_PROBE_DEFINE3(proc, kernel, , create, create, "struct proc *", +SDT_PROBE_DEFINE3(proc, kernel, , create, "struct proc *", "struct proc *", "int"); #ifndef _SYS_SYSPROTO_H_ Modified: stable/10/sys/kern/kern_priv.c ============================================================================== --- stable/10/sys/kern/kern_priv.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/kern_priv.c Fri Jan 17 10:58:59 2014 (r260817) @@ -65,8 +65,8 @@ SYSCTL_INT(_security_bsd, OID_AUTO, unpr TUNABLE_INT("security.bsd.unprivileged_mlock", &unprivileged_mlock); SDT_PROVIDER_DEFINE(priv); -SDT_PROBE_DEFINE1(priv, kernel, priv_check, priv_ok, priv-ok, "int"); -SDT_PROBE_DEFINE1(priv, kernel, priv_check, priv_err, priv-err, "int"); +SDT_PROBE_DEFINE1(priv, kernel, priv_check, priv__ok, "int"); +SDT_PROBE_DEFINE1(priv, kernel, priv_check, priv__err, "int"); /* * Check a credential for privilege. Lots of good reasons to deny privilege; @@ -169,9 +169,9 @@ priv_check_cred(struct ucred *cred, int error = EPERM; out: if (error) - SDT_PROBE1(priv, kernel, priv_check, priv_err, priv); + SDT_PROBE1(priv, kernel, priv_check, priv__err, priv); else - SDT_PROBE1(priv, kernel, priv_check, priv_ok, priv); + SDT_PROBE1(priv, kernel, priv_check, priv__ok, priv); return (error); } Modified: stable/10/sys/kern/kern_proc.c ============================================================================== --- stable/10/sys/kern/kern_proc.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/kern_proc.c Fri Jan 17 10:58:59 2014 (r260817) @@ -92,17 +92,17 @@ __FBSDID("$FreeBSD$"); #endif SDT_PROVIDER_DEFINE(proc); -SDT_PROBE_DEFINE4(proc, kernel, ctor, entry, entry, "struct proc *", "int", +SDT_PROBE_DEFINE4(proc, kernel, ctor, entry, "struct proc *", "int", "void *", "int"); -SDT_PROBE_DEFINE4(proc, kernel, ctor, return, return, "struct proc *", "int", +SDT_PROBE_DEFINE4(proc, kernel, ctor, return, "struct proc *", "int", "void *", "int"); -SDT_PROBE_DEFINE4(proc, kernel, dtor, entry, entry, "struct proc *", "int", +SDT_PROBE_DEFINE4(proc, kernel, dtor, entry, "struct proc *", "int", "void *", "struct thread *"); -SDT_PROBE_DEFINE3(proc, kernel, dtor, return, return, "struct proc *", "int", +SDT_PROBE_DEFINE3(proc, kernel, dtor, return, "struct proc *", "int", "void *"); -SDT_PROBE_DEFINE3(proc, kernel, init, entry, entry, "struct proc *", "int", +SDT_PROBE_DEFINE3(proc, kernel, init, entry, "struct proc *", "int", "int"); -SDT_PROBE_DEFINE3(proc, kernel, init, return, return, "struct proc *", "int", +SDT_PROBE_DEFINE3(proc, kernel, init, return, "struct proc *", "int", "int"); MALLOC_DEFINE(M_PGRP, "pgrp", "process group header"); Modified: stable/10/sys/kern/kern_racct.c ============================================================================== --- stable/10/sys/kern/kern_racct.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/kern_racct.c Fri Jan 17 10:58:59 2014 (r260817) @@ -96,29 +96,29 @@ static void racct_add_cred_locked(struct uint64_t amount); SDT_PROVIDER_DEFINE(racct); -SDT_PROBE_DEFINE3(racct, kernel, rusage, add, add, "struct proc *", "int", +SDT_PROBE_DEFINE3(racct, kernel, rusage, add, "struct proc *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(racct, kernel, rusage, add_failure, add-failure, +SDT_PROBE_DEFINE3(racct, kernel, rusage, add__failure, "struct proc *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(racct, kernel, rusage, add_cred, add-cred, "struct ucred *", +SDT_PROBE_DEFINE3(racct, kernel, rusage, add__cred, "struct ucred *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(racct, kernel, rusage, add_force, add-force, "struct proc *", +SDT_PROBE_DEFINE3(racct, kernel, rusage, add__force, "struct proc *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(racct, kernel, rusage, set, set, "struct proc *", "int", +SDT_PROBE_DEFINE3(racct, kernel, rusage, set, "struct proc *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(racct, kernel, rusage, set_failure, set-failure, +SDT_PROBE_DEFINE3(racct, kernel, rusage, set__failure, "struct proc *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(racct, kernel, rusage, sub, sub, "struct proc *", "int", +SDT_PROBE_DEFINE3(racct, kernel, rusage, sub, "struct proc *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(racct, kernel, rusage, sub_cred, sub-cred, "struct ucred *", +SDT_PROBE_DEFINE3(racct, kernel, rusage, sub__cred, "struct ucred *", "int", "uint64_t"); -SDT_PROBE_DEFINE1(racct, kernel, racct, create, create, "struct racct *"); -SDT_PROBE_DEFINE1(racct, kernel, racct, destroy, destroy, "struct racct *"); -SDT_PROBE_DEFINE2(racct, kernel, racct, join, join, "struct racct *", +SDT_PROBE_DEFINE1(racct, kernel, racct, create, "struct racct *"); +SDT_PROBE_DEFINE1(racct, kernel, racct, destroy, "struct racct *"); +SDT_PROBE_DEFINE2(racct, kernel, racct, join, "struct racct *", "struct racct *"); -SDT_PROBE_DEFINE2(racct, kernel, racct, join_failure, join-failure, +SDT_PROBE_DEFINE2(racct, kernel, racct, join__failure, "struct racct *", "struct racct *"); -SDT_PROBE_DEFINE2(racct, kernel, racct, leave, leave, "struct racct *", +SDT_PROBE_DEFINE2(racct, kernel, racct, leave, "struct racct *", "struct racct *"); int racct_types[] = { @@ -527,7 +527,7 @@ racct_add_locked(struct proc *p, int res #ifdef RCTL error = rctl_enforce(p, resource, amount); if (error && RACCT_IS_DENIABLE(resource)) { - SDT_PROBE(racct, kernel, rusage, add_failure, p, resource, + SDT_PROBE(racct, kernel, rusage, add__failure, p, resource, amount, 0, 0); return (error); } @@ -558,7 +558,7 @@ racct_add_cred_locked(struct ucred *cred { struct prison *pr; - SDT_PROBE(racct, kernel, rusage, add_cred, cred, resource, amount, + SDT_PROBE(racct, kernel, rusage, add__cred, cred, resource, amount, 0, 0); racct_alloc_resource(cred->cr_ruidinfo->ui_racct, resource, amount); @@ -591,7 +591,7 @@ void racct_add_force(struct proc *p, int resource, uint64_t amount) { - SDT_PROBE(racct, kernel, rusage, add_force, p, resource, amount, 0, 0); + SDT_PROBE(racct, kernel, rusage, add__force, p, resource, amount, 0, 0); /* * We need proc lock to dereference p->p_ucred. @@ -645,7 +645,7 @@ racct_set_locked(struct proc *p, int res if (diff_proc > 0) { error = rctl_enforce(p, resource, diff_proc); if (error && RACCT_IS_DENIABLE(resource)) { - SDT_PROBE(racct, kernel, rusage, set_failure, p, + SDT_PROBE(racct, kernel, rusage, set__failure, p, resource, amount, 0, 0); return (error); } @@ -805,7 +805,7 @@ racct_sub_cred_locked(struct ucred *cred { struct prison *pr; - SDT_PROBE(racct, kernel, rusage, sub_cred, cred, resource, amount, + SDT_PROBE(racct, kernel, rusage, sub__cred, cred, resource, amount, 0, 0); #ifdef notyet Modified: stable/10/sys/kern/kern_sig.c ============================================================================== --- stable/10/sys/kern/kern_sig.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/kern_sig.c Fri Jan 17 10:58:59 2014 (r260817) @@ -93,11 +93,11 @@ __FBSDID("$FreeBSD$"); #define ONSIG 32 /* NSIG for osig* syscalls. XXX. */ SDT_PROVIDER_DECLARE(proc); -SDT_PROBE_DEFINE3(proc, kernel, , signal_send, signal-send, "struct thread *", +SDT_PROBE_DEFINE3(proc, kernel, , signal__send, "struct thread *", "struct proc *", "int"); -SDT_PROBE_DEFINE2(proc, kernel, , signal_clear, signal-clear, "int", +SDT_PROBE_DEFINE2(proc, kernel, , signal__clear, "int", "ksiginfo_t *"); -SDT_PROBE_DEFINE3(proc, kernel, , signal_discard, signal-discard, +SDT_PROBE_DEFINE3(proc, kernel, , signal__discard, "struct thread *", "struct proc *", "int"); static int coredump(struct thread *); @@ -1254,7 +1254,7 @@ kern_sigtimedwait(struct thread *td, sig reschedule_signals(p, new_block, 0); if (error == 0) { - SDT_PROBE(proc, kernel, , signal_clear, sig, ksi, 0, 0, 0); + SDT_PROBE(proc, kernel, , signal__clear, sig, ksi, 0, 0, 0); if (ksi->ksi_code == SI_TIMER) itimer_accept(p, ksi->ksi_timerid, ksi); @@ -2063,7 +2063,7 @@ tdsendsignal(struct proc *p, struct thre } else sigqueue = &td->td_sigqueue; - SDT_PROBE(proc, kernel, , signal_send, td, p, sig, 0, 0 ); + SDT_PROBE(proc, kernel, , signal__send, td, p, sig, 0, 0 ); /* * If the signal is being ignored, @@ -2074,7 +2074,7 @@ tdsendsignal(struct proc *p, struct thre */ mtx_lock(&ps->ps_mtx); if (SIGISMEMBER(ps->ps_sigignore, sig)) { - SDT_PROBE(proc, kernel, , signal_discard, td, p, sig, 0, 0 ); + SDT_PROBE(proc, kernel, , signal__discard, td, p, sig, 0, 0 ); mtx_unlock(&ps->ps_mtx); if (ksi && (ksi->ksi_flags & KSI_INS)) Modified: stable/10/sys/kern/kern_synch.c ============================================================================== --- stable/10/sys/kern/kern_synch.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/kern_synch.c Fri Jan 17 10:58:59 2014 (r260817) @@ -108,18 +108,18 @@ SYSCTL_INT(_kern, OID_AUTO, fscale, CTLF static void loadav(void *arg); SDT_PROVIDER_DECLARE(sched); -SDT_PROBE_DEFINE(sched, , , preempt, preempt); +SDT_PROBE_DEFINE(sched, , , preempt); /* * These probes reference Solaris features that are not implemented in FreeBSD. * Create the probes anyway for compatibility with existing D scripts; they'll * just never fire. */ -SDT_PROBE_DEFINE(sched, , , cpucaps_sleep, cpucaps-sleep); -SDT_PROBE_DEFINE(sched, , , cpucaps_wakeup, cpucaps-wakeup); -SDT_PROBE_DEFINE(sched, , , schedctl_nopreempt, schedctl-nopreempt); -SDT_PROBE_DEFINE(sched, , , schedctl_preempt, schedctl-preempt); -SDT_PROBE_DEFINE(sched, , , schedctl_yield, schedctl-yield); +SDT_PROBE_DEFINE(sched, , , cpucaps__sleep); +SDT_PROBE_DEFINE(sched, , , cpucaps__wakeup); +SDT_PROBE_DEFINE(sched, , , schedctl__nopreempt); +SDT_PROBE_DEFINE(sched, , , schedctl__preempt); +SDT_PROBE_DEFINE(sched, , , schedctl__yield); static void sleepinit(void *unused) Modified: stable/10/sys/kern/kern_thread.c ============================================================================== --- stable/10/sys/kern/kern_thread.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/kern_thread.c Fri Jan 17 10:58:59 2014 (r260817) @@ -63,7 +63,7 @@ __FBSDID("$FreeBSD$"); #include SDT_PROVIDER_DECLARE(proc); -SDT_PROBE_DEFINE(proc, , , lwp_exit, lwp-exit); +SDT_PROBE_DEFINE(proc, , , lwp__exit); /* Modified: stable/10/sys/kern/kern_timeout.c ============================================================================== --- stable/10/sys/kern/kern_timeout.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/kern_timeout.c Fri Jan 17 10:58:59 2014 (r260817) @@ -69,9 +69,9 @@ DPCPU_DECLARE(sbintime_t, hardclocktime) #endif SDT_PROVIDER_DEFINE(callout_execute); -SDT_PROBE_DEFINE1(callout_execute, kernel, , callout_start, callout-start, +SDT_PROBE_DEFINE1(callout_execute, kernel, , callout__start, "struct callout *"); -SDT_PROBE_DEFINE1(callout_execute, kernel, , callout_end, callout-end, +SDT_PROBE_DEFINE1(callout_execute, kernel, , callout__end, "struct callout *"); #ifdef CALLOUT_PROFILING @@ -678,9 +678,9 @@ softclock_call_cc(struct callout *c, str sbt1 = sbinuptime(); #endif THREAD_NO_SLEEPING(); - SDT_PROBE(callout_execute, kernel, , callout_start, c, 0, 0, 0, 0); + SDT_PROBE(callout_execute, kernel, , callout__start, c, 0, 0, 0, 0); c_func(c_arg); - SDT_PROBE(callout_execute, kernel, , callout_end, c, 0, 0, 0, 0); + SDT_PROBE(callout_execute, kernel, , callout__end, c, 0, 0, 0, 0); THREAD_SLEEPING_OK(); #if defined(DIAGNOSTIC) || defined(CALLOUT_PROFILING) sbt2 = sbinuptime(); Modified: stable/10/sys/kern/sched_4bsd.c ============================================================================== --- stable/10/sys/kern/sched_4bsd.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/sched_4bsd.c Fri Jan 17 10:58:59 2014 (r260817) @@ -255,20 +255,20 @@ SYSCTL_INT(_kern_sched, OID_AUTO, follow SDT_PROVIDER_DEFINE(sched); -SDT_PROBE_DEFINE3(sched, , , change_pri, change-pri, "struct thread *", +SDT_PROBE_DEFINE3(sched, , , change__pri, "struct thread *", "struct proc *", "uint8_t"); -SDT_PROBE_DEFINE3(sched, , , dequeue, dequeue, "struct thread *", +SDT_PROBE_DEFINE3(sched, , , dequeue, "struct thread *", "struct proc *", "void *"); -SDT_PROBE_DEFINE4(sched, , , enqueue, enqueue, "struct thread *", +SDT_PROBE_DEFINE4(sched, , , enqueue, "struct thread *", "struct proc *", "void *", "int"); -SDT_PROBE_DEFINE4(sched, , , lend_pri, lend-pri, "struct thread *", +SDT_PROBE_DEFINE4(sched, , , lend__pri, "struct thread *", "struct proc *", "uint8_t", "struct thread *"); -SDT_PROBE_DEFINE2(sched, , , load_change, load-change, "int", "int"); -SDT_PROBE_DEFINE2(sched, , , off_cpu, off-cpu, "struct thread *", +SDT_PROBE_DEFINE2(sched, , , load__change, "int", "int"); +SDT_PROBE_DEFINE2(sched, , , off__cpu, "struct thread *", "struct proc *"); -SDT_PROBE_DEFINE(sched, , , on_cpu, on-cpu); -SDT_PROBE_DEFINE(sched, , , remain_cpu, remain-cpu); -SDT_PROBE_DEFINE2(sched, , , surrender, surrender, "struct thread *", +SDT_PROBE_DEFINE(sched, , , on__cpu); +SDT_PROBE_DEFINE(sched, , , remain__cpu); +SDT_PROBE_DEFINE2(sched, , , surrender, "struct thread *", "struct proc *"); static __inline void @@ -277,7 +277,7 @@ sched_load_add(void) sched_tdcnt++; KTR_COUNTER0(KTR_SCHED, "load", "global load", sched_tdcnt); - SDT_PROBE2(sched, , , load_change, NOCPU, sched_tdcnt); + SDT_PROBE2(sched, , , load__change, NOCPU, sched_tdcnt); } static __inline void @@ -286,7 +286,7 @@ sched_load_rem(void) sched_tdcnt--; KTR_COUNTER0(KTR_SCHED, "load", "global load", sched_tdcnt); - SDT_PROBE2(sched, , , load_change, NOCPU, sched_tdcnt); + SDT_PROBE2(sched, , , load__change, NOCPU, sched_tdcnt); } /* * Arrange to reschedule if necessary, taking the priorities and @@ -836,12 +836,12 @@ sched_priority(struct thread *td, u_char KTR_POINT3(KTR_SCHED, "thread", sched_tdname(td), "priority change", "prio:%d", td->td_priority, "new prio:%d", prio, KTR_ATTR_LINKED, sched_tdname(curthread)); - SDT_PROBE3(sched, , , change_pri, td, td->td_proc, prio); + SDT_PROBE3(sched, , , change__pri, td, td->td_proc, prio); if (td != curthread && prio > td->td_priority) { KTR_POINT3(KTR_SCHED, "thread", sched_tdname(curthread), "lend prio", "prio:%d", td->td_priority, "new prio:%d", prio, KTR_ATTR_LINKED, sched_tdname(td)); - SDT_PROBE4(sched, , , lend_pri, td, td->td_proc, prio, + SDT_PROBE4(sched, , , lend__pri, td, td->td_proc, prio, curthread); } THREAD_LOCK_ASSERT(td, MA_OWNED); @@ -1033,7 +1033,7 @@ sched_switch(struct thread *td, struct t PMC_SWITCH_CONTEXT(td, PMC_FN_CSW_OUT); #endif - SDT_PROBE2(sched, , , off_cpu, td, td->td_proc); + SDT_PROBE2(sched, , , off__cpu, td, td->td_proc); /* I feel sleepy */ lock_profile_release_lock(&sched_lock.lock_object); @@ -1067,13 +1067,13 @@ sched_switch(struct thread *td, struct t * need to reap it. */ - SDT_PROBE0(sched, , , on_cpu); + SDT_PROBE0(sched, , , on__cpu); #ifdef HWPMC_HOOKS if (PMC_PROC_IS_USING_PMCS(td->td_proc)) PMC_SWITCH_CONTEXT(td, PMC_FN_CSW_IN); #endif } else - SDT_PROBE0(sched, , , remain_cpu); + SDT_PROBE0(sched, , , remain__cpu); #ifdef SMP if (td->td_flags & TDF_IDLETD) Modified: stable/10/sys/kern/sched_ule.c ============================================================================== --- stable/10/sys/kern/sched_ule.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/sched_ule.c Fri Jan 17 10:58:59 2014 (r260817) @@ -344,20 +344,20 @@ SYSINIT(sched_initticks, SI_SUB_CLOCKS, SDT_PROVIDER_DEFINE(sched); -SDT_PROBE_DEFINE3(sched, , , change_pri, change-pri, "struct thread *", +SDT_PROBE_DEFINE3(sched, , , change__pri, "struct thread *", "struct proc *", "uint8_t"); -SDT_PROBE_DEFINE3(sched, , , dequeue, dequeue, "struct thread *", +SDT_PROBE_DEFINE3(sched, , , dequeue, "struct thread *", "struct proc *", "void *"); -SDT_PROBE_DEFINE4(sched, , , enqueue, enqueue, "struct thread *", +SDT_PROBE_DEFINE4(sched, , , enqueue, "struct thread *", "struct proc *", "void *", "int"); -SDT_PROBE_DEFINE4(sched, , , lend_pri, lend-pri, "struct thread *", +SDT_PROBE_DEFINE4(sched, , , lend__pri, "struct thread *", "struct proc *", "uint8_t", "struct thread *"); -SDT_PROBE_DEFINE2(sched, , , load_change, load-change, "int", "int"); -SDT_PROBE_DEFINE2(sched, , , off_cpu, off-cpu, "struct thread *", +SDT_PROBE_DEFINE2(sched, , , load__change, "int", "int"); +SDT_PROBE_DEFINE2(sched, , , off__cpu, "struct thread *", "struct proc *"); -SDT_PROBE_DEFINE(sched, , , on_cpu, on-cpu); -SDT_PROBE_DEFINE(sched, , , remain_cpu, remain-cpu); -SDT_PROBE_DEFINE2(sched, , , surrender, surrender, "struct thread *", +SDT_PROBE_DEFINE(sched, , , on__cpu); +SDT_PROBE_DEFINE(sched, , , remain__cpu); +SDT_PROBE_DEFINE2(sched, , , surrender, "struct thread *", "struct proc *"); /* @@ -542,7 +542,7 @@ tdq_load_add(struct tdq *tdq, struct thr if ((td->td_flags & TDF_NOLOAD) == 0) tdq->tdq_sysload++; KTR_COUNTER0(KTR_SCHED, "load", tdq->tdq_loadname, tdq->tdq_load); - SDT_PROBE2(sched, , , load_change, (int)TDQ_ID(tdq), tdq->tdq_load); + SDT_PROBE2(sched, , , load__change, (int)TDQ_ID(tdq), tdq->tdq_load); } /* @@ -562,7 +562,7 @@ tdq_load_rem(struct tdq *tdq, struct thr if ((td->td_flags & TDF_NOLOAD) == 0) tdq->tdq_sysload--; KTR_COUNTER0(KTR_SCHED, "load", tdq->tdq_loadname, tdq->tdq_load); - SDT_PROBE2(sched, , , load_change, (int)TDQ_ID(tdq), tdq->tdq_load); + SDT_PROBE2(sched, , , load__change, (int)TDQ_ID(tdq), tdq->tdq_load); } /* @@ -1656,12 +1656,12 @@ sched_thread_priority(struct thread *td, KTR_POINT3(KTR_SCHED, "thread", sched_tdname(td), "prio", "prio:%d", td->td_priority, "new prio:%d", prio, KTR_ATTR_LINKED, sched_tdname(curthread)); - SDT_PROBE3(sched, , , change_pri, td, td->td_proc, prio); + SDT_PROBE3(sched, , , change__pri, td, td->td_proc, prio); if (td != curthread && prio < td->td_priority) { KTR_POINT3(KTR_SCHED, "thread", sched_tdname(curthread), "lend prio", "prio:%d", td->td_priority, "new prio:%d", prio, KTR_ATTR_LINKED, sched_tdname(td)); - SDT_PROBE4(sched, , , lend_pri, td, td->td_proc, prio, + SDT_PROBE4(sched, , , lend__pri, td, td->td_proc, prio, curthread); } ts = td->td_sched; @@ -1914,7 +1914,7 @@ sched_switch(struct thread *td, struct t if (PMC_PROC_IS_USING_PMCS(td->td_proc)) PMC_SWITCH_CONTEXT(td, PMC_FN_CSW_OUT); #endif - SDT_PROBE2(sched, , , off_cpu, newtd, newtd->td_proc); + SDT_PROBE2(sched, , , off__cpu, newtd, newtd->td_proc); lock_profile_release_lock(&TDQ_LOCKPTR(tdq)->lock_object); TDQ_LOCKPTR(tdq)->mtx_lock = (uintptr_t)newtd; sched_pctcpu_update(newtd->td_sched, 0); @@ -1940,14 +1940,14 @@ sched_switch(struct thread *td, struct t lock_profile_obtain_lock_success( &TDQ_LOCKPTR(tdq)->lock_object, 0, 0, __FILE__, __LINE__); - SDT_PROBE0(sched, , , on_cpu); + SDT_PROBE0(sched, , , on__cpu); #ifdef HWPMC_HOOKS if (PMC_PROC_IS_USING_PMCS(td->td_proc)) PMC_SWITCH_CONTEXT(td, PMC_FN_CSW_IN); #endif } else { thread_unblock_switch(td, mtx); - SDT_PROBE0(sched, , , remain_cpu); + SDT_PROBE0(sched, , , remain__cpu); } /* * Assert that all went well and return. Modified: stable/10/sys/kern/subr_devstat.c ============================================================================== --- stable/10/sys/kern/subr_devstat.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/subr_devstat.c Fri Jan 17 10:58:59 2014 (r260817) @@ -49,19 +49,19 @@ __FBSDID("$FreeBSD$"); SDT_PROVIDER_DEFINE(io); -SDT_PROBE_DEFINE2(io, , , start, start, "struct bio *", "struct devstat *"); -SDT_PROBE_DEFINE2(io, , , done, done, "struct bio *", "struct devstat *"); -SDT_PROBE_DEFINE2(io, , , wait_start, wait-start, "struct bio *", +SDT_PROBE_DEFINE2(io, , , start, "struct bio *", "struct devstat *"); +SDT_PROBE_DEFINE2(io, , , done, "struct bio *", "struct devstat *"); +SDT_PROBE_DEFINE2(io, , , wait__start, "struct bio *", "struct devstat *"); -SDT_PROBE_DEFINE2(io, , , wait_done, wait-done, "struct bio *", +SDT_PROBE_DEFINE2(io, , , wait__done, "struct bio *", "struct devstat *"); #define DTRACE_DEVSTAT_START() SDT_PROBE2(io, , , start, NULL, ds) #define DTRACE_DEVSTAT_BIO_START() SDT_PROBE2(io, , , start, bp, ds) #define DTRACE_DEVSTAT_DONE() SDT_PROBE2(io, , , done, NULL, ds) #define DTRACE_DEVSTAT_BIO_DONE() SDT_PROBE2(io, , , done, bp, ds) -#define DTRACE_DEVSTAT_WAIT_START() SDT_PROBE2(io, , , wait_start, NULL, ds) -#define DTRACE_DEVSTAT_WAIT_DONE() SDT_PROBE2(io, , , wait_done, NULL, ds) +#define DTRACE_DEVSTAT_WAIT_START() SDT_PROBE2(io, , , wait__start, NULL, ds) +#define DTRACE_DEVSTAT_WAIT_DONE() SDT_PROBE2(io, , , wait__done, NULL, ds) static int devstat_num_devs; static long devstat_generation = 1; Modified: stable/10/sys/kern/subr_turnstile.c ============================================================================== --- stable/10/sys/kern/subr_turnstile.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/subr_turnstile.c Fri Jan 17 10:58:59 2014 (r260817) @@ -170,8 +170,8 @@ static int turnstile_init(void *mem, int static void turnstile_fini(void *mem, int size); SDT_PROVIDER_DECLARE(sched); -SDT_PROBE_DEFINE(sched, , , sleep, sleep); -SDT_PROBE_DEFINE2(sched, , , wakeup, wakeup, "struct thread *", +SDT_PROBE_DEFINE(sched, , , sleep); +SDT_PROBE_DEFINE2(sched, , , wakeup, "struct thread *", "struct proc *"); /* Modified: stable/10/sys/kern/vfs_cache.c ============================================================================== --- stable/10/sys/kern/vfs_cache.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/vfs_cache.c Fri Jan 17 10:58:59 2014 (r260817) @@ -62,28 +62,28 @@ __FBSDID("$FreeBSD$"); #include SDT_PROVIDER_DECLARE(vfs); -SDT_PROBE_DEFINE3(vfs, namecache, enter, done, done, "struct vnode *", "char *", +SDT_PROBE_DEFINE3(vfs, namecache, enter, done, "struct vnode *", "char *", "struct vnode *"); -SDT_PROBE_DEFINE2(vfs, namecache, enter_negative, done, done, "struct vnode *", +SDT_PROBE_DEFINE2(vfs, namecache, enter_negative, done, "struct vnode *", "char *"); -SDT_PROBE_DEFINE1(vfs, namecache, fullpath, entry, entry, "struct vnode *"); -SDT_PROBE_DEFINE3(vfs, namecache, fullpath, hit, hit, "struct vnode *", +SDT_PROBE_DEFINE1(vfs, namecache, fullpath, entry, "struct vnode *"); +SDT_PROBE_DEFINE3(vfs, namecache, fullpath, hit, "struct vnode *", "char *", "struct vnode *"); -SDT_PROBE_DEFINE1(vfs, namecache, fullpath, miss, miss, "struct vnode *"); -SDT_PROBE_DEFINE3(vfs, namecache, fullpath, return, return, "int", +SDT_PROBE_DEFINE1(vfs, namecache, fullpath, miss, "struct vnode *"); +SDT_PROBE_DEFINE3(vfs, namecache, fullpath, return, "int", "struct vnode *", "char *"); -SDT_PROBE_DEFINE3(vfs, namecache, lookup, hit, hit, "struct vnode *", "char *", +SDT_PROBE_DEFINE3(vfs, namecache, lookup, hit, "struct vnode *", "char *", "struct vnode *"); -SDT_PROBE_DEFINE2(vfs, namecache, lookup, hit_negative, hit-negative, +SDT_PROBE_DEFINE2(vfs, namecache, lookup, hit__negative, "struct vnode *", "char *"); -SDT_PROBE_DEFINE2(vfs, namecache, lookup, miss, miss, "struct vnode *", +SDT_PROBE_DEFINE2(vfs, namecache, lookup, miss, "struct vnode *", "char *"); -SDT_PROBE_DEFINE1(vfs, namecache, purge, done, done, "struct vnode *"); -SDT_PROBE_DEFINE1(vfs, namecache, purge_negative, done, done, "struct vnode *"); -SDT_PROBE_DEFINE1(vfs, namecache, purgevfs, done, done, "struct mount *"); -SDT_PROBE_DEFINE3(vfs, namecache, zap, done, done, "struct vnode *", "char *", +SDT_PROBE_DEFINE1(vfs, namecache, purge, done, "struct vnode *"); +SDT_PROBE_DEFINE1(vfs, namecache, purge_negative, done, "struct vnode *"); +SDT_PROBE_DEFINE1(vfs, namecache, purgevfs, done, "struct mount *"); +SDT_PROBE_DEFINE3(vfs, namecache, zap, done, "struct vnode *", "char *", "struct vnode *"); -SDT_PROBE_DEFINE2(vfs, namecache, zap_negative, done, done, "struct vnode *", +SDT_PROBE_DEFINE2(vfs, namecache, zap_negative, done, "struct vnode *", "char *"); /* @@ -614,7 +614,7 @@ negative_success: nchstats.ncs_neghits++; if (ncp->nc_flag & NCF_WHITE) cnp->cn_flags |= ISWHITEOUT; - SDT_PROBE(vfs, namecache, lookup, hit_negative, dvp, nc_get_name(ncp), + SDT_PROBE(vfs, namecache, lookup, hit__negative, dvp, nc_get_name(ncp), 0, 0, 0); cache_out_ts(ncp, tsp, ticksp); CACHE_WUNLOCK(); Modified: stable/10/sys/kern/vfs_lookup.c ============================================================================== --- stable/10/sys/kern/vfs_lookup.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/vfs_lookup.c Fri Jan 17 10:58:59 2014 (r260817) @@ -70,9 +70,9 @@ __FBSDID("$FreeBSD$"); #undef NAMEI_DIAGNOSTIC SDT_PROVIDER_DECLARE(vfs); -SDT_PROBE_DEFINE3(vfs, namei, lookup, entry, entry, "struct vnode *", "char *", +SDT_PROBE_DEFINE3(vfs, namei, lookup, entry, "struct vnode *", "char *", "unsigned long"); -SDT_PROBE_DEFINE2(vfs, namei, lookup, return, return, "int", "struct vnode *"); +SDT_PROBE_DEFINE2(vfs, namei, lookup, return, "int", "struct vnode *"); /* * Allocation zone for namei Modified: stable/10/sys/kern/vfs_syscalls.c ============================================================================== --- stable/10/sys/kern/vfs_syscalls.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/kern/vfs_syscalls.c Fri Jan 17 10:58:59 2014 (r260817) @@ -92,8 +92,8 @@ __FBSDID("$FreeBSD$"); MALLOC_DEFINE(M_FADVISE, "fadvise", "posix_fadvise(2) information"); SDT_PROVIDER_DEFINE(vfs); -SDT_PROBE_DEFINE2(vfs, , stat, mode, mode, "char *", "int"); -SDT_PROBE_DEFINE2(vfs, , stat, reg, reg, "char *", "int"); +SDT_PROBE_DEFINE2(vfs, , stat, mode, "char *", "int"); +SDT_PROBE_DEFINE2(vfs, , stat, reg, "char *", "int"); static int chroot_refuse_vdir_fds(struct filedesc *fdp); static int getutimes(const struct timeval *, enum uio_seg, struct timespec *); Modified: stable/10/sys/net/vnet.c ============================================================================== --- stable/10/sys/net/vnet.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/net/vnet.c Fri Jan 17 10:58:59 2014 (r260817) @@ -210,14 +210,14 @@ static TAILQ_HEAD(, vnet_data_free) vnet static struct sx vnet_data_free_lock; SDT_PROVIDER_DEFINE(vnet); -SDT_PROBE_DEFINE1(vnet, functions, vnet_alloc, entry, entry, "int"); -SDT_PROBE_DEFINE2(vnet, functions, vnet_alloc, alloc, alloc, "int", +SDT_PROBE_DEFINE1(vnet, functions, vnet_alloc, entry, "int"); +SDT_PROBE_DEFINE2(vnet, functions, vnet_alloc, alloc, "int", "struct vnet *"); -SDT_PROBE_DEFINE2(vnet, functions, vnet_alloc, return, return, +SDT_PROBE_DEFINE2(vnet, functions, vnet_alloc, return, "int", "struct vnet *"); -SDT_PROBE_DEFINE2(vnet, functions, vnet_destroy, entry, entry, +SDT_PROBE_DEFINE2(vnet, functions, vnet_destroy, entry, "int", "struct vnet *"); -SDT_PROBE_DEFINE1(vnet, functions, vnet_destroy, return, entry, +SDT_PROBE_DEFINE1(vnet, functions, vnet_destroy, entry, "int"); #ifdef DDB Modified: stable/10/sys/netinet/in_kdtrace.c ============================================================================== --- stable/10/sys/netinet/in_kdtrace.c Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/netinet/in_kdtrace.c Fri Jan 17 10:58:59 2014 (r260817) @@ -39,7 +39,7 @@ SDT_PROVIDER_DEFINE(ip); SDT_PROVIDER_DEFINE(tcp); SDT_PROVIDER_DEFINE(udp); -SDT_PROBE_DEFINE6_XLATE(ip, , , receive, receive, +SDT_PROBE_DEFINE6_XLATE(ip, , , receive, "void *", "pktinfo_t *", "void *", "csinfo_t *", "uint8_t *", "ipinfo_t *", @@ -47,7 +47,7 @@ SDT_PROBE_DEFINE6_XLATE(ip, , , receive, "struct ip *", "ipv4info_t *", "struct ip6_hdr *", "ipv6info_t *"); -SDT_PROBE_DEFINE6_XLATE(ip, , , send, send, +SDT_PROBE_DEFINE6_XLATE(ip, , , send, "void *", "pktinfo_t *", "void *", "csinfo_t *", "uint8_t *", "ipinfo_t *", @@ -55,56 +55,56 @@ SDT_PROBE_DEFINE6_XLATE(ip, , , send, se "struct ip *", "ipv4info_t *", "struct ip6_hdr *", "ipv6info_t *"); -SDT_PROBE_DEFINE5_XLATE(tcp, , , accept_established, accept-established, +SDT_PROBE_DEFINE5_XLATE(tcp, , , accept__established, "void *", "pktinfo_t *", "struct tcpcb *", "csinfo_t *", "uint8_t *", "ipinfo_t *", "struct tcpcb *", "tcpsinfo_t *" , "struct tcphdr *", "tcpinfoh_t *"); -SDT_PROBE_DEFINE5_XLATE(tcp, , , accept_refused, accept-refused, +SDT_PROBE_DEFINE5_XLATE(tcp, , , accept__refused, "void *", "pktinfo_t *", "struct tcpcb *", "csinfo_t *", "uint8_t *", "ipinfo_t *", "struct tcpcb *", "tcpsinfo_t *" , "struct tcphdr *", "tcpinfo_t *"); -SDT_PROBE_DEFINE5_XLATE(tcp, , , connect_established, connect-established, +SDT_PROBE_DEFINE5_XLATE(tcp, , , connect__established, "void *", "pktinfo_t *", "struct tcpcb *", "csinfo_t *", "uint8_t *", "ipinfo_t *", "struct tcpcb *", "tcpsinfo_t *" , "struct tcphdr *", "tcpinfoh_t *"); -SDT_PROBE_DEFINE5_XLATE(tcp, , , connect_refused, connect-refused, +SDT_PROBE_DEFINE5_XLATE(tcp, , , connect__refused, "void *", "pktinfo_t *", "struct tcpcb *", "csinfo_t *", "uint8_t *", "ipinfo_t *", "struct tcpcb *", "tcpsinfo_t *" , "struct tcphdr *", "tcpinfoh_t *"); -SDT_PROBE_DEFINE5_XLATE(tcp, , , connect_request, connect-request, +SDT_PROBE_DEFINE5_XLATE(tcp, , , connect__request, "void *", "pktinfo_t *", "struct tcpcb *", "csinfo_t *", "uint8_t *", "ipinfo_t *", "struct tcpcb *", "tcpsinfo_t *" , "struct tcphdr *", "tcpinfo_t *"); -SDT_PROBE_DEFINE5_XLATE(tcp, , , receive, receive, +SDT_PROBE_DEFINE5_XLATE(tcp, , , receive, "void *", "pktinfo_t *", "struct tcpcb *", "csinfo_t *", "uint8_t *", "ipinfo_t *", "struct tcpcb *", "tcpsinfo_t *" , "struct tcphdr *", "tcpinfoh_t *"); -SDT_PROBE_DEFINE5_XLATE(tcp, , , send, send, +SDT_PROBE_DEFINE5_XLATE(tcp, , , send, "void *", "pktinfo_t *", "struct tcpcb *", "csinfo_t *", "uint8_t *", "ipinfo_t *", "struct tcpcb *", "tcpsinfo_t *" , "struct tcphdr *", "tcpinfo_t *"); -SDT_PROBE_DEFINE6_XLATE(tcp, , , state_change, state-change, +SDT_PROBE_DEFINE6_XLATE(tcp, , , state__change, "void *", "void *", "struct tcpcb *", "csinfo_t *", "void *", "void *", @@ -112,14 +112,14 @@ SDT_PROBE_DEFINE6_XLATE(tcp, , , state_c "void *", "void *", "int", "tcplsinfo_t *"); -SDT_PROBE_DEFINE5_XLATE(udp, , , receive, receive, +SDT_PROBE_DEFINE5_XLATE(udp, , , receive, "void *", "pktinfo_t *", "struct inpcb *", "csinfo_t *", "uint8_t *", "ipinfo_t *", "struct inpcb *", "udpsinfo_t *", "struct udphdr *", "udpinfo_t *"); -SDT_PROBE_DEFINE5_XLATE(udp, , , send, send, +SDT_PROBE_DEFINE5_XLATE(udp, , , send, "void *", "pktinfo_t *", "struct inpcb *", "csinfo_t *", "uint8_t *", "ipinfo_t *", Modified: stable/10/sys/netinet/in_kdtrace.h ============================================================================== --- stable/10/sys/netinet/in_kdtrace.h Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/netinet/in_kdtrace.h Fri Jan 17 10:58:59 2014 (r260817) @@ -44,14 +44,14 @@ SDT_PROVIDER_DECLARE(udp); SDT_PROBE_DECLARE(ip, , , receive); SDT_PROBE_DECLARE(ip, , , send); -SDT_PROBE_DECLARE(tcp, , , accept_established); -SDT_PROBE_DECLARE(tcp, , , accept_refused); -SDT_PROBE_DECLARE(tcp, , , connect_established); -SDT_PROBE_DECLARE(tcp, , , connect_refused); -SDT_PROBE_DECLARE(tcp, , , connect_request); +SDT_PROBE_DECLARE(tcp, , , accept__established); +SDT_PROBE_DECLARE(tcp, , , accept__refused); +SDT_PROBE_DECLARE(tcp, , , connect__established); +SDT_PROBE_DECLARE(tcp, , , connect__refused); +SDT_PROBE_DECLARE(tcp, , , connect__request); SDT_PROBE_DECLARE(tcp, , , receive); SDT_PROBE_DECLARE(tcp, , , send); -SDT_PROBE_DECLARE(tcp, , , state_change); +SDT_PROBE_DECLARE(tcp, , , state__change); SDT_PROBE_DECLARE(udp, , , receive); SDT_PROBE_DECLARE(udp, , , send); Modified: stable/10/sys/netinet/sctp_dtrace_define.h ============================================================================== --- stable/10/sys/netinet/sctp_dtrace_define.h Fri Jan 17 10:50:46 2014 (r260816) +++ stable/10/sys/netinet/sctp_dtrace_define.h Fri Jan 17 10:58:59 2014 (r260817) @@ -45,7 +45,7 @@ SDT_PROVIDER_DEFINE(sctp); /* Cwnd probe - tracks changes in the congestion window on a netp */ /********************************************************/ /* Initial */ -SDT_PROBE_DEFINE5(sctp, cwnd, net, init, init, +SDT_PROBE_DEFINE5(sctp, cwnd, net, init, "uint32_t", /* The Vtag for this end */ "uint32_t", /* * The port number of the local side << 16 | port number @@ -56,7 +56,7 @@ SDT_PROBE_DEFINE5(sctp, cwnd, net, init, "int"); /* The new value of the cwnd */ /* ACK-INCREASE */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 11:05:00 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2D06EEF0; Fri, 17 Jan 2014 11:05:00 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1966116F0; Fri, 17 Jan 2014 11:05:00 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HB4xdw033587; Fri, 17 Jan 2014 11:04:59 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HB4xWS033586; Fri, 17 Jan 2014 11:04:59 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401171104.s0HB4xWS033586@svn.freebsd.org> From: Andriy Gapon Date: Fri, 17 Jan 2014 11:04:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260818 - stable/9/sys/kern X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 11:05:00 -0000 Author: avg Date: Fri Jan 17 11:04:59 2014 New Revision: 260818 URL: http://svnweb.freebsd.org/changeset/base/260818 Log: MFC r250817: Use SDT_PROBE1() instead of SDT_PROBE() MFC slacker: pjd Modified: stable/9/sys/kern/kern_priv.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/kern/kern_priv.c ============================================================================== --- stable/9/sys/kern/kern_priv.c Fri Jan 17 10:58:59 2014 (r260817) +++ stable/9/sys/kern/kern_priv.c Fri Jan 17 11:04:59 2014 (r260818) @@ -159,13 +159,10 @@ priv_check_cred(struct ucred *cred, int */ error = EPERM; out: - if (error) { - SDT_PROBE(priv, kernel, priv_check, priv_err, priv, 0, 0, 0, - 0); - } else { - SDT_PROBE(priv, kernel, priv_check, priv_ok, priv, 0, 0, 0, - 0); - } + if (error) + SDT_PROBE1(priv, kernel, priv_check, priv_err, priv); + else + SDT_PROBE1(priv, kernel, priv_check, priv_ok, priv); return (error); } From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 11:09:05 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EAA6219F; Fri, 17 Jan 2014 11:09:05 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D7953171E; Fri, 17 Jan 2014 11:09:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HB95IY034310; Fri, 17 Jan 2014 11:09:05 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HB95Ln034309; Fri, 17 Jan 2014 11:09:05 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201401171109.s0HB95Ln034309@svn.freebsd.org> From: Gleb Smirnoff Date: Fri, 17 Jan 2014 11:09:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260819 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 11:09:06 -0000 Author: glebius Date: Fri Jan 17 11:09:05 2014 New Revision: 260819 URL: http://svnweb.freebsd.org/changeset/base/260819 Log: Fix comment. Modified: head/sys/kern/uipc_sockbuf.c Modified: head/sys/kern/uipc_sockbuf.c ============================================================================== --- head/sys/kern/uipc_sockbuf.c Fri Jan 17 11:04:59 2014 (r260818) +++ head/sys/kern/uipc_sockbuf.c Fri Jan 17 11:09:05 2014 (r260819) @@ -813,7 +813,7 @@ sbflush_internal(struct sockbuf *sb) while (sb->sb_mbcnt) { /* - * Don't call sbdrop(sb, 0) if the leading mbuf is non-empty: + * Don't call sbcut(sb, 0) if the leading mbuf is non-empty: * we would loop forever. Panic instead. */ if (!sb->sb_cc && (sb->sb_mb == NULL || sb->sb_mb->m_len)) From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 11:13:46 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6D64330F; Fri, 17 Jan 2014 11:13:46 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 579601791; Fri, 17 Jan 2014 11:13:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HBDk87037725; Fri, 17 Jan 2014 11:13:46 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HBDj3Y037719; Fri, 17 Jan 2014 11:13:45 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401171113.s0HBDj3Y037719@svn.freebsd.org> From: Andriy Gapon Date: Fri, 17 Jan 2014 11:13:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260820 - in stable/9: cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt sys/cddl/dev/dtrace sys/modules/dtrace/dtrace_test X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 11:13:46 -0000 Author: avg Date: Fri Jan 17 11:13:45 2014 New Revision: 260820 URL: http://svnweb.freebsd.org/changeset/base/260820 Log: MFC r251237: Port the SDT test Modified: stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.c stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.d stable/9/sys/cddl/dev/dtrace/dtrace_test.c stable/9/sys/modules/dtrace/dtrace_test/Makefile Directory Properties: stable/9/cddl/contrib/opensolaris/ (props changed) stable/9/sys/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.c ============================================================================== --- stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.c Fri Jan 17 11:09:05 2014 (r260819) +++ stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.c Fri Jan 17 11:13:45 2014 (r260820) @@ -26,26 +26,24 @@ #pragma ident "%Z%%M% %I% %E% SMI" +#include +#include + +#include #include -#ifndef __FreeBSD__ -#include -#endif int main(int argc, char **argv) { -#ifdef __FreeBSD__ - return (1); -#else + int val = 1; + while (1) { - if (uadmin(A_SDTTEST, 0, 0) < 0) { - perror("uadmin"); - return (1); - } + if (sysctlbyname("debug.dtracetest.sdttest", NULL, NULL, &val, + sizeof(val))) + err(1, "sysctlbyname"); sleep(1); } return (0); -#endif } Modified: stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.d ============================================================================== --- stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.d Fri Jan 17 11:09:05 2014 (r260819) +++ stable/9/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/sdt/tst.sdtargs.d Fri Jan 17 11:13:45 2014 (r260820) @@ -43,7 +43,7 @@ ERROR exit(1); } -sdt:::test +test:::sdttest /arg0 != 1 || arg1 != 2 || arg2 != 3 || arg3 != 4 || arg4 != 5 || arg5 != 6 || arg6 != 7/ { @@ -54,7 +54,7 @@ sdt:::test exit(1); } -sdt:::test +test:::sdttest { exit(0); } Modified: stable/9/sys/cddl/dev/dtrace/dtrace_test.c ============================================================================== --- stable/9/sys/cddl/dev/dtrace/dtrace_test.c Fri Jan 17 11:09:05 2014 (r260819) +++ stable/9/sys/cddl/dev/dtrace/dtrace_test.c Fri Jan 17 11:13:45 2014 (r260820) @@ -25,15 +25,25 @@ * $FreeBSD$ * */ +#include "opt_kdtrace.h" #include #include #include +#include + #include #include #include +#include +#include #include +SDT_PROVIDER_DEFINE(test); + +SDT_PROBE_DEFINE7(test, , , sdttest, sdttest, "int", "int", "int", "int", "int", + "int", "int"); + /* * These are variables that the DTrace test suite references in the * Solaris kernel. We define them here so that the tests function @@ -45,6 +55,33 @@ typedef struct vnode vnode_t; vnode_t dummy; vnode_t *rootvp = &dummy; +/* + * Test SDT probes with more than 5 arguments. On amd64, such probes require + * special handling since only the first 5 arguments will be passed to + * dtrace_probe() in registers; the rest must be fetched off the stack. + */ +static int +dtrace_test_sdttest(SYSCTL_HANDLER_ARGS) +{ + int val, error; + + val = 0; + error = sysctl_handle_int(oidp, &val, 0, req); + if (error || req->newptr == NULL) + return (error); + else if (val == 0) + return (0); + + SDT_PROBE7(test, , , sdttest, 1, 2, 3, 4, 5, 6, 7); + + return (error); +} + +static SYSCTL_NODE(_debug, OID_AUTO, dtracetest, CTLFLAG_RD, 0, ""); + +SYSCTL_PROC(_debug_dtracetest, OID_AUTO, sdttest, CTLTYPE_INT | CTLFLAG_RW, + NULL, 0, dtrace_test_sdttest, "I", "Trigger the SDT test probe"); + static int dtrace_test_modevent(module_t mod, int type, void *data) { Modified: stable/9/sys/modules/dtrace/dtrace_test/Makefile ============================================================================== --- stable/9/sys/modules/dtrace/dtrace_test/Makefile Fri Jan 17 11:09:05 2014 (r260819) +++ stable/9/sys/modules/dtrace/dtrace_test/Makefile Fri Jan 17 11:13:45 2014 (r260820) @@ -5,8 +5,9 @@ KMOD= dtrace_test SRCS= dtrace_test.c +SRCS+= opt_kdtrace.h SRCS+= vnode_if.h - + CFLAGS+= -I${.CURDIR}/../../.. CFLAGS+= -D_KERNEL From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 11:20:23 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B960F795; Fri, 17 Jan 2014 11:20:23 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A60CE1833; Fri, 17 Jan 2014 11:20:23 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HBKN6R039245; Fri, 17 Jan 2014 11:20:23 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HBKN82039244; Fri, 17 Jan 2014 11:20:23 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401171120.s0HBKN82039244@svn.freebsd.org> From: Andriy Gapon Date: Fri, 17 Jan 2014 11:20:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260823 - stable/9/sys/sys X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 11:20:23 -0000 Author: avg Date: Fri Jan 17 11:20:23 2014 New Revision: 260823 URL: http://svnweb.freebsd.org/changeset/base/260823 Log: MFC r227294: SDT's struct sdt_argtype can be marked static everywhere MFC slacker: ed Modified: stable/9/sys/sys/sdt.h Directory Properties: stable/9/sys/ (props changed) stable/9/sys/sys/ (props changed) Modified: stable/9/sys/sys/sdt.h ============================================================================== --- stable/9/sys/sys/sdt.h Fri Jan 17 11:18:39 2014 (r260822) +++ stable/9/sys/sys/sdt.h Fri Jan 17 11:20:23 2014 (r260823) @@ -143,7 +143,7 @@ SET_DECLARE(sdt_argtypes_set, struct sdt (uintptr_t) arg3, (uintptr_t) arg4) #define SDT_PROBE_ARGTYPE(prov, mod, func, name, num, type) \ - struct sdt_argtype sdt_##prov##_##mod##_##func##_##name##num[1] \ + static struct sdt_argtype sdt_##prov##_##mod##_##func##_##name##num[1] \ = { { num, type, { NULL, NULL }, \ sdt_##prov##_##mod##_##func##_##name } \ }; \ From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 14:36:26 2014 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5E44D624; Fri, 17 Jan 2014 14:36:26 +0000 (UTC) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 26E4B18B0; Fri, 17 Jan 2014 14:36:24 +0000 (UTC) Received: from porto.starpoint.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id QAA28801; Fri, 17 Jan 2014 16:36:19 +0200 (EET) (envelope-from avg@FreeBSD.org) Received: from localhost ([127.0.0.1]) by porto.starpoint.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1W4AWx-000OcI-1r; Fri, 17 Jan 2014 16:36:19 +0200 Message-ID: <52D93F91.502@FreeBSD.org> Date: Fri, 17 Jan 2014 16:34:57 +0200 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: "Justin T. Gibbs" Subject: Re: svn commit: r258713 - in head/sys: kern sys References: <201311281856.rASIuZu8059699@svn.freebsd.org> <3784C560-3648-4E03-93DA-9A60E3AC401D@scsiguy.com> In-Reply-To: <3784C560-3648-4E03-93DA-9A60E3AC401D@scsiguy.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 14:36:26 -0000 on 30/11/2013 08:46 Justin T. Gibbs said the following: > Man page update? I came up with the following update that - adds taskqueue_drain_all documentation - extends taskqueue_drain description - adds description for previously undocumented taskqueue_block / taskqueue_unblock, including a warning on taskqueue_block + taskqueue_drain combination All reviews and suggestions are welcome. Both for content and language. diff --git a/share/man/man9/taskqueue.9 b/share/man/man9/taskqueue.9 index 5f6131a..4db3d7a 100644 --- a/share/man/man9/taskqueue.9 +++ b/share/man/man9/taskqueue.9 @@ -86,6 +86,12 @@ struct timeout_task; .Fn taskqueue_drain "struct taskqueue *queue" "struct task *task" .Ft void .Fn taskqueue_drain_timeout "struct taskqueue *queue" "struct timeout_task *timeout_task" +.Ft void +.Fn taskqueue_drain_all "struct taskqueue *queue" +.Ft void +.Fn taskqueue_block "struct taskqueue *queue" +.Ft void +.Fn taskqueue_unblock "struct taskqueue *queue" .Ft int .Fn taskqueue_member "struct taskqueue *queue" "struct thread *td" .Ft void @@ -255,6 +261,74 @@ function is used to wait for the scheduled task to finish. There is no guarantee that the task will not be enqueued after call to .Fn taskqueue_drain . +Because the caller typically would use +.Fn taskqueue_drain +to put the task into a known state, then the caller should use +out-of-band means to ensure, before calling +.Fn taskqueue_drain , +that the task would not be enqueued. +For example, if the task is enqueued by an interrupt filter, then +the interrupt could be disabled. +.Pp +The +.Fn taskqueue_drain_all +function is used to wait for all the pending and running tasks that +are enqueued on the taskqueue to finish. +The caller must arrange that the tasks are not re-enqueued. +Note that +.Fn taskqueue_drain_all +currently does not handle tasks with delayed enqueueing. +.Pp +The +.Fn taskqueue_block +function blocks the taskqueue. +It prevents any enqueued but not running tasks from being executed. +Future calls to +.Fn taskqueue_enqueue +will enqueue tasks, but the tasks will not be run until +.Fn taskqueue_unblock +is called. +Please note that +.Fn taskqueue_block +does not wait for any currently running tasks to finish. +Thus, the +.Fn taskqueue_block +does not provide a guarantee that +.Fn taskqueue_run +is not running after +.Fn taskqueue_block +returns, but it does provide a guarantee that +.Fn taskqueue_run +will not be called again +until +.Fn taskqueue_unblock +is called. +If the caller requires a guarantee that +.Fn taskqueue_run +is not running, then this must be arranged by the caller. +Note that if +.Fn taskqueue_drain +is called on a task that is enqueued on a taskqueue that is blocked by +.Fn taskqueue_block , +then +.Fn taskqueue_drain +can not return until the taskqueue is unblocked. +This can result in a deadlock if the thread blocked in +.Fn taskqueue_drain +is a thread that is supposed to call +.Fn taskqueue_unblock . +Thus, use of +.Fn taskqueue_drain +after +.Fn taskqueue_block +is discouraged, because a state of the task can not be known in advance. +The same applies to +.Fn taskqueue_drain_all . +.Pp +The +.Fn taskqueue_unblock +function unblocks the previously blocked taskqueue. +All enqueued tasks can be run after this call. .Pp The .Fn taskqueue_member -- Andriy Gapon From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 15:01:50 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D9D4031A; Fri, 17 Jan 2014 15:01:50 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C4FEE1B27; Fri, 17 Jan 2014 15:01:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HF1o1t029517; Fri, 17 Jan 2014 15:01:50 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HF1oRY029516; Fri, 17 Jan 2014 15:01:50 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201401171501.s0HF1oRY029516@svn.freebsd.org> From: Andriy Gapon Date: Fri, 17 Jan 2014 15:01:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260826 - stable/9/sys/modules/dtrace X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 15:01:50 -0000 Author: avg Date: Fri Jan 17 15:01:50 2014 New Revision: 260826 URL: http://svnweb.freebsd.org/changeset/base/260826 Log: followup to r260816, MFC of r257037: remove dtio from dtrace Makefile svn merge ran without any complains or errors, but this Makefile somehow was not updated. This is a direct commit. Reported by: Jukka Ukkonen Modified: stable/9/sys/modules/dtrace/Makefile Modified: stable/9/sys/modules/dtrace/Makefile ============================================================================== --- stable/9/sys/modules/dtrace/Makefile Fri Jan 17 11:31:41 2014 (r260825) +++ stable/9/sys/modules/dtrace/Makefile Fri Jan 17 15:01:50 2014 (r260826) @@ -11,7 +11,6 @@ SUBDIR= dtmalloc \ dtrace_test \ lockstat \ profile \ - dtio \ prototype \ sdt \ systrace From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 16:17:08 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 726DCE99; Fri, 17 Jan 2014 16:17:08 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5CF29122F; Fri, 17 Jan 2014 16:17:08 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HGH8gc061025; Fri, 17 Jan 2014 16:17:08 GMT (envelope-from mckusick@svn.freebsd.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HGH8R3061024; Fri, 17 Jan 2014 16:17:08 GMT (envelope-from mckusick@svn.freebsd.org) Message-Id: <201401171617.s0HGH8R3061024@svn.freebsd.org> From: Kirk McKusick Date: Fri, 17 Jan 2014 16:17:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260827 - stable/10/sys/ufs/ufs X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 16:17:08 -0000 Author: mckusick Date: Fri Jan 17 16:17:07 2014 New Revision: 260827 URL: http://svnweb.freebsd.org/changeset/base/260827 Log: MFC of 260079: Properly handle unsigned comparison. Modified: stable/10/sys/ufs/ufs/ufs_quota.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/ufs/ufs/ufs_quota.c ============================================================================== --- stable/10/sys/ufs/ufs/ufs_quota.c Fri Jan 17 15:01:50 2014 (r260826) +++ stable/10/sys/ufs/ufs/ufs_quota.c Fri Jan 17 16:17:07 2014 (r260827) @@ -307,7 +307,6 @@ int chkiq(struct inode *ip, int change, struct ucred *cred, int flags) { struct dquot *dq; - ino_t ncurinodes; int i, error, warn, do_check; #ifdef DIAGNOSTIC @@ -322,10 +321,8 @@ chkiq(struct inode *ip, int change, stru continue; DQI_LOCK(dq); DQI_WAIT(dq, PINOD+1, "chkiq1"); - ncurinodes = dq->dq_curinodes + change; - /* XXX: ncurinodes is unsigned */ - if (dq->dq_curinodes != 0 && ncurinodes >= 0) - dq->dq_curinodes = ncurinodes; + if (dq->dq_curinodes >= -change) + dq->dq_curinodes += change; else dq->dq_curinodes = 0; dq->dq_flags &= ~DQ_INODS; @@ -359,11 +356,8 @@ chkiq(struct inode *ip, int change, stru continue; DQI_LOCK(dq); DQI_WAIT(dq, PINOD+1, "chkiq3"); - ncurinodes = dq->dq_curinodes - change; - /* XXX: ncurinodes is unsigned */ - if (dq->dq_curinodes != 0 && - ncurinodes >= 0) - dq->dq_curinodes = ncurinodes; + if (dq->dq_curinodes >= change) + dq->dq_curinodes -= change; else dq->dq_curinodes = 0; dq->dq_flags &= ~DQ_INODS; From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 16:22:11 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 06EBF1B8; Fri, 17 Jan 2014 16:22:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CC7B912BD; Fri, 17 Jan 2014 16:22:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HGMAgr064445; Fri, 17 Jan 2014 16:22:10 GMT (envelope-from mckusick@svn.freebsd.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HGMAKY064444; Fri, 17 Jan 2014 16:22:10 GMT (envelope-from mckusick@svn.freebsd.org) Message-Id: <201401171622.s0HGMAKY064444@svn.freebsd.org> From: Kirk McKusick Date: Fri, 17 Jan 2014 16:22:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260828 - stable/10/sys/ufs/ffs X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 16:22:11 -0000 Author: mckusick Date: Fri Jan 17 16:22:10 2014 New Revision: 260828 URL: http://svnweb.freebsd.org/changeset/base/260828 Log: MFC of 260088: Fine tune filesystem block allocations under low free-space conditions (-r254995) based on further operational experience. Submitted by: Dmitry Sivachenko Fix Tested by: Dmitry Sivachenko Modified: stable/10/sys/ufs/ffs/ffs_alloc.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/ufs/ffs/ffs_alloc.c ============================================================================== --- stable/10/sys/ufs/ffs/ffs_alloc.c Fri Jan 17 16:17:07 2014 (r260827) +++ stable/10/sys/ufs/ffs/ffs_alloc.c Fri Jan 17 16:22:10 2014 (r260828) @@ -517,12 +517,12 @@ ffs_reallocblks_ufs1(ap) fs = ip->i_fs; ump = ip->i_ump; /* - * If we are not tracking block clusters or if we have less than 2% + * If we are not tracking block clusters or if we have less than 4% * free blocks left, then do not attempt to cluster. Running with * less than 5% free block reserve is not recommended and those that * choose to do so do not expect to have good file layout. */ - if (fs->fs_contigsumsize <= 0 || freespace(fs, 2) < 0) + if (fs->fs_contigsumsize <= 0 || freespace(fs, 4) < 0) return (ENOSPC); buflist = ap->a_buflist; len = buflist->bs_nchildren; @@ -744,12 +744,12 @@ ffs_reallocblks_ufs2(ap) fs = ip->i_fs; ump = ip->i_ump; /* - * If we are not tracking block clusters or if we have less than 2% + * If we are not tracking block clusters or if we have less than 4% * free blocks left, then do not attempt to cluster. Running with * less than 5% free block reserve is not recommended and those that * choose to do so do not expect to have good file layout. */ - if (fs->fs_contigsumsize <= 0 || freespace(fs, 2) < 0) + if (fs->fs_contigsumsize <= 0 || freespace(fs, 4) < 0) return (ENOSPC); buflist = ap->a_buflist; len = buflist->bs_nchildren; From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 16:29:58 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 28483533; Fri, 17 Jan 2014 16:29:58 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id ED97E1316; Fri, 17 Jan 2014 16:29:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HGTveZ065525; Fri, 17 Jan 2014 16:29:57 GMT (envelope-from mckusick@svn.freebsd.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HGTv0r065524; Fri, 17 Jan 2014 16:29:57 GMT (envelope-from mckusick@svn.freebsd.org) Message-Id: <201401171629.s0HGTv0r065524@svn.freebsd.org> From: Kirk McKusick Date: Fri, 17 Jan 2014 16:29:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260829 - stable/9/sys/ufs/ffs X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 16:29:58 -0000 Author: mckusick Date: Fri Jan 17 16:29:57 2014 New Revision: 260829 URL: http://svnweb.freebsd.org/changeset/base/260829 Log: MFC of 260088: Fine tune filesystem block allocations under low free-space conditions (-r254995) based on further operational experience. Submitted by: Dmitry Sivachenko Fix Tested by: Dmitry Sivachenko Modified: stable/9/sys/ufs/ffs/ffs_alloc.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/ufs/ffs/ffs_alloc.c ============================================================================== --- stable/9/sys/ufs/ffs/ffs_alloc.c Fri Jan 17 16:22:10 2014 (r260828) +++ stable/9/sys/ufs/ffs/ffs_alloc.c Fri Jan 17 16:29:57 2014 (r260829) @@ -517,12 +517,12 @@ ffs_reallocblks_ufs1(ap) fs = ip->i_fs; ump = ip->i_ump; /* - * If we are not tracking block clusters or if we have less than 2% + * If we are not tracking block clusters or if we have less than 4% * free blocks left, then do not attempt to cluster. Running with * less than 5% free block reserve is not recommended and those that * choose to do so do not expect to have good file layout. */ - if (fs->fs_contigsumsize <= 0 || freespace(fs, 2) < 0) + if (fs->fs_contigsumsize <= 0 || freespace(fs, 4) < 0) return (ENOSPC); buflist = ap->a_buflist; len = buflist->bs_nchildren; @@ -743,12 +743,12 @@ ffs_reallocblks_ufs2(ap) fs = ip->i_fs; ump = ip->i_ump; /* - * If we are not tracking block clusters or if we have less than 2% + * If we are not tracking block clusters or if we have less than 4% * free blocks left, then do not attempt to cluster. Running with * less than 5% free block reserve is not recommended and those that * choose to do so do not expect to have good file layout. */ - if (fs->fs_contigsumsize <= 0 || freespace(fs, 2) < 0) + if (fs->fs_contigsumsize <= 0 || freespace(fs, 4) < 0) return (ENOSPC); buflist = ap->a_buflist; len = buflist->bs_nchildren; From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 17:16:50 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 460A4F31; Fri, 17 Jan 2014 17:16:50 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3269E178B; Fri, 17 Jan 2014 17:16:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HHGo0r086551; Fri, 17 Jan 2014 17:16:50 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HHGolr086550; Fri, 17 Jan 2014 17:16:50 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401171716.s0HHGolr086550@svn.freebsd.org> From: Alexander Motin Date: Fri, 17 Jan 2014 17:16:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260830 - head/sys/dev/ahci X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 17:16:50 -0000 Author: mav Date: Fri Jan 17 17:16:49 2014 New Revision: 260830 URL: http://svnweb.freebsd.org/changeset/base/260830 Log: Add ID for one more ASMedia AHCI-compatible controller. Reported by: ignace.peeters@gmail.com MFC after: 2 weeks Modified: head/sys/dev/ahci/ahci.c Modified: head/sys/dev/ahci/ahci.c ============================================================================== --- head/sys/dev/ahci/ahci.c Fri Jan 17 16:29:57 2014 (r260829) +++ head/sys/dev/ahci/ahci.c Fri Jan 17 17:16:49 2014 (r260830) @@ -146,6 +146,7 @@ static struct { {0x78021022, 0x00, "AMD Hudson-2", 0}, {0x78031022, 0x00, "AMD Hudson-2", 0}, {0x78041022, 0x00, "AMD Hudson-2", 0}, + {0x06111b21, 0x00, "ASMedia ASM2106", 0}, {0x06121b21, 0x00, "ASMedia ASM1061", 0}, {0x26528086, 0x00, "Intel ICH6", AHCI_Q_NOFORCE}, {0x26538086, 0x00, "Intel ICH6M", AHCI_Q_NOFORCE}, From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 18:03:03 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B3E6BC28; Fri, 17 Jan 2014 18:03:03 +0000 (UTC) Received: from mail-qa0-x231.google.com (mail-qa0-x231.google.com [IPv6:2607:f8b0:400d:c00::231]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2BEE31B01; Fri, 17 Jan 2014 18:03:03 +0000 (UTC) Received: by mail-qa0-f49.google.com with SMTP id w8so3518236qac.8 for ; Fri, 17 Jan 2014 10:03:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=tn9tNQhGwqEDL1kzk4PRp10iPZjbdEWHjRelvQ1ulIY=; b=FQCTMTJw1PYRx8kZAGoKSqbHtctHqvsMYEC9G9OvZiNVMzNIS3L0n2eb/37bbOuU77 Nnlrb2CyH3lAcZO7t7zS5q7Rf9H0r8mlQg1DWERvo9pinsSK/vZW50l3YfrgFKMBJ35f aXhwUW7mPHJ7Z9IecfZ97DSNZJFraUMyEIMjGszIgNhZWdur5kxVkw4x9Pw15a0ZQtPr e4YL/rDTR0xNitrquEjS7L/sAyM9tx4c3+s6+lxzmTNbPXlzv8AovynwyrW14FydxTnG KNY7OOByWoOKOq75xuYkWsos1RzLoZ9jKzN+No8L2xQlKcyvAJZYOEQQ7hRkzJg0iFCr QSNg== MIME-Version: 1.0 X-Received: by 10.140.96.180 with SMTP id k49mr2633090qge.4.1389981782314; Fri, 17 Jan 2014 10:03:02 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.224.52.8 with HTTP; Fri, 17 Jan 2014 10:03:02 -0800 (PST) In-Reply-To: <201401171048.s0HAmiPf025684@svn.freebsd.org> References: <201401171048.s0HAmiPf025684@svn.freebsd.org> Date: Fri, 17 Jan 2014 10:03:02 -0800 X-Google-Sender-Auth: AKQtb4up09bFzMTJt2dYHfbWmgY Message-ID: Subject: Re: svn commit: r260815 - stable/10/sys/netinet From: Adrian Chadd To: Andriy Gapon Content-Type: text/plain; charset=ISO-8859-1 Cc: svn-src-stable@freebsd.org, "svn-src-all@freebsd.org" , "src-committers@freebsd.org" , svn-src-stable-10@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 18:03:03 -0000 :) Thanks! -a On 17 January 2014 02:48, Andriy Gapon wrote: > Author: avg > Date: Fri Jan 17 10:48:44 2014 > New Revision: 260815 > URL: http://svnweb.freebsd.org/changeset/base/260815 > > Log: > MFC r258605: Convert over the TCP probes to use mtod() > > MFC slacker: adrian > > Modified: > stable/10/sys/netinet/tcp_input.c > stable/10/sys/netinet/tcp_subr.c > Directory Properties: > stable/10/ (props changed) > > Modified: stable/10/sys/netinet/tcp_input.c > ============================================================================== > --- stable/10/sys/netinet/tcp_input.c Fri Jan 17 10:35:18 2014 (r260814) > +++ stable/10/sys/netinet/tcp_input.c Fri Jan 17 10:48:44 2014 (r260815) > @@ -1393,7 +1393,7 @@ relocked: > } > #endif > > - TCP_PROBE5(receive, NULL, tp, m->m_data, tp, th); > + TCP_PROBE5(receive, NULL, tp, mtod(m, const char *), tp, th); > > /* > * Segment belongs to a connection in SYN_SENT, ESTABLISHED or later > @@ -1405,7 +1405,7 @@ relocked: > return; > > dropwithreset: > - TCP_PROBE5(receive, NULL, tp, m->m_data, tp, th); > + TCP_PROBE5(receive, NULL, tp, mtod(m, const char *), tp, th); > > if (ti_locked == TI_WLOCKED) { > INP_INFO_WUNLOCK(&V_tcbinfo); > @@ -1429,7 +1429,7 @@ dropwithreset: > > dropunlock: > if (m != NULL) > - TCP_PROBE5(receive, NULL, tp, m->m_data, tp, th); > + TCP_PROBE5(receive, NULL, tp, mtod(m, const char *), tp, th); > > if (ti_locked == TI_WLOCKED) { > INP_INFO_WUNLOCK(&V_tcbinfo); > @@ -1928,8 +1928,8 @@ tcp_do_segment(struct mbuf *m, struct tc > goto dropwithreset; > } > if ((thflags & (TH_ACK|TH_RST)) == (TH_ACK|TH_RST)) { > - TCP_PROBE5(connect_refused, NULL, tp, m->m_data, tp, > - th); > + TCP_PROBE5(connect_refused, NULL, tp, > + mtod(m, const char *), tp, th); > tp = tcp_drop(tp, ECONNREFUSED); > } > if (thflags & TH_RST) > @@ -1982,7 +1982,7 @@ tcp_do_segment(struct mbuf *m, struct tc > } else { > tcp_state_change(tp, TCPS_ESTABLISHED); > TCP_PROBE5(connect_established, NULL, tp, > - m->m_data, tp, th); > + mtod(m, const char *), tp, th); > cc_conn_init(tp); > tcp_timer_activate(tp, TT_KEEP, > TP_KEEPIDLE(tp)); > @@ -2387,8 +2387,8 @@ tcp_do_segment(struct mbuf *m, struct tc > tp->t_flags &= ~TF_NEEDFIN; > } else { > tcp_state_change(tp, TCPS_ESTABLISHED); > - TCP_PROBE5(accept_established, NULL, tp, m->m_data, tp, > - th); > + TCP_PROBE5(accept_established, NULL, tp, > + mtod(m, const char *), tp, th); > cc_conn_init(tp); > tcp_timer_activate(tp, TT_KEEP, TP_KEEPIDLE(tp)); > } > > Modified: stable/10/sys/netinet/tcp_subr.c > ============================================================================== > --- stable/10/sys/netinet/tcp_subr.c Fri Jan 17 10:35:18 2014 (r260814) > +++ stable/10/sys/netinet/tcp_subr.c Fri Jan 17 10:48:44 2014 (r260815) > @@ -706,9 +706,10 @@ tcp_respond(struct tcpcb *tp, void *ipge > tcp_trace(TA_OUTPUT, 0, tp, mtod(m, void *), th, 0); > #endif > if (flags & TH_RST) > - TCP_PROBE5(accept_refused, NULL, NULL, m->m_data, tp, nth); > + TCP_PROBE5(accept_refused, NULL, NULL, mtod(m, const char *), > + tp, nth); > > - TCP_PROBE5(send, NULL, tp, m->m_data, tp, nth); > + TCP_PROBE5(send, NULL, tp, mtod(m, const char *), tp, nth); > #ifdef INET6 > if (isipv6) > (void) ip6_output(m, NULL, NULL, ipflags, NULL, NULL, inp); From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 19:57:51 2014 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4193CA06; Fri, 17 Jan 2014 19:57:51 +0000 (UTC) Received: from mail.ipfw.ru (mail.ipfw.ru [IPv6:2a01:4f8:120:6141::2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F1E6714FC; Fri, 17 Jan 2014 19:57:50 +0000 (UTC) Received: from secured.by.ipfw.ru ([95.143.220.47] helo=ws.su29.net) by mail.ipfw.ru with esmtpsa (TLSv1:CAMELLIA256-SHA:256) (Exim 4.76 (FreeBSD)) (envelope-from ) id 1W4BiF-000LYE-Sa; Fri, 17 Jan 2014 19:52:03 +0400 Message-ID: <52D98B15.3030409@FreeBSD.org> Date: Fri, 17 Jan 2014 23:57:09 +0400 From: "Alexander V. Chernikov" User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130728 Thunderbird/17.0.7 MIME-Version: 1.0 To: John-Mark Gurney Subject: Re: svn commit: r260702 - head/sys/netinet References: <201401161150.s0GBo1c1069638@svn.freebsd.org> <20140116180443.GD75135@funkthat.com> In-Reply-To: <20140116180443.GD75135@funkthat.com> X-Enigmail-Version: 1.5.1 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="----enig2BCQLUDFFUCDBJQMJOSUN" Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 19:57:51 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) ------enig2BCQLUDFFUCDBJQMJOSUN Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 16.01.2014 22:04, John-Mark Gurney wrote: > Alexander V. Chernikov wrote this message on Thu, Jan 16, 2014 at 11:50= +0000: >> Author: melifaro >> Date: Thu Jan 16 11:50:00 2014 >> New Revision: 260702 >> URL: http://svnweb.freebsd.org/changeset/base/260702 >> >> Log: >> Fix ipfw fwd for IPv4 traffic broken by r249894. >> =20 >> Problem case: >> Original lookup returns route with GW set, so gw points to >> rte->rt_gateway. >> After that we're changing dst and performing lookup another time. >> Since fwd host is most probably directly reachable, resulting >> rte does not contain rt_gateway, so gw is not set. Finally, we >> end with packet transmitted to proper interface but wrong >> link-layer address. >> =20 >> Found by: lstewart >> Discussed with: ae,lstewart >> MFC after: 2 weeks >> Sponsored by: Yandex LLC >=20 > This may be needed for 10.0 as this sounds suspiciously familar to > the recent multicast code that was fixed too... I'll be happy if this can happen, but that's too late :( >=20 > It sounds like someone needs to audit this code to verify that there > are no other code paths that can break because of this. glebius@ did some kind of, but that didn't bring us forward :) >=20 ------enig2BCQLUDFFUCDBJQMJOSUN Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlLZixoACgkQwcJ4iSZ1q2nauACfZnNQ5AyF7WKnLTmYmDD2STKC TvMAn33BhM1fSDqUp3qYv19bJ6JsPSw9 =v4IC -----END PGP SIGNATURE----- ------enig2BCQLUDFFUCDBJQMJOSUN-- From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 21:21:29 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0D6288F1; Fri, 17 Jan 2014 21:21:29 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E1FC51CDE; Fri, 17 Jan 2014 21:21:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HLLSp8088269; Fri, 17 Jan 2014 21:21:28 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HLLSAe088267; Fri, 17 Jan 2014 21:21:28 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401172121.s0HLLSAe088267@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Fri, 17 Jan 2014 21:21:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260831 - head/contrib/gcc/cp X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 21:21:29 -0000 Author: pfg Date: Fri Jan 17 21:21:28 2014 New Revision: 260831 URL: http://svnweb.freebsd.org/changeset/base/260831 Log: gcc: Drop useless objc change from r260311. Among some of the objc changes from Apple that crept into r260311, Radar 5355344 is incomplete and is not used since we don't carry ObjC in the base system. The dead code seems to have caused issues in some Tinderboxes so get rid of it altogether. Reported by: luigi MFC after: 9 days Modified: head/contrib/gcc/cp/ChangeLog.apple head/contrib/gcc/cp/parser.c Modified: head/contrib/gcc/cp/ChangeLog.apple ============================================================================== --- head/contrib/gcc/cp/ChangeLog.apple Fri Jan 17 17:16:49 2014 (r260830) +++ head/contrib/gcc/cp/ChangeLog.apple Fri Jan 17 21:21:28 2014 (r260831) @@ -302,15 +302,6 @@ (cp_parser_objc_declaration): Parses attribute list and passes it down to cp_parser_objc_class_interface/cp_parser_objc_protocol_declaration. -2007-07-24 Fariborz Jahanian - - Radar 5355344 - * cp-tree.h (cp_objc_protocol_id_list): New declaration - * cp-lang.c (cp_objc_protocol_id_list): New stub - * parser.c (cp_parser_type_name): Added code to disambiguate - conditional from a protocol type. - (cp_parser_objc_tentative_protocol_refs_opt): New - 2007-07-13 Fariborz Jahanian Radar 5277239 Modified: head/contrib/gcc/cp/parser.c ============================================================================== --- head/contrib/gcc/cp/parser.c Fri Jan 17 17:16:49 2014 (r260830) +++ head/contrib/gcc/cp/parser.c Fri Jan 17 21:21:28 2014 (r260831) @@ -1827,10 +1827,6 @@ static tree cp_parser_objc_identifier_li /* APPLE LOCAL end radar 3803157 - objc attribute */ static tree cp_parser_objc_protocol_refs_opt (cp_parser *); -/* APPLE LOCAL begin radar 5355344 */ -static bool cp_parser_objc_tentative_protocol_refs_opt - (cp_parser *, tree *); -/* APPLE LOCAL end radar 5355344 */ static void cp_parser_objc_declaration (cp_parser *); static tree cp_parser_objc_statement @@ -17873,32 +17869,6 @@ cp_parser_objc_protocol_refs_opt (cp_par return protorefs; } -/* APPLE LOCAL begin radar 5355344 */ -/* This routine also parses a list of Objective-C protocol references; except that - if list is not valid, it returns FALSE and back-tracks parsing. */ - -static bool -cp_parser_objc_tentative_protocol_refs_opt (cp_parser* parser, tree *protorefs) -{ - *protorefs = NULL_TREE; - if(cp_lexer_next_token_is (parser->lexer, CPP_LESS)) - { - cp_parser_parse_tentatively (parser); - cp_lexer_consume_token (parser->lexer); /* Eat '<'. */ - *protorefs = cp_parser_objc_identifier_list (parser); - if (!cp_objc_protocol_id_list (*protorefs)) - { - cp_parser_abort_tentative_parse (parser); - return false; - } - if (cp_parser_parse_definitely (parser)) - cp_parser_require (parser, CPP_GREATER, "`>'"); - } - - return true; -} -/* APPLE LOCAL end radar 5355344 */ - /* Parse a Objective-C visibility specification. */ static void From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 21:37:56 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 26042576; Fri, 17 Jan 2014 21:37:56 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 117121DED; Fri, 17 Jan 2014 21:37:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HLbtQn093375; Fri, 17 Jan 2014 21:37:55 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HLbt2f093374; Fri, 17 Jan 2014 21:37:55 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201401172137.s0HLbt2f093374@svn.freebsd.org> From: Xin LI Date: Fri, 17 Jan 2014 21:37:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260832 - stable/10/release/doc/en_US.ISO8859-1/errata X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 21:37:56 -0000 Author: delphij Date: Fri Jan 17 21:37:55 2014 New Revision: 260832 URL: http://svnweb.freebsd.org/changeset/base/260832 Log: Document the killall(1) regression. While I'm there also correct a typo. Reviewed by: gjb (earlier version), hrs Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Fri Jan 17 21:21:28 2014 (r260831) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Fri Jan 17 21:37:55 2014 (r260832) @@ -149,7 +149,7 @@ operating system on VirtualBox can have a problem with disk I/O access. It depends on some specific hardware configuration and does not depend on a - specific version of VitrualBox or + specific version of VirtualBox or host operating system. It causes various errors and makes &os; quite unstable. @@ -183,6 +183,18 @@ boot for the supported releases to fix it will be released. + + + A bug in &man.killall.1; has been discovered. It + makes killall -INT to deliver + SIGTERM rather than the desired + SIGINT, and may cause blocking + behavior for scripts that uses it, as -I + means interactive. A workaround of this + would be to use -SIGINT instead. + This bug has been fixed on &os;-CURRENT and will be fixed + in &os;-STABLE. + From owner-svn-src-all@FreeBSD.ORG Fri Jan 17 21:45:25 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 94FAFB56; Fri, 17 Jan 2014 21:45:25 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8100B1E85; Fri, 17 Jan 2014 21:45:25 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0HLjPSS097406; Fri, 17 Jan 2014 21:45:25 GMT (envelope-from trociny@svn.freebsd.org) Received: (from trociny@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0HLjP3i097405; Fri, 17 Jan 2014 21:45:25 GMT (envelope-from trociny@svn.freebsd.org) Message-Id: <201401172145.s0HLjP3i097405@svn.freebsd.org> From: Mikolaj Golub Date: Fri, 17 Jan 2014 21:45:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260833 - head/usr.bin/script X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 21:45:25 -0000 Author: trociny Date: Fri Jan 17 21:45:25 2014 New Revision: 260833 URL: http://svnweb.freebsd.org/changeset/base/260833 Log: Bring back r226403, the fix for bin/161526, which was (accidentally?) reverted in r238896. PR: bin/161526 Reported by: Karli.Sjoberg slu.se MFC after: 3 days Modified: head/usr.bin/script/script.c Modified: head/usr.bin/script/script.c ============================================================================== --- head/usr.bin/script/script.c Fri Jan 17 21:37:55 2014 (r260832) +++ head/usr.bin/script/script.c Fri Jan 17 21:45:25 2014 (r260833) @@ -238,12 +238,15 @@ main(int argc, char *argv[]) FD_SET(master, &rfd); if (readstdin) FD_SET(STDIN_FILENO, &rfd); - if ((!readstdin && ttyflg) || flushtime > 0) { - tv.tv_sec = !readstdin && ttyflg ? 1 : - flushtime - (tvec - start); + if (!readstdin && ttyflg) { + tv.tv_sec = 1; tv.tv_usec = 0; tvp = &tv; readstdin = 1; + } else if (flushtime > 0) { + tv.tv_sec = flushtime - (tvec - start); + tv.tv_usec = 0; + tvp = &tv; } else { tvp = NULL; } From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 01:40:36 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B5876C51; Sat, 18 Jan 2014 01:40:36 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A14D41E80; Sat, 18 Jan 2014 01:40:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0I1eaCE094100; Sat, 18 Jan 2014 01:40:36 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0I1eagn094099; Sat, 18 Jan 2014 01:40:36 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201401180140.s0I1eagn094099@svn.freebsd.org> From: Xin LI Date: Sat, 18 Jan 2014 01:40:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r260834 - vendor-sys/illumos/dist/uts/common/fs/zfs X-SVN-Group: vendor-sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 01:40:36 -0000 Author: delphij Date: Sat Jan 18 01:40:36 2014 New Revision: 260834 URL: http://svnweb.freebsd.org/changeset/base/260834 Log: 3995 Memory leak of compressed buffers in l2arc_write_done illumos/illumos-gate@71cb1b742ca23532b844b6538d8f0997a900c62e Modified: vendor-sys/illumos/dist/uts/common/fs/zfs/arc.c Modified: vendor-sys/illumos/dist/uts/common/fs/zfs/arc.c ============================================================================== --- vendor-sys/illumos/dist/uts/common/fs/zfs/arc.c Fri Jan 17 21:45:25 2014 (r260833) +++ vendor-sys/illumos/dist/uts/common/fs/zfs/arc.c Sat Jan 18 01:40:36 2014 (r260834) @@ -22,7 +22,7 @@ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. - * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + * Copyright (c) 2014 by Saso Kiselkov. All rights reserved. * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ @@ -4236,6 +4236,13 @@ l2arc_write_done(zio_t *zio) */ for (ab = list_prev(buflist, head); ab; ab = ab_prev) { ab_prev = list_prev(buflist, ab); + abl2 = ab->b_l2hdr; + + /* + * Release the temporary compressed buffer as soon as possible. + */ + if (abl2->b_compress != ZIO_COMPRESS_OFF) + l2arc_release_cdata_buf(ab); hash_lock = HDR_LOCK(ab); if (!mutex_tryenter(hash_lock)) { @@ -4248,14 +4255,6 @@ l2arc_write_done(zio_t *zio) continue; } - abl2 = ab->b_l2hdr; - - /* - * Release the temporary compressed buffer as soon as possible. - */ - if (abl2->b_compress != ZIO_COMPRESS_OFF) - l2arc_release_cdata_buf(ab); - if (zio->io_error != 0) { /* * Error - drop L2ARC entry. From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 01:45:39 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C7B86D98; Sat, 18 Jan 2014 01:45:39 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B33611EE7; Sat, 18 Jan 2014 01:45:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0I1jdo2096725; Sat, 18 Jan 2014 01:45:39 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0I1jdZj096724; Sat, 18 Jan 2014 01:45:39 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201401180145.s0I1jdZj096724@svn.freebsd.org> From: Xin LI Date: Sat, 18 Jan 2014 01:45:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260835 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 01:45:39 -0000 Author: delphij Date: Sat Jan 18 01:45:39 2014 New Revision: 260835 URL: http://svnweb.freebsd.org/changeset/base/260835 Log: MFV r260834: Fix memory leak of compressed buffers in l2arc_write_done (Illumos #3995). Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Directory Properties: head/sys/cddl/contrib/opensolaris/ (props changed) Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Sat Jan 18 01:40:36 2014 (r260834) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Sat Jan 18 01:45:39 2014 (r260835) @@ -21,7 +21,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. - * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + * Copyright (c) 2014 by Saso Kiselkov. All rights reserved. * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ @@ -4597,6 +4597,13 @@ l2arc_write_done(zio_t *zio) */ for (ab = list_prev(buflist, head); ab; ab = ab_prev) { ab_prev = list_prev(buflist, ab); + abl2 = ab->b_l2hdr; + + /* + * Release the temporary compressed buffer as soon as possible. + */ + if (abl2->b_compress != ZIO_COMPRESS_OFF) + l2arc_release_cdata_buf(ab); hash_lock = HDR_LOCK(ab); if (!mutex_tryenter(hash_lock)) { @@ -4609,14 +4616,6 @@ l2arc_write_done(zio_t *zio) continue; } - abl2 = ab->b_l2hdr; - - /* - * Release the temporary compressed buffer as soon as possible. - */ - if (abl2->b_compress != ZIO_COMPRESS_OFF) - l2arc_release_cdata_buf(ab); - if (zio->io_error != 0) { /* * Error - drop L2ARC entry. From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 02:20:11 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 43A814B0; Sat, 18 Jan 2014 02:20:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 249071133; Sat, 18 Jan 2014 02:20:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0I2KBUI010474; Sat, 18 Jan 2014 02:20:11 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0I2KA41010472; Sat, 18 Jan 2014 02:20:10 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201401180220.s0I2KA41010472@svn.freebsd.org> From: Neel Natu Date: Sat, 18 Jan 2014 02:20:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260836 - head/sys/amd64/vmm/intel X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 02:20:11 -0000 Author: neel Date: Sat Jan 18 02:20:10 2014 New Revision: 260836 URL: http://svnweb.freebsd.org/changeset/base/260836 Log: If the guest exits due to a fault while it is executing IRET then restore the state of "Virtual NMI blocking" in the guest's interruptibility-state field before resuming the guest. Modified: head/sys/amd64/vmm/intel/vmcs.h head/sys/amd64/vmm/intel/vmx.c Modified: head/sys/amd64/vmm/intel/vmcs.h ============================================================================== --- head/sys/amd64/vmm/intel/vmcs.h Sat Jan 18 01:45:39 2014 (r260835) +++ head/sys/amd64/vmm/intel/vmcs.h Sat Jan 18 02:20:10 2014 (r260836) @@ -331,6 +331,12 @@ vmcs_write(uint32_t encoding, uint64_t v #define EXIT_REASON_APIC_WRITE 56 /* + * NMI unblocking due to IRET. + * + * Applies to VM-exits due to hardware exception or EPT fault. + */ +#define EXIT_QUAL_NMIUDTI (1 << 12) +/* * VMCS interrupt information fields */ #define VMCS_INTR_VALID (1U << 31) Modified: head/sys/amd64/vmm/intel/vmx.c ============================================================================== --- head/sys/amd64/vmm/intel/vmx.c Sat Jan 18 01:45:39 2014 (r260835) +++ head/sys/amd64/vmm/intel/vmx.c Sat Jan 18 02:20:10 2014 (r260836) @@ -1155,6 +1155,37 @@ cantinject: VCPU_CTR0(vmx->vm, vcpu, "Enabling interrupt window exiting"); } +/* + * If the Virtual NMIs execution control is '1' then the logical processor + * tracks virtual-NMI blocking in the Guest Interruptibility-state field of + * the VMCS. An IRET instruction in VMX non-root operation will remove any + * virtual-NMI blocking. + * + * This unblocking occurs even if the IRET causes a fault. In this case the + * hypervisor needs to restore virtual-NMI blocking before resuming the guest. + */ +static void +vmx_restore_nmi_blocking(struct vmx *vmx, int vcpuid) +{ + uint32_t gi; + + VCPU_CTR0(vmx->vm, vcpuid, "Restore Virtual-NMI blocking"); + gi = vmcs_read(VMCS_GUEST_INTERRUPTIBILITY); + gi |= VMCS_INTERRUPTIBILITY_NMI_BLOCKING; + vmcs_write(VMCS_GUEST_INTERRUPTIBILITY, gi); +} + +static void +vmx_clear_nmi_blocking(struct vmx *vmx, int vcpuid) +{ + uint32_t gi; + + VCPU_CTR0(vmx->vm, vcpuid, "Clear Virtual-NMI blocking"); + gi = vmcs_read(VMCS_GUEST_INTERRUPTIBILITY); + gi &= ~VMCS_INTERRUPTIBILITY_NMI_BLOCKING; + vmcs_write(VMCS_GUEST_INTERRUPTIBILITY, gi); +} + static int vmx_emulate_cr_access(struct vmx *vmx, int vcpu, uint64_t exitqual) { @@ -1444,7 +1475,7 @@ vmx_exit_process(struct vmx *vmx, int vc int error, handled; struct vmxctx *vmxctx; struct vlapic *vlapic; - uint32_t eax, ecx, edx, gi, idtvec_info, idtvec_err, intr_info, reason; + uint32_t eax, ecx, edx, idtvec_info, idtvec_err, intr_info, reason; uint64_t qual, gpa; bool retu; @@ -1490,13 +1521,12 @@ vmx_exit_process(struct vmx *vmx, int vc */ if ((idtvec_info & VMCS_INTR_T_MASK) == VMCS_INTR_T_NMI) { - gi = vmcs_read(VMCS_GUEST_INTERRUPTIBILITY); - gi &= ~VMCS_INTERRUPTIBILITY_NMI_BLOCKING; - vmcs_write(VMCS_GUEST_INTERRUPTIBILITY, gi); + vmx_clear_nmi_blocking(vmx, vcpu); } vmcs_write(VMCS_ENTRY_INST_LENGTH, vmexit->inst_length); } default: + idtvec_info = 0; break; } @@ -1601,6 +1631,23 @@ vmx_exit_process(struct vmx *vmx, int vc vmm_stat_incr(vmx->vm, vcpu, VMEXIT_CPUID, 1); handled = vmx_handle_cpuid(vmx->vm, vcpu, vmxctx); break; + case EXIT_REASON_EXCEPTION: + intr_info = vmcs_read(VMCS_EXIT_INTR_INFO); + KASSERT((intr_info & VMCS_INTR_VALID) != 0, + ("VM exit interruption info invalid: %#x", intr_info)); + /* + * If Virtual NMIs control is 1 and the VM-exit is due to a + * fault encountered during the execution of IRET then we must + * restore the state of "virtual-NMI blocking" before resuming + * the guest. + * + * See "Resuming Guest Software after Handling an Exception". + */ + if ((idtvec_info & VMCS_IDT_VEC_VALID) == 0 && + (intr_info & 0xff) != IDT_DF && + (intr_info & EXIT_QUAL_NMIUDTI) != 0) + vmx_restore_nmi_blocking(vmx, vcpu); + break; case EXIT_REASON_EPT_FAULT: vmm_stat_incr(vmx->vm, vcpu, VMEXIT_EPT_FAULT, 1); /* @@ -1619,6 +1666,17 @@ vmx_exit_process(struct vmx *vmx, int vc vmexit->u.inst_emul.gla = vmcs_gla(); vmexit->u.inst_emul.cr3 = vmcs_guest_cr3(); } + /* + * If Virtual NMIs control is 1 and the VM-exit is due to an + * EPT fault during the execution of IRET then we must restore + * the state of "virtual-NMI blocking" before resuming. + * + * See description of "NMI unblocking due to IRET" in + * "Exit Qualification for EPT Violations". + */ + if ((idtvec_info & VMCS_IDT_VEC_VALID) == 0 && + (qual & EXIT_QUAL_NMIUDTI) != 0) + vmx_restore_nmi_blocking(vmx, vcpu); break; case EXIT_REASON_APIC_ACCESS: handled = vmx_handle_apic_access(vmx, vcpu, vmexit); From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 03:33:02 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5EBBC706; Sat, 18 Jan 2014 03:33:02 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4AFD516AB; Sat, 18 Jan 2014 03:33:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0I3X213041848; Sat, 18 Jan 2014 03:33:02 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0I3X2bP041847; Sat, 18 Jan 2014 03:33:02 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201401180333.s0I3X2bP041847@svn.freebsd.org> From: Bryan Venteicher Date: Sat, 18 Jan 2014 03:33:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260837 - stable/10/sys/dev/virtio/scsi X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 03:33:02 -0000 Author: bryanv Date: Sat Jan 18 03:33:01 2014 New Revision: 260837 URL: http://svnweb.freebsd.org/changeset/base/260837 Log: MFC r260566: Remove incorrect bit shift when assigning the LUN request field Modified: stable/10/sys/dev/virtio/scsi/virtio_scsi.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/virtio/scsi/virtio_scsi.c ============================================================================== --- stable/10/sys/dev/virtio/scsi/virtio_scsi.c Sat Jan 18 02:20:10 2014 (r260836) +++ stable/10/sys/dev/virtio/scsi/virtio_scsi.c Sat Jan 18 03:33:01 2014 (r260837) @@ -1539,7 +1539,7 @@ vtscsi_set_request_lun(struct ccb_hdr *c lun[0] = 1; lun[1] = ccbh->target_id; lun[2] = 0x40 | ((ccbh->target_lun >> 8) & 0x3F); - lun[3] = (ccbh->target_lun >> 8) & 0xFF; + lun[3] = ccbh->target_lun & 0xFF; } static void From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 03:35:11 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 082328DD; Sat, 18 Jan 2014 03:35:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E824916C4; Sat, 18 Jan 2014 03:35:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0I3ZAf4042128; Sat, 18 Jan 2014 03:35:10 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0I3ZAc1042127; Sat, 18 Jan 2014 03:35:10 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201401180335.s0I3ZAc1042127@svn.freebsd.org> From: Bryan Venteicher Date: Sat, 18 Jan 2014 03:35:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260838 - stable/9/sys/dev/virtio/scsi X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 03:35:11 -0000 Author: bryanv Date: Sat Jan 18 03:35:10 2014 New Revision: 260838 URL: http://svnweb.freebsd.org/changeset/base/260838 Log: MFC r260566: Remove incorrect bit shift when assigning the LUN request field Modified: stable/9/sys/dev/virtio/scsi/virtio_scsi.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/virtio/scsi/virtio_scsi.c ============================================================================== --- stable/9/sys/dev/virtio/scsi/virtio_scsi.c Sat Jan 18 03:33:01 2014 (r260837) +++ stable/9/sys/dev/virtio/scsi/virtio_scsi.c Sat Jan 18 03:35:10 2014 (r260838) @@ -1539,7 +1539,7 @@ vtscsi_set_request_lun(struct ccb_hdr *c lun[0] = 1; lun[1] = ccbh->target_id; lun[2] = 0x40 | ((ccbh->target_lun >> 8) & 0x3F); - lun[3] = (ccbh->target_lun >> 8) & 0xFF; + lun[3] = ccbh->target_lun & 0xFF; } static void From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 03:44:43 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E455EBF5; Sat, 18 Jan 2014 03:44:43 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CFA581764; Sat, 18 Jan 2014 03:44:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0I3ihXI045745; Sat, 18 Jan 2014 03:44:43 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0I3ihFo045744; Sat, 18 Jan 2014 03:44:43 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401180344.s0I3ihFo045744@svn.freebsd.org> From: Glen Barber Date: Sat, 18 Jan 2014 03:44:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260839 - stable/10/release/doc/en_US.ISO8859-1/errata X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 03:44:44 -0000 Author: gjb Date: Sat Jan 18 03:44:43 2014 New Revision: 260839 URL: http://svnweb.freebsd.org/changeset/base/260839 Log: Document possible poor NFSv6 performance with bxe(4) when 'tso' is enabled. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Sat Jan 18 03:35:10 2014 (r260838) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Sat Jan 18 03:44:43 2014 (r260839) @@ -195,6 +195,16 @@ boot This bug has been fixed on &os;-CURRENT and will be fixed in &os;-STABLE. + + + In some NFSv4 environments, &man.bxe.4; with + tso enabled may experience issues with + packet corruption, resulting in poor performance. In some + cases, turning off tso will resolve the + issue. See &man.ifconfig.8; for more information about the + -tso flag. + + From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 03:45:08 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 144F8D3F; Sat, 18 Jan 2014 03:45:08 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F4163176C; Sat, 18 Jan 2014 03:45:07 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0I3j751045878; Sat, 18 Jan 2014 03:45:07 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0I3j7dS045877; Sat, 18 Jan 2014 03:45:07 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201401180345.s0I3j7dS045877@svn.freebsd.org> From: Bryan Venteicher Date: Sat, 18 Jan 2014 03:45:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260840 - stable/8/sys/dev/virtio/scsi X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 03:45:08 -0000 Author: bryanv Date: Sat Jan 18 03:45:07 2014 New Revision: 260840 URL: http://svnweb.freebsd.org/changeset/base/260840 Log: MFC r260566: Remove incorrect bit shift when assigning the LUN request field Modified: stable/8/sys/dev/virtio/scsi/virtio_scsi.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/dev/ (props changed) stable/8/sys/dev/virtio/ (props changed) Modified: stable/8/sys/dev/virtio/scsi/virtio_scsi.c ============================================================================== --- stable/8/sys/dev/virtio/scsi/virtio_scsi.c Sat Jan 18 03:44:43 2014 (r260839) +++ stable/8/sys/dev/virtio/scsi/virtio_scsi.c Sat Jan 18 03:45:07 2014 (r260840) @@ -1561,7 +1561,7 @@ vtscsi_set_request_lun(struct ccb_hdr *c lun[0] = 1; lun[1] = ccbh->target_id; lun[2] = 0x40 | ((ccbh->target_lun >> 8) & 0x3F); - lun[3] = (ccbh->target_lun >> 8) & 0xFF; + lun[3] = ccbh->target_lun & 0xFF; } static void From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 03:47:02 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 78E29F23; Sat, 18 Jan 2014 03:47:02 +0000 (UTC) Received: from mail0.glenbarber.us (mail0.glenbarber.us [IPv6:2607:fc50:1:2300:1001:1001:1001:face]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4AADC1781; Sat, 18 Jan 2014 03:47:02 +0000 (UTC) Received: from glenbarber.us (c-71-224-221-174.hsd1.nj.comcast.net [71.224.221.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: gjb) by mail0.glenbarber.us (Postfix) with ESMTPSA id A69B911E0E; Sat, 18 Jan 2014 03:47:00 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.8.3 mail0.glenbarber.us A69B911E0E Authentication-Results: mail0.glenbarber.us; dkim=none reason="no signature"; dkim-adsp=none Date: Fri, 17 Jan 2014 22:46:58 -0500 From: Glen Barber To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: Re: svn commit: r260839 - stable/10/release/doc/en_US.ISO8859-1/errata Message-ID: <20140118034658.GI61932@glenbarber.us> References: <201401180344.s0I3ihFo045744@svn.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="3M7QbeJEF900HlmX" Content-Disposition: inline In-Reply-To: <201401180344.s0I3ihFo045744@svn.freebsd.org> X-Operating-System: FreeBSD 11.0-CURRENT amd64 User-Agent: Mutt/1.5.22 (2013-10-16) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 03:47:02 -0000 --3M7QbeJEF900HlmX Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, Jan 18, 2014 at 03:44:43AM +0000, Glen Barber wrote: > Author: gjb > Date: Sat Jan 18 03:44:43 2014 > New Revision: 260839 > URL: http://svnweb.freebsd.org/changeset/base/260839 >=20 > Log: > Document possible poor NFSv6 performance with bxe(4) when 'tso' Typo. This should have said NVSv4 in the commit log. The context of the commit is correct. Glen --3M7QbeJEF900HlmX Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (FreeBSD) iQIcBAEBCAAGBQJS2fkyAAoJELls3eqvi17Qn9MQALEo2v2KqrTPzcVamafl9WnR rAj+1PADH5e8fVzY0YzI8cQr1LpB78NK+oiWDlE2huTyJA0kss5HsJ9q1iJ+v2S1 ZQ1dMWIAHq0KcXndp1KL6XubyR+d3FHNu/0YELnvC+i1pjDIzNxn5UbxDC2qBXz5 4oxZGFW30b11AKq3mfd+ihrqHlwYe51RC4hInxU5RRZ7hTo2r2tcgQ6dZDWqga1N SoHPZ0PiBUNhncaj1hmnUYVMpGV13bwDbmsp7xgzQlX7NMX5npTJqbxQ810wBKOm kWu9hPZ7TIeSc1VhkdMLKV8szjdUOlVGTVuTwMDoZYj8GIQ3LkYnMJ6sfigLXwgI JJeXwxy4F8g/2zaJ4IO+4X7+cIW75v30Awz8VS5Y0YcbDTYN1U+BeWuytwKYlrRB ILzRauwlMCHyUBNh5yEQjZajNrSfGhNlgxl/WnR6xXQls1l5Fi5E3Ew2ISXa+iKe u0dBmov+tIBWb6JWzOvHYe1KFwMEoq20UBYbGalxqp/Z0f0NqMmTny8XRgv4bg2Y tjj+wPdSoF3BzSV2JBdrnoyoG7lFnCl+gZCl953V2fByVynFHePodTBTlxHRkS4P K6dJOnXouWi05rjmVZWrvQ8HpCi6c8wyM4TElmpcRKp1f5d9qnkWvIUZNhOueF/+ ZEWfVvKcededElTXBb1n =45xx -----END PGP SIGNATURE----- --3M7QbeJEF900HlmX-- From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 04:03:05 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 92EF93FC; Sat, 18 Jan 2014 04:03:05 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7E2B818AD; Sat, 18 Jan 2014 04:03:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0I435rm053253; Sat, 18 Jan 2014 04:03:05 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0I4355O053252; Sat, 18 Jan 2014 04:03:05 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401180403.s0I4355O053252@svn.freebsd.org> From: Glen Barber Date: Sat, 18 Jan 2014 04:03:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260842 - stable/10/release/doc/en_US.ISO8859-1/errata X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 04:03:05 -0000 Author: gjb Date: Sat Jan 18 04:03:05 2014 New Revision: 260842 URL: http://svnweb.freebsd.org/changeset/base/260842 Log: Document a bsdconfig(8) compatibility nit with pkg(7) 1.2.x. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Sat Jan 18 03:48:34 2014 (r260841) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Sat Jan 18 04:03:05 2014 (r260842) @@ -205,6 +205,18 @@ boot -tso flag. + + Due to a minor incompatibility with &man.pkg.7; version + 1.2.x, &man.bsdconfig.8; will duplicate + the list of available packages for installation. This is + due to the PACKAGESITE environment + variable being set for backwards compatibility with older + versions of &man.pkg.7;. This affects generation of the + generation of the available package list only, and does not + affect the behavior when processing packages for + installation. + + From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 04:06:01 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1E68164B; Sat, 18 Jan 2014 04:06:01 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0A6EF18F8; Sat, 18 Jan 2014 04:06:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0I460Nc053796; Sat, 18 Jan 2014 04:06:00 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0I460bn053795; Sat, 18 Jan 2014 04:06:00 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401180406.s0I460bn053795@svn.freebsd.org> From: Glen Barber Date: Sat, 18 Jan 2014 04:06:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260843 - stable/10/release/doc/en_US.ISO8859-1/errata X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 04:06:01 -0000 Author: gjb Date: Sat Jan 18 04:06:00 2014 New Revision: 260843 URL: http://svnweb.freebsd.org/changeset/base/260843 Log: Fix wording from r260842. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Sat Jan 18 04:03:05 2014 (r260842) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Sat Jan 18 04:06:00 2014 (r260843) @@ -212,9 +212,8 @@ boot due to the PACKAGESITE environment variable being set for backwards compatibility with older versions of &man.pkg.7;. This affects generation of the - generation of the available package list only, and does not - affect the behavior when processing packages for - installation. + available package list only, and does not affect the + behavior when processing packages for installation. From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 04:09:40 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7BD38929; Sat, 18 Jan 2014 04:09:40 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 67A72192B; Sat, 18 Jan 2014 04:09:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0I49eRV054409; Sat, 18 Jan 2014 04:09:40 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0I49eHu054407; Sat, 18 Jan 2014 04:09:40 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201401180409.s0I49eHu054407@svn.freebsd.org> From: Marcel Moolenaar Date: Sat, 18 Jan 2014 04:09:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260844 - head/gnu/lib/libgcc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 04:09:40 -0000 Author: marcel Date: Sat Jan 18 04:09:39 2014 New Revision: 260844 URL: http://svnweb.freebsd.org/changeset/base/260844 Log: For ia64, add _bswapsi2 & _bswapdi2. The audio/flac port uses the bswap32 builtin and the compiler emits a call to the libgcc function rather than generating inline code. Modified: head/gnu/lib/libgcc/Makefile Modified: head/gnu/lib/libgcc/Makefile ============================================================================== --- head/gnu/lib/libgcc/Makefile Sat Jan 18 04:06:00 2014 (r260843) +++ head/gnu/lib/libgcc/Makefile Sat Jan 18 04:09:39 2014 (r260844) @@ -145,6 +145,7 @@ LIB1ASMFUNCS = __divxf3 __divdf3 __divsf __divsi3 __modsi3 __udivsi3 __umodsi3 __save_stack_nonlocal \ __nonlocal_goto __restore_stack_nonlocal __trampoline \ _fixtfdi _fixunstfdi _floatditf +LIB2FUNCS += _bswapsi2 _bswapdi2 LIB2ADDEH = unwind-ia64.c unwind-sjlj.c unwind-c.c .endif From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 04:17:43 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 30F38FBD; Sat, 18 Jan 2014 04:17:43 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1D32D1AC6; Sat, 18 Jan 2014 04:17:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0I4Hglw058450; Sat, 18 Jan 2014 04:17:42 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0I4HgJC058449; Sat, 18 Jan 2014 04:17:42 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401180417.s0I4HgJC058449@svn.freebsd.org> From: Glen Barber Date: Sat, 18 Jan 2014 04:17:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260845 - stable/10/release/doc/en_US.ISO8859-1/errata X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 04:17:43 -0000 Author: gjb Date: Sat Jan 18 04:17:42 2014 New Revision: 260845 URL: http://svnweb.freebsd.org/changeset/base/260845 Log: Document pw(8) regression when the '-G' flag is used. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Sat Jan 18 04:09:39 2014 (r260844) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Sat Jan 18 04:17:42 2014 (r260845) @@ -216,6 +216,12 @@ boot behavior when processing packages for installation. + + A regression in &man.pw.8; does not remove a user from + the specified group list when the -G flag + is used. This is expected to be corrected in &os;-CURRENT + and &os;-STABLE. + From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 04:27:14 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 51C2F56A; Sat, 18 Jan 2014 04:27:14 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3D2BC1CB4; Sat, 18 Jan 2014 04:27:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0I4RErZ062309; Sat, 18 Jan 2014 04:27:14 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0I4REK8062308; Sat, 18 Jan 2014 04:27:14 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401180427.s0I4REK8062308@svn.freebsd.org> From: Glen Barber Date: Sat, 18 Jan 2014 04:27:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260846 - stable/10/release/doc/en_US.ISO8859-1/errata X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 04:27:14 -0000 Author: gjb Date: Sat Jan 18 04:27:13 2014 New Revision: 260846 URL: http://svnweb.freebsd.org/changeset/base/260846 Log: Fix description of pw(8) regression. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Sat Jan 18 04:17:42 2014 (r260845) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Sat Jan 18 04:27:13 2014 (r260846) @@ -218,9 +218,9 @@ boot A regression in &man.pw.8; does not remove a user from - the specified group list when the -G flag - is used. This is expected to be corrected in &os;-CURRENT - and &os;-STABLE. + groups not specified in the provided group list when the + -G flag is used. This is expected to be + corrected in &os;-CURRENT and &os;-STABLE. From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 05:36:35 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0B565818 for ; Sat, 18 Jan 2014 05:36:35 +0000 (UTC) Received: from nm36-vm6.bullet.mail.bf1.yahoo.com (nm36-vm6.bullet.mail.bf1.yahoo.com [72.30.238.142]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 92DD81179 for ; Sat, 18 Jan 2014 05:36:34 +0000 (UTC) Received: from [66.196.81.170] by nm36.bullet.mail.bf1.yahoo.com with NNFMP; 18 Jan 2014 05:30:14 -0000 Received: from [98.139.211.196] by tm16.bullet.mail.bf1.yahoo.com with NNFMP; 18 Jan 2014 05:30:14 -0000 Received: from [127.0.0.1] by smtp205.mail.bf1.yahoo.com with NNFMP; 18 Jan 2014 05:30:14 -0000 X-Yahoo-Newman-Id: 241364.75222.bm@smtp205.mail.bf1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: Id4yehMVM1kLGBnPntUaVnHMFAiAEMgt.tRzZXBolHKy4cf LWj3q5yzqg2XsrSUuucjWTpOE3G6Wu6MMh3nZBaddplJvVja_VlxH91AG1dU nRvAX8tPcruguXuu44a6nf5NalviBBi4ouMPIx5OFLF1wAq2M2TKIHBxB1MS UBs6QmYzAA.smPGH5P1e5VDpg8D2k5sq_jtJhQZUAq.QE.P8UDSFM6jt4WxT OdHW5PcIU__20z4Z5jNZBwmIk68Nqf2CTrRPnFYxsKJVMDiMp_A_o3_iv6Vg nTeeDVv86ertGcGH3g1RJLFse_sSscJJL.usKtyTbV8XyexPM6zrev6HY63t FYgL03Jtopl4ZKOmWzupv6KpKsJ6RIXKPAUr685yDtuDxGWryCN7oMI3VTku 6dAg4Wf9LNeUh_hAf.gVnYED_LIgfuJq7zEZ6M0Dvfopb.nH1ma37Fl4YzPs LDUSzqNcUPpK5B4ogDGLTwrtR5Yq._.3m4MGmKDrqxs_zGwk2tr2uYZqwkp5 mxWrr_IBodIxvqJj8B92Tr4I2zbpmwBUXVqrgSG9PnrsRWm3pNcjx9A-- X-Yahoo-SMTP: xcjD0guswBAZaPPIbxpWwLcp9Unf X-Rocket-Received: from [192.168.0.101] (pfg@190.157.126.109 with plain [98.138.105.21]) by smtp205.mail.bf1.yahoo.com with SMTP; 17 Jan 2014 21:30:14 -0800 PST Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 7.1 \(1827\)) Subject: Re: svn commit: r260844 - head/gnu/lib/libgcc From: Pedro Giffuni In-Reply-To: <201401180409.s0I49eHu054407@svn.freebsd.org> Date: Sat, 18 Jan 2014 00:30:10 -0500 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201401180409.s0I49eHu054407@svn.freebsd.org> To: Marcel Moolenaar X-Mailer: Apple Mail (2.1827) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 05:36:35 -0000 Hi Marcel, Nice find ... Il giorno 17/gen/2014, alle ore 23:09, Marcel Moolenaar = ha scritto: > Author: marcel > Date: Sat Jan 18 04:09:39 2014 > New Revision: 260844 > URL: http://svnweb.freebsd.org/changeset/base/260844 >=20 > Log: > For ia64, add _bswapsi2 & _bswapdi2. The audio/flac port uses the > bswap32 builtin and the compiler emits a call to the libgcc function > rather than generating inline code. >=20 > Modified: > head/gnu/lib/libgcc/Makefile >=20 > Modified: head/gnu/lib/libgcc/Makefile > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/gnu/lib/libgcc/Makefile Sat Jan 18 04:06:00 2014 = (r260843) > +++ head/gnu/lib/libgcc/Makefile Sat Jan 18 04:09:39 2014 = (r260844) > @@ -145,6 +145,7 @@ LIB1ASMFUNCS =3D __divxf3 __divdf3 __divsf > __divsi3 __modsi3 __udivsi3 __umodsi3 __save_stack_nonlocal \ > __nonlocal_goto __restore_stack_nonlocal __trampoline \ > _fixtfdi _fixunstfdi _floatditf > +LIB2FUNCS +=3D _bswapsi2 _bswapdi2 > LIB2ADDEH =3D unwind-ia64.c unwind-sjlj.c unwind-c.c > .endif >=20 I think this was an overlook on my part. This change: = http://svnweb.freebsd.org/base/head/contrib/gcc/mklibgcc.in?r1=3D169690&r2= =3D258428 would suggest the change is not only for ia64, and It should apply for = stable-10 but not for -9. where I detected the issue and was looking for a solution before merging = it further. Thank you for finding it and feel free to do it general and MFC if you = like ;-). Pedro. From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 06:14:41 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AB40B3E7; Sat, 18 Jan 2014 06:14:41 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7B49E1454; Sat, 18 Jan 2014 06:14:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0I6EfFv003499; Sat, 18 Jan 2014 06:14:41 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0I6Ed7q003487; Sat, 18 Jan 2014 06:14:39 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201401180614.s0I6Ed7q003487@svn.freebsd.org> From: Bryan Venteicher Date: Sat, 18 Jan 2014 06:14:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260847 - in head: share/man/man4 sys/amd64/conf sys/conf sys/dev/virtio/random sys/i386/conf sys/modules/virtio sys/modules/virtio/random sys/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 06:14:41 -0000 Author: bryanv Date: Sat Jan 18 06:14:38 2014 New Revision: 260847 URL: http://svnweb.freebsd.org/changeset/base/260847 Log: Add very simple virtio_random(4) driver to harvest entropy from host Reviewed by: markm (random bits only) Added: head/share/man/man4/virtio_random.4 (contents, props changed) head/sys/dev/virtio/random/ head/sys/dev/virtio/random/virtio_random.c (contents, props changed) head/sys/modules/virtio/random/ head/sys/modules/virtio/random/Makefile (contents, props changed) Modified: head/share/man/man4/Makefile head/sys/amd64/conf/NOTES head/sys/conf/files.amd64 head/sys/conf/files.i386 head/sys/i386/conf/NOTES head/sys/modules/virtio/Makefile head/sys/sys/random.h Modified: head/share/man/man4/Makefile ============================================================================== --- head/share/man/man4/Makefile Sat Jan 18 04:27:13 2014 (r260846) +++ head/share/man/man4/Makefile Sat Jan 18 06:14:38 2014 (r260847) @@ -543,6 +543,7 @@ MAN= aac.4 \ ${_virtio.4} \ ${_virtio_balloon.4} \ ${_virtio_blk.4} \ + ${_virtio_random.4} \ ${_virtio_scsi.4} \ vkbd.4 \ vlan.4 \ @@ -787,6 +788,7 @@ _nxge.4= nxge.4 _virtio.4= virtio.4 _virtio_balloon.4=virtio_balloon.4 _virtio_blk.4= virtio_blk.4 +_virtio_random.4= virtio_random.4 _virtio_scsi.4= virtio_scsi.4 _vmx.4= vmx.4 _vtnet.4= vtnet.4 Added: head/share/man/man4/virtio_random.4 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/man/man4/virtio_random.4 Sat Jan 18 06:14:38 2014 (r260847) @@ -0,0 +1,61 @@ +.\" Copyright (c) 2013 Bryan Venteicher +.\" 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 December 28, 2013 +.Dt VIRTIO_RANDOM 4 +.Os +.Sh NAME +.Nm virtio_random +.Nd VirtIO Entropy driver +.Sh SYNOPSIS +To compile this driver into the kernel, +place the following lines in your +kernel configuration file: +.Bd -ragged -offset indent +.Cd "device virtio_random" +.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 +virtio_random_load="YES" +.Ed +.Sh DESCRIPTION +The +.Nm +device driver provides support for VirtIO entropy devices. +.Pp +The entropy device supplies high-quality randomness from the +hypervisor to the guest. +.Sh SEE ALSO +.Xr random 4 +.Xr virtio 4 +.Sh HISTORY +The +.Nm +driver was written by +.An Bryan Venteicher Aq bryanv@FreeBSD.org . Modified: head/sys/amd64/conf/NOTES ============================================================================== --- head/sys/amd64/conf/NOTES Sat Jan 18 04:27:13 2014 (r260846) +++ head/sys/amd64/conf/NOTES Sat Jan 18 06:14:38 2014 (r260847) @@ -472,6 +472,7 @@ device vtnet # VirtIO Ethernet device device virtio_blk # VirtIO Block device device virtio_scsi # VirtIO SCSI device device virtio_balloon # VirtIO Memory Balloon device +device virtio_random # VirtIO Entropy device device hyperv # HyperV drivers Modified: head/sys/conf/files.amd64 ============================================================================== --- head/sys/conf/files.amd64 Sat Jan 18 04:27:13 2014 (r260846) +++ head/sys/conf/files.amd64 Sat Jan 18 06:14:38 2014 (r260847) @@ -448,6 +448,7 @@ dev/virtio/network/if_vtnet.c optional dev/virtio/block/virtio_blk.c optional virtio_blk dev/virtio/balloon/virtio_balloon.c optional virtio_balloon dev/virtio/scsi/virtio_scsi.c optional virtio_scsi +dev/virtio/random/virtio_random.c optional virtio_random isa/syscons_isa.c optional sc isa/vga_isa.c optional vga kern/kern_clocksource.c standard Modified: head/sys/conf/files.i386 ============================================================================== --- head/sys/conf/files.i386 Sat Jan 18 04:27:13 2014 (r260846) +++ head/sys/conf/files.i386 Sat Jan 18 06:14:38 2014 (r260847) @@ -414,6 +414,7 @@ dev/virtio/network/if_vtnet.c optional dev/virtio/block/virtio_blk.c optional virtio_blk dev/virtio/balloon/virtio_balloon.c optional virtio_balloon dev/virtio/scsi/virtio_scsi.c optional virtio_scsi +dev/virtio/random/virtio_random.c optional virtio_random i386/acpica/acpi_machdep.c optional acpi acpi_wakecode.o optional acpi \ dependency "$S/i386/acpica/acpi_wakecode.S assym.s" \ Added: head/sys/dev/virtio/random/virtio_random.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/virtio/random/virtio_random.c Sat Jan 18 06:14:38 2014 (r260847) @@ -0,0 +1,231 @@ +/*- + * Copyright (c) 2013, Bryan Venteicher + * 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 unmodified, 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 ``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 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. + */ + +/* Driver for VirtIO entropy device. */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +struct vtrnd_softc { + device_t vtrnd_dev; + uint64_t vtrnd_features; + struct callout vtrnd_callout; + struct virtqueue *vtrnd_vq; +}; + +static int vtrnd_modevent(module_t, int, void *); + +static int vtrnd_probe(device_t); +static int vtrnd_attach(device_t); +static int vtrnd_detach(device_t); + +static void vtrnd_negotiate_features(struct vtrnd_softc *); +static int vtrnd_alloc_virtqueue(struct vtrnd_softc *); +static void vtrnd_harvest(struct vtrnd_softc *); +static void vtrnd_timer(void *); + +#define VTRND_FEATURES 0 + +static struct virtio_feature_desc vtrnd_feature_desc[] = { + { 0, NULL } +}; + +static device_method_t vtrnd_methods[] = { + /* Device methods. */ + DEVMETHOD(device_probe, vtrnd_probe), + DEVMETHOD(device_attach, vtrnd_attach), + DEVMETHOD(device_detach, vtrnd_detach), + + DEVMETHOD_END +}; + +static driver_t vtrnd_driver = { + "vtrnd", + vtrnd_methods, + sizeof(struct vtrnd_softc) +}; +static devclass_t vtrnd_devclass; + +DRIVER_MODULE(virtio_random, virtio_pci, vtrnd_driver, vtrnd_devclass, + vtrnd_modevent, 0); +MODULE_VERSION(virtio_random, 1); +MODULE_DEPEND(virtio_random, virtio, 1, 1, 1); + +static int +vtrnd_modevent(module_t mod, int type, void *unused) +{ + int error; + + switch (type) { + case MOD_LOAD: + case MOD_QUIESCE: + case MOD_UNLOAD: + case MOD_SHUTDOWN: + error = 0; + break; + default: + error = EOPNOTSUPP; + break; + } + + return (error); +} + +static int +vtrnd_probe(device_t dev) +{ + + if (virtio_get_device_type(dev) != VIRTIO_ID_ENTROPY) + return (ENXIO); + + device_set_desc(dev, "VirtIO Entropy Adapter"); + + return (BUS_PROBE_DEFAULT); +} + +static int +vtrnd_attach(device_t dev) +{ + struct vtrnd_softc *sc; + int error; + + sc = device_get_softc(dev); + sc->vtrnd_dev = dev; + + callout_init(&sc->vtrnd_callout, CALLOUT_MPSAFE); + + virtio_set_feature_desc(dev, vtrnd_feature_desc); + vtrnd_negotiate_features(sc); + + error = vtrnd_alloc_virtqueue(sc); + if (error) { + device_printf(dev, "cannot allocate virtqueue\n"); + goto fail; + } + + callout_reset(&sc->vtrnd_callout, 5 * hz, vtrnd_timer, sc); + +fail: + if (error) + vtrnd_detach(dev); + + return (error); +} + +static int +vtrnd_detach(device_t dev) +{ + struct vtrnd_softc *sc; + + sc = device_get_softc(dev); + + callout_stop(&sc->vtrnd_callout); + + return (0); +} + +static void +vtrnd_negotiate_features(struct vtrnd_softc *sc) +{ + device_t dev; + uint64_t features; + + dev = sc->vtrnd_dev; + features = VTRND_FEATURES; + + sc->vtrnd_features = virtio_negotiate_features(dev, features); +} + +static int +vtrnd_alloc_virtqueue(struct vtrnd_softc *sc) +{ + device_t dev; + struct vq_alloc_info vq_info; + + dev = sc->vtrnd_dev; + + VQ_ALLOC_INFO_INIT(&vq_info, 0, NULL, sc, &sc->vtrnd_vq, + "%s request", device_get_nameunit(dev)); + + return (virtio_alloc_virtqueues(dev, 0, 1, &vq_info)); +} + +static void +vtrnd_harvest(struct vtrnd_softc *sc) +{ + struct sglist_seg segs[1]; + struct sglist sg; + struct virtqueue *vq; + uint32_t value; + int error; + + vq = sc->vtrnd_vq; + + sglist_init(&sg, 1, segs); + error = sglist_append(&sg, &value, sizeof(value)); + KASSERT(error == 0 && sg.sg_nseg == 1, + ("%s: error %d adding buffer to sglist", __func__, error)); + + if (!virtqueue_empty(vq)) + return; + if (virtqueue_enqueue(vq, &value, &sg, 0, 1) != 0) + return; + + /* + * Poll for the response, but the command is likely already + * done when we return from the notify. + */ + virtqueue_notify(vq); + virtqueue_poll(vq, NULL); + + random_harvest(&value, sizeof(value), sizeof(value) * NBBY / 2, + RANDOM_PURE_VIRTIO); +} + +static void +vtrnd_timer(void *xsc) +{ + struct vtrnd_softc *sc; + + sc = xsc; + + vtrnd_harvest(sc); + callout_schedule(&sc->vtrnd_callout, 5 * hz); +} Modified: head/sys/i386/conf/NOTES ============================================================================== --- head/sys/i386/conf/NOTES Sat Jan 18 04:27:13 2014 (r260846) +++ head/sys/i386/conf/NOTES Sat Jan 18 06:14:38 2014 (r260847) @@ -800,6 +800,7 @@ device vtnet # VirtIO Ethernet device device virtio_blk # VirtIO Block device device virtio_scsi # VirtIO SCSI device device virtio_balloon # VirtIO Memory Balloon device +device virtio_random # VirtIO Entropy device device hyperv # HyperV drivers Modified: head/sys/modules/virtio/Makefile ============================================================================== --- head/sys/modules/virtio/Makefile Sat Jan 18 04:27:13 2014 (r260846) +++ head/sys/modules/virtio/Makefile Sat Jan 18 06:14:38 2014 (r260847) @@ -23,6 +23,6 @@ # SUCH DAMAGE. # -SUBDIR= virtio pci network block balloon scsi +SUBDIR= virtio pci network block balloon scsi random .include Added: head/sys/modules/virtio/random/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/modules/virtio/random/Makefile Sat Jan 18 06:14:38 2014 (r260847) @@ -0,0 +1,36 @@ +# +# $FreeBSD$ +# +# 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. +# + +.PATH: ${.CURDIR}/../../../dev/virtio/random + +KMOD= virtio_random +SRCS= virtio_random.c +SRCS+= virtio_bus_if.h virtio_if.h +SRCS+= bus_if.h device_if.h + +MFILES= kern/bus_if.m kern/device_if.m \ + dev/virtio/virtio_bus_if.m dev/virtio/virtio_if.m + +.include Modified: head/sys/sys/random.h ============================================================================== --- head/sys/sys/random.h Sat Jan 18 04:27:13 2014 (r260846) +++ head/sys/sys/random.h Sat Jan 18 06:14:38 2014 (r260847) @@ -56,6 +56,7 @@ enum esource { RANDOM_PURE_RDRAND, RANDOM_PURE_NEHEMIAH, RANDOM_PURE_RNDTEST, + RANDOM_PURE_VIRTIO, ENTROPYSOURCE }; void random_harvest(const void *, u_int, u_int, enum esource); From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 12:23:14 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2462B7DA; Sat, 18 Jan 2014 12:23:14 +0000 (UTC) Received: from mail.vx.sk (mail.vx.sk [176.9.45.25]) by mx1.freebsd.org (Postfix) with ESMTP id CEF5D1D0F; Sat, 18 Jan 2014 12:23:13 +0000 (UTC) Received: from core.vx.sk (localhost [127.0.0.2]) by mail.vx.sk (Postfix) with ESMTP id D994245743; Sat, 18 Jan 2014 13:23:05 +0100 (CET) X-Virus-Scanned: amavisd-new at mail.vx.sk Received: from mail.vx.sk by core.vx.sk (amavisd-new, unix socket) with LMTP id 8kzwQx1vHBLF; Sat, 18 Jan 2014 13:23:04 +0100 (CET) Received: from [192.168.2.103] (dslb-092-078-025-101.pools.arcor-ip.net [92.78.25.101]) by mail.vx.sk (Postfix) with ESMTPSA id A931A45737; Sat, 18 Jan 2014 13:23:03 +0100 (CET) Message-ID: <52DA7226.8070901@FreeBSD.org> Date: Sat, 18 Jan 2014 13:23:02 +0100 From: Martin Matuska User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Andriy Gapon , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: Re: svn commit: r260817 - in stable/10: share/man/man9 sys/cam/ctl sys/cddl/dev/dtrace sys/cddl/dev/sdt sys/compat/linux sys/dev/xen/blkback sys/kern sys/net sys/netinet sys/opencrypto sys/security/mac... References: <201401171059.s0HAx0nE029733@svn.freebsd.org> In-Reply-To: <201401171059.s0HAx0nE029733@svn.freebsd.org> X-Enigmail-Version: 1.5.2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 12:23:14 -0000 Looks like this broke the VIMAGE kernel. sys/net/vnet.c On 2014-01-17 11:59, Andriy Gapon wrote: > Author: avg > Date: Fri Jan 17 10:58:59 2014 > New Revision: 260817 > URL: http://svnweb.freebsd.org/changeset/base/260817 > > Log: > MFC r258622: dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE > From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 14:22:58 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E45CC775; Sat, 18 Jan 2014 14:22:57 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CFFB9150F; Sat, 18 Jan 2014 14:22:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IEMvYH087584; Sat, 18 Jan 2014 14:22:57 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IEMvDP087579; Sat, 18 Jan 2014 14:22:57 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <201401181422.s0IEMvDP087579@svn.freebsd.org> From: Ed Schouten Date: Sat, 18 Jan 2014 14:22:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260849 - in head: gnu/lib/libgcc lib/libc libexec/rtld-elf share/mk X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 14:22:58 -0000 Author: ed Date: Sat Jan 18 14:22:56 2014 New Revision: 260849 URL: http://svnweb.freebsd.org/changeset/base/260849 Log: Replace LIBGCC by LIBCOMPILER_RT. We now use libcompiler_rt on all platforms now. Instead of referring directly to -lgcc and LIBGCC, use -lcompiler_rt and LIBCOMPILER_RT. Modified: head/gnu/lib/libgcc/Makefile head/lib/libc/Makefile head/libexec/rtld-elf/Makefile head/share/mk/bsd.libnames.mk Modified: head/gnu/lib/libgcc/Makefile ============================================================================== --- head/gnu/lib/libgcc/Makefile Sat Jan 18 10:13:04 2014 (r260848) +++ head/gnu/lib/libgcc/Makefile Sat Jan 18 14:22:56 2014 (r260849) @@ -119,8 +119,8 @@ LIB1ASMFUNCS = _dvmd_tls _bb_init_func .if ${MK_ARM_EABI} != "no" LIB2ADDEH = unwind-arm.c libunwind.S pr-support.c unwind-c.c # Some compilers generate __aeabi_ functions libgcc_s is missing -DPADD+= ${LIBGCC} -LDADD+= -lgcc +DPADD+= ${LIBCOMPILER_RT} +LDADD+= -lcompiler_rt .else LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c .endif Modified: head/lib/libc/Makefile ============================================================================== --- head/lib/libc/Makefile Sat Jan 18 10:13:04 2014 (r260848) +++ head/lib/libc/Makefile Sat Jan 18 14:22:56 2014 (r260849) @@ -40,11 +40,11 @@ CFLAGS+=${CANCELPOINTS_CFLAGS} .endif # -# Only link with static libgcc.a (no libgcc_eh.a). +# Link with static libcompiler_rt.a. # -DPADD+= ${LIBGCC} +DPADD+= ${LIBCOMPILER_RT} LDFLAGS+= -nodefaultlibs -LDADD+= -lgcc +LDADD+= -lcompiler_rt .if ${MK_SSP} != "no" LDADD+= -lssp_nonshared Modified: head/libexec/rtld-elf/Makefile ============================================================================== --- head/libexec/rtld-elf/Makefile Sat Jan 18 10:13:04 2014 (r260848) +++ head/libexec/rtld-elf/Makefile Sat Jan 18 14:22:56 2014 (r260849) @@ -43,11 +43,12 @@ DPADD= ${LIBC_PIC} LDADD= -lc_pic .if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no" -# Some of the required math functions (div & mod) are implemented in libgcc -# on ARM. The library also needs to be placed first to be correctly linked. -# As some of the functions are used before we have shared libraries. -DPADD+= ${LIBGCC} -LDADD+= -lgcc +# Some of the required math functions (div & mod) are implemented in +# libcompiler_rt on ARM. The library also needs to be placed first to be +# correctly linked. As some of the functions are used before we have +# shared libraries. +DPADD+= ${LIBCOMPILER_RT} +LDADD+= -lcompiler_rt .endif Modified: head/share/mk/bsd.libnames.mk ============================================================================== --- head/share/mk/bsd.libnames.mk Sat Jan 18 10:13:04 2014 (r260848) +++ head/share/mk/bsd.libnames.mk Sat Jan 18 14:22:56 2014 (r260849) @@ -36,6 +36,7 @@ LIBCAPSICUM?= ${DESTDIR}${LIBDIR}/libcap LIBCASPER?= ${DESTDIR}${LIBDIR}/libcasper.a LIBCOM_ERR?= ${DESTDIR}${LIBDIR}/libcom_err.a LIBCOMPAT?= ${DESTDIR}${LIBDIR}/libcompat.a +LIBCOMPILER_RT?=${DESTDIR}${LIBDIR}/libgcc.a LIBCRYPT?= ${DESTDIR}${LIBDIR}/libcrypt.a LIBCRYPTO?= ${DESTDIR}${LIBDIR}/libcrypto.a LIBCTF?= ${DESTDIR}${LIBDIR}/libctf.a @@ -53,8 +54,6 @@ LIBFETCH?= ${DESTDIR}${LIBDIR}/libfetch. LIBFL?= "don't use LIBFL, use LIBL" LIBFORM?= ${DESTDIR}${LIBDIR}/libform.a LIBG2C?= ${DESTDIR}${LIBDIR}/libg2c.a -LIBGCC?= ${DESTDIR}${LIBDIR}/libgcc.a -LIBGCC_PIC?= ${DESTDIR}${LIBDIR}/libgcc_pic.a LIBGEOM?= ${DESTDIR}${LIBDIR}/libgeom.a LIBGNUREGEX?= ${DESTDIR}${LIBDIR}/libgnuregex.a LIBGSSAPI?= ${DESTDIR}${LIBDIR}/libgssapi.a From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 14:38:01 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D7AA5A7E for ; Sat, 18 Jan 2014 14:38:01 +0000 (UTC) Received: from mout.web.de (mout.web.de [212.227.17.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 71FA015F7 for ; Sat, 18 Jan 2014 14:38:01 +0000 (UTC) Received: from nil ([180.149.96.169]) by smtp.web.de (mrweb102) with ESMTPA (Nemesis) id 0M9ons-1WBAnM1rI0-00B6rk for ; Sat, 18 Jan 2014 15:32:47 +0100 From: Luca Bayer To: Ed Schouten Subject: Re: svn commit: r260849 - in head: gnu/lib/libgcc lib/libc libexec/rtld-elf share/mk In-Reply-To: <201401181422.s0IEMvDP087579@svn.freebsd.org> (Ed Schouten's message of "Sat, 18 Jan 2014 14:22:57 +0000 (UTC)") Date: Sat, 18 Jan 2014 15:31:51 +0100 Message-ID: <20140118.8638klico8@web.de> References: <201401181422.s0IEMvDP087579@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:y98p530bxpVodksAP/Ef6I7+wktyzT5EWOnSTv5HmFtT4dmO/td OjAI99MPCr3BkqQnKPTg7ximP5DulthCbI/JeVRNJE6dr9BLerbAauUBAipP4GWqYZ72C5z 0TTB0KCmuawIkaIj618a9f8e+NHicmW7a1RU9nElNYCXAFL/vxPTwNPA44dvmrm1463VXse l51+Ep94h8nNVFvPHHumA== Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 14:38:01 -0000 Ed Schouten writes: > Log: > Replace LIBGCC by LIBCOMPILER_RT. > > We now use libcompiler_rt on all platforms now. Instead of referring > directly to -lgcc and LIBGCC, use -lcompiler_rt and LIBCOMPILER_RT. > [...] > Modified: head/share/mk/bsd.libnames.mk > ============================================================================== > --- head/share/mk/bsd.libnames.mk Sat Jan 18 10:13:04 2014 (r260848) > +++ head/share/mk/bsd.libnames.mk Sat Jan 18 14:22:56 2014 (r260849) > @@ -36,6 +36,7 @@ LIBCAPSICUM?= ${DESTDIR}${LIBDIR}/libcap > LIBCASPER?= ${DESTDIR}${LIBDIR}/libcasper.a > LIBCOM_ERR?= ${DESTDIR}${LIBDIR}/libcom_err.a > LIBCOMPAT?= ${DESTDIR}${LIBDIR}/libcompat.a > +LIBCOMPILER_RT?=${DESTDIR}${LIBDIR}/libgcc.a > LIBCRYPT?= ${DESTDIR}${LIBDIR}/libcrypt.a > LIBCRYPTO?= ${DESTDIR}${LIBDIR}/libcrypto.a > LIBCTF?= ${DESTDIR}${LIBDIR}/libctf.a Shouldn't it be the following? +LIBCOMPILER_RT?=${DESTDIR}${LIBDIR}/libcompiler_rt.a From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 14:47:35 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0EA32CE7; Sat, 18 Jan 2014 14:47:35 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id EF7E2168F; Sat, 18 Jan 2014 14:47:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IElYa6095359; Sat, 18 Jan 2014 14:47:34 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IElY0N095358; Sat, 18 Jan 2014 14:47:34 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <201401181447.s0IElY0N095358@svn.freebsd.org> From: Ed Schouten Date: Sat, 18 Jan 2014 14:47:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260850 - head/share/mk X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 14:47:35 -0000 Author: ed Date: Sat Jan 18 14:47:34 2014 New Revision: 260850 URL: http://svnweb.freebsd.org/changeset/base/260850 Log: Correct value of LIBCOMPILER_RT. Caught by: Luca Bayer Modified: head/share/mk/bsd.libnames.mk Modified: head/share/mk/bsd.libnames.mk ============================================================================== --- head/share/mk/bsd.libnames.mk Sat Jan 18 14:22:56 2014 (r260849) +++ head/share/mk/bsd.libnames.mk Sat Jan 18 14:47:34 2014 (r260850) @@ -36,7 +36,7 @@ LIBCAPSICUM?= ${DESTDIR}${LIBDIR}/libcap LIBCASPER?= ${DESTDIR}${LIBDIR}/libcasper.a LIBCOM_ERR?= ${DESTDIR}${LIBDIR}/libcom_err.a LIBCOMPAT?= ${DESTDIR}${LIBDIR}/libcompat.a -LIBCOMPILER_RT?=${DESTDIR}${LIBDIR}/libgcc.a +LIBCOMPILER_RT?=${DESTDIR}${LIBDIR}/libcompiler_rt.a LIBCRYPT?= ${DESTDIR}${LIBDIR}/libcrypt.a LIBCRYPTO?= ${DESTDIR}${LIBDIR}/libcrypto.a LIBCTF?= ${DESTDIR}${LIBDIR}/libctf.a From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 14:49:15 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 029B1E3B; Sat, 18 Jan 2014 14:49:15 +0000 (UTC) Received: from mail-ve0-x233.google.com (mail-ve0-x233.google.com [IPv6:2607:f8b0:400c:c01::233]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8ECCA169F; Sat, 18 Jan 2014 14:49:14 +0000 (UTC) Received: by mail-ve0-f179.google.com with SMTP id jw12so2141284veb.10 for ; Sat, 18 Jan 2014 06:49:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=jhKBD2KVGcDE13d3a8UnXg+1LvkiEL9pZ6oYif8JxS0=; b=OraHRauKmWcj/wx2pi1gnpMlbvNR1fOzdJAegZ/bZZLNhsPY60HpoZVqeC8w8ATLhr 5Iqt36NY/IVoAJ4/1dK7JJWHlWvjnDL8lzHKn1O301s1gg/2M7h/IH6C7v9ytT4wwweu +20PDfqUWH2DUcacVAO66NUawWqfaRDmsT8q7DuwxLTn67d3feDhe/Fi89TSQhmrJxtN 4AY22CSaZxupeFEEEjhb1xg34dZJ8AeI5IqnOa7evZikTgWPB/hjMfuMM6695ytWGAZf s76r4oMj2mMv/dLn5hCz2LwIjxL05Ke3bJGHh0jiHDSLQjabvE7RXBTORV0meqcXDI6U HpQg== MIME-Version: 1.0 X-Received: by 10.52.230.35 with SMTP id sv3mr235995vdc.27.1390056553756; Sat, 18 Jan 2014 06:49:13 -0800 (PST) Sender: edschouten@gmail.com Received: by 10.220.105.140 with HTTP; Sat, 18 Jan 2014 06:49:13 -0800 (PST) In-Reply-To: <20140118.8638klico8@web.de> References: <201401181422.s0IEMvDP087579@svn.freebsd.org> <20140118.8638klico8@web.de> Date: Sat, 18 Jan 2014 15:49:13 +0100 X-Google-Sender-Auth: fv072CIdva0q9I6-CWGfwQzkXLk Message-ID: Subject: Re: svn commit: r260849 - in head: gnu/lib/libgcc lib/libc libexec/rtld-elf share/mk From: Ed Schouten To: Luca Bayer Content-Type: text/plain; charset=UTF-8 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 14:49:15 -0000 Hi Luca, On 18 January 2014 15:31, Luca Bayer wrote: > Shouldn't it be the following? > > +LIBCOMPILER_RT?=${DESTDIR}${LIBDIR}/libcompiler_rt.a Yes, indeed. Fixed in r260850. The tricky thing with the dependency lines is that they silently ignore any errors in them, which is why I didn't catch this. -- Ed Schouten From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 15:52:53 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7C20059F; Sat, 18 Jan 2014 15:52:53 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6642F1C9D; Sat, 18 Jan 2014 15:52:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IFqrcb021465; Sat, 18 Jan 2014 15:52:53 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IFqr3k021464; Sat, 18 Jan 2014 15:52:53 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401181552.s0IFqr3k021464@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Sat, 18 Jan 2014 15:52:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260851 - head/sys/netinet6 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 15:52:53 -0000 Author: melifaro Date: Sat Jan 18 15:52:52 2014 New Revision: 260851 URL: http://svnweb.freebsd.org/changeset/base/260851 Log: Split in6_update_ifa() into smaller pieces leaving functionality intact. Discussed with: ae MFC after: 2 weeks Modified: head/sys/netinet6/in6.c Modified: head/sys/netinet6/in6.c ============================================================================== --- head/sys/netinet6/in6.c Sat Jan 18 14:47:34 2014 (r260850) +++ head/sys/netinet6/in6.c Sat Jan 18 15:52:52 2014 (r260851) @@ -139,6 +139,15 @@ static void in6_unlink_ifa(struct in6_if int (*faithprefix_p)(struct in6_addr *); +static int in6_validate_ifra(struct ifnet *, struct in6_aliasreq *, + struct in6_ifaddr *, int); +static struct in6_ifaddr *in6_alloc_ifa(struct ifnet *, + struct in6_aliasreq *, int flags); +static int in6_update_ifa_internal(struct ifnet *, struct in6_aliasreq *, + struct in6_ifaddr *, int, int); +static int in6_setup_ifa(struct ifnet *, struct in6_aliasreq *, + struct in6_ifaddr *, int); + #define ifa2ia6(ifa) ((struct in6_ifaddr *)(ifa)) #define ia62ifa(ia6) (&((ia6)->ia_ifa)) @@ -1001,11 +1010,39 @@ int in6_update_ifa(struct ifnet *ifp, struct in6_aliasreq *ifra, struct in6_ifaddr *ia, int flags) { - int error = 0, hostIsNew = 0, plen = -1; + int error, hostIsNew = 0; + + if ((error = in6_validate_ifra(ifp, ifra, ia, flags)) != 0) + return (error); + + if (ia == NULL) { + hostIsNew = 1; + if ((ia = in6_alloc_ifa(ifp, ifra, flags)) == NULL) + return (ENOBUFS); + } + + error = in6_update_ifa_internal(ifp, ifra, ia, hostIsNew, flags); + if (error != 0) { + if (hostIsNew != 0) { + in6_unlink_ifa(ia, ifp); + ifa_free(&ia->ia_ifa); + } + return (error); + } + + if (hostIsNew) + error = in6_setup_ifa(ifp, ifra, ia, flags); + + return (error); +} + +static int +in6_validate_ifra(struct ifnet *ifp, struct in6_aliasreq *ifra, + struct in6_ifaddr *ia, int flags) +{ + int plen = -1; struct sockaddr_in6 dst6; struct in6_addrlifetime *lt; - struct in6_multi *in6m_sol; - int delay; char ip6buf[INET6_ADDRSTRLEN]; /* Validate parameters */ @@ -1072,6 +1109,9 @@ in6_update_ifa(struct ifnet *ifp, struct if (sa6_embedscope(&dst6, 0)) return (EINVAL); /* XXX: should be impossible */ } + /* Modify original ifra_dstaddr to reflect changes */ + ifra->ifra_dstaddr = dst6; + /* * The destination address can be specified only for a p2p or a * loopback interface. If specified, the corresponding prefix length @@ -1107,12 +1147,36 @@ in6_update_ifa(struct ifnet *ifp, struct return (0); /* there's nothing to do */ } + /* Check prefix mask */ + if (ia != NULL && ifra->ifra_prefixmask.sin6_len != 0) { + /* + * We prohibit changing the prefix length of an existing + * address, because + * + such an operation should be rare in IPv6, and + * + the operation would confuse prefix management. + */ + if (ia->ia_prefixmask.sin6_len != 0 && + in6_mask2len(&ia->ia_prefixmask.sin6_addr, NULL) != plen) { + nd6log((LOG_INFO, "in6_validate_ifa: the prefix length " + "of an existing %s address should not be changed\n", + ip6_sprintf(ip6buf, &ia->ia_addr.sin6_addr))); + + return (EINVAL); + } + } + + return (0); +} + /* * If this is a new address, allocate a new ifaddr and link it * into chains. */ - if (ia == NULL) { - hostIsNew = 1; +static struct in6_ifaddr * +in6_alloc_ifa(struct ifnet *ifp, struct in6_aliasreq *ifra, int flags) +{ + struct in6_ifaddr *ia; + /* * When in6_update_ifa() is called in a process of a received * RA, it is called under an interrupt context. So, we should @@ -1120,7 +1184,7 @@ in6_update_ifa(struct ifnet *ifp, struct */ ia = (struct in6_ifaddr *)ifa_alloc(sizeof(*ia), M_NOWAIT); if (ia == NULL) - return (ENOBUFS); + return (NULL); LIST_INIT(&ia->ia6_memberships); /* Initialize the address and masks, and put time stamp */ ia->ia_ifa.ifa_addr = (struct sockaddr *)&ia->ia_addr; @@ -1150,52 +1214,28 @@ in6_update_ifa(struct ifnet *ifp, struct LIST_INSERT_HEAD(IN6ADDR_HASH(&ifra->ifra_addr.sin6_addr), ia, ia6_hash); IN6_IFADDR_WUNLOCK(); - } + + return (ia); +} + +static int +in6_update_ifa_internal(struct ifnet *ifp, struct in6_aliasreq *ifra, + struct in6_ifaddr *ia, int hostIsNew, int flags) +{ + struct sockaddr_in6 *pdst; + int error; + char ip6buf[INET6_ADDRSTRLEN]; /* update timestamp */ ia->ia6_updatetime = time_uptime; /* set prefix mask */ - if (ifra->ifra_prefixmask.sin6_len) { - /* - * We prohibit changing the prefix length of an existing - * address, because - * + such an operation should be rare in IPv6, and - * + the operation would confuse prefix management. - */ - if (ia->ia_prefixmask.sin6_len && - in6_mask2len(&ia->ia_prefixmask.sin6_addr, NULL) != plen) { - nd6log((LOG_INFO, "in6_update_ifa: the prefix length of an" - " existing (%s) address should not be changed\n", - ip6_sprintf(ip6buf, &ia->ia_addr.sin6_addr))); - error = EINVAL; - goto unlink; - } + if (ifra->ifra_prefixmask.sin6_len != 0) { ia->ia_prefixmask = ifra->ifra_prefixmask; ia->ia_prefixmask.sin6_family = AF_INET6; } /* - * If a new destination address is specified, scrub the old one and - * install the new destination. Note that the interface must be - * p2p or loopback (see the check above.) - */ - if (dst6.sin6_family == AF_INET6 && - !IN6_ARE_ADDR_EQUAL(&dst6.sin6_addr, &ia->ia_dstaddr.sin6_addr)) { - int e; - - if ((ia->ia_flags & IFA_ROUTE) != 0 && - (e = rtinit(&(ia->ia_ifa), (int)RTM_DELETE, RTF_HOST)) != 0) { - nd6log((LOG_ERR, "in6_update_ifa: failed to remove " - "a route to the old destination: %s\n", - ip6_sprintf(ip6buf, &ia->ia_addr.sin6_addr))); - /* proceed anyway... */ - } else - ia->ia_flags &= ~IFA_ROUTE; - ia->ia_dstaddr = dst6; - } - - /* * Set lifetimes. We do not refer to ia6t_expire and ia6t_preferred * to see if the address is deprecated or invalidated, but initialize * these members for applications. @@ -1212,14 +1252,6 @@ in6_update_ifa(struct ifnet *ifp, struct } else ia->ia6_lifetime.ia6t_preferred = 0; - /* reset the interface and routing table appropriately. */ - if ((error = in6_ifinit(ifp, ia, &ifra->ifra_addr, hostIsNew)) != 0) - goto unlink; - - /* - * configure address flags. - */ - ia->ia6_flags = ifra->ifra_flags; /* * backward compatibility - if IN6_IFF_DEPRECATED is set from the * userland, make it deprecated. @@ -1228,6 +1260,12 @@ in6_update_ifa(struct ifnet *ifp, struct ia->ia6_lifetime.ia6t_pltime = 0; ia->ia6_lifetime.ia6t_preferred = time_uptime; } + + /* + * configure address flags. + */ + ia->ia6_flags = ifra->ifra_flags; + /* * Make the address tentative before joining multicast addresses, * so that corresponding MLD responses would not have a tentative @@ -1242,10 +1280,44 @@ in6_update_ifa(struct ifnet *ifp, struct ia->ia6_flags |= IN6_IFF_TENTATIVE; /* - * We are done if we have simply modified an existing address. + * If a new destination address is specified, scrub the old one and + * install the new destination. Note that the interface must be + * p2p or loopback (see the check above.) */ - if (!hostIsNew) - return (error); + pdst = &ifra->ifra_dstaddr; + if (pdst->sin6_family == AF_INET6 && + !IN6_ARE_ADDR_EQUAL(&pdst->sin6_addr, &ia->ia_dstaddr.sin6_addr)) { + if ((ia->ia_flags & IFA_ROUTE) != 0 && + (rtinit(&(ia->ia_ifa), (int)RTM_DELETE, RTF_HOST) != 0)) { + nd6log((LOG_ERR, "in6_update_ifa_internal: failed to " + "remove a route to the old destination: %s\n", + ip6_sprintf(ip6buf, &ia->ia_addr.sin6_addr))); + /* proceed anyway... */ + } else + ia->ia_flags &= ~IFA_ROUTE; + ia->ia_dstaddr = *pdst; + } + + /* reset the interface and routing table appropriately. */ + if ((error = in6_ifinit(ifp, ia, &ifra->ifra_addr, hostIsNew)) != 0) { + /* + * XXX: if a change of an existing address failed, keep the entry + * anyway. + */ + } + + return (error); +} + +static int +in6_setup_ifa(struct ifnet *ifp, struct in6_aliasreq *ifra, + struct in6_ifaddr *ia, int flags) +{ + struct in6_multi *in6m_sol; + int error = 0; + + /* Add local address to lltable, if necessary (ex. on p2p link). */ + in6_ifaddloop(&(ia->ia_ifa)); /* * Beyond this point, we should call in6_purgeaddr upon an error, @@ -1256,8 +1328,11 @@ in6_update_ifa(struct ifnet *ifp, struct in6m_sol = NULL; if ((ifp->if_flags & IFF_MULTICAST) != 0) { error = in6_update_ifa_join_mc(ifp, ifra, ia, flags, &in6m_sol); - if (error) - goto cleanup; + if (error != 0) { + ifa_free(&ia->ia_ifa); + in6_purgeaddr(&ia->ia_ifa); + return (error); + } } /* @@ -1267,7 +1342,7 @@ in6_update_ifa(struct ifnet *ifp, struct if (in6if_do_dad(ifp) && ((ifra->ifra_flags & IN6_IFF_NODAD) == 0) && (ia->ia6_flags & IN6_IFF_TENTATIVE)) { - int mindelay, maxdelay; + int delay, mindelay, maxdelay; delay = 0; if ((flags & IN6_IFAUPDATE_DADDELAY)) { @@ -1298,26 +1373,8 @@ in6_update_ifa(struct ifnet *ifp, struct nd6_dad_start((struct ifaddr *)ia, delay); } - KASSERT(hostIsNew, ("in6_update_ifa: !hostIsNew")); ifa_free(&ia->ia_ifa); return (error); - - unlink: - /* - * XXX: if a change of an existing address failed, keep the entry - * anyway. - */ - if (hostIsNew) { - in6_unlink_ifa(ia, ifp); - ifa_free(&ia->ia_ifa); - } - return (error); - - cleanup: - KASSERT(hostIsNew, ("in6_update_ifa: cleanup: !hostIsNew")); - ifa_free(&ia->ia_ifa); - in6_purgeaddr(&ia->ia_ifa); - return error; } /* @@ -1644,10 +1701,6 @@ in6_ifinit(struct ifnet *ifp, struct in6 ia->ia_flags |= IFA_RTSELF; } - /* Add local address to lltable, if necessary (ex. on p2p link). */ - if (newhost) - in6_ifaddloop(&(ia->ia_ifa)); - return (error); } From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 15:57:44 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4701E7DD; Sat, 18 Jan 2014 15:57:44 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3269A1CBB; Sat, 18 Jan 2014 15:57:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IFviIb022095; Sat, 18 Jan 2014 15:57:44 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IFvieR022094; Sat, 18 Jan 2014 15:57:44 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401181557.s0IFvieR022094@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Sat, 18 Jan 2014 15:57:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260852 - head/sys/netinet6 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 15:57:44 -0000 Author: melifaro Date: Sat Jan 18 15:57:43 2014 New Revision: 260852 URL: http://svnweb.freebsd.org/changeset/base/260852 Log: Do some style(9) not done in r260851 to improve readability. MFC after: 2 weeks Modified: head/sys/netinet6/in6.c Modified: head/sys/netinet6/in6.c ============================================================================== --- head/sys/netinet6/in6.c Sat Jan 18 15:52:52 2014 (r260851) +++ head/sys/netinet6/in6.c Sat Jan 18 15:57:43 2014 (r260852) @@ -1168,53 +1168,53 @@ in6_validate_ifra(struct ifnet *ifp, str return (0); } - /* - * If this is a new address, allocate a new ifaddr and link it - * into chains. - */ + +/* + * Allocate a new ifaddr and link it into chains. + */ static struct in6_ifaddr * in6_alloc_ifa(struct ifnet *ifp, struct in6_aliasreq *ifra, int flags) { struct in6_ifaddr *ia; + /* + * When in6_alloc_ifa() is called in a process of a received + * RA, it is called under an interrupt context. So, we should + * call malloc with M_NOWAIT. + */ + ia = (struct in6_ifaddr *)ifa_alloc(sizeof(*ia), M_NOWAIT); + if (ia == NULL) + return (NULL); + LIST_INIT(&ia->ia6_memberships); + /* Initialize the address and masks, and put time stamp */ + ia->ia_ifa.ifa_addr = (struct sockaddr *)&ia->ia_addr; + ia->ia_addr.sin6_family = AF_INET6; + ia->ia_addr.sin6_len = sizeof(ia->ia_addr); + ia->ia6_createtime = time_uptime; + if ((ifp->if_flags & (IFF_POINTOPOINT | IFF_LOOPBACK)) != 0) { /* - * When in6_update_ifa() is called in a process of a received - * RA, it is called under an interrupt context. So, we should - * call malloc with M_NOWAIT. + * XXX: some functions expect that ifa_dstaddr is not + * NULL for p2p interfaces. */ - ia = (struct in6_ifaddr *)ifa_alloc(sizeof(*ia), M_NOWAIT); - if (ia == NULL) - return (NULL); - LIST_INIT(&ia->ia6_memberships); - /* Initialize the address and masks, and put time stamp */ - ia->ia_ifa.ifa_addr = (struct sockaddr *)&ia->ia_addr; - ia->ia_addr.sin6_family = AF_INET6; - ia->ia_addr.sin6_len = sizeof(ia->ia_addr); - ia->ia6_createtime = time_uptime; - if ((ifp->if_flags & (IFF_POINTOPOINT | IFF_LOOPBACK)) != 0) { - /* - * XXX: some functions expect that ifa_dstaddr is not - * NULL for p2p interfaces. - */ - ia->ia_ifa.ifa_dstaddr = - (struct sockaddr *)&ia->ia_dstaddr; - } else { - ia->ia_ifa.ifa_dstaddr = NULL; - } - ia->ia_ifa.ifa_netmask = (struct sockaddr *)&ia->ia_prefixmask; - ia->ia_ifp = ifp; - ifa_ref(&ia->ia_ifa); /* if_addrhead */ - IF_ADDR_WLOCK(ifp); - TAILQ_INSERT_TAIL(&ifp->if_addrhead, &ia->ia_ifa, ifa_link); - IF_ADDR_WUNLOCK(ifp); - - ifa_ref(&ia->ia_ifa); /* in6_ifaddrhead */ - IN6_IFADDR_WLOCK(); - TAILQ_INSERT_TAIL(&V_in6_ifaddrhead, ia, ia_link); - LIST_INSERT_HEAD(IN6ADDR_HASH(&ifra->ifra_addr.sin6_addr), - ia, ia6_hash); - IN6_IFADDR_WUNLOCK(); - + ia->ia_ifa.ifa_dstaddr = + (struct sockaddr *)&ia->ia_dstaddr; + } else { + ia->ia_ifa.ifa_dstaddr = NULL; + } + ia->ia_ifa.ifa_netmask = (struct sockaddr *)&ia->ia_prefixmask; + ia->ia_ifp = ifp; + ifa_ref(&ia->ia_ifa); /* if_addrhead */ + IF_ADDR_WLOCK(ifp); + TAILQ_INSERT_TAIL(&ifp->if_addrhead, &ia->ia_ifa, ifa_link); + IF_ADDR_WUNLOCK(ifp); + + ifa_ref(&ia->ia_ifa); /* in6_ifaddrhead */ + IN6_IFADDR_WLOCK(); + TAILQ_INSERT_TAIL(&V_in6_ifaddrhead, ia, ia_link); + LIST_INSERT_HEAD(IN6ADDR_HASH(&ifra->ifra_addr.sin6_addr), + ia, ia6_hash); + IN6_IFADDR_WUNLOCK(); + return (ia); } @@ -1319,11 +1319,6 @@ in6_setup_ifa(struct ifnet *ifp, struct /* Add local address to lltable, if necessary (ex. on p2p link). */ in6_ifaddloop(&(ia->ia_ifa)); - /* - * Beyond this point, we should call in6_purgeaddr upon an error, - * not just go to unlink. - */ - /* Join necessary multicast groups. */ in6m_sol = NULL; if ((ifp->if_flags & IFF_MULTICAST) != 0) { From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 16:25:28 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 33E5CC50; Sat, 18 Jan 2014 16:25:28 +0000 (UTC) Received: from mail.xcllnt.net (mail.xcllnt.net [50.0.150.214]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DB23C1E67; Sat, 18 Jan 2014 16:25:27 +0000 (UTC) Received: from macbook-air.wifi.xcllnt.net (atc.xcllnt.net [50.0.150.213]) (authenticated bits=0) by mail.xcllnt.net (8.14.7/8.14.7) with ESMTP id s0IGPK9f017919 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Sat, 18 Jan 2014 08:25:21 -0800 (PST) (envelope-from marcel@xcllnt.net) Content-Type: multipart/signed; boundary="Apple-Mail=_8380AE09-634B-4398-8E09-49B262D3F3F0"; protocol="application/pgp-signature"; micalg=pgp-sha1 Mime-Version: 1.0 (Mac OS X Mail 7.1 \(1827\)) Subject: Re: svn commit: r260844 - head/gnu/lib/libgcc From: Marcel Moolenaar In-Reply-To: Date: Sat, 18 Jan 2014 08:25:20 -0800 Message-Id: <2C043C39-B2E9-4CD1-943C-006947452D4C@xcllnt.net> References: <201401180409.s0I49eHu054407@svn.freebsd.org> To: Pedro Giffuni X-Mailer: Apple Mail (2.1827) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, Marcel Moolenaar , src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 16:25:28 -0000 --Apple-Mail=_8380AE09-634B-4398-8E09-49B262D3F3F0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On Jan 17, 2014, at 9:30 PM, Pedro Giffuni wrote: >> Modified: head/gnu/lib/libgcc/Makefile >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >> --- head/gnu/lib/libgcc/Makefile Sat Jan 18 04:06:00 2014 = (r260843) >> +++ head/gnu/lib/libgcc/Makefile Sat Jan 18 04:09:39 2014 = (r260844) >> @@ -145,6 +145,7 @@ LIB1ASMFUNCS =3D __divxf3 __divdf3 __divsf >> __divsi3 __modsi3 __udivsi3 __umodsi3 __save_stack_nonlocal \ >> __nonlocal_goto __restore_stack_nonlocal __trampoline \ >> _fixtfdi _fixunstfdi _floatditf >> +LIB2FUNCS +=3D _bswapsi2 _bswapdi2 >> LIB2ADDEH =3D unwind-ia64.c unwind-sjlj.c unwind-c.c >> .endif >>=20 >=20 > I think this was an overlook on my part. This change: >=20 > = http://svnweb.freebsd.org/base/head/contrib/gcc/mklibgcc.in?r1=3D169690&r2= =3D258428 >=20 > would suggest the change is not only for ia64, and It should apply for = stable-10 but not for -9. Ah... I wondered how we could have lived without them in libgcc. I'll update the change and make it generic... Thanks for pointing me at r258428, --=20 Marcel Moolenaar marcel@xcllnt.net --Apple-Mail=_8380AE09-634B-4398-8E09-49B262D3F3F0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Comment: GPGTools - http://gpgtools.org iEYEARECAAYFAlLaqvAACgkQpgWlLWHuifYVOwCbBKJ5MT5QFtU4+vkBMlUUyOB+ aWQAni+Vmr5C81oouoUONTr2mbc2e7YC =21pS -----END PGP SIGNATURE----- --Apple-Mail=_8380AE09-634B-4398-8E09-49B262D3F3F0-- From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 18:36:43 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2F11A63D; Sat, 18 Jan 2014 18:36:43 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0EC5B1666; Sat, 18 Jan 2014 18:36:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IIagq8082855; Sat, 18 Jan 2014 18:36:42 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IIagxa082851; Sat, 18 Jan 2014 18:36:42 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201401181836.s0IIagxa082851@svn.freebsd.org> From: Bryan Venteicher Date: Sat, 18 Jan 2014 18:36:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260856 - in stable/10: share/man/man9 sys/kern sys/sys X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 18:36:43 -0000 Author: bryanv Date: Sat Jan 18 18:36:41 2014 New Revision: 260856 URL: http://svnweb.freebsd.org/changeset/base/260856 Log: MFC r260581: Add sglist_append_bio(9) to append a struct bio's data to a sglist Modified: stable/10/share/man/man9/Makefile stable/10/share/man/man9/sglist.9 stable/10/sys/kern/subr_sglist.c stable/10/sys/sys/sglist.h Directory Properties: stable/10/ (props changed) Modified: stable/10/share/man/man9/Makefile ============================================================================== --- stable/10/share/man/man9/Makefile Sat Jan 18 17:59:22 2014 (r260855) +++ stable/10/share/man/man9/Makefile Sat Jan 18 18:36:41 2014 (r260856) @@ -1172,6 +1172,7 @@ MLINKS+=sf_buf.9 sf_buf_alloc.9 \ sf_buf.9 sf_buf_page.9 MLINKS+=sglist.9 sglist_alloc.9 \ sglist.9 sglist_append.9 \ + sglist.9 sglist_append_bio.9 \ sglist.9 sglist_append_mbuf.9 \ sglist.9 sglist_append_phys.9 \ sglist.9 sglist_append_uio.9 \ Modified: stable/10/share/man/man9/sglist.9 ============================================================================== --- stable/10/share/man/man9/sglist.9 Sat Jan 18 17:59:22 2014 (r260855) +++ stable/10/share/man/man9/sglist.9 Sat Jan 18 18:36:41 2014 (r260856) @@ -26,13 +26,14 @@ .\" .\" $FreeBSD$ .\" -.Dd May 15, 2009 +.Dd January 12, 2014 .Dt SGLIST 9 .Os .Sh NAME .Nm sglist , .Nm sglist_alloc , .Nm sglist_append , +.Nm sglist_append_bio , .Nm sglist_append_mbuf , .Nm sglist_append_phys , .Nm sglist_append_uio , @@ -58,6 +59,8 @@ .Ft int .Fn sglist_append "struct sglist *sg" "void *buf" "size_t len" .Ft int +.Fn sglist_append_bio "struct sglist *sg" "struct bio *bp" +.Ft int .Fn sglist_append_mbuf "struct sglist *sg" "struct mbuf *m" .Ft int .Fn sglist_append_phys "struct sglist *sg" "vm_paddr_t paddr" "size_t len" @@ -206,6 +209,13 @@ and is bytes long. .Pp The +.Nm sglist_append_bio +function appends the physical address ranges described by a single bio +.Fa bp +to the scatter/gather list +.Fa sg . +.Pp +The .Nm sglist_append_mbuf function appends the physical address ranges described by an entire mbuf chain @@ -499,6 +509,7 @@ list in to describe the requested physical address ranges. .El .Sh SEE ALSO +.Xr g_bio 9 , .Xr malloc 9 , .Xr mbuf 9 , .Xr uio 9 Modified: stable/10/sys/kern/subr_sglist.c ============================================================================== --- stable/10/sys/kern/subr_sglist.c Sat Jan 18 17:59:22 2014 (r260855) +++ stable/10/sys/kern/subr_sglist.c Sat Jan 18 18:36:41 2014 (r260856) @@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -40,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include @@ -239,6 +241,44 @@ sglist_append(struct sglist *sg, void *b } /* + * Append the segments to describe a bio's data to a scatter/gather list. + * If there are insufficient segments, then this fails with EFBIG. + * + * NOTE: This function expects bio_bcount to be initialized. + */ +int +sglist_append_bio(struct sglist *sg, struct bio *bp) +{ + struct sgsave save; + vm_paddr_t paddr; + size_t len, tlen; + int error, i, ma_offs; + + if ((bp->bio_flags & BIO_UNMAPPED) == 0) { + error = sglist_append(sg, bp->bio_data, bp->bio_bcount); + return (error); + } + + if (sg->sg_maxseg == 0) + return (EINVAL); + + SGLIST_SAVE(sg, save); + tlen = bp->bio_bcount; + ma_offs = bp->bio_ma_offset; + for (i = 0; tlen > 0; i++, tlen -= len) { + len = min(PAGE_SIZE - ma_offs, tlen); + paddr = VM_PAGE_TO_PHYS(bp->bio_ma[i]) + ma_offs; + error = sglist_append_phys(sg, paddr, len); + if (error) { + SGLIST_RESTORE(sg, save); + return (error); + } + ma_offs = 0; + } + return (0); +} + +/* * Append a single physical address range to a scatter/gather list. * If there are insufficient segments, then this fails with EFBIG. */ Modified: stable/10/sys/sys/sglist.h ============================================================================== --- stable/10/sys/sys/sglist.h Sat Jan 18 17:59:22 2014 (r260855) +++ stable/10/sys/sys/sglist.h Sat Jan 18 18:36:41 2014 (r260856) @@ -53,6 +53,7 @@ struct sglist { u_short sg_maxseg; }; +struct bio; struct mbuf; struct uio; @@ -83,6 +84,7 @@ sglist_hold(struct sglist *sg) struct sglist *sglist_alloc(int nsegs, int mflags); int sglist_append(struct sglist *sg, void *buf, size_t len); +int sglist_append_bio(struct sglist *sg, struct bio *bp); int sglist_append_mbuf(struct sglist *sg, struct mbuf *m0); int sglist_append_phys(struct sglist *sg, vm_paddr_t paddr, size_t len); From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 18:39:39 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D8293777; Sat, 18 Jan 2014 18:39:39 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C38C41672; Sat, 18 Jan 2014 18:39:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IIddG5083190; Sat, 18 Jan 2014 18:39:39 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IIddmR083188; Sat, 18 Jan 2014 18:39:39 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201401181839.s0IIddmR083188@svn.freebsd.org> From: Bryan Venteicher Date: Sat, 18 Jan 2014 18:39:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260857 - stable/10/sys/dev/virtio/block X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 18:39:39 -0000 Author: bryanv Date: Sat Jan 18 18:39:39 2014 New Revision: 260857 URL: http://svnweb.freebsd.org/changeset/base/260857 Log: MFC r260582: Add unmapped IO support to virtio_blk(4) Modified: stable/10/sys/dev/virtio/block/virtio_blk.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/virtio/block/virtio_blk.c ============================================================================== --- stable/10/sys/dev/virtio/block/virtio_blk.c Sat Jan 18 18:36:41 2014 (r260856) +++ stable/10/sys/dev/virtio/block/virtio_blk.c Sat Jan 18 18:39:39 2014 (r260857) @@ -726,7 +726,7 @@ vtblk_alloc_disk(struct vtblk_softc *sc, dp->d_name = VTBLK_DISK_NAME; dp->d_unit = device_get_unit(dev); dp->d_drv1 = sc; - dp->d_flags = DISKFLAG_CANFLUSHCACHE; + dp->d_flags = DISKFLAG_CANFLUSHCACHE | DISKFLAG_UNMAPPED_BIO; dp->d_hba_vendor = virtio_get_vendor(dev); dp->d_hba_device = virtio_get_device(dev); dp->d_hba_subvendor = virtio_get_subvendor(dev); @@ -931,10 +931,11 @@ vtblk_execute_request(struct vtblk_softc sglist_append(sg, &req->vbr_hdr, sizeof(struct virtio_blk_outhdr)); if (bp->bio_cmd == BIO_READ || bp->bio_cmd == BIO_WRITE) { - error = sglist_append(sg, bp->bio_data, bp->bio_bcount); - if (error || sg->sg_nseg == sg->sg_maxseg) + error = sglist_append_bio(sg, bp); + if (error || sg->sg_nseg == sg->sg_maxseg) { panic("%s: data buffer too big bio:%p error:%d", __func__, bp, error); + } /* BIO_READ means the host writes into our buffer. */ if (bp->bio_cmd == BIO_READ) From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 18:41:25 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6BB628A6; Sat, 18 Jan 2014 18:41:25 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 57C4216CB; Sat, 18 Jan 2014 18:41:25 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IIfPEI085996; Sat, 18 Jan 2014 18:41:25 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IIfP8c085995; Sat, 18 Jan 2014 18:41:25 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201401181841.s0IIfP8c085995@svn.freebsd.org> From: Bryan Venteicher Date: Sat, 18 Jan 2014 18:41:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260858 - stable/10/sys/dev/virtio/scsi X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 18:41:25 -0000 Author: bryanv Date: Sat Jan 18 18:41:24 2014 New Revision: 260858 URL: http://svnweb.freebsd.org/changeset/base/260858 Log: MFC r260583: Add unmapped IO support to virtio_scsi(4) Modified: stable/10/sys/dev/virtio/scsi/virtio_scsi.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/virtio/scsi/virtio_scsi.c ============================================================================== --- stable/10/sys/dev/virtio/scsi/virtio_scsi.c Sat Jan 18 18:39:39 2014 (r260857) +++ stable/10/sys/dev/virtio/scsi/virtio_scsi.c Sat Jan 18 18:41:24 2014 (r260858) @@ -878,7 +878,7 @@ vtscsi_cam_path_inquiry(struct vtscsi_so cpi->version_num = 1; cpi->hba_inquiry = PI_TAG_ABLE; cpi->target_sprt = 0; - cpi->hba_misc = PIM_SEQSCAN; + cpi->hba_misc = PIM_SEQSCAN | PIM_UNMAPPED; if (vtscsi_bus_reset_disable != 0) cpi->hba_misc |= PIM_NOBUSRESET; cpi->hba_eng_cnt = 0; @@ -946,6 +946,9 @@ vtscsi_sg_append_scsi_buf(struct vtscsi_ (vm_paddr_t) dseg->ds_addr, dseg->ds_len); } break; + case CAM_DATA_BIO: + error = sglist_append_bio(sg, (struct bio *) csio->data_ptr); + break; default: error = EINVAL; break; From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 20:02:59 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C8349CF4; Sat, 18 Jan 2014 20:02:59 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9A1601CC7; Sat, 18 Jan 2014 20:02:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IK2xBI017339; Sat, 18 Jan 2014 20:02:59 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IK2xTP017338; Sat, 18 Jan 2014 20:02:59 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201401182002.s0IK2xTP017338@svn.freebsd.org> From: Alan Cox Date: Sat, 18 Jan 2014 20:02:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260859 - head/sys/vm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 20:02:59 -0000 Author: alc Date: Sat Jan 18 20:02:59 2014 New Revision: 260859 URL: http://svnweb.freebsd.org/changeset/base/260859 Log: Style changes in vm_pageout_scan(): 1. Be consistent in the style of "act_delta" manipulations between the inactive and active queue scans. 2. Explicitly compare to zero. 3. The deactivation of a page is based is based on its recent history and not just the current call to vm_pageout_scan(). The variable "act_delta" represents the current state of the page, and not its history. Avoid possible confusion by not (ab)using "act_delta" for the making the deactivation decision. Submitted by: kib [1] Reviewed by: kib [2,3] Modified: head/sys/vm/vm_pageout.c Modified: head/sys/vm/vm_pageout.c ============================================================================== --- head/sys/vm/vm_pageout.c Sat Jan 18 18:41:24 2014 (r260858) +++ head/sys/vm/vm_pageout.c Sat Jan 18 20:02:59 2014 (r260859) @@ -1047,11 +1047,11 @@ vm_pageout_scan(struct vm_domain *vmd, i * level VM system not knowing anything about existing * references. */ - act_delta = 0; if ((m->aflags & PGA_REFERENCED) != 0) { vm_page_aflag_clear(m, PGA_REFERENCED); act_delta = 1; - } + } else + act_delta = 0; if (object->ref_count != 0) { act_delta += pmap_ts_referenced(m); } else { @@ -1064,7 +1064,7 @@ vm_pageout_scan(struct vm_domain *vmd, i * references, we reactivate the page or requeue it. */ if (act_delta != 0) { - if (object->ref_count) { + if (object->ref_count != 0) { vm_page_activate(m); m->act_count += act_delta + ACT_ADVANCE; } else { @@ -1361,11 +1361,12 @@ relock_queues: /* * Check to see "how much" the page has been used. */ - act_delta = 0; - if (m->aflags & PGA_REFERENCED) { + if ((m->aflags & PGA_REFERENCED) != 0) { vm_page_aflag_clear(m, PGA_REFERENCED); - act_delta += 1; - } + act_delta = 1; + } else + act_delta = 0; + /* * Unlocked object ref count check. Two races are possible. * 1) The ref was transitioning to zero and we saw non-zero, @@ -1380,20 +1381,18 @@ relock_queues: /* * Advance or decay the act_count based on recent usage. */ - if (act_delta) { + if (act_delta != 0) { m->act_count += ACT_ADVANCE + act_delta; if (m->act_count > ACT_MAX) m->act_count = ACT_MAX; - } else { + } else m->act_count -= min(m->act_count, ACT_DECLINE); - act_delta = m->act_count; - } /* * Move this page to the tail of the active or inactive * queue depending on usage. */ - if (act_delta == 0) { + if (m->act_count == 0) { /* Dequeue to avoid later lock recursion. */ vm_page_dequeue_locked(m); vm_page_deactivate(m); From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 20:33:00 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 674952CE; Sat, 18 Jan 2014 20:33:00 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 520BD1E9E; Sat, 18 Jan 2014 20:33:00 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IKX0Fm029082; Sat, 18 Jan 2014 20:33:00 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IKWxXH029028; Sat, 18 Jan 2014 20:32:59 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401182032.s0IKWxXH029028@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Sat, 18 Jan 2014 20:32:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260860 - head/sys/netinet6 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 20:33:00 -0000 Author: melifaro Date: Sat Jan 18 20:32:59 2014 New Revision: 260860 URL: http://svnweb.freebsd.org/changeset/base/260860 Log: Add in6_prepare_ifra() function to ease preparing in-kernel IPv6 address requests. MFC after: 2 weeks Modified: head/sys/netinet6/in6.c head/sys/netinet6/in6_ifattach.c head/sys/netinet6/in6_var.h head/sys/netinet6/nd6_rtr.c Modified: head/sys/netinet6/in6.c ============================================================================== --- head/sys/netinet6/in6.c Sat Jan 18 20:02:59 2014 (r260859) +++ head/sys/netinet6/in6.c Sat Jan 18 20:32:59 2014 (r260860) @@ -1036,6 +1036,27 @@ in6_update_ifa(struct ifnet *ifp, struct return (error); } +/* + * Fill in basic IPv6 address request info + */ +void +in6_prepare_ifra(struct in6_aliasreq *ifra, const struct in6_addr *addr, + const struct in6_addr *mask) +{ + + memset(ifra, 0, sizeof(struct in6_aliasreq)); + + ifra->ifra_addr.sin6_family = AF_INET6; + ifra->ifra_addr.sin6_len = sizeof(struct sockaddr_in6); + if (addr != NULL) + ifra->ifra_addr.sin6_addr = *addr; + + ifra->ifra_prefixmask.sin6_family = AF_INET6; + ifra->ifra_prefixmask.sin6_len = sizeof(struct sockaddr_in6); + if (mask != NULL) + ifra->ifra_prefixmask.sin6_addr = *mask; +} + static int in6_validate_ifra(struct ifnet *ifp, struct in6_aliasreq *ifra, struct in6_ifaddr *ia, int flags) Modified: head/sys/netinet6/in6_ifattach.c ============================================================================== --- head/sys/netinet6/in6_ifattach.c Sat Jan 18 20:02:59 2014 (r260859) +++ head/sys/netinet6/in6_ifattach.c Sat Jan 18 20:32:59 2014 (r260860) @@ -460,16 +460,8 @@ in6_ifattach_linklocal(struct ifnet *ifp /* * configure link-local address. */ - bzero(&ifra, sizeof(ifra)); + in6_prepare_ifra(&ifra, NULL, &in6mask64); - /* - * in6_update_ifa() does not use ifra_name, but we accurately set it - * for safety. - */ - strncpy(ifra.ifra_name, if_name(ifp), sizeof(ifra.ifra_name)); - - ifra.ifra_addr.sin6_family = AF_INET6; - ifra.ifra_addr.sin6_len = sizeof(struct sockaddr_in6); ifra.ifra_addr.sin6_addr.s6_addr32[0] = htonl(0xfe800000); ifra.ifra_addr.sin6_addr.s6_addr32[1] = 0; if ((ifp->if_flags & IFF_LOOPBACK) != 0) { @@ -485,9 +477,6 @@ in6_ifattach_linklocal(struct ifnet *ifp if (in6_setscope(&ifra.ifra_addr.sin6_addr, ifp, NULL)) return (-1); - ifra.ifra_prefixmask.sin6_len = sizeof(struct sockaddr_in6); - ifra.ifra_prefixmask.sin6_family = AF_INET6; - ifra.ifra_prefixmask.sin6_addr = in6mask64; /* link-local addresses should NEVER expire. */ ifra.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME; ifra.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; @@ -565,17 +554,7 @@ in6_ifattach_loopback(struct ifnet *ifp) struct in6_aliasreq ifra; int error; - bzero(&ifra, sizeof(ifra)); - - /* - * in6_update_ifa() does not use ifra_name, but we accurately set it - * for safety. - */ - strncpy(ifra.ifra_name, if_name(ifp), sizeof(ifra.ifra_name)); - - ifra.ifra_prefixmask.sin6_len = sizeof(struct sockaddr_in6); - ifra.ifra_prefixmask.sin6_family = AF_INET6; - ifra.ifra_prefixmask.sin6_addr = in6mask128; + in6_prepare_ifra(&ifra, &in6addr_loopback, &in6mask128); /* * Always initialize ia_dstaddr (= broadcast address) to loopback @@ -585,10 +564,6 @@ in6_ifattach_loopback(struct ifnet *ifp) ifra.ifra_dstaddr.sin6_family = AF_INET6; ifra.ifra_dstaddr.sin6_addr = in6addr_loopback; - ifra.ifra_addr.sin6_len = sizeof(struct sockaddr_in6); - ifra.ifra_addr.sin6_family = AF_INET6; - ifra.ifra_addr.sin6_addr = in6addr_loopback; - /* the loopback address should NEVER expire. */ ifra.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME; ifra.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; Modified: head/sys/netinet6/in6_var.h ============================================================================== --- head/sys/netinet6/in6_var.h Sat Jan 18 20:02:59 2014 (r260859) +++ head/sys/netinet6/in6_var.h Sat Jan 18 20:32:59 2014 (r260860) @@ -799,6 +799,8 @@ int in6_control(struct socket *, u_long, struct thread *); int in6_update_ifa(struct ifnet *, struct in6_aliasreq *, struct in6_ifaddr *, int); +void in6_prepare_ifra(struct in6_aliasreq *, const struct in6_addr *, + const struct in6_addr *); void in6_purgeaddr(struct ifaddr *); int in6if_do_dad(struct ifnet *); void in6_purgeif(struct ifnet *); Modified: head/sys/netinet6/nd6_rtr.c ============================================================================== --- head/sys/netinet6/nd6_rtr.c Sat Jan 18 20:02:59 2014 (r260859) +++ head/sys/netinet6/nd6_rtr.c Sat Jan 18 20:32:59 2014 (r260860) @@ -1829,19 +1829,9 @@ in6_ifadd(struct nd_prefixctl *pr, int m } /* make ifaddr */ + in6_prepare_ifra(&ifra, &pr->ndpr_prefix.sin6_addr, &mask); - bzero(&ifra, sizeof(ifra)); - /* - * in6_update_ifa() does not use ifra_name, but we accurately set it - * for safety. - */ - strncpy(ifra.ifra_name, if_name(ifp), sizeof(ifra.ifra_name)); - ifra.ifra_addr.sin6_family = AF_INET6; - ifra.ifra_addr.sin6_len = sizeof(struct sockaddr_in6); - /* prefix */ - ifra.ifra_addr.sin6_addr = pr->ndpr_prefix.sin6_addr; IN6_MASK_ADDR(&ifra.ifra_addr.sin6_addr, &mask); - /* interface ID */ ifra.ifra_addr.sin6_addr.s6_addr32[0] |= (ib->ia_addr.sin6_addr.s6_addr32[0] & ~mask.s6_addr32[0]); @@ -1853,12 +1843,6 @@ in6_ifadd(struct nd_prefixctl *pr, int m (ib->ia_addr.sin6_addr.s6_addr32[3] & ~mask.s6_addr32[3]); ifa_free(ifa); - /* new prefix mask. */ - ifra.ifra_prefixmask.sin6_len = sizeof(struct sockaddr_in6); - ifra.ifra_prefixmask.sin6_family = AF_INET6; - bcopy(&mask, &ifra.ifra_prefixmask.sin6_addr, - sizeof(ifra.ifra_prefixmask.sin6_addr)); - /* lifetimes. */ ifra.ifra_lifetime.ia6t_vltime = pr->ndpr_vltime; ifra.ifra_lifetime.ia6t_pltime = pr->ndpr_pltime; @@ -1923,11 +1907,10 @@ in6_tmpifadd(const struct in6_ifaddr *ia u_int32_t randid[2]; time_t vltime0, pltime0; - bzero(&ifra, sizeof(ifra)); - strncpy(ifra.ifra_name, if_name(ifp), sizeof(ifra.ifra_name)); - ifra.ifra_addr = ia0->ia_addr; - /* copy prefix mask */ - ifra.ifra_prefixmask = ia0->ia_prefixmask; + in6_prepare_ifra(&ifra, &ia0->ia_addr.sin6_addr, + &ia0->ia_prefixmask.sin6_addr); + + ifra.ifra_addr = ia0->ia_addr; /* XXX: do we need this ? */ /* clear the old IFID */ IN6_MASK_ADDR(&ifra.ifra_addr.sin6_addr, &ifra.ifra_prefixmask.sin6_addr); From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 20:54:56 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 29BABD22; Sat, 18 Jan 2014 20:54:56 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 14A21105D; Sat, 18 Jan 2014 20:54:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IKstMi036610; Sat, 18 Jan 2014 20:54:55 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IKstRR036609; Sat, 18 Jan 2014 20:54:55 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401182054.s0IKstRR036609@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Sat, 18 Jan 2014 20:54:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260861 - head/sys/netinet6 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 20:54:56 -0000 Author: melifaro Date: Sat Jan 18 20:54:55 2014 New Revision: 260861 URL: http://svnweb.freebsd.org/changeset/base/260861 Log: Use in6_localip() instead of hand-rolled cycle. MFC after: 2 weeks Modified: head/sys/netinet6/nd6_rtr.c Modified: head/sys/netinet6/nd6_rtr.c ============================================================================== --- head/sys/netinet6/nd6_rtr.c Sat Jan 18 20:32:59 2014 (r260860) +++ head/sys/netinet6/nd6_rtr.c Sat Jan 18 20:54:55 2014 (r260861) @@ -1899,7 +1899,7 @@ int in6_tmpifadd(const struct in6_ifaddr *ia0, int forcegen, int delay) { struct ifnet *ifp = ia0->ia_ifa.ifa_ifp; - struct in6_ifaddr *newia, *ia; + struct in6_ifaddr *newia; struct in6_aliasreq ifra; int error; int trylimit = 3; /* XXX: adhoc value */ @@ -1933,26 +1933,18 @@ in6_tmpifadd(const struct in6_ifaddr *ia * there may be a time lag between generation of the ID and generation * of the address. So, we'll do one more sanity check. */ - IN6_IFADDR_RLOCK(); - TAILQ_FOREACH(ia, &V_in6_ifaddrhead, ia_link) { - if (IN6_ARE_ADDR_EQUAL(&ia->ia_addr.sin6_addr, - &ifra.ifra_addr.sin6_addr)) { - if (trylimit-- == 0) { - IN6_IFADDR_RUNLOCK(); - /* - * Give up. Something strange should have - * happened. - */ - nd6log((LOG_NOTICE, "in6_tmpifadd: failed to " - "find a unique random IFID\n")); - return (EEXIST); - } - IN6_IFADDR_RUNLOCK(); + + if (in6_localip(&ifra.ifra_addr.sin6_addr) != 0) { + if (trylimit-- > 0) { forcegen = 1; goto again; } + + /* Give up. Something strange should have happened. */ + nd6log((LOG_NOTICE, "in6_tmpifadd: failed to " + "find a unique random IFID\n")); + return (EEXIST); } - IN6_IFADDR_RUNLOCK(); /* * The Valid Lifetime is the lower of the Valid Lifetime of the From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 21:21:45 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 57EB1649; Sat, 18 Jan 2014 21:21:45 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4264F1249; Sat, 18 Jan 2014 21:21:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0ILLjh2048121; Sat, 18 Jan 2014 21:21:45 GMT (envelope-from pluknet@svn.freebsd.org) Received: (from pluknet@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0ILLjkW048120; Sat, 18 Jan 2014 21:21:45 GMT (envelope-from pluknet@svn.freebsd.org) Message-Id: <201401182121.s0ILLjkW048120@svn.freebsd.org> From: Sergey Kandaurov Date: Sat, 18 Jan 2014 21:21:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260862 - stable/9/sys/sys X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 21:21:45 -0000 Author: pluknet Date: Sat Jan 18 21:21:44 2014 New Revision: 260862 URL: http://svnweb.freebsd.org/changeset/base/260862 Log: MFC r250816: Protect SDT_PROBE() with do { } while (0) loop. Modified: stable/9/sys/sys/sdt.h Directory Properties: stable/9/sys/ (props changed) stable/9/sys/sys/ (props changed) Modified: stable/9/sys/sys/sdt.h ============================================================================== --- stable/9/sys/sys/sdt.h Sat Jan 18 20:54:55 2014 (r260861) +++ stable/9/sys/sys/sdt.h Sat Jan 18 21:21:44 2014 (r260862) @@ -136,11 +136,12 @@ SET_DECLARE(sdt_argtypes_set, struct sdt #define SDT_PROBE_DECLARE(prov, mod, func, name) \ extern struct sdt_probe sdt_##prov##_##mod##_##func##_##name[1] -#define SDT_PROBE(prov, mod, func, name, arg0, arg1, arg2, arg3, arg4) \ +#define SDT_PROBE(prov, mod, func, name, arg0, arg1, arg2, arg3, arg4) do { \ if (sdt_##prov##_##mod##_##func##_##name->id) \ (*sdt_probe_func)(sdt_##prov##_##mod##_##func##_##name->id, \ (uintptr_t) arg0, (uintptr_t) arg1, (uintptr_t) arg2, \ - (uintptr_t) arg3, (uintptr_t) arg4) + (uintptr_t) arg3, (uintptr_t) arg4); \ +} while (0) #define SDT_PROBE_ARGTYPE(prov, mod, func, name, num, type) \ static struct sdt_argtype sdt_##prov##_##mod##_##func##_##name##num[1] \ From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 21:47:13 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 821ADC06; Sat, 18 Jan 2014 21:47:13 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6C5481392; Sat, 18 Jan 2014 21:47:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0ILlDqK056149; Sat, 18 Jan 2014 21:47:13 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0ILlDNx056148; Sat, 18 Jan 2014 21:47:13 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201401182147.s0ILlDNx056148@svn.freebsd.org> From: Neel Natu Date: Sat, 18 Jan 2014 21:47:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260863 - head/sys/amd64/vmm/intel X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 21:47:13 -0000 Author: neel Date: Sat Jan 18 21:47:12 2014 New Revision: 260863 URL: http://svnweb.freebsd.org/changeset/base/260863 Log: Some processor's don't allow NMI injection if the STI_BLOCKING bit is set in the Guest Interruptibility-state field. However, there isn't any way to figure out which processors have this requirement. So, inject a pending NMI only if NMI_BLOCKING, MOVSS_BLOCKING, STI_BLOCKING are all clear. If any of these bits are set then enable "NMI window exiting" and inject the NMI in the VM-exit handler. Modified: head/sys/amd64/vmm/intel/vmx.c Modified: head/sys/amd64/vmm/intel/vmx.c ============================================================================== --- head/sys/amd64/vmm/intel/vmx.c Sat Jan 18 21:21:44 2014 (r260862) +++ head/sys/amd64/vmm/intel/vmx.c Sat Jan 18 21:47:12 2014 (r260863) @@ -147,21 +147,6 @@ SYSCTL_INT(_hw_vmm_vmx, OID_AUTO, initia &vmx_initialized, 0, "Intel VMX initialized"); /* - * Virtual NMI blocking conditions. - * - * Some processor implementations also require NMI to be blocked if - * the STI_BLOCKING bit is set. It is possible to detect this at runtime - * based on the (exit_reason,exit_qual) tuple being set to - * (EXIT_REASON_INVAL_VMCS, EXIT_QUAL_NMI_WHILE_STI_BLOCKING). - * - * We take the easy way out and also include STI_BLOCKING as one of the - * gating items for vNMI injection. - */ -static uint64_t nmi_blocking_bits = VMCS_INTERRUPTIBILITY_MOVSS_BLOCKING | - VMCS_INTERRUPTIBILITY_NMI_BLOCKING | - VMCS_INTERRUPTIBILITY_STI_BLOCKING; - -/* * Optional capabilities */ static int cap_halt_exit; @@ -1020,117 +1005,145 @@ static void __inline vmx_set_int_window_exiting(struct vmx *vmx, int vcpu) { - vmx->cap[vcpu].proc_ctls |= PROCBASED_INT_WINDOW_EXITING; - vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); + if ((vmx->cap[vcpu].proc_ctls & PROCBASED_INT_WINDOW_EXITING) == 0) { + vmx->cap[vcpu].proc_ctls |= PROCBASED_INT_WINDOW_EXITING; + vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); + VCPU_CTR0(vmx->vm, vcpu, "Enabling interrupt window exiting"); + } } static void __inline vmx_clear_int_window_exiting(struct vmx *vmx, int vcpu) { + KASSERT((vmx->cap[vcpu].proc_ctls & PROCBASED_INT_WINDOW_EXITING) != 0, + ("intr_window_exiting not set: %#x", vmx->cap[vcpu].proc_ctls)); vmx->cap[vcpu].proc_ctls &= ~PROCBASED_INT_WINDOW_EXITING; vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); + VCPU_CTR0(vmx->vm, vcpu, "Disabling interrupt window exiting"); } static void __inline vmx_set_nmi_window_exiting(struct vmx *vmx, int vcpu) { - vmx->cap[vcpu].proc_ctls |= PROCBASED_NMI_WINDOW_EXITING; - vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); + if ((vmx->cap[vcpu].proc_ctls & PROCBASED_NMI_WINDOW_EXITING) == 0) { + vmx->cap[vcpu].proc_ctls |= PROCBASED_NMI_WINDOW_EXITING; + vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); + VCPU_CTR0(vmx->vm, vcpu, "Enabling NMI window exiting"); + } } static void __inline vmx_clear_nmi_window_exiting(struct vmx *vmx, int vcpu) { + KASSERT((vmx->cap[vcpu].proc_ctls & PROCBASED_NMI_WINDOW_EXITING) != 0, + ("nmi_window_exiting not set %#x", vmx->cap[vcpu].proc_ctls)); vmx->cap[vcpu].proc_ctls &= ~PROCBASED_NMI_WINDOW_EXITING; vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); + VCPU_CTR0(vmx->vm, vcpu, "Disabling NMI window exiting"); } -static int +#define NMI_BLOCKING (VMCS_INTERRUPTIBILITY_NMI_BLOCKING | \ + VMCS_INTERRUPTIBILITY_MOVSS_BLOCKING) +#define HWINTR_BLOCKING (VMCS_INTERRUPTIBILITY_STI_BLOCKING | \ + VMCS_INTERRUPTIBILITY_MOVSS_BLOCKING) + +static void vmx_inject_nmi(struct vmx *vmx, int vcpu) { - uint64_t info, interruptibility; + uint32_t gi, info; - /* Bail out if no NMI requested */ - if (!vm_nmi_pending(vmx->vm, vcpu)) - return (0); + gi = vmcs_read(VMCS_GUEST_INTERRUPTIBILITY); + KASSERT((gi & NMI_BLOCKING) == 0, ("vmx_inject_nmi: invalid guest " + "interruptibility-state %#x", gi)); - interruptibility = vmcs_read(VMCS_GUEST_INTERRUPTIBILITY); - if (interruptibility & nmi_blocking_bits) - goto nmiblocked; + info = vmcs_read(VMCS_ENTRY_INTR_INFO); + KASSERT((info & VMCS_INTR_VALID) == 0, ("vmx_inject_nmi: invalid " + "VM-entry interruption information %#x", info)); /* * Inject the virtual NMI. The vector must be the NMI IDT entry * or the VMCS entry check will fail. */ - info = VMCS_INTR_T_NMI | VMCS_INTR_VALID; - info |= IDT_NMI; + info = IDT_NMI | VMCS_INTR_T_NMI | VMCS_INTR_VALID; vmcs_write(VMCS_ENTRY_INTR_INFO, info); VCPU_CTR0(vmx->vm, vcpu, "Injecting vNMI"); /* Clear the request */ vm_nmi_clear(vmx->vm, vcpu); - return (1); - -nmiblocked: - /* - * Set the NMI Window Exiting execution control so we can inject - * the virtual NMI as soon as blocking condition goes away. - */ - vmx_set_nmi_window_exiting(vmx, vcpu); - - VCPU_CTR0(vmx->vm, vcpu, "Enabling NMI window exiting"); - return (1); } static void vmx_inject_interrupts(struct vmx *vmx, int vcpu, struct vlapic *vlapic) { - int vector; - uint64_t info, rflags, interruptibility; - - const int HWINTR_BLOCKED = VMCS_INTERRUPTIBILITY_STI_BLOCKING | - VMCS_INTERRUPTIBILITY_MOVSS_BLOCKING; + int vector, need_nmi_exiting; + uint64_t rflags; + uint32_t gi, info; - /* - * If there is already an interrupt pending then just return. - * - * This could happen if an interrupt was injected on a prior - * VM entry but the actual entry into guest mode was aborted - * because of a pending AST. - */ - info = vmcs_read(VMCS_ENTRY_INTR_INFO); - if (info & VMCS_INTR_VALID) - return; + if (vm_nmi_pending(vmx->vm, vcpu)) { + /* + * If there are no conditions blocking NMI injection then + * inject it directly here otherwise enable "NMI window + * exiting" to inject it as soon as we can. + * + * We also check for STI_BLOCKING because some implementations + * don't allow NMI injection in this case. If we are running + * on a processor that doesn't have this restriction it will + * immediately exit and the NMI will be injected in the + * "NMI window exiting" handler. + */ + need_nmi_exiting = 1; + gi = vmcs_read(VMCS_GUEST_INTERRUPTIBILITY); + if ((gi & (HWINTR_BLOCKING | NMI_BLOCKING)) == 0) { + info = vmcs_read(VMCS_ENTRY_INTR_INFO); + if ((info & VMCS_INTR_VALID) == 0) { + vmx_inject_nmi(vmx, vcpu); + need_nmi_exiting = 0; + } else { + VCPU_CTR1(vmx->vm, vcpu, "Cannot inject NMI " + "due to VM-entry intr info %#x", info); + } + } else { + VCPU_CTR1(vmx->vm, vcpu, "Cannot inject NMI due to " + "Guest Interruptibility-state %#x", gi); + } - /* - * NMI injection has priority so deal with those first - */ - if (vmx_inject_nmi(vmx, vcpu)) - return; + if (need_nmi_exiting) + vmx_set_nmi_window_exiting(vmx, vcpu); + } if (virtual_interrupt_delivery) { vmx_inject_pir(vlapic); return; } + /* + * If there is already an interrupt pending then just return. This + * could happen for multiple reasons: + * - A vectoring VM-entry was aborted due to astpending or rendezvous. + * - A VM-exit happened during event injection. + * - A NMI was injected above or after "NMI window exiting" VM-exit. + */ + info = vmcs_read(VMCS_ENTRY_INTR_INFO); + if (info & VMCS_INTR_VALID) + return; + /* Ask the local apic for a vector to inject */ if (!vlapic_pending_intr(vlapic, &vector)) return; - if (vector < 32 || vector > 255) - panic("vmx_inject_interrupts: invalid vector %d\n", vector); + KASSERT(vector >= 32 && vector <= 255, ("invalid vector %d", vector)); /* Check RFLAGS.IF and the interruptibility state of the guest */ rflags = vmcs_read(VMCS_GUEST_RFLAGS); if ((rflags & PSL_I) == 0) goto cantinject; - interruptibility = vmcs_read(VMCS_GUEST_INTERRUPTIBILITY); - if (interruptibility & HWINTR_BLOCKED) + gi = vmcs_read(VMCS_GUEST_INTERRUPTIBILITY); + if (gi & HWINTR_BLOCKING) goto cantinject; /* Inject the interrupt */ @@ -1151,8 +1164,6 @@ cantinject: * the interrupt as soon as blocking condition goes away. */ vmx_set_int_window_exiting(vmx, vcpu); - - VCPU_CTR0(vmx->vm, vcpu, "Enabling interrupt window exiting"); } /* @@ -1587,7 +1598,6 @@ vmx_exit_process(struct vmx *vmx, int vc case EXIT_REASON_INTR_WINDOW: vmm_stat_incr(vmx->vm, vcpu, VMEXIT_INTR_WINDOW, 1); vmx_clear_int_window_exiting(vmx, vcpu); - VCPU_CTR0(vmx->vm, vcpu, "Disabling interrupt window exiting"); return (1); case EXIT_REASON_EXT_INTR: /* @@ -1613,9 +1623,10 @@ vmx_exit_process(struct vmx *vmx, int vc return (1); case EXIT_REASON_NMI_WINDOW: /* Exit to allow the pending virtual NMI to be injected */ - vmm_stat_incr(vmx->vm, vcpu, VMEXIT_NMI_WINDOW, 1); + if (vm_nmi_pending(vmx->vm, vcpu)) + vmx_inject_nmi(vmx, vcpu); vmx_clear_nmi_window_exiting(vmx, vcpu); - VCPU_CTR0(vmx->vm, vcpu, "Disabling NMI window exiting"); + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_NMI_WINDOW, 1); return (1); case EXIT_REASON_INOUT: vmm_stat_incr(vmx->vm, vcpu, VMEXIT_INOUT, 1); From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 21:57:39 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2EB04170; Sat, 18 Jan 2014 21:57:39 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 19D0C147C; Sat, 18 Jan 2014 21:57:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0ILvctx059829; Sat, 18 Jan 2014 21:57:38 GMT (envelope-from pluknet@svn.freebsd.org) Received: (from pluknet@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0ILvcqX059828; Sat, 18 Jan 2014 21:57:38 GMT (envelope-from pluknet@svn.freebsd.org) Message-Id: <201401182157.s0ILvcqX059828@svn.freebsd.org> From: Sergey Kandaurov Date: Sat, 18 Jan 2014 21:57:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260864 - stable/10/sys/net X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 21:57:39 -0000 Author: pluknet Date: Sat Jan 18 21:57:38 2014 New Revision: 260864 URL: http://svnweb.freebsd.org/changeset/base/260864 Log: MFC r258675: Fix build. Modified: stable/10/sys/net/vnet.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/net/vnet.c ============================================================================== --- stable/10/sys/net/vnet.c Sat Jan 18 21:47:12 2014 (r260863) +++ stable/10/sys/net/vnet.c Sat Jan 18 21:57:38 2014 (r260864) @@ -217,7 +217,7 @@ SDT_PROBE_DEFINE2(vnet, functions, vnet_ "int", "struct vnet *"); SDT_PROBE_DEFINE2(vnet, functions, vnet_destroy, entry, "int", "struct vnet *"); -SDT_PROBE_DEFINE1(vnet, functions, vnet_destroy, entry, +SDT_PROBE_DEFINE1(vnet, functions, vnet_destroy, return, "int"); #ifdef DDB From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 22:33:49 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B94D7C3E; Sat, 18 Jan 2014 22:33:49 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A541D16D7; Sat, 18 Jan 2014 22:33:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IMXnQ1075063; Sat, 18 Jan 2014 22:33:49 GMT (envelope-from dteske@svn.freebsd.org) Received: (from dteske@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IMXn1h075062; Sat, 18 Jan 2014 22:33:49 GMT (envelope-from dteske@svn.freebsd.org) Message-Id: <201401182233.s0IMXn1h075062@svn.freebsd.org> From: Devin Teske Date: Sat, 18 Jan 2014 22:33:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260866 - head/usr.sbin/bsdinstall/scripts X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 22:33:49 -0000 Author: dteske Date: Sat Jan 18 22:33:49 2014 New Revision: 260866 URL: http://svnweb.freebsd.org/changeset/base/260866 Log: Fix a bad comparison operator (s/==/=/), and address a use-case issue where- in the one-line comment associated with the dumpdev setting was not present for the case where the user deselects the dumpdev service (restoring pre- r256348 behaviour. MFC After: 3 days Modified: head/usr.sbin/bsdinstall/scripts/services Modified: head/usr.sbin/bsdinstall/scripts/services ============================================================================== --- head/usr.sbin/bsdinstall/scripts/services Sat Jan 18 22:32:48 2014 (r260865) +++ head/usr.sbin/bsdinstall/scripts/services Sat Jan 18 22:33:49 2014 (r260866) @@ -52,16 +52,14 @@ exec 3>&- havedump= for daemon in $DAEMONS; do - if [ "$daemon" == "dumpdev" ]; then - havedump=1 - echo '# Set dumpdev to "AUTO" to enable crash dumps, "NO"' \ - 'to disable' >> $BSDINSTALL_TMPETC/rc.conf.services - echo dumpdev=\"AUTO\" >> $BSDINSTALL_TMPETC/rc.conf.services - continue - fi + [ "$daemon" = "dumpdev" ] && havedump=1 continue echo ${daemon}_enable=\"YES\" >> $BSDINSTALL_TMPETC/rc.conf.services done -if [ ! "$havedump" ]; then +echo '# Set dumpdev to "AUTO" to enable crash dumps, "NO"' \ + 'to disable' >> $BSDINSTALL_TMPETC/rc.conf.services +if [ "$havedump" ]; then + echo dumpdev=\"AUTO\" >> $BSDINSTALL_TMPETC/rc.conf.services +else echo dumpdev=\"NO\" >> $BSDINSTALL_TMPETC/rc.conf.services fi From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 22:47:26 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4549EFFD; Sat, 18 Jan 2014 22:47:26 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2F7A51776; Sat, 18 Jan 2014 22:47:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IMlQvU079340; Sat, 18 Jan 2014 22:47:26 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IMlPWa079337; Sat, 18 Jan 2014 22:47:25 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201401182247.s0IMlPWa079337@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 18 Jan 2014 22:47:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260867 - stable/10/lib/libc/sys X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 22:47:26 -0000 Author: jilles Date: Sat Jan 18 22:47:25 2014 New Revision: 260867 URL: http://svnweb.freebsd.org/changeset/base/260867 Log: MFC r260556: Add some missing .Nm for newer syscalls in existing man pages. Modified: stable/10/lib/libc/sys/accept.2 stable/10/lib/libc/sys/chflags.2 stable/10/lib/libc/sys/pipe.2 Directory Properties: stable/10/ (props changed) Modified: stable/10/lib/libc/sys/accept.2 ============================================================================== --- stable/10/lib/libc/sys/accept.2 Sat Jan 18 22:33:49 2014 (r260866) +++ stable/10/lib/libc/sys/accept.2 Sat Jan 18 22:47:25 2014 (r260867) @@ -32,7 +32,8 @@ .Dt ACCEPT 2 .Os .Sh NAME -.Nm accept +.Nm accept , +.Nm accept4 .Nd accept a connection on a socket .Sh LIBRARY .Lb libc Modified: stable/10/lib/libc/sys/chflags.2 ============================================================================== --- stable/10/lib/libc/sys/chflags.2 Sat Jan 18 22:33:49 2014 (r260866) +++ stable/10/lib/libc/sys/chflags.2 Sat Jan 18 22:47:25 2014 (r260867) @@ -34,7 +34,8 @@ .Sh NAME .Nm chflags , .Nm lchflags , -.Nm fchflags +.Nm fchflags , +.Nm chflagsat .Nd set file flags .Sh LIBRARY .Lb libc Modified: stable/10/lib/libc/sys/pipe.2 ============================================================================== --- stable/10/lib/libc/sys/pipe.2 Sat Jan 18 22:33:49 2014 (r260866) +++ stable/10/lib/libc/sys/pipe.2 Sat Jan 18 22:47:25 2014 (r260867) @@ -32,7 +32,8 @@ .Dt PIPE 2 .Os .Sh NAME -.Nm pipe +.Nm pipe , +.Nm pipe2 .Nd create descriptor pair for interprocess communication .Sh LIBRARY .Lb libc From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 22:52:44 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E58982B2; Sat, 18 Jan 2014 22:52:43 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C5ACD17F7; Sat, 18 Jan 2014 22:52:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IMqhHX082530; Sat, 18 Jan 2014 22:52:43 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IMqhwh082529; Sat, 18 Jan 2014 22:52:43 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401182252.s0IMqhwh082529@svn.freebsd.org> From: Alexander Motin Date: Sat, 18 Jan 2014 22:52:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260868 - stable/9/sys/boot/i386/libi386 X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 22:52:44 -0000 Author: mav Date: Sat Jan 18 22:52:43 2014 New Revision: 260868 URL: http://svnweb.freebsd.org/changeset/base/260868 Log: MFC r245848 (by jhb): Always update the hw.uart.console hint anytime a change is made to the comconsole setup. Previously the hint would be set when if you set a custom port, but it would not be updated if you later set a custom speed. Also, leave the hw.uart.console hint mutable so it can be overridden or unset by the user if needed. Modified: stable/9/sys/boot/i386/libi386/comconsole.c Directory Properties: stable/9/ (props changed) stable/9/sys/ (props changed) stable/9/sys/boot/ (props changed) Modified: stable/9/sys/boot/i386/libi386/comconsole.c ============================================================================== --- stable/9/sys/boot/i386/libi386/comconsole.c Sat Jan 18 22:47:25 2014 (r260867) +++ stable/9/sys/boot/i386/libi386/comconsole.c Sat Jan 18 22:52:43 2014 (r260868) @@ -50,7 +50,6 @@ static int comc_init(int arg); static void comc_putchar(int c); static int comc_getchar(void); static int comc_getspeed(void); -static void set_hw_console_hint(void); static int comc_ischar(void); static int comc_parseint(const char *string); static uint32_t comc_parse_pcidev(const char *string); @@ -202,27 +201,14 @@ comc_port_set(struct env_var *ev, int fl } if ((comconsole.c_flags & (C_ACTIVEIN | C_ACTIVEOUT)) != 0 && - comc_port != port) { + comc_port != port) comc_setup(comc_curspeed, port); - set_hw_console_hint(); - } env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL); return (CMD_OK); } -static void -set_hw_console_hint(void) -{ - char intbuf[64]; - - unsetenv("hw.uart.console"); - sprintf(intbuf, "io:%d,br:%d", comc_port, comc_curspeed); - env_setenv("hw.uart.console", EV_VOLATILE, intbuf, - env_noset, env_nounset); -} - /* * Input: bus:dev:func[:bar]. If bar is not specified, it is 0x10. * Output: bar[24:16] bus[15:8] dev[7:3] func[2:0] @@ -288,7 +274,6 @@ comc_pcidev_handle(uint32_t locator) comc_port_set, env_nounset); comc_setup(comc_curspeed, port); - set_hw_console_hint(); comc_locator = locator; return (CMD_OK); @@ -318,8 +303,10 @@ static void comc_setup(int speed, int port) { static int TRY_COUNT = 1000000; + char intbuf[64]; int tries; + unsetenv("hw.uart.console"); comc_curspeed = speed; comc_port = port; @@ -334,9 +321,11 @@ comc_setup(int speed, int port) inb(comc_port + com_data); while (inb(comc_port + com_lsr) & LSR_RXRDY && ++tries < TRY_COUNT); - if (tries < TRY_COUNT) + if (tries < TRY_COUNT) { comconsole.c_flags |= (C_PRESENTIN | C_PRESENTOUT); - else + sprintf(intbuf, "io:%d,br:%d", comc_port, comc_curspeed); + env_setenv("hw.uart.console", EV_VOLATILE, intbuf, NULL, NULL); + } else comconsole.c_flags &= ~(C_PRESENTIN | C_PRESENTOUT); } From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 22:59:11 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 01BAF845; Sat, 18 Jan 2014 22:59:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C7F241836; Sat, 18 Jan 2014 22:59:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0IMxAeC083570; Sat, 18 Jan 2014 22:59:10 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0IMxA1F083569; Sat, 18 Jan 2014 22:59:10 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401182259.s0IMxA1F083569@svn.freebsd.org> From: Alexander Motin Date: Sat, 18 Jan 2014 22:59:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260869 - stable/9/sys/boot/pc98/libpc98 X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 22:59:11 -0000 Author: mav Date: Sat Jan 18 22:59:10 2014 New Revision: 260869 URL: http://svnweb.freebsd.org/changeset/base/260869 Log: MFC r251223 (by nyan): Always update the hw.uart.console hint. Modified: stable/9/sys/boot/pc98/libpc98/comconsole.c Directory Properties: stable/9/ (props changed) stable/9/sys/ (props changed) stable/9/sys/boot/ (props changed) Modified: stable/9/sys/boot/pc98/libpc98/comconsole.c ============================================================================== --- stable/9/sys/boot/pc98/libpc98/comconsole.c Sat Jan 18 22:52:43 2014 (r260868) +++ stable/9/sys/boot/pc98/libpc98/comconsole.c Sat Jan 18 22:59:10 2014 (r260869) @@ -50,7 +50,6 @@ static int comc_init(int arg); static void comc_putchar(int c); static int comc_getchar(void); static int comc_getspeed(void); -static void set_hw_console_hint(void); static int comc_ischar(void); static int comc_parseint(const char *string); static uint32_t comc_parse_pcidev(const char *string); @@ -202,27 +201,14 @@ comc_port_set(struct env_var *ev, int fl } if ((comconsole.c_flags & (C_ACTIVEIN | C_ACTIVEOUT)) != 0 && - comc_port != port) { + comc_port != port) comc_setup(comc_curspeed, port); - set_hw_console_hint(); - } env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL); return (CMD_OK); } -static void -set_hw_console_hint(void) -{ - char intbuf[64]; - - unsetenv("hw.uart.console"); - sprintf(intbuf, "io:%d,br:%d", comc_port, comc_curspeed); - env_setenv("hw.uart.console", EV_VOLATILE, intbuf, - env_noset, env_nounset); -} - /* * Input: bus:dev:func[:bar]. If bar is not specified, it is 0x10. * Output: bar[24:16] bus[15:8] dev[7:3] func[2:0] @@ -288,7 +274,6 @@ comc_pcidev_handle(uint32_t locator) comc_port_set, env_nounset); comc_setup(comc_curspeed, port); - set_hw_console_hint(); comc_locator = locator; return (CMD_OK); @@ -318,8 +303,10 @@ static void comc_setup(int speed, int port) { static int TRY_COUNT = 1000000; + char intbuf[64]; int tries; + unsetenv("hw.uart.console"); comc_curspeed = speed; comc_port = port; @@ -334,9 +321,11 @@ comc_setup(int speed, int port) inb(comc_port + com_data); while (inb(comc_port + com_lsr) & LSR_RXRDY && ++tries < TRY_COUNT); - if (tries < TRY_COUNT) + if (tries < TRY_COUNT) { comconsole.c_flags |= (C_PRESENTIN | C_PRESENTOUT); - else + sprintf(intbuf, "io:%d,br:%d", comc_port, comc_curspeed); + env_setenv("hw.uart.console", EV_VOLATILE, intbuf, NULL, NULL); + } else comconsole.c_flags &= ~(C_PRESENTIN | C_PRESENTOUT); } From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 23:24:53 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 71389CEA; Sat, 18 Jan 2014 23:24:53 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5BF0F19A7; Sat, 18 Jan 2014 23:24:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0INOrhG094671; Sat, 18 Jan 2014 23:24:53 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0INOpcY094658; Sat, 18 Jan 2014 23:24:51 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401182324.s0INOpcY094658@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Sat, 18 Jan 2014 23:24:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260870 - in head/sys: net ofed/drivers/infiniband/ulp/ipoib X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 23:24:53 -0000 Author: melifaro Date: Sat Jan 18 23:24:51 2014 New Revision: 260870 URL: http://svnweb.freebsd.org/changeset/base/260870 Log: Simplify filling sockaddr_dl structure for if_resolvemulti() callback providers. link_init_sdl() function can be used to fill most of the parameters. Use caller stack instead of allocation / freing memory for each request. Do not drop support for extra-long (probably non-existing) link-layer protocols by introducing link_alloc_sdl() (used by if_resolvemulti() callback) and link_free_sdl() (used by caller). Since this change breaks KBI, MFC requires slightly different approach (link_init_sdl() auto-allocating buffer if necessary to handle cases with unmodified if_resolvemulti() callers). MFC after: 2 weeks Modified: head/sys/net/ieee8023ad_lacp.c head/sys/net/if.c head/sys/net/if_arcsubr.c head/sys/net/if_dl.h head/sys/net/if_ethersubr.c head/sys/net/if_fddisubr.c head/sys/net/if_iso88025subr.c head/sys/net/if_lagg.c head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c Modified: head/sys/net/ieee8023ad_lacp.c ============================================================================== --- head/sys/net/ieee8023ad_lacp.c Sat Jan 18 22:59:10 2014 (r260869) +++ head/sys/net/ieee8023ad_lacp.c Sat Jan 18 23:24:51 2014 (r260870) @@ -522,11 +522,7 @@ lacp_port_create(struct lagg_port *lgp) boolean_t active = TRUE; /* XXX should be configurable */ boolean_t fast = FALSE; /* XXX should be configurable */ - bzero((char *)&sdl, sizeof(sdl)); - sdl.sdl_len = sizeof(sdl); - sdl.sdl_family = AF_LINK; - sdl.sdl_index = ifp->if_index; - sdl.sdl_type = IFT_ETHER; + link_init_sdl(ifp, (struct sockaddr *)&sdl, IFT_ETHER); sdl.sdl_alen = ETHER_ADDR_LEN; bcopy(ðermulticastaddr_slowprotocols, Modified: head/sys/net/if.c ============================================================================== --- head/sys/net/if.c Sat Jan 18 22:59:10 2014 (r260869) +++ head/sys/net/if.c Sat Jan 18 23:24:51 2014 (r260870) @@ -1888,6 +1888,38 @@ link_rtrequest(int cmd, struct rtentry * } } +struct sockaddr_dl * +link_alloc_sdl(size_t size, int flags) +{ + + return (malloc(size, M_TEMP, flags)); +} + +void +link_free_sdl(struct sockaddr *sa) +{ + free(sa, M_TEMP); +} + +/* + * Fills in given sdl with interface basic info. + * Returns pointer to filled sdl. + */ +struct sockaddr_dl * +link_init_sdl(struct ifnet *ifp, struct sockaddr *paddr, u_char iftype) +{ + struct sockaddr_dl *sdl; + + sdl = (struct sockaddr_dl *)paddr; + memset(sdl, 0, sizeof(struct sockaddr_dl)); + sdl->sdl_len = sizeof(struct sockaddr_dl); + sdl->sdl_family = AF_LINK; + sdl->sdl_index = ifp->if_index; + sdl->sdl_type = iftype; + + return (sdl); +} + /* * Mark an interface down and notify protocols of * the transition. @@ -2938,6 +2970,7 @@ if_addmulti(struct ifnet *ifp, struct so { struct ifmultiaddr *ifma, *ll_ifma; struct sockaddr *llsa; + struct sockaddr_dl sdl; int error; /* @@ -2957,12 +2990,18 @@ if_addmulti(struct ifnet *ifp, struct so /* * The address isn't already present; resolve the protocol address * into a link layer address, and then look that up, bump its - * refcount or allocate an ifma for that also. If 'llsa' was - * returned, we will need to free it later. + * refcount or allocate an ifma for that also. + * Most link layer resolving functions returns address data which + * fits inside default sockaddr_dl structure. However callback + * can allocate another sockaddr structure, in that case we need to + * free it later. */ llsa = NULL; ll_ifma = NULL; if (ifp->if_resolvemulti != NULL) { + /* Provide called function with buffer size information */ + sdl.sdl_len = sizeof(sdl); + llsa = (struct sockaddr *)&sdl; error = ifp->if_resolvemulti(ifp, &llsa, sa); if (error) goto unlock_out; @@ -3026,14 +3065,14 @@ if_addmulti(struct ifnet *ifp, struct so (void) (*ifp->if_ioctl)(ifp, SIOCADDMULTI, 0); } - if (llsa != NULL) - free(llsa, M_IFMADDR); + if ((llsa != NULL) && (llsa != (struct sockaddr *)&sdl)) + link_free_sdl(llsa); return (0); free_llsa_out: - if (llsa != NULL) - free(llsa, M_IFMADDR); + if ((llsa != NULL) && (llsa != (struct sockaddr *)&sdl)) + link_free_sdl(llsa); unlock_out: IF_ADDR_WUNLOCK(ifp); Modified: head/sys/net/if_arcsubr.c ============================================================================== --- head/sys/net/if_arcsubr.c Sat Jan 18 22:59:10 2014 (r260869) +++ head/sys/net/if_arcsubr.c Sat Jan 18 23:24:51 2014 (r260870) @@ -786,14 +786,7 @@ arc_resolvemulti(struct ifnet *ifp, stru sin = (struct sockaddr_in *)sa; if (!IN_MULTICAST(ntohl(sin->sin_addr.s_addr))) return EADDRNOTAVAIL; - sdl = malloc(sizeof *sdl, M_IFMADDR, - M_NOWAIT | M_ZERO); - if (sdl == NULL) - return ENOMEM; - sdl->sdl_len = sizeof *sdl; - sdl->sdl_family = AF_LINK; - sdl->sdl_index = ifp->if_index; - sdl->sdl_type = IFT_ARCNET; + sdl = link_init_sdl(ifp, *llsa, IFT_ETHER); sdl->sdl_alen = ARC_ADDR_LEN; *LLADDR(sdl) = 0; *llsa = (struct sockaddr *)sdl; @@ -814,14 +807,7 @@ arc_resolvemulti(struct ifnet *ifp, stru } if (!IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) return EADDRNOTAVAIL; - sdl = malloc(sizeof *sdl, M_IFMADDR, - M_NOWAIT | M_ZERO); - if (sdl == NULL) - return ENOMEM; - sdl->sdl_len = sizeof *sdl; - sdl->sdl_family = AF_LINK; - sdl->sdl_index = ifp->if_index; - sdl->sdl_type = IFT_ARCNET; + sdl = link_init_sdl(ifp, *llsa, IFT_ETHER); sdl->sdl_alen = ARC_ADDR_LEN; *LLADDR(sdl) = 0; *llsa = (struct sockaddr *)sdl; Modified: head/sys/net/if_dl.h ============================================================================== --- head/sys/net/if_dl.h Sat Jan 18 22:59:10 2014 (r260869) +++ head/sys/net/if_dl.h Sat Jan 18 23:24:51 2014 (r260870) @@ -69,6 +69,12 @@ struct sockaddr_dl { #define LLADDR(s) ((caddr_t)((s)->sdl_data + (s)->sdl_nlen)) #define LLINDEX(s) ((s)->sdl_index) + +struct ifnet; +struct sockaddr_dl *link_alloc_sdl(size_t, int); +void link_free_sdl(struct sockaddr *sa); +struct sockaddr_dl *link_init_sdl(struct ifnet *, struct sockaddr *, u_char); + #ifndef _KERNEL #include Modified: head/sys/net/if_ethersubr.c ============================================================================== --- head/sys/net/if_ethersubr.c Sat Jan 18 22:59:10 2014 (r260869) +++ head/sys/net/if_ethersubr.c Sat Jan 18 23:24:51 2014 (r260870) @@ -1168,14 +1168,7 @@ ether_resolvemulti(struct ifnet *ifp, st sin = (struct sockaddr_in *)sa; if (!IN_MULTICAST(ntohl(sin->sin_addr.s_addr))) return EADDRNOTAVAIL; - sdl = malloc(sizeof *sdl, M_IFMADDR, - M_NOWAIT|M_ZERO); - if (sdl == NULL) - return ENOMEM; - sdl->sdl_len = sizeof *sdl; - sdl->sdl_family = AF_LINK; - sdl->sdl_index = ifp->if_index; - sdl->sdl_type = IFT_ETHER; + sdl = link_init_sdl(ifp, *llsa, IFT_ETHER); sdl->sdl_alen = ETHER_ADDR_LEN; e_addr = LLADDR(sdl); ETHER_MAP_IP_MULTICAST(&sin->sin_addr, e_addr); @@ -1197,14 +1190,7 @@ ether_resolvemulti(struct ifnet *ifp, st } if (!IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) return EADDRNOTAVAIL; - sdl = malloc(sizeof *sdl, M_IFMADDR, - M_NOWAIT|M_ZERO); - if (sdl == NULL) - return (ENOMEM); - sdl->sdl_len = sizeof *sdl; - sdl->sdl_family = AF_LINK; - sdl->sdl_index = ifp->if_index; - sdl->sdl_type = IFT_ETHER; + sdl = link_init_sdl(ifp, *llsa, IFT_ETHER); sdl->sdl_alen = ETHER_ADDR_LEN; e_addr = LLADDR(sdl); ETHER_MAP_IPV6_MULTICAST(&sin6->sin6_addr, e_addr); Modified: head/sys/net/if_fddisubr.c ============================================================================== --- head/sys/net/if_fddisubr.c Sat Jan 18 22:59:10 2014 (r260869) +++ head/sys/net/if_fddisubr.c Sat Jan 18 23:24:51 2014 (r260870) @@ -729,14 +729,7 @@ fddi_resolvemulti(ifp, llsa, sa) sin = (struct sockaddr_in *)sa; if (!IN_MULTICAST(ntohl(sin->sin_addr.s_addr))) return (EADDRNOTAVAIL); - sdl = malloc(sizeof *sdl, M_IFMADDR, - M_NOWAIT | M_ZERO); - if (sdl == NULL) - return (ENOMEM); - sdl->sdl_len = sizeof *sdl; - sdl->sdl_family = AF_LINK; - sdl->sdl_index = ifp->if_index; - sdl->sdl_type = IFT_FDDI; + sdl = link_init_sdl(ifp, *llsa, IFT_FDDI); sdl->sdl_nlen = 0; sdl->sdl_alen = FDDI_ADDR_LEN; sdl->sdl_slen = 0; @@ -760,14 +753,7 @@ fddi_resolvemulti(ifp, llsa, sa) } if (!IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) return (EADDRNOTAVAIL); - sdl = malloc(sizeof *sdl, M_IFMADDR, - M_NOWAIT | M_ZERO); - if (sdl == NULL) - return (ENOMEM); - sdl->sdl_len = sizeof *sdl; - sdl->sdl_family = AF_LINK; - sdl->sdl_index = ifp->if_index; - sdl->sdl_type = IFT_FDDI; + sdl = link_init_sdl(ifp, *llsa, IFT_FDDI); sdl->sdl_nlen = 0; sdl->sdl_alen = FDDI_ADDR_LEN; sdl->sdl_slen = 0; Modified: head/sys/net/if_iso88025subr.c ============================================================================== --- head/sys/net/if_iso88025subr.c Sat Jan 18 22:59:10 2014 (r260869) +++ head/sys/net/if_iso88025subr.c Sat Jan 18 23:24:51 2014 (r260870) @@ -721,14 +721,7 @@ iso88025_resolvemulti (ifp, llsa, sa) if (!IN_MULTICAST(ntohl(sin->sin_addr.s_addr))) { return (EADDRNOTAVAIL); } - sdl = malloc(sizeof *sdl, M_IFMADDR, - M_NOWAIT|M_ZERO); - if (sdl == NULL) - return (ENOMEM); - sdl->sdl_len = sizeof *sdl; - sdl->sdl_family = AF_LINK; - sdl->sdl_index = ifp->if_index; - sdl->sdl_type = IFT_ISO88025; + sdl = link_init_sdl(ifp, *llsa, IFT_ISO88025); sdl->sdl_alen = ISO88025_ADDR_LEN; e_addr = LLADDR(sdl); ETHER_MAP_IP_MULTICAST(&sin->sin_addr, e_addr); @@ -751,14 +744,7 @@ iso88025_resolvemulti (ifp, llsa, sa) if (!IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) { return (EADDRNOTAVAIL); } - sdl = malloc(sizeof *sdl, M_IFMADDR, - M_NOWAIT|M_ZERO); - if (sdl == NULL) - return (ENOMEM); - sdl->sdl_len = sizeof *sdl; - sdl->sdl_family = AF_LINK; - sdl->sdl_index = ifp->if_index; - sdl->sdl_type = IFT_ISO88025; + sdl = link_init_sdl(ifp, *llsa, IFT_ISO88025); sdl->sdl_alen = ISO88025_ADDR_LEN; e_addr = LLADDR(sdl); ETHER_MAP_IPV6_MULTICAST(&sin6->sin6_addr, e_addr); Modified: head/sys/net/if_lagg.c ============================================================================== --- head/sys/net/if_lagg.c Sat Jan 18 22:59:10 2014 (r260869) +++ head/sys/net/if_lagg.c Sat Jan 18 23:24:51 2014 (r260870) @@ -1214,12 +1214,8 @@ lagg_ether_cmdmulti(struct lagg_port *lp LAGG_WLOCK_ASSERT(sc); - bzero((char *)&sdl, sizeof(sdl)); - sdl.sdl_len = sizeof(sdl); - sdl.sdl_family = AF_LINK; - sdl.sdl_type = IFT_ETHER; + link_init_sdl(ifp, (struct sockaddr *)&sdl, IFT_ETHER); sdl.sdl_alen = ETHER_ADDR_LEN; - sdl.sdl_index = ifp->if_index; if (set) { TAILQ_FOREACH(ifma, &scifp->if_multiaddrs, ifma_link) { Modified: head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c ============================================================================== --- head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c Sat Jan 18 22:59:10 2014 (r260869) +++ head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c Sat Jan 18 23:24:51 2014 (r260870) @@ -1490,14 +1490,7 @@ ipoib_resolvemulti(struct ifnet *ifp, st sin = (struct sockaddr_in *)sa; if (!IN_MULTICAST(ntohl(sin->sin_addr.s_addr))) return EADDRNOTAVAIL; - sdl = malloc(sizeof *sdl, M_IFMADDR, - M_NOWAIT|M_ZERO); - if (sdl == NULL) - return ENOMEM; - sdl->sdl_len = sizeof *sdl; - sdl->sdl_family = AF_LINK; - sdl->sdl_index = ifp->if_index; - sdl->sdl_type = IFT_INFINIBAND; + sdl = link_init_sdl(ifp, *llsa, IFT_INFINIBAND); sdl->sdl_alen = INFINIBAND_ALEN; e_addr = LLADDR(sdl); ip_ib_mc_map(sin->sin_addr.s_addr, ifp->if_broadcastaddr, @@ -1517,14 +1510,7 @@ ipoib_resolvemulti(struct ifnet *ifp, st return EADDRNOTAVAIL; if (!IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) return EADDRNOTAVAIL; - sdl = malloc(sizeof *sdl, M_IFMADDR, - M_NOWAIT|M_ZERO); - if (sdl == NULL) - return (ENOMEM); - sdl->sdl_len = sizeof *sdl; - sdl->sdl_family = AF_LINK; - sdl->sdl_index = ifp->if_index; - sdl->sdl_type = IFT_INFINIBAND; + sdl = link_init_sdl(ifp, *llsa, IFT_INFINIBAND); sdl->sdl_alen = INFINIBAND_ALEN; e_addr = LLADDR(sdl); ipv6_ib_mc_map(&sin6->sin6_addr, ifp->if_broadcastaddr, e_addr); From owner-svn-src-all@FreeBSD.ORG Sat Jan 18 23:48:21 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 11008F96; Sat, 18 Jan 2014 23:48:21 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F12C81AC8; Sat, 18 Jan 2014 23:48:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0INmKkG002467; Sat, 18 Jan 2014 23:48:20 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0INmK8S002466; Sat, 18 Jan 2014 23:48:20 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201401182348.s0INmK8S002466@svn.freebsd.org> From: Adrian Chadd Date: Sat, 18 Jan 2014 23:48:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260871 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 23:48:21 -0000 Author: adrian Date: Sat Jan 18 23:48:20 2014 New Revision: 260871 URL: http://svnweb.freebsd.org/changeset/base/260871 Log: If the flowid is available for the mbuf that finalised the creation of a syncache connection, copy it into the inp_flowid field. Without this, an incoming TCP connection won't have an inp_flowid marked until some data comes in, and this means that things like the per-CPU TCP timer option will choose a different CPU for the timer work. (It also means that if one grabbed the flowid via an ioctl from userland, it won't be available until some data has been received.) Sponsored by: Netflix, Inc. Modified: head/sys/netinet/tcp_syncache.c Modified: head/sys/netinet/tcp_syncache.c ============================================================================== --- head/sys/netinet/tcp_syncache.c Sat Jan 18 23:24:51 2014 (r260870) +++ head/sys/netinet/tcp_syncache.c Sat Jan 18 23:48:20 2014 (r260871) @@ -722,6 +722,16 @@ syncache_socket(struct syncache *sc, str #endif /* + * If there's an mbuf and it has a flowid, then let's initialise the + * inp with that particular flowid. + */ + if (m != NULL && m->m_flags & M_FLOWID) { + inp->inp_flags |= INP_HW_FLOWID; + inp->inp_flags &= ~INP_SW_FLOWID; + inp->inp_flowid = m->m_pkthdr.flowid; + } + + /* * Install in the reservation hash table for now, but don't yet * install a connection group since the full 4-tuple isn't yet * configured.