From owner-svn-src-projects@FreeBSD.ORG Mon Dec 5 15:16:48 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 19A27106566B; Mon, 5 Dec 2011 15:16:48 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F3F1D8FC0C; Mon, 5 Dec 2011 15:16:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB5FGlvN042472; Mon, 5 Dec 2011 15:16:47 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB5FGl6f042470; Mon, 5 Dec 2011 15:16:47 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201112051516.pB5FGl6f042470@svn.freebsd.org> From: Alexander Motin Date: Mon, 5 Dec 2011 15:16:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228279 - projects/head_mfi/sys/dev/mfi X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Dec 2011 15:16:48 -0000 Author: mav Date: Mon Dec 5 15:16:47 2011 New Revision: 228279 URL: http://svn.freebsd.org/changeset/base/228279 Log: Remove superfluous !TAILQ_EMPTY() checks before TAILQ_FOREACH(). Modified: projects/head_mfi/sys/dev/mfi/mfi.c Modified: projects/head_mfi/sys/dev/mfi/mfi.c ============================================================================== --- projects/head_mfi/sys/dev/mfi/mfi.c Mon Dec 5 15:11:35 2011 (r228278) +++ projects/head_mfi/sys/dev/mfi/mfi.c Mon Dec 5 15:16:47 2011 (r228279) @@ -1335,32 +1335,28 @@ mfi_syspdprobe(struct mfi_softc *sc) hdr->cmd_status); goto out; } + /* Get each PD and add it to the system */ for (i=0;icount;i++) { if(pdlist->addr[i].device_id == pdlist->addr[i].encl_device_id) goto skip_sys_pd_add; - /* Get each PD and add it to the system */ - if (!TAILQ_EMPTY(&sc->mfi_syspd_tqh)) { - TAILQ_FOREACH(syspd, &sc->mfi_syspd_tqh,pd_link) { + TAILQ_FOREACH(syspd, &sc->mfi_syspd_tqh,pd_link) { if (syspd->pd_id == pdlist->addr[i].device_id) goto skip_sys_pd_add; - } } mfi_add_sys_pd(sc,pdlist->addr[i].device_id); skip_sys_pd_add:; } /* Delete SYSPD's whose state has been changed */ - if (!TAILQ_EMPTY(&sc->mfi_syspd_tqh)) { - TAILQ_FOREACH(syspd, &sc->mfi_syspd_tqh,pd_link) { - for (i=0;icount;i++) { - if (syspd->pd_id == pdlist->addr[i].device_id) - goto skip_sys_pd_delete; - } - mtx_lock(&Giant); - device_delete_child(sc->mfi_dev,syspd->pd_dev); - mtx_unlock(&Giant); -skip_sys_pd_delete:; + TAILQ_FOREACH(syspd, &sc->mfi_syspd_tqh,pd_link) { + for (i=0;icount;i++) { + if (syspd->pd_id == pdlist->addr[i].device_id) + goto skip_sys_pd_delete; } + mtx_lock(&Giant); + device_delete_child(sc->mfi_dev,syspd->pd_dev); + mtx_unlock(&Giant); +skip_sys_pd_delete:; } out: if (pdlist) @@ -1484,27 +1480,24 @@ mfi_decode_evt(struct mfi_softc *sc, str case MR_EVT_ARGS_LD_STATE: /* During load time driver reads all the events starting from the one that * has been logged after shutdown. Avoid these old events. - */ - if (!TAILQ_EMPTY(&sc->mfi_ld_tqh)) { - if (detail->args.ld_state.new_state == MFI_LD_STATE_OFFLINE ) { - /* Remove the LD */ - struct mfi_disk *ld = NULL; - TAILQ_FOREACH(ld, &sc->mfi_ld_tqh, ld_link) { - if (ld->ld_id == detail->args.ld_state.ld.target_id) - break; - } - /* - Fix: for kernel panics when SSCD is removed - KASSERT(ld != NULL, ("volume dissappeared")); - */ - if(ld != NULL) - { - mtx_lock(&Giant); - device_delete_child(sc->mfi_dev, ld->ld_dev); - mtx_unlock(&Giant); - } + */ + if (detail->args.ld_state.new_state == MFI_LD_STATE_OFFLINE ) { + /* Remove the LD */ + struct mfi_disk *ld; + TAILQ_FOREACH(ld, &sc->mfi_ld_tqh, ld_link) { + if (ld->ld_id == detail->args.ld_state.ld.target_id) + break; } - } + /* + Fix: for kernel panics when SSCD is removed + KASSERT(ld != NULL, ("volume dissappeared")); + */ + if(ld != NULL) { + mtx_lock(&Giant); + device_delete_child(sc->mfi_dev, ld->ld_dev); + mtx_unlock(&Giant); + } + } break; case MR_EVT_ARGS_PD: #define MR_EVT_PD_REMOVED 0x0070 @@ -1512,16 +1505,14 @@ mfi_decode_evt(struct mfi_softc *sc, str if (detail->code == MR_EVT_PD_REMOVED) { if (probe_sys_pd) { /* If the removed device is a SYSPD then delete it */ - if (!TAILQ_EMPTY(&sc->mfi_syspd_tqh)) { - TAILQ_FOREACH(syspd,&sc->mfi_syspd_tqh,pd_link) { + TAILQ_FOREACH(syspd,&sc->mfi_syspd_tqh,pd_link) { if (syspd->pd_id == detail->args.pd.device_id) { mtx_lock(&Giant); device_delete_child(sc->mfi_dev,syspd->pd_dev); mtx_unlock(&Giant); break; } - } - } + } } } if (detail->code == MR_EVT_PD_INSERTED) { @@ -2544,11 +2535,9 @@ mfi_check_command_pre(struct mfi_softc * mbox = (uint16_t *) cm->cm_frame->dcmd.mbox; syspd_id = mbox[0]; if (mbox[2] == MFI_PD_STATE_UNCONFIGURED_GOOD) { - if (!TAILQ_EMPTY(&sc->mfi_syspd_tqh)) { - TAILQ_FOREACH(syspd,&sc->mfi_syspd_tqh,pd_link) { + TAILQ_FOREACH(syspd,&sc->mfi_syspd_tqh,pd_link) { if(syspd->pd_id == syspd_id) break; - } } } else @@ -2611,11 +2600,9 @@ mfi_check_command_post(struct mfi_softc mbox = (uint16_t *) cm->cm_frame->dcmd.mbox; syspd_id = mbox[0]; if (mbox[2] == MFI_PD_STATE_UNCONFIGURED_GOOD) { - if (!TAILQ_EMPTY(&sc->mfi_syspd_tqh)) { - TAILQ_FOREACH(syspd,&sc->mfi_syspd_tqh,pd_link) { + TAILQ_FOREACH(syspd,&sc->mfi_syspd_tqh,pd_link) { if(syspd->pd_id == syspd_id) break; - } } } else From owner-svn-src-projects@FreeBSD.ORG Mon Dec 5 17:44:14 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0A865106564A; Mon, 5 Dec 2011 17:44:14 +0000 (UTC) (envelope-from lev@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EA7C18FC15; Mon, 5 Dec 2011 17:44:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB5HiDHh050964; Mon, 5 Dec 2011 17:44:13 GMT (envelope-from lev@svn.freebsd.org) Received: (from lev@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB5HiD7r050955; Mon, 5 Dec 2011 17:44:13 GMT (envelope-from lev@svn.freebsd.org) Message-Id: <201112051744.pB5HiD7r050955@svn.freebsd.org> From: "Lev A. Serebryakov" Date: Mon, 5 Dec 2011 17:44:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228285 - in projects/geom-events: . bin/sh bin/test cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/cmd/zpool cddl/contrib/opensolaris/cmd/zs... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Dec 2011 17:44:14 -0000 Author: lev (ports committer) Date: Mon Dec 5 17:44:12 2011 New Revision: 228285 URL: http://svn.freebsd.org/changeset/base/228285 Log: Merge from head Added: projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c - copied unchanged from r228284, head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c projects/geom-events/contrib/gperf/configure.ac - copied unchanged from r228284, head/contrib/gperf/configure.ac projects/geom-events/contrib/gperf/doc/configure.ac - copied unchanged from r228284, head/contrib/gperf/doc/configure.ac projects/geom-events/contrib/gperf/lib/configure.ac - copied unchanged from r228284, head/contrib/gperf/lib/configure.ac projects/geom-events/contrib/gperf/lib/getline.cc - copied unchanged from r228284, head/contrib/gperf/lib/getline.cc projects/geom-events/contrib/gperf/lib/getline.h - copied unchanged from r228284, head/contrib/gperf/lib/getline.h projects/geom-events/contrib/gperf/src/config.h_vms - copied unchanged from r228284, head/contrib/gperf/src/config.h_vms projects/geom-events/contrib/gperf/src/configure.ac - copied unchanged from r228284, head/contrib/gperf/src/configure.ac projects/geom-events/contrib/gperf/src/input.cc - copied unchanged from r228284, head/contrib/gperf/src/input.cc projects/geom-events/contrib/gperf/src/input.h - copied unchanged from r228284, head/contrib/gperf/src/input.h projects/geom-events/contrib/gperf/src/keyword-list.cc - copied unchanged from r228284, head/contrib/gperf/src/keyword-list.cc projects/geom-events/contrib/gperf/src/keyword-list.h - copied unchanged from r228284, head/contrib/gperf/src/keyword-list.h projects/geom-events/contrib/gperf/src/keyword-list.icc - copied unchanged from r228284, head/contrib/gperf/src/keyword-list.icc projects/geom-events/contrib/gperf/src/keyword.cc - copied unchanged from r228284, head/contrib/gperf/src/keyword.cc projects/geom-events/contrib/gperf/src/keyword.h - copied unchanged from r228284, head/contrib/gperf/src/keyword.h projects/geom-events/contrib/gperf/src/keyword.icc - copied unchanged from r228284, head/contrib/gperf/src/keyword.icc projects/geom-events/contrib/gperf/src/output.cc - copied unchanged from r228284, head/contrib/gperf/src/output.cc projects/geom-events/contrib/gperf/src/output.h - copied unchanged from r228284, head/contrib/gperf/src/output.h projects/geom-events/contrib/gperf/src/positions.cc - copied unchanged from r228284, head/contrib/gperf/src/positions.cc projects/geom-events/contrib/gperf/src/positions.h - copied unchanged from r228284, head/contrib/gperf/src/positions.h projects/geom-events/contrib/gperf/src/positions.icc - copied unchanged from r228284, head/contrib/gperf/src/positions.icc projects/geom-events/contrib/gperf/src/search.cc - copied unchanged from r228284, head/contrib/gperf/src/search.cc projects/geom-events/contrib/gperf/src/search.h - copied unchanged from r228284, head/contrib/gperf/src/search.h projects/geom-events/contrib/libc++/ - copied from r228284, head/contrib/libc++/ - copied from r228284, head/contrib/libcxxrt/ projects/geom-events/lib/libc++/ - copied from r228284, head/lib/libc++/ projects/geom-events/lib/libcxxrt/ - copied from r228284, head/lib/libcxxrt/ projects/geom-events/sbin/camcontrol/fwdownload.c - copied unchanged from r228284, head/sbin/camcontrol/fwdownload.c projects/geom-events/share/man/man4/capsicum.4 - copied unchanged from r228284, head/share/man/man4/capsicum.4 projects/geom-events/share/man/man4/ffclock.4 - copied unchanged from r228284, head/share/man/man4/ffclock.4 projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype2s.c - copied unchanged from r228284, head/sys/contrib/dev/acpica/compiler/aslrestype2s.c projects/geom-events/sys/contrib/dev/acpica/disassembler/dmresrcl2.c - copied unchanged from r228284, head/sys/contrib/dev/acpica/disassembler/dmresrcl2.c projects/geom-events/sys/contrib/dev/acpica/include/actbl3.h - copied unchanged from r228284, head/sys/contrib/dev/acpica/include/actbl3.h projects/geom-events/sys/contrib/dev/acpica/os_specific/ - copied from r228284, head/sys/contrib/dev/acpica/os_specific/ projects/geom-events/sys/contrib/dev/acpica/resources/rsserial.c - copied unchanged from r228284, head/sys/contrib/dev/acpica/resources/rsserial.c projects/geom-events/sys/contrib/dev/acpica/utilities/utxfmutex.c - copied unchanged from r228284, head/sys/contrib/dev/acpica/utilities/utxfmutex.c projects/geom-events/sys/sparc64/sparc64/cam_machdep.c - copied unchanged from r228284, head/sys/sparc64/sparc64/cam_machdep.c projects/geom-events/tools/build/options/WITH_CTF - copied unchanged from r228284, head/tools/build/options/WITH_CTF projects/geom-events/tools/build/options/WITH_LIBCPLUSPLUS - copied unchanged from r228284, head/tools/build/options/WITH_LIBCPLUSPLUS projects/geom-events/tools/regression/bin/sh/builtins/case11.0 - copied unchanged from r228284, head/tools/regression/bin/sh/builtins/case11.0 projects/geom-events/tools/regression/bin/sh/builtins/case12.0 - copied unchanged from r228284, head/tools/regression/bin/sh/builtins/case12.0 projects/geom-events/tools/regression/pipe/pipe-ino.c - copied unchanged from r228284, head/tools/regression/pipe/pipe-ino.c projects/geom-events/tools/regression/sbin/dhclient/ - copied from r228284, head/tools/regression/sbin/dhclient/ projects/geom-events/tools/regression/usr.bin/make/execution/ - copied from r228284, head/tools/regression/usr.bin/make/execution/ projects/geom-events/tools/tinder.sh - copied unchanged from r228284, head/tools/tinder.sh projects/geom-events/usr.bin/m4/lib/ - copied from r228284, head/usr.bin/m4/lib/ projects/geom-events/usr.bin/m4/parser.y - copied unchanged from r228284, head/usr.bin/m4/parser.y projects/geom-events/usr.bin/m4/tokenizer.l - copied unchanged from r228284, head/usr.bin/m4/tokenizer.l projects/geom-events/usr.bin/procstat/procstat_rlimit.c - copied unchanged from r228284, head/usr.bin/procstat/procstat_rlimit.c Directory Properties: projects/geom-events/contrib/libcxxrt/ (props changed) Replaced: projects/geom-events/contrib/gperf/doc/gperf.texi - copied unchanged from r228284, head/contrib/gperf/doc/gperf.texi projects/geom-events/contrib/gperf/doc/gpl.texinfo - copied unchanged from r228284, head/contrib/gperf/doc/gpl.texinfo Deleted: projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_graph.c projects/geom-events/contrib/gperf/acconfig.h projects/geom-events/contrib/gperf/configure.in projects/geom-events/contrib/gperf/doc/configure.in projects/geom-events/contrib/gperf/doc/texinfo.tex projects/geom-events/contrib/gperf/lib/configure.in projects/geom-events/contrib/gperf/src/configure.in projects/geom-events/contrib/gperf/src/gen-perf.cc projects/geom-events/contrib/gperf/src/gen-perf.h projects/geom-events/contrib/gperf/src/iterator.cc projects/geom-events/contrib/gperf/src/iterator.h projects/geom-events/contrib/gperf/src/key-list.cc projects/geom-events/contrib/gperf/src/key-list.h projects/geom-events/contrib/gperf/src/list-node.cc projects/geom-events/contrib/gperf/src/list-node.h projects/geom-events/contrib/gperf/src/new.cc projects/geom-events/contrib/gperf/src/read-line.cc projects/geom-events/contrib/gperf/src/read-line.h projects/geom-events/contrib/gperf/src/read-line.icc projects/geom-events/contrib/gperf/src/trace.cc projects/geom-events/contrib/gperf/src/trace.h projects/geom-events/contrib/gperf/src/vectors.cc projects/geom-events/contrib/gperf/src/vectors.h projects/geom-events/contrib/gperf/tests/ projects/geom-events/gnu/lib/libodialog/ projects/geom-events/share/man/man4/amd.4 projects/geom-events/sys/contrib/dev/acpica/osunixxf.c projects/geom-events/sys/contrib/dev/acpica/tools/ projects/geom-events/sys/dev/amd/ projects/geom-events/sys/modules/amd/ projects/geom-events/usr.sbin/sade/config.c projects/geom-events/usr.sbin/sade/dispatch.c Modified: projects/geom-events/Makefile.inc1 projects/geom-events/ObsoleteFiles.inc projects/geom-events/UPDATING projects/geom-events/bin/sh/eval.c projects/geom-events/bin/test/test.c projects/geom-events/cddl/contrib/opensolaris/cmd/zdb/zdb.8 projects/geom-events/cddl/contrib/opensolaris/cmd/zfs/zfs.8 projects/geom-events/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c projects/geom-events/cddl/contrib/opensolaris/cmd/zpool/zpool.8 projects/geom-events/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c projects/geom-events/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.1 projects/geom-events/cddl/contrib/opensolaris/cmd/ztest/ztest.c projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c projects/geom-events/cddl/lib/drti/Makefile projects/geom-events/cddl/lib/libzfs/Makefile projects/geom-events/contrib/gperf/AUTHORS projects/geom-events/contrib/gperf/COPYING projects/geom-events/contrib/gperf/ChangeLog projects/geom-events/contrib/gperf/FREEBSD-Xlist projects/geom-events/contrib/gperf/INSTALL projects/geom-events/contrib/gperf/Makefile.devel projects/geom-events/contrib/gperf/Makefile.in projects/geom-events/contrib/gperf/NEWS projects/geom-events/contrib/gperf/README projects/geom-events/contrib/gperf/aclocal.m4 projects/geom-events/contrib/gperf/configure projects/geom-events/contrib/gperf/doc/Makefile.in projects/geom-events/contrib/gperf/doc/configure projects/geom-events/contrib/gperf/doc/gperf.1 projects/geom-events/contrib/gperf/doc/help2man projects/geom-events/contrib/gperf/lib/Makefile.in projects/geom-events/contrib/gperf/lib/configure projects/geom-events/contrib/gperf/lib/hash.cc projects/geom-events/contrib/gperf/lib/hash.h projects/geom-events/contrib/gperf/src/Makefile.in projects/geom-events/contrib/gperf/src/bool-array.cc projects/geom-events/contrib/gperf/src/bool-array.h projects/geom-events/contrib/gperf/src/bool-array.icc projects/geom-events/contrib/gperf/src/config.h.in projects/geom-events/contrib/gperf/src/configure projects/geom-events/contrib/gperf/src/hash-table.cc projects/geom-events/contrib/gperf/src/hash-table.h projects/geom-events/contrib/gperf/src/main.cc projects/geom-events/contrib/gperf/src/options.cc projects/geom-events/contrib/gperf/src/options.h projects/geom-events/contrib/gperf/src/options.icc projects/geom-events/contrib/gperf/src/version.cc projects/geom-events/contrib/gperf/src/version.h projects/geom-events/etc/devd/apple.conf projects/geom-events/etc/mtree/BSD.include.dist projects/geom-events/etc/rc.d/kld projects/geom-events/gnu/lib/Makefile projects/geom-events/gnu/usr.bin/dialog/Makefile projects/geom-events/gnu/usr.bin/gperf/Makefile projects/geom-events/gnu/usr.bin/gperf/config.h projects/geom-events/kerberos5/Makefile.inc projects/geom-events/kerberos5/lib/libhdb/Makefile projects/geom-events/kerberos5/usr.bin/kadmin/Makefile projects/geom-events/kerberos5/usr.sbin/ktutil/Makefile projects/geom-events/lib/Makefile projects/geom-events/lib/libc/gen/_pthread_stubs.c projects/geom-events/lib/libc/gen/syslog.c projects/geom-events/lib/libc/locale/duplocale.3 projects/geom-events/lib/libc/locale/freelocale.3 projects/geom-events/lib/libc/locale/localeconv.3 projects/geom-events/lib/libc/locale/newlocale.3 projects/geom-events/lib/libc/locale/querylocale.3 projects/geom-events/lib/libc/locale/uselocale.3 projects/geom-events/lib/libc/locale/wctype.c projects/geom-events/lib/libc/locale/xlocale.3 projects/geom-events/lib/libc/string/strcasecmp.c projects/geom-events/lib/libc/string/strcmp.c projects/geom-events/lib/libc/string/strcoll.c projects/geom-events/lib/libc/string/strncmp.c projects/geom-events/lib/libc/sys/cap_enter.2 projects/geom-events/lib/libc/sys/cap_new.2 projects/geom-events/lib/libedit/edit/readline/Makefile projects/geom-events/lib/libedit/edit/readline/readline.h projects/geom-events/lib/libpam/modules/Makefile.inc projects/geom-events/lib/libpam/modules/pam_unix/Makefile projects/geom-events/lib/libusb/libusb10.c projects/geom-events/release/doc/en_US.ISO8859-1/hardware/article.sgml projects/geom-events/rescue/rescue/Makefile projects/geom-events/sbin/camcontrol/Makefile projects/geom-events/sbin/camcontrol/camcontrol.8 projects/geom-events/sbin/camcontrol/camcontrol.c projects/geom-events/sbin/camcontrol/camcontrol.h projects/geom-events/sbin/camcontrol/util.c projects/geom-events/sbin/dhclient/clparse.c projects/geom-events/sbin/dhclient/dhclient-script projects/geom-events/sbin/dhclient/dhclient.c projects/geom-events/sbin/dhclient/dhcp-options.5 projects/geom-events/sbin/dhclient/dhcp.h projects/geom-events/sbin/dhclient/options.c projects/geom-events/sbin/dhclient/tables.c projects/geom-events/sbin/sysctl/sysctl.c projects/geom-events/share/man/man4/Makefile projects/geom-events/share/man/man4/ahci.4 projects/geom-events/share/man/man4/bge.4 projects/geom-events/share/man/man4/netmap.4 projects/geom-events/share/man/man5/src.conf.5 projects/geom-events/share/misc/committers-src.dot projects/geom-events/share/mk/bsd.lib.mk projects/geom-events/share/mk/bsd.libnames.mk projects/geom-events/share/mk/bsd.own.mk projects/geom-events/share/mk/bsd.prog.mk projects/geom-events/share/mk/sys.mk projects/geom-events/sys/amd64/conf/NOTES projects/geom-events/sys/arm/mv/common.c projects/geom-events/sys/arm/mv/mv_machdep.c projects/geom-events/sys/boot/i386/zfsboot/zfsboot.c projects/geom-events/sys/boot/zfs/zfsimpl.c projects/geom-events/sys/cam/cam_xpt.c projects/geom-events/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c projects/geom-events/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.h projects/geom-events/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deadlist.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_deleg.h projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/sys/sysevent/eventdefs.h projects/geom-events/sys/compat/linprocfs/linprocfs.c projects/geom-events/sys/conf/NOTES projects/geom-events/sys/conf/files projects/geom-events/sys/conf/files.amd64 projects/geom-events/sys/conf/files.sparc64 projects/geom-events/sys/conf/kern.mk projects/geom-events/sys/conf/kern.post.mk projects/geom-events/sys/conf/kern.pre.mk projects/geom-events/sys/conf/kmod.mk projects/geom-events/sys/conf/makeLINT.mk projects/geom-events/sys/conf/newvers.sh projects/geom-events/sys/conf/options projects/geom-events/sys/contrib/dev/acpica/acpica_prep.sh projects/geom-events/sys/contrib/dev/acpica/changes.txt projects/geom-events/sys/contrib/dev/acpica/common/adisasm.c projects/geom-events/sys/contrib/dev/acpica/common/adwalk.c projects/geom-events/sys/contrib/dev/acpica/common/dmrestag.c projects/geom-events/sys/contrib/dev/acpica/common/dmtable.c projects/geom-events/sys/contrib/dev/acpica/common/dmtbdump.c projects/geom-events/sys/contrib/dev/acpica/common/dmtbinfo.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslanalyze.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslcodegen.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslcompile.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/geom-events/sys/contrib/dev/acpica/compiler/aslcompiler.l projects/geom-events/sys/contrib/dev/acpica/compiler/aslcompiler.y projects/geom-events/sys/contrib/dev/acpica/compiler/asldefine.h projects/geom-events/sys/contrib/dev/acpica/compiler/aslerror.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslfiles.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslglobal.h projects/geom-events/sys/contrib/dev/acpica/compiler/asllisting.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslload.c projects/geom-events/sys/contrib/dev/acpica/compiler/asllookup.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslmain.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslmap.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslmessages.h projects/geom-events/sys/contrib/dev/acpica/compiler/aslopcodes.c projects/geom-events/sys/contrib/dev/acpica/compiler/asloperands.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslpredef.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslresource.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype1.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype1i.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype2.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype2d.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype2e.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype2q.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype2w.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslstubs.c projects/geom-events/sys/contrib/dev/acpica/compiler/asltransform.c projects/geom-events/sys/contrib/dev/acpica/compiler/asltree.c projects/geom-events/sys/contrib/dev/acpica/compiler/asltypes.h projects/geom-events/sys/contrib/dev/acpica/compiler/aslutils.c projects/geom-events/sys/contrib/dev/acpica/compiler/aslwalks.c projects/geom-events/sys/contrib/dev/acpica/compiler/dtcompile.c projects/geom-events/sys/contrib/dev/acpica/compiler/dtcompiler.h projects/geom-events/sys/contrib/dev/acpica/compiler/dtfield.c projects/geom-events/sys/contrib/dev/acpica/compiler/dtsubtable.c projects/geom-events/sys/contrib/dev/acpica/compiler/dttable.c projects/geom-events/sys/contrib/dev/acpica/compiler/dttemplate.h projects/geom-events/sys/contrib/dev/acpica/compiler/dtutils.c projects/geom-events/sys/contrib/dev/acpica/debugger/dbcmds.c projects/geom-events/sys/contrib/dev/acpica/debugger/dbdisply.c projects/geom-events/sys/contrib/dev/acpica/debugger/dbfileio.c projects/geom-events/sys/contrib/dev/acpica/debugger/dbinput.c projects/geom-events/sys/contrib/dev/acpica/debugger/dbutils.c projects/geom-events/sys/contrib/dev/acpica/disassembler/dmbuffer.c projects/geom-events/sys/contrib/dev/acpica/disassembler/dmopcode.c projects/geom-events/sys/contrib/dev/acpica/disassembler/dmresrc.c projects/geom-events/sys/contrib/dev/acpica/disassembler/dmresrcl.c projects/geom-events/sys/contrib/dev/acpica/disassembler/dmresrcs.c projects/geom-events/sys/contrib/dev/acpica/disassembler/dmutils.c projects/geom-events/sys/contrib/dev/acpica/disassembler/dmwalk.c projects/geom-events/sys/contrib/dev/acpica/dispatcher/dsargs.c projects/geom-events/sys/contrib/dev/acpica/dispatcher/dsfield.c projects/geom-events/sys/contrib/dev/acpica/events/evevent.c projects/geom-events/sys/contrib/dev/acpica/events/evglock.c projects/geom-events/sys/contrib/dev/acpica/events/evregion.c projects/geom-events/sys/contrib/dev/acpica/executer/exconfig.c projects/geom-events/sys/contrib/dev/acpica/executer/excreate.c projects/geom-events/sys/contrib/dev/acpica/executer/exdump.c projects/geom-events/sys/contrib/dev/acpica/executer/exfield.c projects/geom-events/sys/contrib/dev/acpica/executer/exfldio.c projects/geom-events/sys/contrib/dev/acpica/executer/exprep.c projects/geom-events/sys/contrib/dev/acpica/executer/exutils.c projects/geom-events/sys/contrib/dev/acpica/hardware/hwvalid.c projects/geom-events/sys/contrib/dev/acpica/include/acapps.h projects/geom-events/sys/contrib/dev/acpica/include/acconfig.h projects/geom-events/sys/contrib/dev/acpica/include/acdebug.h projects/geom-events/sys/contrib/dev/acpica/include/acdisasm.h projects/geom-events/sys/contrib/dev/acpica/include/acevents.h projects/geom-events/sys/contrib/dev/acpica/include/acglobal.h projects/geom-events/sys/contrib/dev/acpica/include/acinterp.h projects/geom-events/sys/contrib/dev/acpica/include/aclocal.h projects/geom-events/sys/contrib/dev/acpica/include/acnames.h projects/geom-events/sys/contrib/dev/acpica/include/acobject.h projects/geom-events/sys/contrib/dev/acpica/include/acopcode.h projects/geom-events/sys/contrib/dev/acpica/include/acpixf.h projects/geom-events/sys/contrib/dev/acpica/include/acpredef.h projects/geom-events/sys/contrib/dev/acpica/include/acresrc.h projects/geom-events/sys/contrib/dev/acpica/include/acrestyp.h projects/geom-events/sys/contrib/dev/acpica/include/actbl.h projects/geom-events/sys/contrib/dev/acpica/include/actbl1.h projects/geom-events/sys/contrib/dev/acpica/include/actypes.h projects/geom-events/sys/contrib/dev/acpica/include/acutils.h projects/geom-events/sys/contrib/dev/acpica/include/amlcode.h projects/geom-events/sys/contrib/dev/acpica/include/amlresrc.h projects/geom-events/sys/contrib/dev/acpica/include/platform/acenv.h projects/geom-events/sys/contrib/dev/acpica/namespace/nspredef.c projects/geom-events/sys/contrib/dev/acpica/namespace/nsrepair.c projects/geom-events/sys/contrib/dev/acpica/namespace/nsrepair2.c projects/geom-events/sys/contrib/dev/acpica/parser/psargs.c projects/geom-events/sys/contrib/dev/acpica/parser/psopcode.c projects/geom-events/sys/contrib/dev/acpica/parser/pstree.c projects/geom-events/sys/contrib/dev/acpica/resources/rscalc.c projects/geom-events/sys/contrib/dev/acpica/resources/rscreate.c projects/geom-events/sys/contrib/dev/acpica/resources/rsdump.c projects/geom-events/sys/contrib/dev/acpica/resources/rsinfo.c projects/geom-events/sys/contrib/dev/acpica/resources/rsirq.c projects/geom-events/sys/contrib/dev/acpica/resources/rslist.c projects/geom-events/sys/contrib/dev/acpica/resources/rsmisc.c projects/geom-events/sys/contrib/dev/acpica/resources/rsutils.c projects/geom-events/sys/contrib/dev/acpica/resources/rsxface.c projects/geom-events/sys/contrib/dev/acpica/tables/tbfadt.c projects/geom-events/sys/contrib/dev/acpica/tables/tbutils.c projects/geom-events/sys/contrib/dev/acpica/utilities/utdecode.c projects/geom-events/sys/contrib/dev/acpica/utilities/utmutex.c projects/geom-events/sys/contrib/dev/acpica/utilities/utresrc.c projects/geom-events/sys/contrib/ipfilter/netinet/ip_compat.h projects/geom-events/sys/contrib/ipfilter/netinet/ip_proxy.c projects/geom-events/sys/contrib/pf/net/pf.c projects/geom-events/sys/dev/acpica/acpi_battery.c projects/geom-events/sys/dev/ahci/ahci.c projects/geom-events/sys/dev/arcmsr/arcmsr.c projects/geom-events/sys/dev/ata/chipsets/ata-ati.c projects/geom-events/sys/dev/ata/chipsets/ata-nvidia.c projects/geom-events/sys/dev/dc/dcphy.c projects/geom-events/sys/dev/dc/pnphy.c projects/geom-events/sys/dev/e1000/if_em.c projects/geom-events/sys/dev/e1000/if_igb.c projects/geom-events/sys/dev/e1000/if_lem.c projects/geom-events/sys/dev/fdt/fdt_common.c projects/geom-events/sys/dev/fdt/fdt_powerpc.c projects/geom-events/sys/dev/fdt/fdtbus.c projects/geom-events/sys/dev/gpio/gpioiic.c projects/geom-events/sys/dev/hptiop/hptiop.c projects/geom-events/sys/dev/hptmv/entry.c projects/geom-events/sys/dev/hptrr/hptrr_osm_bsd.c projects/geom-events/sys/dev/hwpmc/hwpmc_core.c projects/geom-events/sys/dev/iicbus/iicbus.c projects/geom-events/sys/dev/iicbus/iicbus.h projects/geom-events/sys/dev/iicbus/iiconf.c projects/geom-events/sys/dev/ixgbe/ixgbe.c projects/geom-events/sys/dev/mii/acphy.c projects/geom-events/sys/dev/mii/amphy.c projects/geom-events/sys/dev/mii/atphy.c projects/geom-events/sys/dev/mii/axphy.c projects/geom-events/sys/dev/mii/bmtphy.c projects/geom-events/sys/dev/mii/brgphy.c projects/geom-events/sys/dev/mii/ciphy.c projects/geom-events/sys/dev/mii/e1000phy.c projects/geom-events/sys/dev/mii/gentbi.c projects/geom-events/sys/dev/mii/icsphy.c projects/geom-events/sys/dev/mii/ip1000phy.c projects/geom-events/sys/dev/mii/jmphy.c projects/geom-events/sys/dev/mii/lxtphy.c projects/geom-events/sys/dev/mii/miidevs projects/geom-events/sys/dev/mii/mlphy.c projects/geom-events/sys/dev/mii/nsgphy.c projects/geom-events/sys/dev/mii/nsphy.c projects/geom-events/sys/dev/mii/nsphyter.c projects/geom-events/sys/dev/mii/pnaphy.c projects/geom-events/sys/dev/mii/qsphy.c projects/geom-events/sys/dev/mii/rgephy.c projects/geom-events/sys/dev/mii/rlphy.c projects/geom-events/sys/dev/mii/rlswitch.c projects/geom-events/sys/dev/mii/smcphy.c projects/geom-events/sys/dev/mii/tdkphy.c projects/geom-events/sys/dev/mii/tlphy.c projects/geom-events/sys/dev/mii/truephy.c projects/geom-events/sys/dev/mii/ukphy.c projects/geom-events/sys/dev/mii/xmphy.c projects/geom-events/sys/dev/netmap/if_em_netmap.h projects/geom-events/sys/dev/netmap/if_igb_netmap.h projects/geom-events/sys/dev/netmap/if_lem_netmap.h projects/geom-events/sys/dev/netmap/if_re_netmap.h projects/geom-events/sys/dev/netmap/ixgbe_netmap.h projects/geom-events/sys/dev/netmap/netmap.c projects/geom-events/sys/dev/netmap/netmap_kern.h projects/geom-events/sys/dev/ofw/ofw_fdt.c projects/geom-events/sys/dev/ofw/openfirm.c projects/geom-events/sys/dev/pci/pcireg.h projects/geom-events/sys/dev/re/if_re.c projects/geom-events/sys/dev/sfxge/common/efsys.h projects/geom-events/sys/dev/sfxge/common/efx.h (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_bootcfg.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_ev.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_filter.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_impl.h (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_intr.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_mac.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_mcdi.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_mcdi.h (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_mon.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_nic.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_nvram.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_phy.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_port.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_regs.h (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_regs_ef10.h (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_regs_mcdi.h (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_regs_pci.h (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_rx.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_sram.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_tx.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_types.h (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_vpd.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/efx_wol.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/siena_flash.h (contents, props changed) projects/geom-events/sys/dev/sfxge/common/siena_impl.h (contents, props changed) projects/geom-events/sys/dev/sfxge/common/siena_mac.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/siena_mon.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/siena_nic.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/siena_nvram.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/siena_phy.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/siena_sram.c (contents, props changed) projects/geom-events/sys/dev/sfxge/common/siena_vpd.c (contents, props changed) projects/geom-events/sys/dev/uart/uart_bus_fdt.c projects/geom-events/sys/dev/usb/net/ruephy.c projects/geom-events/sys/dev/usb/quirk/usb_quirk.c projects/geom-events/sys/dev/usb/usb_msctest.c projects/geom-events/sys/dev/usb/usb_transfer.h projects/geom-events/sys/dev/usb/usbdevs projects/geom-events/sys/dev/usb/wlan/if_urtw.c projects/geom-events/sys/dev/vr/if_vr.c projects/geom-events/sys/dev/vr/if_vrreg.h projects/geom-events/sys/dev/xl/xlphy.c projects/geom-events/sys/fs/fifofs/fifo_vnops.c projects/geom-events/sys/fs/nfs/nfsclstate.h projects/geom-events/sys/fs/nfsclient/nfs_clbio.c projects/geom-events/sys/fs/nfsclient/nfs_clstate.c projects/geom-events/sys/fs/nfsserver/nfs_nfsdport.c projects/geom-events/sys/fs/nfsserver/nfs_nfsdsubs.c projects/geom-events/sys/fs/ntfs/ntfs_subr.c projects/geom-events/sys/fs/ntfs/ntfs_subr.h projects/geom-events/sys/fs/ntfs/ntfs_vnops.c projects/geom-events/sys/fs/nwfs/nwfs_io.c projects/geom-events/sys/fs/smbfs/smbfs_io.c projects/geom-events/sys/geom/geom_vfs.c projects/geom-events/sys/geom/part/g_part_apm.c projects/geom-events/sys/i386/conf/PAE projects/geom-events/sys/kern/kern_cpuset.c projects/geom-events/sys/kern/kern_ffclock.c projects/geom-events/sys/kern/kern_proc.c projects/geom-events/sys/kern/kern_resource.c projects/geom-events/sys/kern/kern_switch.c projects/geom-events/sys/kern/kern_synch.c projects/geom-events/sys/kern/kern_tc.c projects/geom-events/sys/kern/kern_thr.c projects/geom-events/sys/kern/kern_umtx.c projects/geom-events/sys/kern/subr_blist.c projects/geom-events/sys/kern/subr_bus.c projects/geom-events/sys/kern/sys_pipe.c projects/geom-events/sys/kern/uipc_shm.c projects/geom-events/sys/kern/vfs_bio.c projects/geom-events/sys/kern/vfs_syscalls.c projects/geom-events/sys/mips/atheros/ar71xx_chip.c projects/geom-events/sys/mips/atheros/ar71xx_cpudef.h projects/geom-events/sys/mips/atheros/ar71xx_machdep.c projects/geom-events/sys/mips/atheros/ar724x_chip.c projects/geom-events/sys/mips/atheros/ar91xx_chip.c projects/geom-events/sys/mips/atheros/if_arge.c projects/geom-events/sys/mips/cavium/octeon_machdep.c projects/geom-events/sys/mips/conf/AR91XX_BASE projects/geom-events/sys/mips/conf/AR91XX_BASE.hints projects/geom-events/sys/mips/conf/OCTEON1 projects/geom-events/sys/mips/conf/PB92 projects/geom-events/sys/mips/conf/TP-WN1043ND projects/geom-events/sys/mips/conf/TP-WN1043ND.hints projects/geom-events/sys/mips/conf/XLPN32 projects/geom-events/sys/mips/mips/db_trace.c projects/geom-events/sys/mips/nlm/hal/cpucontrol.h projects/geom-events/sys/mips/nlm/xlp_machdep.c projects/geom-events/sys/modules/Makefile projects/geom-events/sys/modules/acpi/acpi/Makefile projects/geom-events/sys/modules/cam/Makefile projects/geom-events/sys/net/bpf.c projects/geom-events/sys/net/bpf.h projects/geom-events/sys/net/if_clone.c projects/geom-events/sys/net/if_clone.h projects/geom-events/sys/net/if_vlan.c projects/geom-events/sys/net/netmap.h projects/geom-events/sys/netinet/in.c projects/geom-events/sys/netinet/sctp_header.h projects/geom-events/sys/netinet/sctp_output.c projects/geom-events/sys/netinet/sctp_pcb.c projects/geom-events/sys/netinet/sctp_uio.h projects/geom-events/sys/netinet/tcp_reass.c projects/geom-events/sys/netipsec/xform_ah.c projects/geom-events/sys/netipsec/xform_esp.c projects/geom-events/sys/nfsclient/nfs_bio.c projects/geom-events/sys/nfsserver/nfs_serv.c projects/geom-events/sys/pc98/include/md_var.h projects/geom-events/sys/pc98/pc98/pc98_machdep.h projects/geom-events/sys/pci/if_rlreg.h projects/geom-events/sys/powerpc/booke/platform_bare.c projects/geom-events/sys/powerpc/powermac/platform_powermac.c projects/geom-events/sys/powerpc/powermac/pmu.c projects/geom-events/sys/powerpc/powermac/pmuvar.h projects/geom-events/sys/sparc64/conf/GENERIC projects/geom-events/sys/sparc64/include/atomic.h projects/geom-events/sys/sparc64/include/md_var.h projects/geom-events/sys/sparc64/pci/schizo.c projects/geom-events/sys/sparc64/sparc64/ata_machdep.c projects/geom-events/sys/sparc64/sparc64/ofw_machdep.c projects/geom-events/sys/sparc64/sparc64/vm_machdep.c projects/geom-events/sys/sys/resource.h projects/geom-events/sys/sys/sysctl.h projects/geom-events/sys/sys/timeffc.h projects/geom-events/sys/sys/umtx.h projects/geom-events/sys/vm/vm_page.c projects/geom-events/sys/vm/vm_page.h projects/geom-events/sys/vm/vnode_pager.c projects/geom-events/sys/x86/acpica/acpi_apm.c projects/geom-events/sys/xen/evtchn/evtchn_dev.c projects/geom-events/tools/regression/bin/test/regress.sh projects/geom-events/tools/regression/pipe/pipe-fstatbug.c projects/geom-events/tools/regression/pipe/pipe-reverse.c projects/geom-events/tools/regression/pipe/pipe-wraparound.c projects/geom-events/tools/regression/sbin/Makefile projects/geom-events/tools/tools/netmap/pkt-gen.c projects/geom-events/usr.bin/grep/Makefile projects/geom-events/usr.bin/grep/util.c projects/geom-events/usr.bin/m4/Makefile projects/geom-events/usr.bin/m4/eval.c projects/geom-events/usr.bin/m4/expr.c projects/geom-events/usr.bin/m4/extern.h projects/geom-events/usr.bin/m4/gnum4.c projects/geom-events/usr.bin/m4/look.c projects/geom-events/usr.bin/m4/m4.1 projects/geom-events/usr.bin/m4/main.c projects/geom-events/usr.bin/m4/mdef.h projects/geom-events/usr.bin/m4/misc.c projects/geom-events/usr.bin/m4/pathnames.h projects/geom-events/usr.bin/m4/stdd.h projects/geom-events/usr.bin/m4/trace.c projects/geom-events/usr.bin/make/Makefile projects/geom-events/usr.bin/make/job.c projects/geom-events/usr.bin/procstat/Makefile projects/geom-events/usr.bin/procstat/procstat.1 projects/geom-events/usr.bin/procstat/procstat.c projects/geom-events/usr.bin/procstat/procstat.h projects/geom-events/usr.bin/procstat/procstat_auxv.c projects/geom-events/usr.bin/truss/setup.c projects/geom-events/usr.sbin/acpi/Makefile.inc projects/geom-events/usr.sbin/acpi/acpidb/Makefile projects/geom-events/usr.sbin/acpi/acpidb/acpidb.c projects/geom-events/usr.sbin/acpi/iasl/Makefile projects/geom-events/usr.sbin/bsdinstall/distextract/distextract.c projects/geom-events/usr.sbin/bsdinstall/distfetch/distfetch.c projects/geom-events/usr.sbin/bsdinstall/partedit/gpart_ops.c projects/geom-events/usr.sbin/bsdinstall/scripts/auto projects/geom-events/usr.sbin/bsdinstall/scripts/services projects/geom-events/usr.sbin/config/mkmakefile.c projects/geom-events/usr.sbin/cron/crontab/crontab.5 projects/geom-events/usr.sbin/mergemaster/mergemaster.sh projects/geom-events/usr.sbin/mfiutil/mfi_config.c projects/geom-events/usr.sbin/mfiutil/mfi_evt.c projects/geom-events/usr.sbin/sade/Makefile projects/geom-events/usr.sbin/sade/devices.c projects/geom-events/usr.sbin/sade/disks.c projects/geom-events/usr.sbin/sade/dmenu.c projects/geom-events/usr.sbin/sade/install.c projects/geom-events/usr.sbin/sade/label.c projects/geom-events/usr.sbin/sade/main.c projects/geom-events/usr.sbin/sade/menus.c projects/geom-events/usr.sbin/sade/misc.c projects/geom-events/usr.sbin/sade/msg.c projects/geom-events/usr.sbin/sade/sade.h projects/geom-events/usr.sbin/sade/system.c projects/geom-events/usr.sbin/tzsetup/Makefile projects/geom-events/usr.sbin/tzsetup/tzsetup.c Directory Properties: projects/geom-events/ (props changed) projects/geom-events/cddl/contrib/opensolaris/ (props changed) projects/geom-events/gnu/lib/ (props changed) projects/geom-events/lib/libc/ (props changed) projects/geom-events/sbin/ (props changed) projects/geom-events/sys/ (props changed) projects/geom-events/sys/boot/ (props changed) projects/geom-events/sys/cddl/contrib/opensolaris/ (props changed) projects/geom-events/sys/conf/ (props changed) projects/geom-events/sys/contrib/dev/acpica/ (props changed) projects/geom-events/sys/contrib/pf/ (props changed) projects/geom-events/tools/build/options/WITHOUT_GPIO (props changed) projects/geom-events/tools/build/options/WITH_OFED (props changed) projects/geom-events/usr.bin/procstat/ (props changed) Modified: projects/geom-events/Makefile.inc1 ============================================================================== --- projects/geom-events/Makefile.inc1 Mon Dec 5 16:38:52 2011 (r228284) +++ projects/geom-events/Makefile.inc1 Mon Dec 5 17:44:12 2011 (r228285) @@ -59,8 +59,6 @@ SUBDIR+=games .endif .if ${MK_CDDL} != "no" SUBDIR+=cddl -.else -NO_CTF=1 .endif SUBDIR+=gnu include .if ${MK_KERBEROS} != "no" @@ -239,7 +237,7 @@ BMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \ BOOTSTRAPPING=${OSRELDATE} \ SSP_CFLAGS= \ -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT -DWITHOUT_MAN \ - -DNO_PIC -DWITHOUT_PROFILE -DNO_SHARED \ + -DNO_PIC -DNO_PROFILE -DNO_SHARED \ -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF # build-tools stage @@ -438,7 +436,7 @@ _libraries: @echo "--------------------------------------------------------------" ${_+_}cd ${.CURDIR}; \ ${WMAKE} -DNO_FSCHG -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT \ - -DWITHOUT_MAN -DWITHOUT_PROFILE libraries + -DWITHOUT_MAN -DNO_PROFILE libraries _depend: @echo @echo "--------------------------------------------------------------" @@ -1218,6 +1216,9 @@ _startup_libs+= lib/csu/${MACHINE_CPUARC _startup_libs+= gnu/lib/libgcc _startup_libs+= lib/libcompiler_rt _startup_libs+= lib/libc +.if ${MK_LIBCPLUSPLUS} != "no" +_startup_libs+= lib/libcxxrt +.endif gnu/lib/libgcc__L: lib/libc__L @@ -1230,7 +1231,7 @@ _prebuild_libs= ${_kerberos5_lib_libasn1 ${_lib_libgssapi} ${_lib_libipx} \ lib/libkiconv lib/libkvm lib/liblzma lib/libmd \ lib/ncurses/ncurses lib/ncurses/ncursesw \ - lib/libopie ${_lib_libthr} \ + lib/libopie lib/libpam ${_lib_libthr} \ lib/libradius lib/libsbuf lib/libtacplus \ ${_cddl_lib_libumem} \ lib/libutil ${_lib_libypclnt} lib/libz lib/msun \ @@ -1318,12 +1319,12 @@ ${_lib}__PL: .PHONY cd ${.CURDIR}/${_lib}; \ ${MAKE} DIRPRFX=${_lib}/ obj; \ ${MAKE} DIRPRFX=${_lib}/ depend; \ - ${MAKE} -DWITHOUT_PROFILE -DNO_PIC DIRPRFX=${_lib}/ all; \ - ${MAKE} -DWITHOUT_PROFILE -DNO_PIC DIRPRFX=${_lib}/ install + ${MAKE} -DNO_PROFILE -DNO_PIC DIRPRFX=${_lib}/ all; \ + ${MAKE} -DNO_PROFILE -DNO_PIC DIRPRFX=${_lib}/ install .endif .endfor -.for _lib in ${_startup_libs} ${_prebuild_libs} ${_generic_libs} +.for _lib in ${_startup_libs} ${_prebuild_libs:Nlib/libpam} ${_generic_libs} ${_lib}__L: .PHONY .if exists(${.CURDIR}/${_lib}) ${_+_}@${ECHODIR} "===> ${_lib} (obj,depend,all,install)"; \ @@ -1335,6 +1336,17 @@ ${_lib}__L: .PHONY .endif .endfor +# libpam is special: we need to build static PAM modules before +# static PAM library, and dynamic PAM library before dynamic PAM +# modules. +lib/libpam__L: .PHONY + ${_+_}@${ECHODIR} "===> lib/libpam (obj,depend,all,install)"; \ + cd ${.CURDIR}/lib/libpam; \ + ${MAKE} DIRPRFX=lib/libpam/ obj; \ + ${MAKE} DIRPRFX=lib/libpam/ depend; \ + ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET all; \ + ${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET install + _prereq_libs: ${_prereq_libs:S/$/__PL/} _startup_libs: ${_startup_libs:S/$/__L/} _prebuild_libs: ${_prebuild_libs:S/$/__L/} @@ -1541,7 +1553,7 @@ XDEV_CPUTYPE?=${TARGET_CPUTYPE} .endif NOFUN=-DNO_FSCHG -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT \ - -DWITHOUT_MAN -DWITHOUT_NLS -DWITHOUT_PROFILE \ + -DWITHOUT_MAN -DWITHOUT_NLS -DNO_PROFILE \ -DWITHOUT_KERBEROS -DWITHOUT_RESCUE -DNO_WARNS \ TARGET=${XDEV} TARGET_ARCH=${XDEV_ARCH} \ CPUTYPE=${XDEV_CPUTYPE} @@ -1625,4 +1637,7 @@ _xi-links: ln -sf ../../${XDTP}/usr/bin/$$i \ ../../../../usr/bin/${XDDIR}${OSREL}-$$i; \ done +.else +xdev xdev-buil xdev-install: + @echo "*** Error: Both XDEV and XDEV_ARCH must be defined for \"${.TARGET}\" target" .endif Modified: projects/geom-events/ObsoleteFiles.inc ============================================================================== --- projects/geom-events/ObsoleteFiles.inc Mon Dec 5 16:38:52 2011 (r228284) +++ projects/geom-events/ObsoleteFiles.inc Mon Dec 5 17:44:12 2011 (r228285) @@ -38,6 +38,19 @@ # xargs -n1 | sort | uniq -d; # done +# 20111125: amd(4) removed +OLD_FILES+=usr/share/man/man4/amd.4.gz +# 20111125: libodialog removed +OLD_FILES+=usr/lib/libodialog.a +OLD_FILES+=usr/lib/libodialog.so +OLD_LIBS+=usr/lib/libodialog.so.7 +OLD_FILES+=usr/lib/libodialog_p.a +.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" +OLD_FILES+=usr/lib32/libodialog.a +OLD_FILES+=usr/lib32/libodialog.so +OLD_LIBS+=usr/lib32/libodialog.so.7 +OLD_FILES+=usr/lib32/libodialog_p.a +.endif # 20110930: sysinstall removed OLD_FILES+=usr/sbin/sysinstall OLD_FILES+=usr/share/man/man8/sysinstall.8.gz Modified: projects/geom-events/UPDATING ============================================================================== --- projects/geom-events/UPDATING Mon Dec 5 16:38:52 2011 (r228284) +++ projects/geom-events/UPDATING Mon Dec 5 17:44:12 2011 (r228285) @@ -22,6 +22,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10 machines to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20111122: + The acpi_wmi(4) status device /dev/wmistat has been renamed to + /dev/wmistat0. + 20111108: The option VFS_ALLOW_NONMPSAFE option has been added in order to explicitely support non-MPSAFE filesystems. Modified: projects/geom-events/bin/sh/eval.c ============================================================================== --- projects/geom-events/bin/sh/eval.c Mon Dec 5 16:38:52 2011 (r228284) +++ projects/geom-events/bin/sh/eval.c Mon Dec 5 17:44:12 2011 (r228285) @@ -89,7 +89,7 @@ int oexitstatus; /* saved exit status * static void evalloop(union node *, int); static void evalfor(union node *, int); -static void evalcase(union node *, int); +static union node *evalcase(union node *, int); static void evalsubshell(union node *, int); static void evalredir(union node *, int); static void expredir(union node *); @@ -256,7 +256,7 @@ evaltree(union node *n, int flags) evalfor(n, flags & ~EV_EXIT); break; case NCASE: - evalcase(n, flags); + next = evalcase(n, flags); break; case NDEFUN: defun(n->narg.text, n->narg.next); @@ -343,8 +343,6 @@ evalfor(union node *n, int flags) for (argp = n->nfor.args ; argp ; argp = argp->narg.next) { oexitstatus = exitstatus; expandarg(argp, &arglist, EXP_FULL | EXP_TILDE); - if (evalskip) - goto out; } *arglist.lastp = NULL; @@ -364,13 +362,12 @@ evalfor(union node *n, int flags) } } loopnest--; -out: popstackmark(&smark); } -static void +static union node * evalcase(union node *n, int flags) { union node *cp; @@ -383,26 +380,24 @@ evalcase(union node *n, int flags) oexitstatus = exitstatus; exitstatus = 0; expandarg(n->ncase.expr, &arglist, EXP_TILDE); - for (cp = n->ncase.cases ; cp && evalskip == 0 ; cp = cp->nclist.next) { + for (cp = n->ncase.cases ; cp ; cp = cp->nclist.next) { for (patp = cp->nclist.pattern ; patp ; patp = patp->narg.next) { if (casematch(patp, arglist.list->text)) { + popstackmark(&smark); while (cp->nclist.next && cp->type == NCLISTFALLTHRU) { - if (evalskip != 0) - break; evaltree(cp->nclist.body, flags & ~EV_EXIT); + if (evalskip != 0) + return (NULL); cp = cp->nclist.next; } - if (evalskip == 0) { - evaltree(cp->nclist.body, flags); - } - goto out; + return (cp->nclist.body); } } } -out: popstackmark(&smark); + return (NULL); } Modified: projects/geom-events/bin/test/test.c ============================================================================== --- projects/geom-events/bin/test/test.c Mon Dec 5 16:38:52 2011 (r228284) +++ projects/geom-events/bin/test/test.c Mon Dec 5 17:44:12 2011 (r228285) @@ -119,7 +119,7 @@ enum token_types { }; static struct t_op { - const char *op_text; + char op_text[4]; short op_num, op_type; } const ops [] = { {"-r", FILRD, UNOP}, @@ -162,7 +162,7 @@ static struct t_op { {"-o", BOR, BBINOP}, {"(", LPAREN, PAREN}, {")", RPAREN, PAREN}, - {0, 0, 0} + {"", 0, 0} }; static struct t_op const *t_wp_op; @@ -427,7 +427,7 @@ t_lex(char *s) t_wp_op = NULL; return EOI; } - while (op->op_text) { + while (*op->op_text) { if (strcmp(s, op->op_text) == 0) { if (((op->op_type == UNOP || op->op_type == BUNOP) && isunopoperand()) || @@ -456,7 +456,7 @@ isunopoperand(void) if (nargc == 2) return parenlevel == 1 && strcmp(s, ")") == 0; t = *(t_wp + 2); - while (op->op_text) { + while (*op->op_text) { if (strcmp(s, op->op_text) == 0) return op->op_type == BINOP && (parenlevel == 0 || t[0] != ')' || t[1] != '\0'); @@ -478,7 +478,7 @@ islparenoperand(void) return parenlevel == 1 && strcmp(s, ")") == 0; if (nargc != 3) return 0; - while (op->op_text) { + while (*op->op_text) { if (strcmp(s, op->op_text) == 0) return op->op_type == BINOP; op++; Modified: projects/geom-events/cddl/contrib/opensolaris/cmd/zdb/zdb.8 ============================================================================== --- projects/geom-events/cddl/contrib/opensolaris/cmd/zdb/zdb.8 Mon Dec 5 16:38:52 2011 (r228284) +++ projects/geom-events/cddl/contrib/opensolaris/cmd/zdb/zdb.8 Mon Dec 5 17:44:12 2011 (r228285) @@ -1,65 +1,79 @@ '\" te +.\" Copyright (c) 2011, Martin Matuska . +.\" All Rights Reserved. +.\" +.\" The contents of this file are subject to the terms of the +.\" Common Development and Distribution License (the "License"). +.\" You may not use this file except in compliance with the License. +.\" +.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +.\" or http://www.opensolaris.org/os/licensing. +.\" See the License for the specific language governing permissions +.\" and limitations under the License. +.\" +.\" When distributing Covered Code, include this CDDL HEADER in each +.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE. +.\" If applicable, add the following below this CDDL HEADER, with the +.\" fields enclosed by brackets "[]" replaced with your own identifying +.\" information: Portions Copyright [yyyy] [name of copyright owner] +.\" .\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved. -.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. -.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. -.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] -.\" Portions Copyright 2011 Martin Matuska -.TH ZDB 8 "Oct 31, 2005" -.SH NAME -zdb \- ZFS debugger -.SH SYNOPSIS -.LP -.nf -\fBzdb\fR \fIpool\fR -.fi - -.SH DESCRIPTION -.sp -.LP -The \fBzdb\fR command is used by support engineers to diagnose failures and -gather statistics. Since the \fBZFS\fR file system is always consistent on disk -and is self-repairing, \fBzdb\fR should only be run under the direction by a -support engineer. -.sp -.LP -If no arguments are specified, \fBzdb\fR, performs basic consistency checks on -the pool and associated datasets, and report any problems detected. -.sp -.LP +.\" +.\" $FreeBSD$ +.\" +.Dd November 26, 2011 +.Dt ZDB 8 +.Os +.Sh NAME +.Nm zdb +.Nd ZFS debugger +.Sh SYNOPSIS +.Nm +.Ar pool +.Sh DESCRIPTION +The +.Nm +command is used by support engineers to diagnose failures and +gather statistics. Since the +.Tn ZFS +file system is always consistent on disk and is self-repairing, +.Nm +should only be run under the direction by a support engineer. +.Pp +If no arguments are specified, +.Nm +performs basic consistency checks on the pool and associated datasets, and +report any problems detected. +.Nm Any options supported by this command are internal to Sun and subject to change at any time. -.SH EXIT STATUS -.sp -.LP +.Sh EXIT STATUS The following exit values are returned: -.sp -.ne 2 -.na -\fB\fB0\fR\fR -.ad -.RS 5n +.Bl -tag -offset 2n -width 2n +.It 0 The pool is consistent. -.RE - -.sp -.ne 2 -.na -\fB\fB1\fR\fR -.ad -.RS 5n +.It 1 An error was detected. -.RE - -.sp -.ne 2 -.na -\fB\fB2\fR\fR -.ad -.RS 5n +.It 2 Invalid command line options were specified. -.RE - -.SH SEE ALSO -.sp -.LP -zfs(8), zpool(8) +.El +.Sh SEE ALSO +.Xr zfs 8 , +.Xr zpool 8 +.Sh AUTHORS +This manual page is a +.Xr mdoc 7 +reimplementation of the +.Tn OpenSolaris +manual page +.Em zdb(1M) , +modified and customized for +.Fx +and licensed under the +.Tn Common Development and Distribution License +.Pq Tn CDDL . +.Pp +The +.Xr mdoc 7 +implementation of this manual page was initially written by +.An Martin Matuska Aq mm@FreeBSD.org . Modified: projects/geom-events/cddl/contrib/opensolaris/cmd/zfs/zfs.8 ============================================================================== --- projects/geom-events/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Mon Dec 5 16:38:52 2011 (r228284) +++ projects/geom-events/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Mon Dec 5 17:44:12 2011 (r228285) @@ -1,561 +1,543 @@ '\" te -.\" Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved. -.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. -.\" See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with -.\" the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] -.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. -.\" See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with -.\" the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] +.\" Copyright (c) 2011, Martin Matuska . +.\" All Rights Reserved. +.\" +.\" The contents of this file are subject to the terms of the +.\" Common Development and Distribution License (the "License"). +.\" You may not use this file except in compliance with the License. +.\" +.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +.\" or http://www.opensolaris.org/os/licensing. +.\" See the License for the specific language governing permissions +.\" and limitations under the License. +.\" +.\" When distributing Covered Code, include this CDDL HEADER in each +.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE. +.\" If applicable, add the following below this CDDL HEADER, with the +.\" fields enclosed by brackets "[]" replaced with your own identifying +.\" information: Portions Copyright [yyyy] [name of copyright owner] +.\" +.\" Copyright (c) 2010, Sun Microsystems, Inc. All Rights Reserved. .\" Copyright 2011 Nexenta Systems, Inc. All rights reserved. -.\" Copyright 2011 by Delphix. All rights reserved. -.\" Portions Copyright 2011 Pawel Jakub Dawidek -.\" Portions Copyright 2011 Martin Matuska -.TH ZFS 8 "September 24, 2009" FreeBSD -.SH NAME -zfs \- configures ZFS file systems -.SH SYNOPSIS -.LP -.nf -\fBzfs\fR [\fB-?\fR] -.fi - -.LP -.nf -\fBzfs\fR \fBcreate\fR [\fB-p\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR] ... \fIfilesystem\fR -.fi - -.LP -.nf -\fBzfs\fR \fBcreate\fR [\fB-ps\fR] [\fB-b\fR \fIblocksize\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR] ... \fB-V\fR \fIsize\fR \fIvolume\fR -.fi - -.LP -.nf -\fBzfs\fR \fBdestroy\fR [\fB-rRf\fR] \fIfilesystem\fR|\fIvolume\fR -.fi - -.LP -.nf -\fBzfs\fR \fBdestroy\fR [\fB-rRd\fR] \fIsnapshot\fR -.fi - -.LP -.nf -\fBzfs\fR \fBsnapshot\fR [\fB-r\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR]... - \fIfilesystem@snapname\fR|\fIvolume@snapname\fR -.fi - -.LP -.nf -\fBzfs\fR \fBrollback\fR [\fB-rRf\fR] \fIsnapshot\fR -.fi - -.LP -.nf -\fBzfs\fR \fBclone\fR [\fB-p\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR] ... \fIsnapshot\fR \fIfilesystem\fR|\fIvolume\fR -.fi - -.LP -.nf -\fBzfs\fR \fBpromote\fR \fIclone-filesystem\fR -.fi - -.LP -.nf -\fBzfs\fR \fBrename\fR \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR - \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR -.fi - -.LP -.nf -\fBzfs\fR \fBrename\fR [\fB-p\fR] \fIfilesystem\fR|\fIvolume\fR \fIfilesystem\fR|\fIvolume\fR -.fi - -.LP -.nf -\fBzfs\fR \fBrename\fR \fB-r\fR \fIsnapshot\fR \fIsnapshot\fR -.fi - -.LP -.nf -\fBzfs\fR \fBrename\fR \fB-u\fR [\fB-p\fR] \fIfilesystem\fR \fIfilesystem\fR -.fi - -.LP -.nf -\fBzfs\fR \fBlist\fR [\fB-r\fR|\fB-d\fR \fIdepth\fR][\fB-H\fR][\fB-o\fR \fIproperty\fR[,...]] [\fB-t\fR \fItype\fR[,...]] - [\fB-s\fR \fIproperty\fR] ... [\fB-S\fR \fIproperty\fR] ... [\fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR] ... -.fi - -.LP -.nf -\fBzfs\fR \fBset\fR \fIproperty\fR=\fIvalue\fR \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR ... -.fi - -.LP -.nf -\fBzfs\fR \fBget\fR [\fB-r\fR|\fB-d\fR \fIdepth\fR][\fB-Hp\fR][\fB-o\fR \fIfield\fR[,...]] [\fB-s\fR \fIsource\fR[,...]] - "\fIall\fR" | \fIproperty\fR[,...] \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR ... -.fi - -.LP -.nf -\fBzfs\fR \fBinherit\fR [\fB-r\fR] \fIproperty\fR \fIfilesystem\fR|\fIvolume|snapshot\fR ... -.fi - -.LP -.nf -\fBzfs\fR \fBupgrade\fR [\fB-v\fR] -.fi - -.LP -.nf -\fBzfs\fR \fBupgrade\fR [\fB-r\fR] [\fB-V\fR \fIversion\fR] \fB-a\fR | \fIfilesystem\fR -.fi - -.LP -.nf -\fBzfs\fR \fBuserspace\fR [\fB-niHp\fR] [\fB-o\fR \fIfield\fR[,...]] [\fB-sS\fR \fIfield\fR] ... - [\fB-t\fR \fItype\fR [,...]] \fIfilesystem\fR|\fIsnapshot\fR -.fi - -.LP -.nf -\fBzfs\fR \fBgroupspace\fR [\fB-niHp\fR] [\fB-o\fR \fIfield\fR[,...]] [\fB-sS\fR \fIfield\fR] ... - [\fB-t\fR \fItype\fR [,...]] \fIfilesystem\fR|\fIsnapshot\fR -.fi - -.LP -.nf -\fBzfs\fR \fBmount\fR -.fi - -.LP -.nf -\fBzfs\fR \fBmount\fR [\fB-vO\fR] [\fB-o \fIoptions\fR\fR] \fB-a\fR | \fIfilesystem\fR -.fi - -.LP -.nf -\fBzfs\fR \fBunmount\fR [\fB-f\fR] \fB-a\fR | \fIfilesystem\fR|\fImountpoint\fR -.fi - -.LP -.nf -\fBzfs\fR \fBshare\fR \fB-a\fR | \fIfilesystem\fR -.fi - -.LP -.nf -\fBzfs\fR \fBunshare\fR \fB-a\fR \fIfilesystem\fR|\fImountpoint\fR -.fi - -.LP -.nf -\fBzfs\fR \fBsend\fR [\fB-vR\fR] [\fB-\fR[\fBiI\fR] \fIsnapshot\fR] \fIsnapshot\fR -.fi - -.LP -.nf -\fBzfs\fR \fBreceive\fR [\fB-vnFu\fR] \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR -.fi - -.LP -.nf -\fBzfs\fR \fBreceive\fR [\fB-vnFu\fR] \fB-d\fR \fIfilesystem\fR -.fi - -.LP -.nf -\fBzfs\fR \fBallow\fR \fIfilesystem\fR|\fIvolume\fR -.fi - -.LP -.nf -\fBzfs\fR \fBallow\fR [\fB-ldug\fR] "\fIeveryone\fR"|\fIuser\fR|\fIgroup\fR[,...] \fIperm\fR|\fI@setname\fR[,...] - \fIfilesystem\fR|\fIvolume\fR -.fi - -.LP -.nf -\fBzfs\fR \fBallow\fR [\fB-ld\fR] \fB-e\fR \fIperm\fR|@\fIsetname\fR[,...] \fIfilesystem\fR|\fIvolume\fR -.fi - -.LP -.nf -\fBzfs\fR \fBallow\fR \fB-c\fR \fIperm\fR|@\fIsetname\fR[,...] \fIfilesystem\fR|\fIvolume\fR -.fi - -.LP -.nf -\fBzfs\fR \fBallow\fR \fB-s\fR @\fIsetname\fR \fIperm\fR|@\fIsetname\fR[,...] \fIfilesystem\fR|\fIvolume\fR -.fi - -.LP -.nf -\fBzfs\fR \fBunallow\fR [\fB-rldug\fR] "\fIeveryone\fR"|\fIuser\fR|\fIgroup\fR[,...] [\fIperm\fR|@\fIsetname\fR[,... ]] - \fIfilesystem\fR|\fIvolume\fR -.fi - -.LP -.nf -\fBzfs\fR \fBunallow\fR [\fB-rld\fR] \fB-e\fR [\fIperm\fR|@\fIsetname\fR[,... ]] \fIfilesystem\fR|\fIvolume\fR -.fi - -.LP -.nf -\fBzfs\fR \fBunallow\fR [\fB-r\fR] \fB-c\fR [\fIperm\fR|@\fIsetname\fR[ ... ]] \fIfilesystem\fR|\fIvolume\fR -.fi - -.LP -.nf -\fBzfs\fR \fBunallow\fR [\fB-r\fR] \fB-s\fR @\fIsetname\fR [\fIperm\fR|@\fIsetname\fR[,... ]] \fIfilesystem\fR|\fIvolume\fR -.fi - -.LP -.nf -\fBzfs\fR \fBhold\fR [\fB-r\fR] \fItag\fR \fIsnapshot\fR... -.fi - -.LP -.nf -\fBzfs\fR \fBholds\fR [\fB-r\fR] \fIsnapshot\fR... -.fi - -.LP -.nf -\fBzfs\fR \fBrelease\fR [\fB-r\fR] \fItag\fR \fIsnapshot\fR... -.fi - -.LP -.nf -\fBzfs\fR \fBjail\fR \fIjailid\fR \fIfilesystem\fR -.fi - -.LP -.nf -\fBzfs\fR \fBunjail\fR \fIjailid\fR \fIfilesystem\fR -.fi - -.SH DESCRIPTION -.sp -.LP -The \fBzfs\fR command configures \fBZFS\fR datasets within a \fBZFS\fR storage -pool, as described in \fBzpool\fR(8). A dataset is identified by a unique path -within the \fBZFS\fR namespace. For example: -.sp -.in +2 -.nf -pool/{filesystem,volume,snapshot} -.fi -.in -2 -.sp - -.sp -.LP -where the maximum length of a dataset name is \fBMAXNAMELEN\fR (256 bytes). -.sp -.LP +.\" Copyright (c) 2011 by Delphix. All rights reserved. +.\" Copyright (c) 2011, Pawel Jakub Dawidek +.\" +.\" $FreeBSD$ +.\" +.Dd November 26, 2011 +.Dt ZFS 8 +.Os +.Sh NAME +.Nm zfs +.Nd configures ZFS file systems +.Sh SYNOPSIS +.Nm +.Op Fl \&? +.Nm +.Cm create +.Op Fl p +.Op Fl o Ar property Ns = Ns Ar value +.Ar ... filesystem +.Nm +.Cm create +.Op Fl ps +.Op Fl b Ar blocksize +.Op Fl o Ar property Ns = Ns Ar value +.Ar ... +.Fl V +.Ar size volume +.Nm +.Cm destroy +.Op Fl fnpRrv +.Ar filesystem Ns | Ns Ar volume +.Nm +.Cm destroy +.Op Fl dnpRrv +.Sm off +.Ar snapshot +.Ns Op % Ns Ar snapname +.Ns Op , Ns Ar ... +.Sm on +.Nm +.Cm snapshot +.Op Fl r +.Op Fl o Ar property Ns = Ns Ar value +.Ar ... filesystem@snapname Ns | Ns Ar volume@snapname +.Nm +.Cm rollback +.Op Fl rRf +.Ar snapshot +.Nm +.Cm clone +.Op Fl p +.Op Fl o Ar property Ns = Ns Ar value +.Ar ... snapshot filesystem Ns | Ns Ar volume +.Nm +.Cm promote +.Ar clone-filesystem +.Nm +.Cm rename +.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot +.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot +.Nm +.Cm rename +.Fl p +.Ar filesystem Ns | Ns Ar volume +.Ar filesystem Ns | Ns Ar volume +.Nm +.Cm rename +.Fl r +.Ar snapshot snapshot +.Nm +.Cm rename +.Fl u +.Op Fl p +.Ar filesystem filesystem +.Nm +.Cm list +.Op Fl r Ns | Ns Fl d Ar depth +.Op Fl H +.Op Fl o Ar property Ns Op , Ns Ar ... +.Op Fl t Ar type Ns Op , Ns Ar ... +.Op Fl s Ar property +.Ar ... +.Op Fl S Ar property +.Ar ... +.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot +.Nm +.Cm set +.Ar property Ns = Ns Ar value +.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot +.Nm +.Cm get +.Op Fl r Ns | Ns Fl d Ar depth +.Op Fl Hp +.Op Fl o Ar all | field Ns Op , Ns Ar ... +.Op Fl s Ar source Ns Op , Ns Ar ... +.Ar all | property Ns Op , Ns Ar ... +.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot +.Nm +.Cm inherit +.Op Fl rS +.Ar property +.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot +.Nm +.Cm upgrade +.Op Fl v +.Nm +.Cm upgrade +.Op Fl r +.Op Fl V Ar version +.Fl a | Ar filesystem +.Nm +.Cm userspace +.Op Fl niHp +.Op Fl o Ar field Ns Op , Ns Ar ... +.Op Fl sS Ar field +.Ar ... +.Op Fl t Ar type Ns Op , Ns Ar ... +.Ar filesystem Ns | Ns Ar snapshot +.Nm +.Cm groupspace +.Op Fl niHp +.Op Fl o Ar field Ns Op , Ns Ar ... +.Op Fl sS Ar field +.Ar ... +.Op Fl t Ar type Ns Op , Ns Ar ... +.Ar filesystem Ns | Ns Ar snapshot +.Nm +.Cm mount +.Nm +.Cm mount +.Op Fl vO +.Op Fl o Ar property Ns Op , Ns Ar ... +.Fl a | Ar filesystem +.Nm +.Cm unmount +.Op Fl f +.Fl a | Ar filesystem Ns | Ns Ar mountpoint +.Nm +.Cm share +.Fl a | Ar filesystem +.Nm +.Cm unshare +.Fl a | Ar filesystem Ns | Ns Ar mountpoint +.Nm +.Cm send +.Op Fl DnPpRrv +.Op Fl i Ar snapshot | Fl I Ar snapshot +.Ar snapshot +.Nm +.Cm receive +.Op Fl vnFu +.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot +.Nm +.Cm receive +.Op Fl vnFu +.Op Fl d | e +.Ar filesystem +.Nm +.Cm allow +.Ar filesystem Ns | Ns Ar volume +.Nm +.Cm allow +.Op Fl ldug +.Cm everyone Ns | Ns Ar user Ns | Ns Ar group Ns Op , Ns Ar ... +.Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ... +.Ar filesystem Ns | Ns Ar volume +.Nm +.Cm allow +.Op Fl ld +.Fl e +.Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ... +.Ar filesystem Ns | Ns Ar volume +.Nm +.Cm allow +.Fl c +.Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ... +.Ar filesystem Ns | Ns Ar volume +.Nm +.Cm allow +.Fl s +.Ar @setname +.Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ... +.Ar filesystem Ns | Ns Ar volume +.Nm +.Cm unallow +.Op Fl rldug +.Cm everyone Ns | Ns Ar user Ns | Ns Ar group Ns Op , Ns Ar ... +.Op Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ... +.Ar filesystem Ns | Ns Ar volume +.Nm +.Cm unallow +.Op Fl rld +.Fl e +.Op Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ... +.Ar filesystem Ns | Ns Ar volume +.Nm +.Cm unallow +.Op Fl r +.Fl c +.Op Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ... +.Ar filesystem Ns | Ns Ar volume +.Nm +.Cm unallow +.Op Fl r +.Fl s +.Ar @setname +.Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ... +.Ar filesystem Ns | Ns Ar volume +.Nm +.Cm hold +.Op Fl r +.Ar tag snapshot ... +.Nm +.Cm holds +.Op Fl r +.Ar snapshot ... +.Nm +.Cm release +.Op Fl r +.Ar tag snapshot ... +.Nm +.Cm diff +.Op Fl FHt +.Ar snapshot +.Op Ar snapshot Ns | Ns Ar filesystem +.Nm +.Cm jail +.Ar jailid filesystem +.Nm +.Cm unjail +.Ar jailid filesystem +.Sh DESCRIPTION +The +.Nm +command configures +.Tn ZFS +datasets within a +.Tn ZFS +storage pool, as described in +.Xr zpool 8 . +A dataset is identified by a unique path within the +.Tn ZFS +namespace. For example: +.Bd -ragged -offset 4n +.No pool/ Ns Brq filesystem,volume,snapshot +.Ed +.Pp +where the maximum length of a dataset name is +.Dv MAXNAMELEN +(256 bytes). +.Pp A dataset can be one of the following: -.sp -.ne 2 -.na -\fB\fIfile system\fR\fR -.ad -.sp .6 -.RS 4n -A \fBZFS\fR dataset of type \fBfilesystem\fR can be mounted within the standard -system namespace and behaves like other file systems. While \fBZFS\fR file -systems are designed to be \fBPOSIX\fR compliant, known issues exist that -prevent compliance in some cases. Applications that depend on standards -conformance might fail due to nonstandard behavior when checking file system -free space. -.RE - -.sp -.ne 2 -.na -\fB\fIvolume\fR\fR -.ad -.sp .6 -.RS 4n +.Bl -hang -width 12n +.It Sy file system +A +.Tn ZFS +dataset of type +.Em filesystem +can be mounted within the standard system namespace and behaves like other file +systems. While +.Tn ZFS +file systems are designed to be +.Tn POSIX +compliant, known issues exist that prevent compliance in some cases. +Applications that depend on standards conformance might fail due to nonstandard +behavior when checking file system free space. +.It Sy volume A logical volume exported as a raw or block device. This type of dataset should only be used under special circumstances. File systems are typically used in most environments. -.RE - -.sp -.ne 2 -.na -\fB\fIsnapshot\fR\fR -.ad -.sp .6 -.RS 4n +.It Sy snapshot A read-only version of a file system or volume at a given point in time. It is -specified as \fIfilesystem@name\fR or \fIvolume@name\fR. -.RE - -.SS "ZFS File System Hierarchy" -.sp -.LP -A \fBZFS\fR storage pool is a logical collection of devices that provide space -for datasets. A storage pool is also the root of the \fBZFS\fR file system -hierarchy. -.sp -.LP +specified as +.Em filesystem@name +or +.Em volume@name . +.El +.Ss ZFS File System Hierarchy +A +.Tn ZFS +storage pool is a logical collection of devices that provide space for *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Tue Dec 6 03:32:37 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CF7D6106566B; Tue, 6 Dec 2011 03:32:37 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A68D28FC13; Tue, 6 Dec 2011 03:32:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB63Wbqs070691; Tue, 6 Dec 2011 03:32:37 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB63WbPd070689; Tue, 6 Dec 2011 03:32:37 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <201112060332.pB63WbPd070689@svn.freebsd.org> From: Brooks Davis Date: Tue, 6 Dec 2011 03:32:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228299 - projects/varsym/usr.bin X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Dec 2011 03:32:37 -0000 Author: brooks Date: Tue Dec 6 03:32:37 2011 New Revision: 228299 URL: http://svn.freebsd.org/changeset/base/228299 Log: Actually hook the varsym command up to the build. Modified: projects/varsym/usr.bin/Makefile Modified: projects/varsym/usr.bin/Makefile ============================================================================== --- projects/varsym/usr.bin/Makefile Tue Dec 6 00:58:42 2011 (r228298) +++ projects/varsym/usr.bin/Makefile Tue Dec 6 03:32:37 2011 (r228299) @@ -171,6 +171,7 @@ SUBDIR= alias \ unvis \ uudecode \ uuencode \ + varsym \ vi \ vis \ vmstat \ From owner-svn-src-projects@FreeBSD.ORG Tue Dec 6 03:35:24 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0E228106566C; Tue, 6 Dec 2011 03:35:24 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F2D228FC08; Tue, 6 Dec 2011 03:35:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB63ZNfo070828; Tue, 6 Dec 2011 03:35:23 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB63ZNhk070824; Tue, 6 Dec 2011 03:35:23 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <201112060335.pB63ZNhk070824@svn.freebsd.org> From: Brooks Davis Date: Tue, 6 Dec 2011 03:35:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228300 - projects/varsym/sys/kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Dec 2011 03:35:24 -0000 Author: brooks Date: Tue Dec 6 03:35:23 2011 New Revision: 228300 URL: http://svn.freebsd.org/changeset/base/228300 Log: Knobs work better if you ever define the associated values: include opt_varsym.h. Modified: projects/varsym/sys/kern/kern_exec.c projects/varsym/sys/kern/kern_fork.c projects/varsym/sys/kern/vfs_lookup.c Modified: projects/varsym/sys/kern/kern_exec.c ============================================================================== --- projects/varsym/sys/kern/kern_exec.c Tue Dec 6 03:32:37 2011 (r228299) +++ projects/varsym/sys/kern/kern_exec.c Tue Dec 6 03:35:23 2011 (r228300) @@ -31,6 +31,7 @@ __FBSDID("$FreeBSD$"); #include "opt_hwpmc_hooks.h" #include "opt_kdtrace.h" #include "opt_ktrace.h" +#include "opt_varsym.h" #include "opt_vm.h" #include Modified: projects/varsym/sys/kern/kern_fork.c ============================================================================== --- projects/varsym/sys/kern/kern_fork.c Tue Dec 6 03:32:37 2011 (r228299) +++ projects/varsym/sys/kern/kern_fork.c Tue Dec 6 03:35:23 2011 (r228300) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include "opt_ktrace.h" #include "opt_kstack_pages.h" #include "opt_procdesc.h" +#include "opt_varsym.h" #include #include Modified: projects/varsym/sys/kern/vfs_lookup.c ============================================================================== --- projects/varsym/sys/kern/vfs_lookup.c Tue Dec 6 03:32:37 2011 (r228299) +++ projects/varsym/sys/kern/vfs_lookup.c Tue Dec 6 03:35:23 2011 (r228300) @@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$"); #include "opt_capsicum.h" #include "opt_kdtrace.h" #include "opt_ktrace.h" +#include "opt_varsym.h" #include #include From owner-svn-src-projects@FreeBSD.ORG Tue Dec 6 17:30:16 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1FFDC106566C; Tue, 6 Dec 2011 17:30:16 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0D7428FC15; Tue, 6 Dec 2011 17:30:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB6HUGXd001277; Tue, 6 Dec 2011 17:30:16 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB6HUFNd001258; Tue, 6 Dec 2011 17:30:15 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <201112061730.pB6HUFNd001258@svn.freebsd.org> From: Brooks Davis Date: Tue, 6 Dec 2011 17:30:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228309 - in projects/varsym: contrib/openbsm/etc sys/bsm sys/compat/freebsd32 sys/kern sys/security/audit sys/sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Dec 2011 17:30:16 -0000 Author: brooks Date: Tue Dec 6 17:30:15 2011 New Revision: 228309 URL: http://svn.freebsd.org/changeset/base/228309 Log: Add audit support for varsym_*() syscalls. Modified: projects/varsym/contrib/openbsm/etc/audit_event projects/varsym/sys/bsm/audit_kevents.h projects/varsym/sys/compat/freebsd32/freebsd32_proto.h projects/varsym/sys/compat/freebsd32/freebsd32_syscall.h projects/varsym/sys/compat/freebsd32/freebsd32_syscalls.c projects/varsym/sys/compat/freebsd32/freebsd32_sysent.c projects/varsym/sys/compat/freebsd32/syscalls.master projects/varsym/sys/kern/init_sysent.c projects/varsym/sys/kern/kern_varsym.c projects/varsym/sys/kern/syscalls.c projects/varsym/sys/kern/syscalls.master projects/varsym/sys/security/audit/audit.h projects/varsym/sys/security/audit/audit_arg.c projects/varsym/sys/security/audit/audit_bsm.c projects/varsym/sys/security/audit/audit_private.h projects/varsym/sys/sys/syscall.h projects/varsym/sys/sys/syscall.mk projects/varsym/sys/sys/sysproto.h Modified: projects/varsym/contrib/openbsm/etc/audit_event ============================================================================== --- projects/varsym/contrib/openbsm/etc/audit_event Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/contrib/openbsm/etc/audit_event Tue Dec 6 17:30:15 2011 (r228309) @@ -558,6 +558,9 @@ 43194:AUE_FSCTL:fsctl():fm 43195:AUE_FFSCTL:ffsctl():fm 43196:AUE_LPATHCONF:lpathconf(2):fa +43201:AUE_VARSYM_SET:varsym_set(2):ad,fc +43202:AUE_VARSYM_GET:varsym_get(2):ad,fa +43203:AUE_VARSYM_LIST:varsym_list(2):ad,fa # # Solaris userspace events. # Modified: projects/varsym/sys/bsm/audit_kevents.h ============================================================================== --- projects/varsym/sys/bsm/audit_kevents.h Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/bsm/audit_kevents.h Tue Dec 6 17:30:15 2011 (r228309) @@ -602,6 +602,9 @@ #define AUE_PDKILL 43198 /* FreeBSD. */ #define AUE_PDGETPID 43199 /* FreeBSD. */ #define AUE_PDWAIT 43200 /* FreeBSD. */ +#define AUE_VARSYM_SET 43201 /* FreeBSD. */ +#define AUE_VARSYM_GET 43202 /* FreeBSD. */ +#define AUE_VARSYM_LIST 43203 /* FreeBSD. */ /* * Darwin BSM uses a number of AUE_O_* definitions, which are aliased to the Modified: projects/varsym/sys/compat/freebsd32/freebsd32_proto.h ============================================================================== --- projects/varsym/sys/compat/freebsd32/freebsd32_proto.h Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/compat/freebsd32/freebsd32_proto.h Tue Dec 6 17:30:15 2011 (r228309) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 226364 2011-10-14 11:46:46Z jhb + * created from FreeBSD: projects/varsym/sys/compat/freebsd32/syscalls.master 226973 2011-10-31 23:27:24Z brooks */ #ifndef _FREEBSD32_SYSPROTO_H_ @@ -1090,9 +1090,9 @@ int freebsd7_freebsd32_shmctl(struct thr #define FREEBSD32_SYS_AUE_freebsd32_shmctl AUE_SHMCTL #define FREEBSD32_SYS_AUE_freebsd32_pselect AUE_SELECT #define FREEBSD32_SYS_AUE_freebsd32_posix_fallocate AUE_NULL -#define FREEBSD32_SYS_AUE_freebsd32_varsym_set AUE_NULL -#define FREEBSD32_SYS_AUE_freebsd32_varsym_get AUE_NULL -#define FREEBSD32_SYS_AUE_freebsd32_varsym_list AUE_NULL +#define FREEBSD32_SYS_AUE_freebsd32_varsym_set AUE_VARSYM_SET +#define FREEBSD32_SYS_AUE_freebsd32_varsym_get AUE_VARSYM_GET +#define FREEBSD32_SYS_AUE_freebsd32_varsym_list AUE_VARSYM_LIST #undef PAD_ #undef PADL_ Modified: projects/varsym/sys/compat/freebsd32/freebsd32_syscall.h ============================================================================== --- projects/varsym/sys/compat/freebsd32/freebsd32_syscall.h Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/compat/freebsd32/freebsd32_syscall.h Tue Dec 6 17:30:15 2011 (r228309) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 226364 2011-10-14 11:46:46Z jhb + * created from FreeBSD: projects/varsym/sys/compat/freebsd32/syscalls.master 226973 2011-10-31 23:27:24Z brooks */ #define FREEBSD32_SYS_syscall 0 Modified: projects/varsym/sys/compat/freebsd32/freebsd32_syscalls.c ============================================================================== --- projects/varsym/sys/compat/freebsd32/freebsd32_syscalls.c Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/compat/freebsd32/freebsd32_syscalls.c Tue Dec 6 17:30:15 2011 (r228309) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 226364 2011-10-14 11:46:46Z jhb + * created from FreeBSD: projects/varsym/sys/compat/freebsd32/syscalls.master 226973 2011-10-31 23:27:24Z brooks */ const char *freebsd32_syscallnames[] = { Modified: projects/varsym/sys/compat/freebsd32/freebsd32_sysent.c ============================================================================== --- projects/varsym/sys/compat/freebsd32/freebsd32_sysent.c Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/compat/freebsd32/freebsd32_sysent.c Tue Dec 6 17:30:15 2011 (r228309) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 226364 2011-10-14 11:46:46Z jhb + * created from FreeBSD: projects/varsym/sys/compat/freebsd32/syscalls.master 226973 2011-10-31 23:27:24Z brooks */ #include "opt_compat.h" @@ -592,7 +592,7 @@ struct sysent freebsd32_sysent[] = { { AS(rctl_remove_rule_args), (sy_call_t *)sys_rctl_remove_rule, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 529 = rctl_remove_rule */ { AS(freebsd32_posix_fallocate_args), (sy_call_t *)freebsd32_posix_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 530 = freebsd32_posix_fallocate */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 531 = posix_fadvise */ - { AS(freebsd32_varsym_set_args), (sy_call_t *)freebsd32_varsym_set, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 532 = freebsd32_varsym_set */ - { AS(freebsd32_varsym_get_args), (sy_call_t *)freebsd32_varsym_get, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 533 = freebsd32_varsym_get */ - { AS(freebsd32_varsym_list_args), (sy_call_t *)freebsd32_varsym_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 534 = freebsd32_varsym_list */ + { AS(freebsd32_varsym_set_args), (sy_call_t *)freebsd32_varsym_set, AUE_VARSYM_SET, NULL, 0, 0, 0, SY_THR_STATIC }, /* 532 = freebsd32_varsym_set */ + { AS(freebsd32_varsym_get_args), (sy_call_t *)freebsd32_varsym_get, AUE_VARSYM_GET, NULL, 0, 0, 0, SY_THR_STATIC }, /* 533 = freebsd32_varsym_get */ + { AS(freebsd32_varsym_list_args), (sy_call_t *)freebsd32_varsym_list, AUE_VARSYM_LIST, NULL, 0, 0, 0, SY_THR_STATIC }, /* 534 = freebsd32_varsym_list */ }; Modified: projects/varsym/sys/compat/freebsd32/syscalls.master ============================================================================== --- projects/varsym/sys/compat/freebsd32/syscalls.master Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/compat/freebsd32/syscalls.master Tue Dec 6 17:30:15 2011 (r228309) @@ -992,13 +992,13 @@ uint32_t offset1, uint32_t offset2,\ uint32_t len1, uint32_t len2); } 531 AUE_NULL UNIMPL posix_fadvise -532 AUE_NULL STD { int freebsd32_varsym_set(int scope, \ +532 AUE_VARSYM_SET STD { int freebsd32_varsym_set(int scope, \ uint32_t whichlo, uint32_t whichhi, \ const char *name, const char *data); } -533 AUE_NULL STD { int freebsd32_varsym_get(int scope, \ +533 AUE_VARSYM_GET STD { int freebsd32_varsym_get(int scope, \ uint32_t whichlo, uint32_t whichhi, \ const char *name, \ char *buf, uint32_t *size); } -534 AUE_NULL STD { int freebsd32_varsym_list(int scope, \ +534 AUE_VARSYM_LIST STD { int freebsd32_varsym_list(int scope, \ uint32_t whichlo, uint32_t whichhi, \ char *buf, uint32_t *size); } Modified: projects/varsym/sys/kern/init_sysent.c ============================================================================== --- projects/varsym/sys/kern/init_sysent.c Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/kern/init_sysent.c Tue Dec 6 17:30:15 2011 (r228309) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/kern/syscalls.master 224987 2011-08-18 22:51:30Z jonathan + * created from FreeBSD: projects/varsym/sys/kern/syscalls.master 226973 2011-10-31 23:27:24Z brooks */ #include "opt_compat.h" @@ -566,7 +566,7 @@ struct sysent sysent[] = { { AS(rctl_remove_rule_args), (sy_call_t *)sys_rctl_remove_rule, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 529 = rctl_remove_rule */ { AS(posix_fallocate_args), (sy_call_t *)sys_posix_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 530 = posix_fallocate */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 531 = posix_fadvise */ - { AS(varsym_set_args), (sy_call_t *)sys_varsym_set, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 532 = varsym_set */ - { AS(varsym_get_args), (sy_call_t *)sys_varsym_get, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 533 = varsym_get */ - { AS(varsym_list_args), (sy_call_t *)sys_varsym_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 534 = varsym_list */ + { AS(varsym_set_args), (sy_call_t *)sys_varsym_set, AUE_VARSYM_SET, NULL, 0, 0, 0, SY_THR_STATIC }, /* 532 = varsym_set */ + { AS(varsym_get_args), (sy_call_t *)sys_varsym_get, AUE_VARSYM_GET, NULL, 0, 0, 0, SY_THR_STATIC }, /* 533 = varsym_get */ + { AS(varsym_list_args), (sy_call_t *)sys_varsym_list, AUE_VARSYM_LIST, NULL, 0, 0, 0, SY_THR_STATIC }, /* 534 = varsym_list */ }; Modified: projects/varsym/sys/kern/kern_varsym.c ============================================================================== --- projects/varsym/sys/kern/kern_varsym.c Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/kern/kern_varsym.c Tue Dec 6 17:30:15 2011 (r228309) @@ -59,6 +59,8 @@ #include #include +#include + #ifdef VARSYM SYSCTL_NODE(_vfs, OID_AUTO, varsym, CTLFLAG_RD, NULL, @@ -227,11 +229,14 @@ sys_varsym_set(struct thread *td, struct if (!varsym_enable) return(ENOSYS); + AUDIT_ARG_VARSYM(uap->scope, uap->which); + if (uap->name == NULL) return (varsym_clear(td, uap->scope, uap->which)); if ((error = copyinstr(uap->name, name, sizeof(name), NULL)) != 0) return(error); + AUDIT_ARG_TEXT(name); if (uap->data) { buf = malloc(MAXVARSYM_DATA, M_VARSYM, M_WAITOK); @@ -239,6 +244,7 @@ sys_varsym_set(struct thread *td, struct if (error != 0) goto done; } + AUDIT_ARG_TEXT2(buf); switch(uap->scope) { case VARSYM_PROC: @@ -358,6 +364,8 @@ sys_varsym_get(struct thread *td, struct int error; size_t bufsize; + AUDIT_ARG_VARSYM(uap->scope, uap->which); + if ((error = copyin(uap->size, &bufsize, sizeof(bufsize))) != 0) return(error); @@ -384,6 +392,8 @@ kern_varsym_get(struct thread *td, int s if ((error = copyinstr(uname, name, sizeof(name), NULL)) != 0) return(error); + AUDIT_ARG_TEXT(name); + switch (scope) { case VARSYM_PROC: case VARSYM_PROC_PRIV: @@ -402,6 +412,7 @@ kern_varsym_get(struct thread *td, int s sym = varsymfind(scope, name, strlen(name)); if (sym == NULL) return(ENOENT); + AUDIT_ARG_TEXT2(sym->vs_data); dlen = strlen(sym->vs_data); if (dlen < *bufsize) @@ -427,6 +438,8 @@ sys_varsym_list(struct thread *td, struc int error; size_t bufsize; + AUDIT_ARG_VARSYM(uap->scope, uap->which); + if ((error = copyin(uap->size, &bufsize, sizeof(bufsize))) != 0) return(error); Modified: projects/varsym/sys/kern/syscalls.c ============================================================================== --- projects/varsym/sys/kern/syscalls.c Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/kern/syscalls.c Tue Dec 6 17:30:15 2011 (r228309) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/kern/syscalls.master 224987 2011-08-18 22:51:30Z jonathan + * created from FreeBSD: projects/varsym/sys/kern/syscalls.master 226973 2011-10-31 23:27:24Z brooks */ const char *syscallnames[] = { Modified: projects/varsym/sys/kern/syscalls.master ============================================================================== --- projects/varsym/sys/kern/syscalls.master Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/kern/syscalls.master Tue Dec 6 17:30:15 2011 (r228309) @@ -948,13 +948,13 @@ 530 AUE_NULL STD { int posix_fallocate(int fd, \ off_t offset, off_t len); } 531 AUE_NULL UNIMPL posix_fadvise -532 AUE_NULL STD { int varsym_set(int scope, id_t which, \ +532 AUE_VARSYM_SET STD { int varsym_set(int scope, id_t which, \ const char *name, \ const char *data); } -533 AUE_NULL STD { int varsym_get(int scope, id_t which,\ +533 AUE_VARSYM_GET STD { int varsym_get(int scope, id_t which,\ const char *name, \ char *buf, size_t *size); } -534 AUE_NULL STD { int varsym_list(int scope, id_t which,\ +534 AUE_VARSYM_LIST STD { int varsym_list(int scope, id_t which,\ char *buf, size_t *size); } ; Please copy any additions and changes to the following compatability tables: ; sys/compat/freebsd32/syscalls.master Modified: projects/varsym/sys/security/audit/audit.h ============================================================================== --- projects/varsym/sys/security/audit/audit.h Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/security/audit/audit.h Tue Dec 6 17:30:15 2011 (r228309) @@ -104,6 +104,7 @@ void audit_arg_upath2(struct thread *td void audit_arg_vnode1(struct vnode *vp); void audit_arg_vnode2(struct vnode *vp); void audit_arg_text(char *text); +void audit_arg_text2(char *text); void audit_arg_cmd(int cmd); void audit_arg_svipc_cmd(int cmd); void audit_arg_svipc_perm(struct ipc_perm *perm); @@ -115,6 +116,7 @@ void audit_arg_file(struct proc *p, str void audit_arg_argv(char *argv, int argc, int length); void audit_arg_envv(char *envv, int envc, int length); void audit_arg_rights(cap_rights_t rights); +void audit_arg_varsym(int scope, id_t which); void audit_sysclose(struct thread *td, int fd); void audit_cred_copy(struct ucred *src, struct ucred *dest); void audit_cred_destroy(struct ucred *cred); @@ -271,6 +273,11 @@ void audit_thread_free(struct thread *t audit_arg_text((text)); \ } while (0) +#define AUDIT_ARG_TEXT2(text) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_text2((text)); \ +} while (0) + #define AUDIT_ARG_UID(uid) do { \ if (AUDITING_TD(curthread)) \ audit_arg_uid((uid)); \ @@ -301,6 +308,11 @@ void audit_thread_free(struct thread *t audit_arg_vnode2((vp)); \ } while (0) +#define AUDIT_ARG_VARSYM(scope, which) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_varsym((scope), (which)); \ +} while (0) + #define AUDIT_SYSCALL_ENTER(code, td) do { \ if (audit_enabled) { \ audit_syscall_enter(code, td); \ Modified: projects/varsym/sys/security/audit/audit_arg.c ============================================================================== --- projects/varsym/sys/security/audit/audit_arg.c Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/security/audit/audit_arg.c Tue Dec 6 17:30:15 2011 (r228309) @@ -546,6 +546,28 @@ audit_arg_text(char *text) } void +audit_arg_text2(char *text) +{ + struct kaudit_record *ar; + + KASSERT(text != NULL, ("audit_arg_text2: text == NULL")); + + ar = currecord(); + if (ar == NULL) + return; + + /* Invalidate the text string */ + ar->k_ar.ar_valid_arg &= (ARG_ALL ^ ARG_TEXT2); + + if (ar->k_ar.ar_arg_text2 == NULL) + ar->k_ar.ar_arg_text2 = malloc(MAXPATHLEN, M_AUDITTEXT, + M_WAITOK); + + strncpy(ar->k_ar.ar_arg_text2, text, MAXPATHLEN); + ARG_SET_VALID(ar, ARG_TEXT2); +} + +void audit_arg_cmd(int cmd) { struct kaudit_record *ar; @@ -878,6 +900,20 @@ audit_arg_rights(cap_rights_t rights) ARG_SET_VALID(ar, ARG_RIGHTS); } +void +audit_arg_varsym(int scope, id_t which) +{ + struct kaudit_record *ar; + + ar = currecord(); + if (ar == NULL) + return; + + ar->k_ar.ar_arg_scope = scope; + ar->k_ar.ar_arg_id = which; + ARG_SET_VALID(ar, ARG_VARSYM); +} + /* * The close() system call uses it's own audit call to capture the path/vnode * information because those pieces are not easily obtained within the system Modified: projects/varsym/sys/security/audit/audit_bsm.c ============================================================================== --- projects/varsym/sys/security/audit/audit_bsm.c Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/security/audit/audit_bsm.c Tue Dec 6 17:30:15 2011 (r228309) @@ -1611,6 +1611,25 @@ kaudit_to_bsm(struct kaudit_record *kar, case AUE_CAP_GETMODE: break; + case AUE_VARSYM_SET: + case AUE_VARSYM_GET: + case AUE_VARSYM_LIST: + if (ARG_IS_VALID(kar, ARG_VARSYM)) { + tok = au_to_arg32(1, "scope", ar->ar_arg_scope); + kau_write(rec, tok); + tok = au_to_arg64(1, "which", ar->ar_arg_id); + kau_write(rec, tok); + } + if (ARG_IS_VALID(kar, ARG_TEXT)) { + tok = au_to_text(ar->ar_arg_text); + kau_write(rec, tok); + } + if (ARG_IS_VALID(kar, ARG_TEXT2)) { + tok = au_to_text(ar->ar_arg_text2); + kau_write(rec, tok); + } + break; + case AUE_NULL: default: printf("BSM conversion requested for unknown event %d\n", Modified: projects/varsym/sys/security/audit/audit_private.h ============================================================================== --- projects/varsym/sys/security/audit/audit_private.h Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/security/audit/audit_private.h Tue Dec 6 17:30:15 2011 (r228309) @@ -230,6 +230,9 @@ struct audit_record { int ar_arg_exitretval; struct sockaddr_storage ar_arg_sockaddr; cap_rights_t ar_arg_rights; + int ar_arg_scope; + id_t ar_arg_id; + char *ar_arg_text2; }; /* @@ -290,6 +293,8 @@ struct audit_record { #define ARG_ATFD1 0x0004000000000000ULL #define ARG_ATFD2 0x0008000000000000ULL #define ARG_RIGHTS 0x0010000000000000ULL +#define ARG_TEXT2 0x0020000000000000ULL +#define ARG_VARSYM 0x0040000000000000ULL #define ARG_NONE 0x0000000000000000ULL #define ARG_ALL 0xFFFFFFFFFFFFFFFFULL Modified: projects/varsym/sys/sys/syscall.h ============================================================================== --- projects/varsym/sys/sys/syscall.h Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/sys/syscall.h Tue Dec 6 17:30:15 2011 (r228309) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/kern/syscalls.master 224987 2011-08-18 22:51:30Z jonathan + * created from FreeBSD: projects/varsym/sys/kern/syscalls.master 226973 2011-10-31 23:27:24Z brooks */ #define SYS_syscall 0 Modified: projects/varsym/sys/sys/syscall.mk ============================================================================== --- projects/varsym/sys/sys/syscall.mk Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/sys/syscall.mk Tue Dec 6 17:30:15 2011 (r228309) @@ -1,7 +1,7 @@ # FreeBSD system call names. # DO NOT EDIT-- this file is automatically generated. # $FreeBSD$ -# created from FreeBSD: head/sys/kern/syscalls.master 224987 2011-08-18 22:51:30Z jonathan +# created from FreeBSD: projects/varsym/sys/kern/syscalls.master 226973 2011-10-31 23:27:24Z brooks MIASM = \ syscall.o \ exit.o \ Modified: projects/varsym/sys/sys/sysproto.h ============================================================================== --- projects/varsym/sys/sys/sysproto.h Tue Dec 6 12:03:01 2011 (r228308) +++ projects/varsym/sys/sys/sysproto.h Tue Dec 6 17:30:15 2011 (r228309) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/kern/syscalls.master 224987 2011-08-18 22:51:30Z jonathan + * created from FreeBSD: projects/varsym/sys/kern/syscalls.master 226973 2011-10-31 23:27:24Z brooks */ #ifndef _SYS_SYSPROTO_H_ @@ -2821,9 +2821,9 @@ int freebsd7_shmctl(struct thread *, str #define SYS_AUE_rctl_add_rule AUE_NULL #define SYS_AUE_rctl_remove_rule AUE_NULL #define SYS_AUE_posix_fallocate AUE_NULL -#define SYS_AUE_varsym_set AUE_NULL -#define SYS_AUE_varsym_get AUE_NULL -#define SYS_AUE_varsym_list AUE_NULL +#define SYS_AUE_varsym_set AUE_VARSYM_SET +#define SYS_AUE_varsym_get AUE_VARSYM_GET +#define SYS_AUE_varsym_list AUE_VARSYM_LIST #undef PAD_ #undef PADL_ From owner-svn-src-projects@FreeBSD.ORG Tue Dec 6 17:55:00 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 374DB1065675; Tue, 6 Dec 2011 17:55:00 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 271218FC19; Tue, 6 Dec 2011 17:55:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB6Ht0Qb002072; Tue, 6 Dec 2011 17:55:00 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB6Ht0Im002069; Tue, 6 Dec 2011 17:55:00 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201112061755.pB6Ht0Im002069@svn.freebsd.org> From: Alexander Motin Date: Tue, 6 Dec 2011 17:55:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228310 - projects/head_mfi/sys/dev/mfi X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Dec 2011 17:55:00 -0000 Author: mav Date: Tue Dec 6 17:54:59 2011 New Revision: 228310 URL: http://svn.freebsd.org/changeset/base/228310 Log: Move mfi_decode_evt() call from interrupt thread to the taskqueue. Call from the interrupt thread leads to panic on attempt to sleep on SX lock. Modified: projects/head_mfi/sys/dev/mfi/mfi.c projects/head_mfi/sys/dev/mfi/mfivar.h Modified: projects/head_mfi/sys/dev/mfi/mfi.c ============================================================================== --- projects/head_mfi/sys/dev/mfi/mfi.c Tue Dec 6 17:30:15 2011 (r228309) +++ projects/head_mfi/sys/dev/mfi/mfi.c Tue Dec 6 17:54:59 2011 (r228310) @@ -73,6 +73,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -96,6 +97,7 @@ static void mfi_startup(void *arg); static void mfi_intr(void *arg); static void mfi_ldprobe(struct mfi_softc *sc); static void mfi_syspdprobe(struct mfi_softc *sc); +static void mfi_handle_evt(void *context, int pending); static int mfi_aen_register(struct mfi_softc *sc, int seq, int locale); static void mfi_aen_complete(struct mfi_command *); static int mfi_add_ld(struct mfi_softc *sc, int); @@ -368,6 +370,8 @@ mfi_attach(struct mfi_softc *sc) sx_init(&sc->mfi_config_lock, "MFI config"); TAILQ_INIT(&sc->mfi_ld_tqh); TAILQ_INIT(&sc->mfi_syspd_tqh); + TAILQ_INIT(&sc->mfi_evt_queue); + TASK_INIT(&sc->mfi_evt_task, 0, mfi_handle_evt, sc); TAILQ_INIT(&sc->mfi_aen_pids); TAILQ_INIT(&sc->mfi_cam_ccbq); @@ -1462,6 +1466,10 @@ static void mfi_decode_evt(struct mfi_softc *sc, struct mfi_evt_detail *detail,uint8_t probe_sys_pd) { struct mfi_system_pd *syspd = NULL; + + device_printf(sc->mfi_dev, "%d (%s/0x%04x/%s) - %s\n", detail->seq, + format_timestamp(detail->time), detail->evt_class.members.locale, + format_class(detail->evt_class.members.evt_class), detail->description); switch (detail->arg_type) { case MR_EVT_ARGS_NONE: #define MR_EVT_CTRL_HOST_BUS_SCAN_REQUESTED 0x0152 @@ -1527,10 +1535,41 @@ mfi_decode_evt(struct mfi_softc *sc, str } break; } +} - device_printf(sc->mfi_dev, "%d (%s/0x%04x/%s) - %s\n", detail->seq, - format_timestamp(detail->time), detail->evt_class.members.locale, - format_class(detail->evt_class.members.evt_class), detail->description); +static void +mfi_queue_evt(struct mfi_softc *sc, struct mfi_evt_detail *detail, + uint8_t probe_sys_pd) +{ + struct mfi_evt_queue_elm *elm; + + mtx_assert(&sc->mfi_io_lock, MA_OWNED); + elm = malloc(sizeof(*elm), M_MFIBUF, M_NOWAIT|M_ZERO); + if (elm == NULL) + return; + elm->probe_sys_pd = probe_sys_pd; + memcpy(&elm->detail, detail, sizeof(*detail)); + TAILQ_INSERT_TAIL(&sc->mfi_evt_queue, elm, link); + taskqueue_enqueue(taskqueue_swi, &sc->mfi_evt_task); +} + +static void +mfi_handle_evt(void *context, int pending) +{ + TAILQ_HEAD(,mfi_evt_queue_elm) queue; + struct mfi_softc *sc; + struct mfi_evt_queue_elm *elm; + + sc = context; + TAILQ_INIT(&queue); + mtx_lock(&sc->mfi_io_lock); + TAILQ_CONCAT(&queue, &sc->mfi_evt_queue, link); + mtx_unlock(&sc->mfi_io_lock); + while ((elm = TAILQ_FIRST(&queue)) != NULL) { + TAILQ_REMOVE(&queue, elm, link); + mfi_decode_evt(sc, &elm->detail, elm->probe_sys_pd); + free(elm, M_MFIBUF); + } } static int @@ -1616,13 +1655,7 @@ mfi_aen_complete(struct mfi_command *cm) selwakeup(&sc->mfi_select); } detail = cm->cm_data; - /* - * XXX If this function is too expensive or is recursive, then - * events should be put onto a queue and processed later. - */ - mtx_unlock(&sc->mfi_io_lock); - mfi_decode_evt(sc, detail,1); - mtx_lock(&sc->mfi_io_lock); + mfi_queue_evt(sc, detail, 1); seq = detail->seq + 1; TAILQ_FOREACH_SAFE(mfi_aen_entry, &sc->mfi_aen_pids, aen_link, tmp) { TAILQ_REMOVE(&sc->mfi_aen_pids, mfi_aen_entry, @@ -1738,7 +1771,9 @@ mfi_parse_entries(struct mfi_softc *sc, else if (el->event[i].seq < start_seq) break; } - mfi_decode_evt(sc, &el->event[i], 0); + mtx_lock(&sc->mfi_io_lock); + mfi_queue_evt(sc, &el->event[i], 0); + mtx_unlock(&sc->mfi_io_lock); } seq = el->event[el->count - 1].seq + 1; } Modified: projects/head_mfi/sys/dev/mfi/mfivar.h ============================================================================== --- projects/head_mfi/sys/dev/mfi/mfivar.h Tue Dec 6 17:30:15 2011 (r228309) +++ projects/head_mfi/sys/dev/mfi/mfivar.h Tue Dec 6 17:54:59 2011 (r228310) @@ -60,6 +60,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include /* @@ -136,6 +137,13 @@ struct mfi_system_pd { struct disk *pd_disk; int pd_flags; }; + +struct mfi_evt_queue_elm { + TAILQ_ENTRY(mfi_evt_queue_elm) link; + uint8_t probe_sys_pd; + struct mfi_evt_detail detail; +}; + struct mfi_aen { TAILQ_ENTRY(mfi_aen) aen_link; struct proc *p; @@ -208,6 +216,8 @@ struct mfi_softc { bus_addr_t mfi_tb_ioc_init_busaddr; union mfi_frame *mfi_tb_init; + TAILQ_HEAD(,mfi_evt_queue_elm) mfi_evt_queue; + struct task mfi_evt_task; TAILQ_HEAD(,mfi_aen) mfi_aen_pids; struct mfi_command *mfi_aen_cm; struct mfi_command *mfi_skinny_cm; From owner-svn-src-projects@FreeBSD.ORG Wed Dec 7 12:48:11 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D9791106564A; Wed, 7 Dec 2011 12:48:11 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C9C6C8FC08; Wed, 7 Dec 2011 12:48:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB7CmBeD039983; Wed, 7 Dec 2011 12:48:11 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB7CmB82039981; Wed, 7 Dec 2011 12:48:11 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201112071248.pB7CmB82039981@svn.freebsd.org> From: Alexander Motin Date: Wed, 7 Dec 2011 12:48:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228320 - projects/head_mfi/sys/dev/mfi X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Dec 2011 12:48:11 -0000 Author: mav Date: Wed Dec 7 12:48:11 2011 New Revision: 228320 URL: http://svn.freebsd.org/changeset/base/228320 Log: Implement MFI_DEBUG for 64bit S/G lists. Modified: projects/head_mfi/sys/dev/mfi/mfi_debug.c Modified: projects/head_mfi/sys/dev/mfi/mfi_debug.c ============================================================================== --- projects/head_mfi/sys/dev/mfi/mfi_debug.c Wed Dec 7 12:25:28 2011 (r228319) +++ projects/head_mfi/sys/dev/mfi/mfi_debug.c Wed Dec 7 12:48:11 2011 (r228320) @@ -63,7 +63,8 @@ mfi_print_frame_flags(device_t dev, uint "\2SGL64" "\3SENSE64" "\4WRITE" - "\5READ"); + "\5READ" + "\6IEEESGL"); } static void @@ -73,7 +74,15 @@ mfi_print_sgl(struct mfi_frame_header *h printf("SG List:\n"); for (i = 0; i < count; i++) { - if (hdr->flags & MFI_FRAME_SGL64) { + if (hdr->flags & MFI_FRAME_IEEE_SGL) { + printf("0x%lx:%06d ", (u_long)sgl->sg_skinny[i].addr, + sgl->sg_skinny[i].len); + columns += 26; + if (columns > 77) { + printf("\n"); + columns = 0; + } + } else if (hdr->flags & MFI_FRAME_SGL64) { printf("0x%lx:%06d ", (u_long)sgl->sg64[i].addr, sgl->sg64[i].len); columns += 26; @@ -240,7 +249,12 @@ mfi_validate_sg(struct mfi_softc *sc, st hdr = &cm->cm_frame->header; count = 0; for (i = 0; i < hdr->sg_count; i++) { - count += cm->cm_sg->sg32[i].len; + if (hdr->flags & MFI_FRAME_IEEE_SGL) + count += cm->cm_sg->sg_skinny[i].len; + else if (hdr->flags & MFI_FRAME_SGL64) + count += cm->cm_sg->sg64[i].len; + else + count += cm->cm_sg->sg32[i].len; } /* count++; From owner-svn-src-projects@FreeBSD.ORG Thu Dec 8 05:24:26 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9C860106564A; Thu, 8 Dec 2011 05:24:26 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 82B5B8FC08; Thu, 8 Dec 2011 05:24:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB85OQcm071968; Thu, 8 Dec 2011 05:24:26 GMT (envelope-from linimon@svn.freebsd.org) Received: (from linimon@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB85OQ0Z071966; Thu, 8 Dec 2011 05:24:26 GMT (envelope-from linimon@svn.freebsd.org) Message-Id: <201112080524.pB85OQ0Z071966@svn.freebsd.org> From: Mark Linimon Date: Thu, 8 Dec 2011 05:24:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228345 - projects/portbuild/scripts X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Dec 2011 05:24:26 -0000 Author: linimon (doc,ports committer) Date: Thu Dec 8 05:24:26 2011 New Revision: 228345 URL: http://svn.freebsd.org/changeset/base/228345 Log: When I laid out the svn dirs on pointyhat-west, I put in one more level of directories. Update the expiry list to take this into account. While here, add debugging and verbosity. Modified: projects/portbuild/scripts/zexpire Modified: projects/portbuild/scripts/zexpire ============================================================================== --- projects/portbuild/scripts/zexpire Thu Dec 8 03:20:48 2011 (r228344) +++ projects/portbuild/scripts/zexpire Thu Dec 8 05:24:26 2011 (r228345) @@ -8,23 +8,30 @@ sys.path.insert(0, '/var/portbuild/lib/p import zfs +ENABLED = True +VERBOSE= True + # List of filesystems to expire expirelist=(("a", 14), - ("a/nfs", 14), - ("a/local", 14), ("a/portbuild", 14), ("a/portbuild/amd64", 14), + ("a/portbuild/arm", 14), ("a/portbuild/i386", 14), ("a/portbuild/ia64", 14), ("a/portbuild/powerpc", 14), ("a/portbuild/sparc64", 14), + ("a/portbuild/sun4v", 14), ("a/snap", 7), - ("a/snap/ports", 2), + ("a/snap/ports-head", 2), + ("a/snap/ports-head/ports", 2), ("a/snap/src-7", 2), + ("a/snap/src-7/src", 2), ("a/snap/src-8", 2), + ("a/snap/src-8/src", 2), ("a/snap/src-9", 2), - ("a/snap/world-amd64-HEAD", 7), - ("a/snap/world-i386-HEAD", 7)) + ("a/snap/src-9/src", 2), + ("a/snap/src-10", 2), + ("a/snap/src-10/src", 2)) now = datetime.datetime.now() print "zexpire: starting at " + now.ctime() @@ -32,10 +39,15 @@ print "zexpire: starting at " + now.ctim for (fs, maxage) in expirelist: print + if VERBOSE: + print "fs: " + str(fs) try: + # XXX MCL 20111205 produces nothing! snapdata = zfs.getallsnaps(fs) + if VERBOSE: + print "snapdata: " + str(snapdata) except zfs.NoSuchFS: - print "no such fs %s, skipping" % fs + print "zexpire: no such fs %s, skipping" % fs continue snaps = (i[0] for i in snapdata) @@ -50,12 +62,15 @@ for (fs, maxage) in expirelist: print "zexpire: don't know what to do with snap `" + snap + "'" continue + if VERBOSE: + print "zexpire: examining snapshot %s@%s" % (fs, snap) if (now - snapdate) > datetime.timedelta(days=maxage): - print "Snapshot %s@%s too old, attempting zfs destroy" % (fs, snap) - (err, out) = commands.getstatusoutput("zfs destroy %s@%s" % (fs,snap)) + print "zexpire: snapshot %s@%s too old, attempting zfs destroy" % (fs, snap) + if ENABLED: + (err, out) = commands.getstatusoutput("zfs destroy %s@%s" % (fs,snap)) - if err: - print "Error deleting snapshot", out + if err: + print "zexpire: error deleting snapshot", out then = datetime.datetime.now() print From owner-svn-src-projects@FreeBSD.ORG Thu Dec 8 05:37:59 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4653C1065670; Thu, 8 Dec 2011 05:37:59 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 36C4E8FC0A; Thu, 8 Dec 2011 05:37:59 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB85bx1g072403; Thu, 8 Dec 2011 05:37:59 GMT (envelope-from linimon@svn.freebsd.org) Received: (from linimon@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB85bxMC072401; Thu, 8 Dec 2011 05:37:59 GMT (envelope-from linimon@svn.freebsd.org) Message-Id: <201112080537.pB85bxMC072401@svn.freebsd.org> From: Mark Linimon Date: Thu, 8 Dec 2011 05:37:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228346 - projects/portbuild/scripts X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Dec 2011 05:37:59 -0000 Author: linimon (doc,ports committer) Date: Thu Dec 8 05:37:58 2011 New Revision: 228346 URL: http://svn.freebsd.org/changeset/base/228346 Log: Remove debug line. Modified: projects/portbuild/scripts/zexpire Modified: projects/portbuild/scripts/zexpire ============================================================================== --- projects/portbuild/scripts/zexpire Thu Dec 8 05:24:26 2011 (r228345) +++ projects/portbuild/scripts/zexpire Thu Dec 8 05:37:58 2011 (r228346) @@ -42,7 +42,6 @@ for (fs, maxage) in expirelist: if VERBOSE: print "fs: " + str(fs) try: - # XXX MCL 20111205 produces nothing! snapdata = zfs.getallsnaps(fs) if VERBOSE: print "snapdata: " + str(snapdata) From owner-svn-src-projects@FreeBSD.ORG Thu Dec 8 15:28:36 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C6B15106566B; Thu, 8 Dec 2011 15:28:36 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B6C5A8FC15; Thu, 8 Dec 2011 15:28:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB8FSajq092352; Thu, 8 Dec 2011 15:28:36 GMT (envelope-from linimon@svn.freebsd.org) Received: (from linimon@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB8FSaMX092350; Thu, 8 Dec 2011 15:28:36 GMT (envelope-from linimon@svn.freebsd.org) Message-Id: <201112081528.pB8FSaMX092350@svn.freebsd.org> From: Mark Linimon Date: Thu, 8 Dec 2011 15:28:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228352 - projects/portbuild/scripts X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Dec 2011 15:28:36 -0000 Author: linimon (doc,ports committer) Date: Thu Dec 8 15:28:36 2011 New Revision: 228352 URL: http://svn.freebsd.org/changeset/base/228352 Log: Robustness. Modified: projects/portbuild/scripts/prunefailure Modified: projects/portbuild/scripts/prunefailure ============================================================================== --- projects/portbuild/scripts/prunefailure Thu Dec 8 13:54:06 2011 (r228351) +++ projects/portbuild/scripts/prunefailure Thu Dec 8 15:28:36 2011 (r228352) @@ -47,8 +47,13 @@ cd $home pkgdir=${builddir}/packages/All index=${PORTSDIR}/${INDEXFILE} +if [ ! -f $index ]; then + echo "INDEX file $index does not exist, terminating!" + exit 1 +fi + if [ "`wc -l $index | awk '{print $1}'`" -lt 9000 ]; then - echo "INDEX is corrupted, terminating!" + echo "INDEX file $index is corrupted, terminating!" exit 1 fi From owner-svn-src-projects@FreeBSD.ORG Fri Dec 9 04:51:40 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8523E106566B; Fri, 9 Dec 2011 04:51:40 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 757D58FC0C; Fri, 9 Dec 2011 04:51:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB94peoh017307; Fri, 9 Dec 2011 04:51:40 GMT (envelope-from linimon@svn.freebsd.org) Received: (from linimon@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB94peKM017305; Fri, 9 Dec 2011 04:51:40 GMT (envelope-from linimon@svn.freebsd.org) Message-Id: <201112090451.pB94peKM017305@svn.freebsd.org> From: Mark Linimon Date: Fri, 9 Dec 2011 04:51:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228357 - projects/portbuild/scripts X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Dec 2011 04:51:40 -0000 Author: linimon (doc,ports committer) Date: Fri Dec 9 04:51:40 2011 New Revision: 228357 URL: http://svn.freebsd.org/changeset/base/228357 Log: Fix [B] indication on index.html. Has probably been broken for years. Modified: projects/portbuild/scripts/processlogs Modified: projects/portbuild/scripts/processlogs ============================================================================== --- projects/portbuild/scripts/processlogs Fri Dec 9 02:30:56 2011 (r228356) +++ projects/portbuild/scripts/processlogs Fri Dec 9 04:51:40 2011 (r228357) @@ -182,7 +182,7 @@ sort .logs/.all | while read line; do echo "$mailto" >> $of echo "" >> $of - test "$9" = "yes" && echo "[B]" >> $of + test "$9" = "broken" && echo "[B]" >> $of reason="$7" echo "$reason" >> $of echo "" >> $of From owner-svn-src-projects@FreeBSD.ORG Sat Dec 10 00:04:08 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A9B1C106564A; Sat, 10 Dec 2011 00:04:08 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 80C278FC12; Sat, 10 Dec 2011 00:04:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBA048i8055544; Sat, 10 Dec 2011 00:04:08 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBA048Mw055543; Sat, 10 Dec 2011 00:04:08 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201112100004.pBA048Mw055543@svn.freebsd.org> From: Rick Macklem Date: Sat, 10 Dec 2011 00:04:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228382 - projects/nfsv4.1-client X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Dec 2011 00:04:08 -0000 Author: rmacklem Date: Sat Dec 10 00:04:08 2011 New Revision: 228382 URL: http://svn.freebsd.org/changeset/base/228382 Log: Set up a projects branch for NFSv4.1 client enhancements to NFS. Added: projects/nfsv4.1-client/ - copied from r228381, head/sys/ Directory Properties: projects/nfsv4.1-client/sys/ (props changed) From owner-svn-src-projects@FreeBSD.ORG Sat Dec 10 02:06:11 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9F8BA1065673; Sat, 10 Dec 2011 02:06:11 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8E0098FC08; Sat, 10 Dec 2011 02:06:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBA26BDf059424; Sat, 10 Dec 2011 02:06:11 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBA26Bhh059411; Sat, 10 Dec 2011 02:06:11 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201112100206.pBA26Bhh059411@svn.freebsd.org> From: Rick Macklem Date: Sat, 10 Dec 2011 02:06:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228385 - in projects/nfsv4.1-client/sys/fs: nfs nfsclient X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Dec 2011 02:06:11 -0000 Author: rmacklem Date: Sat Dec 10 02:06:11 2011 New Revision: 228385 URL: http://svn.freebsd.org/changeset/base/228385 Log: Add the NFS client changes for a basic NFSv4.1 client. This includes support for sessions for both fore and back channels, creation of a ClientID the NFSv4.1 way and code that avoids using NFSv4.0 operations defined as "mandatory to not implement" for NFSv4.1. It includes handling of NFSv4.1 callbacks via a callback session. It does not include the new NFSv4.1 optional features like pNFS, but does allow the client to work with an NFSv4.1 server and creates the base on which pNFS can be implemented. The new operations are not counted in the nfsstats structure, since it needs to remain the same size, so that the nfsstats command will still work. It adds a new mount option called "minvers" which can be used to specify an NFSv4.1 mount. For example: "mount -t nfs -o nfsv4,minvers=1 :/ / Changes to sys/rpc are required before this will build/work. Modified: projects/nfsv4.1-client/sys/fs/nfs/nfs.h projects/nfsv4.1-client/sys/fs/nfs/nfs_commonkrpc.c projects/nfsv4.1-client/sys/fs/nfs/nfs_commonsubs.c projects/nfsv4.1-client/sys/fs/nfs/nfs_var.h projects/nfsv4.1-client/sys/fs/nfs/nfsclstate.h projects/nfsv4.1-client/sys/fs/nfs/nfsport.h projects/nfsv4.1-client/sys/fs/nfs/nfsproto.h projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clcomsubs.c projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkdtrace.c projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkrpc.c projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clrpcops.c projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clstate.c projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clvfsops.c projects/nfsv4.1-client/sys/fs/nfsclient/nfsmount.h Modified: projects/nfsv4.1-client/sys/fs/nfs/nfs.h ============================================================================== --- projects/nfsv4.1-client/sys/fs/nfs/nfs.h Sat Dec 10 01:44:24 2011 (r228384) +++ projects/nfsv4.1-client/sys/fs/nfs/nfs.h Sat Dec 10 02:06:11 2011 (r228385) @@ -50,6 +50,7 @@ #define NFS_MAXREXMIT 100 /* Stop counting after this many */ #define NFSV4_CALLBACKTIMEO (2 * NFS_HZ) /* Timeout in ticks */ #define NFSV4_CALLBACKRETRY 5 /* Number of retries before failure */ +#define NFSV4_CBSLOTS 8 /* Number of slots for session */ #define NFSV4_CBRETRYCNT 4 /* # of CBRecall retries upon err */ #define NFSV4_UPCALLTIMEO (15 * NFS_HZ) /* Timeout in ticks for upcalls */ /* to gssd or nfsuserd */ @@ -529,6 +530,7 @@ struct nfsrv_descript { nfsquad_t nd_clientid; /* Implied clientid */ int nd_gssnamelen; /* principal name length */ char *nd_gssname; /* principal name */ + uint32_t *nd_slotseq; /* ptr to slot seq# in req */ }; #define nd_princlen nd_gssnamelen @@ -559,6 +561,8 @@ struct nfsrv_descript { #define ND_EXGSSINTEGRITY 0x00200000 #define ND_EXGSSPRIVACY 0x00400000 #define ND_INCRSEQID 0x00800000 +#define ND_NFSV41 0x01000000 +#define ND_HASSEQUENCE 0x02000000 /* * ND_GSS should be the "or" of all GSS type authentications. @@ -571,6 +575,7 @@ struct nfsv4_opflag { int savereply; int modifyfs; int lktype; + int needsseq; }; /* @@ -644,6 +649,15 @@ struct nfsv4lock { #define NFSACCCHK_VPNOTLOCKED 0 #define NFSACCCHK_VPISLOCKED 1 +/* + * Slot for the NFSv4.1 Sequence Op. + */ +struct nfsslot { + int nfssl_inprog; + uint32_t nfssl_seq; + struct mbuf *nfssl_reply; +}; + #endif /* _KERNEL */ #endif /* _NFS_NFS_H */ Modified: projects/nfsv4.1-client/sys/fs/nfs/nfs_commonkrpc.c ============================================================================== --- projects/nfsv4.1-client/sys/fs/nfs/nfs_commonkrpc.c Sat Dec 10 01:44:24 2011 (r228384) +++ projects/nfsv4.1-client/sys/fs/nfs/nfs_commonkrpc.c Sat Dec 10 02:06:11 2011 (r228385) @@ -77,23 +77,26 @@ dtrace_nfsclient_nfs23_done_probe_func_t /* * Registered probes by RPC type. */ -uint32_t nfscl_nfs2_start_probes[NFS_NPROCS + 1]; -uint32_t nfscl_nfs2_done_probes[NFS_NPROCS + 1]; +uint32_t nfscl_nfs2_start_probes[NFSV41_NPROCS + 1]; +uint32_t nfscl_nfs2_done_probes[NFSV41_NPROCS + 1]; -uint32_t nfscl_nfs3_start_probes[NFS_NPROCS + 1]; -uint32_t nfscl_nfs3_done_probes[NFS_NPROCS + 1]; +uint32_t nfscl_nfs3_start_probes[NFSV41_NPROCS + 1]; +uint32_t nfscl_nfs3_done_probes[NFSV41_NPROCS + 1]; -uint32_t nfscl_nfs4_start_probes[NFS_NPROCS + 1]; -uint32_t nfscl_nfs4_done_probes[NFS_NPROCS + 1]; +uint32_t nfscl_nfs4_start_probes[NFSV41_NPROCS + 1]; +uint32_t nfscl_nfs4_done_probes[NFSV41_NPROCS + 1]; #endif NFSSTATESPINLOCK; NFSREQSPINLOCK; +NFSDLOCKMUTEX; extern struct nfsstats newnfsstats; extern struct nfsreqhead nfsd_reqq; extern int nfscl_ticks; extern void (*ncl_call_invalcaches)(struct vnode *); +extern int nfs_numnfscbd; +SVCPOOL *nfscbd_pool; static int nfsrv_gsscallbackson = 0; static int nfs_bufpackets = 4; static int nfs_reconnects; @@ -168,6 +171,7 @@ newnfs_connect(struct nfsmount *nmp, str struct socket *so; int one = 1, retries, error = 0; struct thread *td = curthread; + SVCXPRT *xprt; /* * We need to establish the socket using the credentials of @@ -268,6 +272,24 @@ newnfs_connect(struct nfsmount *nmp, str retries = nmp->nm_retry; else retries = INT_MAX; + if (NFSHASNFSV4N(nmp)) { + /* + * Make sure the nfscbd_pool doesn't get destroyed + * while doing this. + */ + NFSD_LOCK(); + if (nfs_numnfscbd > 0) { + nfs_numnfscbd++; + NFSD_UNLOCK(); + xprt = svc_vc_create_backchannel(nfscbd_pool); + CLNT_CONTROL(client, CLSET_BACKCHANNEL, xprt); + NFSD_LOCK(); + nfs_numnfscbd--; + if (nfs_numnfscbd == 0) + wakeup(&nfs_numnfscbd); + } + NFSD_UNLOCK(); + } } else { /* * Three cases: @@ -440,9 +462,9 @@ newnfs_request(struct nfsrv_descript *nd struct thread *td, struct ucred *cred, u_int32_t prog, u_int32_t vers, u_char *retsum, int toplevel, u_int64_t *xidp) { - u_int32_t *tl; + u_int32_t retseq, retval, *tl; time_t waituntil; - int i, j, set_uid = 0, set_sigset = 0; + int i = 0, j = 0, opcnt, set_uid = 0, set_sigset = 0, slot, freeslot; int trycnt, error = 0, usegssname = 0, secflavour = AUTH_SYS; u_int16_t procnum; u_int trylater_delay = 1; @@ -627,7 +649,9 @@ newnfs_request(struct nfsrv_descript *nd #endif } trycnt = 0; + freeslot = -1; /* Set to slot that needs to be free'd */ tryagain: + slot = -1; /* Slot that needs a sequence# increment. */ if (nmp == NULL) { timo.tv_usec = 0; if (clp == NULL) @@ -714,6 +738,81 @@ tryagain: */ NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED); nd->nd_repstat = fxdr_unsigned(u_int32_t, *tl); +if (nd->nd_repstat >= 10000) printf("proc=%d reps=%d\n",nd->nd_procnum,nd->nd_repstat); + + /* + * Get rid of the tag, return count and SEQUENCE result for + * NFSv4. + */ + if ((nd->nd_flag & ND_NFSV4) != 0) { + NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED); + i = fxdr_unsigned(int, *tl); + error = nfsm_advance(nd, NFSM_RNDUP(i), -1); + if (error) + goto nfsmout; + NFSM_DISSECT(tl, u_int32_t *, 3 * NFSX_UNSIGNED); + opcnt = fxdr_unsigned(int, *tl++); + i = fxdr_unsigned(int, *tl++); + j = fxdr_unsigned(int, *tl); +if (j >= 10000) printf("fop=%d fst=%d\n",i,j); + /* + * If the first op is Sequence, free up the slot. + */ +if (nmp != NULL && i == NFSV4OP_SEQUENCE && j != 0) printf("failed seq=%d\n", j); + if (nmp != NULL && i == NFSV4OP_SEQUENCE && j == 0) { + NFSM_DISSECT(tl, uint32_t *, NFSX_V4SESSIONID + + 5 * NFSX_UNSIGNED); + NFSLOCKMNT(nmp); + tl += NFSX_V4SESSIONID / NFSX_UNSIGNED; + retseq = fxdr_unsigned(uint32_t, *tl++); + slot = fxdr_unsigned(int, *tl++); + freeslot = slot; + if (retseq != nmp->nm_slotseq[slot]) + printf("retseq diff 0x%x\n", retseq); + retval = fxdr_unsigned(uint32_t, *++tl); +#ifdef notyet + if ((retval + 1) < nmp->nm_foreslots) + nmp->nm_foreslots = (retval + 1); + else if ((retval + 1) > nmp->nm_foreslots) + nmp->nm_foreslots = (retval < 64) ? + (retval + 1) : 64; +#else + /* + * There seems to be some confusion with + * respect to whether this value is the + * largest slot number to be used, numbered + * 0<->N-1 or the size of the slot table. + * In other words, is it N or N-1? + * For now, play it safe and assume the + * worst cases of the above, such that + * nm_foreslots might be one less than the + * server specified. This is safe, whereas + * setting nm_foreslots one greater than + * the server intended could cause grief. + */ + if (retval < nmp->nm_foreslots) +{ +printf("foreslots shrinking %d\n", retval); + nmp->nm_foreslots = retval; +} + else if (retval > nmp->nm_foreslots) +{ +printf("foreslots growing %d\n", retval); + nmp->nm_foreslots = (retval < 64) ? + retval : 64; +} +#endif /* notyet */ + NFSUNLOCKMNT(nmp); + + /* Grab the op and status for the next one. */ + if (opcnt > 1) { + NFSM_DISSECT(tl, uint32_t *, + 2 * NFSX_UNSIGNED); + i = fxdr_unsigned(int, *tl++); + j = fxdr_unsigned(int, *tl); + } + } + } if (nd->nd_repstat != 0) { if (((nd->nd_repstat == NFSERR_DELAY || nd->nd_repstat == NFSERR_GRACE) && @@ -738,6 +837,13 @@ tryagain: while (NFSD_MONOSEC < waituntil) (void) nfs_catnap(PZERO, 0, "nfstry"); trylater_delay *= 2; + if (slot != -1) { + NFSLOCKMNT(nmp); + nmp->nm_slotseq[slot]++; + *nd->nd_slotseq = txdr_unsigned( + nmp->nm_slotseq[slot]); + NFSUNLOCKMNT(nmp); + } m_freem(nd->nd_mrep); nd->nd_mrep = NULL; goto tryagain; @@ -754,34 +860,19 @@ tryagain: (*ncl_call_invalcaches)(vp); } } - - /* - * Get rid of the tag, return count, and PUTFH result for V4. - */ - if (nd->nd_flag & ND_NFSV4) { - NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED); - i = fxdr_unsigned(int, *tl); - error = nfsm_advance(nd, NFSM_RNDUP(i), -1); - if (error) - goto nfsmout; - NFSM_DISSECT(tl, u_int32_t *, 3 * NFSX_UNSIGNED); - i = fxdr_unsigned(int, *++tl); - - /* - * If the first op's status is non-zero, mark that - * there is no more data to process. - */ - if (*++tl) - nd->nd_flag |= ND_NOMOREDATA; - + if ((nd->nd_flag & ND_NFSV4) != 0) { + /* Free the slot, as required. */ + if (freeslot != -1) + nfscl_freeslot(nmp, freeslot); /* - * If the first op is Putfh, throw its results away - * and toss the op# and status for the first op. + * If this op is Putfh, throw its results away. */ - if (nmp != NULL && i == NFSV4OP_PUTFH && *tl == 0) { +if (j >= 10000) printf("nop=%d nst=%d\n",i,j); + if (nmp != NULL && i == NFSV4OP_PUTFH && j == 0) { NFSM_DISSECT(tl,u_int32_t *,2 * NFSX_UNSIGNED); i = fxdr_unsigned(int, *tl++); j = fxdr_unsigned(int, *tl); +if (j >= 10000) printf("n2op=%d n2st=%d\n",i,j); /* * All Compounds that do an Op that must * be in sequence consist of NFSV4OP_PUTFH @@ -804,13 +895,13 @@ tryagain: j != NFSERR_RESOURCE && j != NFSERR_NOFILEHANDLE))) nd->nd_flag |= ND_INCRSEQID; - /* - * If the first op's status is non-zero, mark - * that there is no more data to process. - */ - if (j) - nd->nd_flag |= ND_NOMOREDATA; } + /* + * If this op's status is non-zero, mark + * that there is no more data to process. + */ + if (j) + nd->nd_flag |= ND_NOMOREDATA; /* * If R_DONTRECOVER is set, replace the stale error Modified: projects/nfsv4.1-client/sys/fs/nfs/nfs_commonsubs.c ============================================================================== --- projects/nfsv4.1-client/sys/fs/nfs/nfs_commonsubs.c Sat Dec 10 01:44:24 2011 (r228384) +++ projects/nfsv4.1-client/sys/fs/nfs/nfs_commonsubs.c Sat Dec 10 02:06:11 2011 (r228385) @@ -83,47 +83,66 @@ NFSSOCKMUTEX; * non-idempotent Ops. * Define it here, since it is used by both the client and server. */ -struct nfsv4_opflag nfsv4_opflag[NFSV4OP_NOPS] = { - { 0, 0, 0, 0, LK_EXCLUSIVE }, /* undef */ - { 0, 0, 0, 0, LK_EXCLUSIVE }, /* undef */ - { 0, 0, 0, 0, LK_EXCLUSIVE }, /* undef */ - { 0, 1, 0, 0, LK_SHARED }, /* Access */ - { 0, 1, 0, 0, LK_EXCLUSIVE }, /* Close */ - { 0, 2, 0, 1, LK_EXCLUSIVE }, /* Commit */ - { 1, 2, 1, 1, LK_EXCLUSIVE }, /* Create */ - { 0, 0, 0, 0, LK_EXCLUSIVE }, /* Delegpurge */ - { 0, 1, 0, 0, LK_EXCLUSIVE }, /* Delegreturn */ - { 0, 1, 0, 0, LK_SHARED }, /* Getattr */ - { 0, 1, 0, 0, LK_EXCLUSIVE }, /* GetFH */ - { 2, 1, 1, 1, LK_EXCLUSIVE }, /* Link */ - { 0, 1, 0, 0, LK_EXCLUSIVE }, /* Lock */ - { 0, 1, 0, 0, LK_EXCLUSIVE }, /* LockT */ - { 0, 1, 0, 0, LK_EXCLUSIVE }, /* LockU */ - { 1, 1, 0, 0, LK_EXCLUSIVE }, /* Lookup */ - { 1, 1, 0, 0, LK_EXCLUSIVE }, /* Lookupp */ - { 0, 1, 0, 0, LK_EXCLUSIVE }, /* NVerify */ - { 1, 1, 0, 1, LK_EXCLUSIVE }, /* Open */ - { 1, 1, 0, 0, LK_EXCLUSIVE }, /* OpenAttr */ - { 0, 1, 0, 0, LK_EXCLUSIVE }, /* OpenConfirm */ - { 0, 1, 0, 0, LK_EXCLUSIVE }, /* OpenDowngrade */ - { 1, 0, 0, 0, LK_EXCLUSIVE }, /* PutFH */ - { 1, 0, 0, 0, LK_EXCLUSIVE }, /* PutPubFH */ - { 1, 0, 0, 0, LK_EXCLUSIVE }, /* PutRootFH */ - { 0, 1, 0, 0, LK_SHARED }, /* Read */ - { 0, 1, 0, 0, LK_SHARED }, /* Readdir */ - { 0, 1, 0, 0, LK_SHARED }, /* ReadLink */ - { 0, 2, 1, 1, LK_EXCLUSIVE }, /* Remove */ - { 2, 1, 1, 1, LK_EXCLUSIVE }, /* Rename */ - { 0, 0, 0, 0, LK_EXCLUSIVE }, /* Renew */ - { 0, 0, 0, 0, LK_EXCLUSIVE }, /* RestoreFH */ - { 0, 1, 0, 0, LK_EXCLUSIVE }, /* SaveFH */ - { 0, 1, 0, 0, LK_EXCLUSIVE }, /* SecInfo */ - { 0, 2, 1, 1, LK_EXCLUSIVE }, /* Setattr */ - { 0, 0, 0, 0, LK_EXCLUSIVE }, /* SetClientID */ - { 0, 0, 0, 0, LK_EXCLUSIVE }, /* SetClientIDConfirm */ - { 0, 1, 0, 0, LK_EXCLUSIVE }, /* Verify */ - { 0, 2, 1, 1, LK_EXCLUSIVE }, /* Write */ - { 0, 0, 0, 0, LK_EXCLUSIVE }, /* ReleaseLockOwner */ +struct nfsv4_opflag nfsv4_opflag[NFSV41_NOPS] = { + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* undef */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* undef */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* undef */ + { 0, 1, 0, 0, LK_SHARED, 1 }, /* Access */ + { 0, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* Close */ + { 0, 2, 0, 1, LK_EXCLUSIVE, 1 }, /* Commit */ + { 1, 2, 1, 1, LK_EXCLUSIVE, 1 }, /* Create */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Delegpurge */ + { 0, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* Delegreturn */ + { 0, 1, 0, 0, LK_SHARED, 1 }, /* Getattr */ + { 0, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* GetFH */ + { 2, 1, 1, 1, LK_EXCLUSIVE, 1 }, /* Link */ + { 0, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* Lock */ + { 0, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* LockT */ + { 0, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* LockU */ + { 1, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* Lookup */ + { 1, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* Lookupp */ + { 0, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* NVerify */ + { 1, 1, 0, 1, LK_EXCLUSIVE, 1 }, /* Open */ + { 1, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* OpenAttr */ + { 0, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* OpenConfirm */ + { 0, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* OpenDowngrade */ + { 1, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* PutFH */ + { 1, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* PutPubFH */ + { 1, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* PutRootFH */ + { 0, 1, 0, 0, LK_SHARED, 1 }, /* Read */ + { 0, 1, 0, 0, LK_SHARED, 1 }, /* Readdir */ + { 0, 1, 0, 0, LK_SHARED, 1 }, /* ReadLink */ + { 0, 2, 1, 1, LK_EXCLUSIVE, 1 }, /* Remove */ + { 2, 1, 1, 1, LK_EXCLUSIVE, 1 }, /* Rename */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Renew */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* RestoreFH */ + { 0, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* SaveFH */ + { 0, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* SecInfo */ + { 0, 2, 1, 1, LK_EXCLUSIVE, 1 }, /* Setattr */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* SetClientID */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* SetClientIDConfirm */ + { 0, 1, 0, 0, LK_EXCLUSIVE, 1 }, /* Verify */ + { 0, 2, 1, 1, LK_EXCLUSIVE, 1 }, /* Write */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* ReleaseLockOwner */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Backchannel Ctrl */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Bind Conn to Sess */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 0 }, /* Exchange ID */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 0 }, /* Create Session */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 0 }, /* Destroy Session */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Free StateID */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Get Dir Deleg */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Get Device Info */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Get Device List */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Layout Commit */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Layout Get */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Layout Return */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Secinfo No name */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Sequence */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Set SSV */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Test StateID */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Want Delegation */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 0 }, /* Destroy ClientID */ + { 0, 0, 0, 0, LK_EXCLUSIVE, 1 }, /* Reclaim Complete */ }; #endif /* !APPLEKEXT */ @@ -145,9 +164,9 @@ static struct nfsuserlruhead nfsuserlruh * marked 0 in this array, the code will still work, just not quite as * efficiently.) */ -static int nfs_bigreply[NFS_NPROCS] = { 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, +int nfs_bigreply[NFSV41_NPROCS] = { 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 }; + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /* local functions */ static int nfsrv_skipace(struct nfsrv_descript *nd, int *acesizep); @@ -1855,7 +1874,7 @@ nfsv4_getref(struct nfsv4lock *lp, int * if (isleptp) *isleptp = 1; (void) nfsmsleep(&lp->nfslock_lock, mutex, - PZERO - 1, "nfsv4lck", NULL); + PZERO - 1, "nfsv4gr", NULL); } if (mp != NULL && (mp->mnt_kern_flag & MNTK_UNMOUNTF) != 0) return; @@ -3478,3 +3497,47 @@ newnfs_sndunlock(int *flagp) NFSUNLOCKSOCK(); } +/* + * Handle an NFSv4.1 Sequence request for the session. + */ +int +nfsv4_seqsession(uint32_t seqid, uint32_t slotid, uint32_t highslot, + struct nfsslot *slots, struct mbuf **reply, uint16_t maxslot) +{ + int error; + + error = 0; + *reply = NULL; + if (slotid > maxslot) + return (NFSERR_BADSLOT); + if (seqid == slots[slotid].nfssl_seq) { + /* A retry. */ + if (slots[slotid].nfssl_inprog != 0) + error = NFSERR_DELAY; + else if (slots[slotid].nfssl_reply != NULL) { + *reply = slots[slotid].nfssl_reply; + slots[slotid].nfssl_reply = NULL; + slots[slotid].nfssl_inprog = 1; + } else + error = NFSERR_SEQMISORDERED; + } else if ((slots[slotid].nfssl_seq + 1) == seqid) { + m_freem(slots[slotid].nfssl_reply); + slots[slotid].nfssl_reply = NULL; + slots[slotid].nfssl_inprog = 1; + slots[slotid].nfssl_seq++; + } else + error = NFSERR_SEQMISORDERED; + return (error); +} + +/* + * Cache this reply for the slot. + */ +void +nfsv4_seqsess_cacherep(uint32_t slotid, struct nfsslot *slots, struct mbuf *rep) +{ + + slots[slotid].nfssl_reply = rep; + slots[slotid].nfssl_inprog = 0; +} + Modified: projects/nfsv4.1-client/sys/fs/nfs/nfs_var.h ============================================================================== --- projects/nfsv4.1-client/sys/fs/nfs/nfs_var.h Sat Dec 10 01:44:24 2011 (r228384) +++ projects/nfsv4.1-client/sys/fs/nfs/nfs_var.h Sat Dec 10 02:06:11 2011 (r228385) @@ -257,6 +257,9 @@ int nfsrv_mtostr(struct nfsrv_descript * int nfsrv_checkutf8(u_int8_t *, int); int newnfs_sndlock(int *); void newnfs_sndunlock(int *); +int nfsv4_seqsession(uint32_t, uint32_t, uint32_t, struct nfsslot *, + struct mbuf **, uint16_t); +void nfsv4_seqsess_cacherep(uint32_t, struct nfsslot *, struct mbuf *); /* nfs_clcomsubs.c */ void nfsm_uiombuf(struct nfsrv_descript *, struct uio *, int); @@ -362,7 +365,7 @@ int nfsrpc_setclient(struct nfsmount *, int nfsrpc_getattr(vnode_t, struct ucred *, NFSPROC_T *, struct nfsvattr *, void *); int nfsrpc_getattrnovp(struct nfsmount *, u_int8_t *, int, int, - struct ucred *, NFSPROC_T *, struct nfsvattr *, u_int64_t *); + struct ucred *, NFSPROC_T *, struct nfsvattr *, u_int64_t *, uint32_t *); int nfsrpc_setattr(vnode_t, struct vattr *, NFSACL_T *, struct ucred *, NFSPROC_T *, struct nfsvattr *, int *, void *); int nfsrpc_lookup(vnode_t, char *, int, struct ucred *, NFSPROC_T *, @@ -426,6 +429,14 @@ int nfsrpc_delegreturn(struct nfscldeleg struct nfsmount *, NFSPROC_T *, int); int nfsrpc_getacl(vnode_t, struct ucred *, NFSPROC_T *, NFSACL_T *, void *); int nfsrpc_setacl(vnode_t, struct ucred *, NFSPROC_T *, NFSACL_T *, void *); +int nfsrpc_exchangeid(struct nfsmount *, struct nfsclclient *, + struct ucred *, NFSPROC_T *); +int nfsrpc_createsession(struct nfsmount *, struct nfsclclient *, + struct ucred *, NFSPROC_T *); +int nfsrpc_destroysession(struct nfsmount *, struct nfsclclient *, + struct ucred *, NFSPROC_T *); +int nfsrpc_destroyclient(struct nfsmount *, struct nfsclclient *, + struct ucred *, NFSPROC_T *); /* nfs_clstate.c */ int nfscl_open(vnode_t, u_int8_t *, int, u_int32_t, int, @@ -435,7 +446,7 @@ int nfscl_getstateid(vnode_t, u_int8_t * NFSPROC_T *, nfsv4stateid_t *, void **); void nfscl_ownerrelease(struct nfsclowner *, int, int, int); void nfscl_openrelease(struct nfsclopen *, int, int); -int nfscl_getcl(vnode_t, struct ucred *, NFSPROC_T *, +int nfscl_getcl(struct mount *, struct ucred *, NFSPROC_T *, int, struct nfsclclient **); struct nfsclclient *nfscl_findcl(struct nfsmount *); void nfscl_clientrelease(struct nfsclclient *); @@ -487,6 +498,8 @@ void nfscl_deleggetmodtime(vnode_t, stru int nfscl_tryclose(struct nfsclopen *, struct ucred *, struct nfsmount *, NFSPROC_T *); void nfscl_cleanup(NFSPROC_T *); +void nfscl_setsequence(struct nfsrv_descript *, struct nfsmount *, int); +void nfscl_freeslot(struct nfsmount *, int); /* nfs_clport.c */ int nfscl_nget(mount_t, vnode_t, struct nfsfh *, Modified: projects/nfsv4.1-client/sys/fs/nfs/nfsclstate.h ============================================================================== --- projects/nfsv4.1-client/sys/fs/nfs/nfsclstate.h Sat Dec 10 01:44:24 2011 (r228384) +++ projects/nfsv4.1-client/sys/fs/nfs/nfsclstate.h Sat Dec 10 02:06:11 2011 (r228385) @@ -50,6 +50,8 @@ struct nfsclclient { struct nfscldeleghead nfsc_deleg; struct nfscldeleghash nfsc_deleghash[NFSCLDELEGHASHSIZE]; struct nfsv4lock nfsc_lock; + struct nfsslot nfsc_cbslots[NFSV4_CBSLOTS]; /* NFSv4.1 cb slot table */ + uint8_t nfsc_sessionid[NFSX_V4SESSIONID]; /* NFSv4.1 session id */ struct proc *nfsc_renewthread; struct nfsmount *nfsc_nmp; nfsquad_t nfsc_clientid; @@ -58,6 +60,7 @@ struct nfsclclient { u_int32_t nfsc_renew; u_int32_t nfsc_cbident; u_int16_t nfsc_flags; + u_int16_t nfsc_backslots; /* Number of back channel slots. */ u_int16_t nfsc_idlen; u_int8_t nfsc_id[1]; /* Malloc'd to correct length */ }; Modified: projects/nfsv4.1-client/sys/fs/nfs/nfsport.h ============================================================================== --- projects/nfsv4.1-client/sys/fs/nfs/nfsport.h Sat Dec 10 01:44:24 2011 (r228384) +++ projects/nfsv4.1-client/sys/fs/nfs/nfsport.h Sat Dec 10 02:06:11 2011 (r228385) @@ -229,6 +229,34 @@ */ #define NFSV4OP_NOPS 40 +/* + * Additional Ops for NFSv4.1. + */ +#define NFSV4OP_BACKCHANNELCTL 40 +#define NFSV4OP_BINDCONNTOSESS 41 +#define NFSV4OP_EXCHANGEID 42 +#define NFSV4OP_CREATESESSION 43 +#define NFSV4OP_DESTROYSESSION 44 +#define NFSV4OP_FREESTATEID 45 +#define NFSV4OP_GETDIRDELEG 46 +#define NFSV4OP_GETDEVINFO 47 +#define NFSV4OP_GETDEVLIST 48 +#define NFSV4OP_LAYOUTCOMMIT 49 +#define NFSV4OP_LAYOUTGET 50 +#define NFSV4OP_LAYOUTRETURN 51 +#define NFSV4OP_SECINFONONAME 52 +#define NFSV4OP_SEQUENCE 53 +#define NFSV4OP_SETSSV 54 +#define NFSV4OP_TESTSTATEID 55 +#define NFSV4OP_WANTDELEG 56 +#define NFSV4OP_DESTROYCLIENTID 57 +#define NFSV4OP_RECLAIMCOMPL 58 + +/* + * Must be one more than last op#. + */ +#define NFSV41_NOPS 59 + /* Quirky case if the illegal op code */ #define NFSV4OP_OPILLEGAL 10044 @@ -262,6 +290,20 @@ #define NFSV4OP_CBNOPS 5 /* + * Additional Callback Ops for NFSv4.1 only. Not yet in nfsstats. + */ +#define NFSV4OP_CBLAYOUTRECALL 5 +#define NFSV4OP_CBNOTIFY 6 +#define NFSV4OP_CBPUSHDELEG 7 +#define NFSV4OP_CBRECALLANY 8 +#define NFSV4OP_CBRECALLOBJAVAIL 9 +#define NFSV4OP_CBRECALLSLOT 10 +#define NFSV4OP_CBSEQUENCE 11 +#define NFSV4OP_CBWANTCANCELLED 12 +#define NFSV4OP_CBNOTIFYLOCK 13 +#define NFSV4OP_CBNOTIFYDEVID 14 + +/* * The lower numbers -> 21 are used by NFSv2 and v3. These define higher * numbers used by NFSv4. * NFS_V3NPROCS is one greater than the last V3 op and NFS_NPROCS is @@ -294,6 +336,19 @@ * Must be defined as one higher than the last Proc# above. */ #define NFSV4_NPROCS 41 + +/* Additional procedures for NFSv4.1. */ +#define NFSPROC_EXCHANGEID 41 +#define NFSPROC_CREATESESSION 42 +#define NFSPROC_DESTROYSESSION 43 +#define NFSPROC_DESTROYCLIENT 44 +#define NFSPROC_FREESTATEID 45 + +/* + * Must be defined as one higher than the last NFSv4.1 Proc# above. + */ +#define NFSV41_NPROCS 46 + #endif /* NFS_V3NPROCS */ /* @@ -766,6 +821,7 @@ void newnfs_realign(struct mbuf **); #define NFSHASNFSV3(n) ((n)->nm_flag & NFSMNT_NFSV3) #define NFSHASNFSV4(n) ((n)->nm_flag & NFSMNT_NFSV4) +#define NFSHASNFSV4N(n) ((n)->nm_minorvers > 0) #define NFSHASNFSV3OR4(n) ((n)->nm_flag & (NFSMNT_NFSV3 | NFSMNT_NFSV4)) #define NFSHASGOTFSINFO(n) ((n)->nm_state & NFSSTA_GOTFSINFO) #define NFSHASHASSETFSID(n) ((n)->nm_state & NFSSTA_HASSETFSID) Modified: projects/nfsv4.1-client/sys/fs/nfs/nfsproto.h ============================================================================== --- projects/nfsv4.1-client/sys/fs/nfs/nfsproto.h Sat Dec 10 01:44:24 2011 (r228384) +++ projects/nfsv4.1-client/sys/fs/nfs/nfsproto.h Sat Dec 10 02:06:11 2011 (r228385) @@ -62,7 +62,9 @@ #define NFS_MINPACKET 20 #define NFS_FABLKSIZE 512 /* Size in bytes of a block wrt fa_blocks */ #define NFSV4_MINORVERSION 0 /* V4 Minor version */ +#define NFSV41_MINORVERSION 1 /* V4 Minor version */ #define NFSV4_CBVERS 1 /* V4 CB Version */ +#define NFSV41_CBVERS 4 /* V4.1 CB Version */ #define NFSV4_SMALLSTR 50 /* Strings small enough for stack */ /* Stat numbers for rpc returns (version 2, 3 and 4) */ @@ -145,6 +147,12 @@ #define NFSERR_ADMINREVOKED 10047 #define NFSERR_CBPATHDOWN 10048 +/* NFSv4.1 specific errors. */ +#define NFSERR_BADSLOT 10053 +#define NFSERR_SEQMISORDERED 10063 +#define NFSERR_SEQUENCEPOS 10064 +#define NFSERR_OPNOTINSESS 10071 + #define NFSERR_STALEWRITEVERF 30001 /* Fake return for nfs_commit() */ #define NFSERR_DONTREPLY 30003 /* Don't process request */ #define NFSERR_RETVOID 30004 /* Return void, not error */ @@ -189,6 +197,7 @@ #define NFSX_V4SPECDATA (2 * NFSX_UNSIGNED) #define NFSX_V4TIME (NFSX_HYPER + NFSX_UNSIGNED) #define NFSX_V4SETTIME (NFSX_UNSIGNED + NFSX_V4TIME) +#define NFSX_V4SESSIONID 16 /* sizes common to multiple NFS versions */ #define NFSX_FHMAX (NFSX_V4FHMAX) @@ -258,6 +267,19 @@ * Must be defined as one higher than the last Proc# above. */ #define NFSV4_NPROCS 41 + +/* Additional procedures for NFSv4.1. */ +#define NFSPROC_EXCHANGEID 41 +#define NFSPROC_CREATESESSION 42 +#define NFSPROC_DESTROYSESSION 43 +#define NFSPROC_DESTROYCLIENT 44 +#define NFSPROC_FREESTATEID 45 + +/* + * Must be defined as one higher than the last NFSv4.1 Proc# above. + */ +#define NFSV41_NPROCS 46 + #endif /* NFS_V3NPROCS */ /* @@ -269,10 +291,10 @@ /* * NFSPROC_NOOP is a fake op# that can't be the same as any V2/3/4 Procedure - * or Operation#. Since the NFS V4 Op #s go higher, use NFSV4OP_NOPS, which + * or Operation#. Since the NFS V4 Op #s go higher, use NFSV41_NOPS, which * is one greater than the highest Op#. */ -#define NFSPROC_NOOP NFSV4OP_NOPS +#define NFSPROC_NOOP NFSV41_NOPS /* Actual Version 2 procedure numbers */ #define NFSV2PROC_NULL 0 @@ -468,6 +490,42 @@ #define NFSV3FSINFO_HOMOGENEOUS 0x08 #define NFSV3FSINFO_CANSETTIME 0x10 +/* Flags for Exchange ID */ +#define NFSV4EXCH_SUPPMOVEDREFER 0x00000001 +#define NFSV4EXCH_SUPPMOVEDMIGR 0x00000002 +#define NFSV4EXCH_BINDPRINCSTATEID 0x00000100 +#define NFSV4EXCH_USENONPNFS 0x00010000 +#define NFSV4EXCH_USEPNFSMDS 0x00020000 +#define NFSV4EXCH_USEPNFSDS 0x00040000 +#define NFSV4EXCH_MASKPNFS 0x00070000 +#define NFSV4EXCH_UPDCONFIRMEDRECA 0x40000000 +#define NFSV4EXCH_CONFIRMEDR 0x80000000 + +/* State Protects */ +#define NFSV4EXCH_SP4NONE 0 +#define NFSV4EXCH_SP4MACHCRED 1 +#define NFSV4EXCH_SP4SSV 2 + +/* Flags for Create Session */ +#define NFSV4CRSESS_PERSIST 0x00000001 +#define NFSV4CRSESS_CONNBACKCHAN 0x00000002 +#define NFSV4CRSESS_CONNRDMA 0x00000004 + +/* Flags for Sequence */ +#define NFSV4SEQ_CBPATHDOWN 0x00000001 +#define NFSV4SEQ_CBGSSCONTEXPIRING 0x00000002 +#define NFSV4SEQ_CBGSSCONTEXPIRED 0x00000004 +#define NFSV4SEQ_EXPIREDALLSTATEREVOKED 0x00000008 +#define NFSV4SEQ_EXPIREDSOMESTATEREVOKED 0x00000010 +#define NFSV4SEQ_ADMINSTATEREVOKED 0x00000020 +#define NFSV4SEQ_RECALLABLESTATEREVOKED 0x00000040 +#define NFSV4SEQ_LEASEMOVED 0x00000080 +#define NFSV4SEQ_RESTARTRECLAIMNEEDED 0x00000100 +#define NFSV4SEQ_CBPATHDOWNSESSION 0x00000200 +#define NFSV4SEQ_BACKCHANNELFAULT 0x00000400 +#define NFSV4SEQ_DEVIDCHANGED 0x00000800 +#define NFSV4SEQ_DEVIDDELETED 0x00001000 + /* Conversion macros */ #define vtonfsv2_mode(t,m) \ txdr_unsigned(((t) == VFIFO) ? MAKEIMODE(VCHR, (m)) : \ Modified: projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clcomsubs.c ============================================================================== --- projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clcomsubs.c Sat Dec 10 01:44:24 2011 (r228384) +++ projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clcomsubs.c Sat Dec 10 02:06:11 2011 (r228385) @@ -43,10 +43,11 @@ __FBSDID("$FreeBSD$"); #include extern struct nfsstats newnfsstats; -extern struct nfsv4_opflag nfsv4_opflag[NFSV4OP_NOPS]; +extern struct nfsv4_opflag nfsv4_opflag[NFSV41_NOPS]; extern int ncl_mbuf_mlen; extern enum vtype newnv2tov_type[8]; extern enum vtype nv34tov_type[8]; +extern int nfs_bigreply[NFSV41_NPROCS]; NFSCLSTATEMUTEX; #endif /* !APPLEKEXT */ @@ -56,7 +57,7 @@ static struct { int opcnt; const u_char *tag; int taglen; -} nfsv4_opmap[NFS_NPROCS] = { +} nfsv4_opmap[NFSV41_NPROCS] = { { 0, 1, "Null", 4 }, { NFSV4OP_GETATTR, 1, "Getattr", 7, }, { NFSV4OP_SETATTR, 2, "Setattr", 7, }, @@ -98,15 +99,20 @@ static struct { { NFSV4OP_DELEGRETURN, 9, "DelegRename2", 12, }, { NFSV4OP_GETATTR, 1, "Getacl", 6, }, { NFSV4OP_SETATTR, 1, "Setacl", 6, }, + { NFSV4OP_EXCHANGEID, 1, "ExchangeID", 10, }, + { NFSV4OP_CREATESESSION, 1, "CreateSession", 13, }, + { NFSV4OP_DESTROYSESSION, 1, "DestroySession", 14, }, + { NFSV4OP_DESTROYCLIENTID, 1, "DestroyClient", 13, }, + { NFSV4OP_FREESTATEID, 1, "FreeStateID", 11, }, }; /* * NFS RPCS that have large request message size. */ -static int nfs_bigrequest[NFS_NPROCS] = { +static int nfs_bigrequest[NFSV41_NPROCS] = { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /* @@ -125,9 +131,12 @@ nfscl_reqstart(struct nfsrv_descript *nd /* * First, fill in some of the fields of nd. */ - if (NFSHASNFSV4(nmp)) + nd->nd_slotseq = NULL; + if (NFSHASNFSV4(nmp)) { nd->nd_flag = ND_NFSV4; - else if (NFSHASNFSV3(nmp)) + if (NFSHASNFSV4N(nmp)) + nd->nd_flag |= ND_NFSV41; + } else if (NFSHASNFSV3(nmp)) nd->nd_flag = ND_NFSV3; else nd->nd_flag = ND_NFSV2; @@ -151,17 +160,36 @@ nfscl_reqstart(struct nfsrv_descript *nd if (nd->nd_flag & ND_NFSV4) { opcnt = nfsv4_opmap[procnum].opcnt + nfsv4_opflag[nfsv4_opmap[procnum].op].needscfh; + if ((nd->nd_flag & ND_NFSV41) != 0) { + opcnt += nfsv4_opflag[nfsv4_opmap[procnum].op].needsseq; + if (procnum == NFSPROC_RENEW) + /* + * For the special case of Renew, just do a + * Sequence Op. + */ + opcnt = 1; + } /* * What should the tag really be? */ (void) nfsm_strtom(nd, nfsv4_opmap[procnum].tag, nfsv4_opmap[procnum].taglen); - NFSM_BUILD(tl, u_int32_t *, 3 * NFSX_UNSIGNED); - *tl++ = txdr_unsigned(NFSV4_MINORVERSION); + NFSM_BUILD(tl, u_int32_t *, 2 * NFSX_UNSIGNED); + if ((nd->nd_flag & ND_NFSV41) != 0) + *tl++ = txdr_unsigned(NFSV41_MINORVERSION); + else + *tl++ = txdr_unsigned(NFSV4_MINORVERSION); if (opcntpp != NULL) *opcntpp = tl; - *tl++ = txdr_unsigned(opcnt); + *tl = txdr_unsigned(opcnt); + if ((nd->nd_flag & ND_NFSV41) != 0 && + nfsv4_opflag[nfsv4_opmap[procnum].op].needsseq > 0) { + NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED); + *tl = txdr_unsigned(NFSV4OP_SEQUENCE); + nfscl_setsequence(nd, nmp, nfs_bigreply[procnum]); + } if (nfsv4_opflag[nfsv4_opmap[procnum].op].needscfh > 0) { + NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED); *tl = txdr_unsigned(NFSV4OP_PUTFH); (void) nfsm_fhtom(nd, nfhp, fhlen, 0); if (nfsv4_opflag[nfsv4_opmap[procnum].op].needscfh==2){ @@ -171,13 +199,17 @@ nfscl_reqstart(struct nfsrv_descript *nd (void) nfsrv_putattrbit(nd, &attrbits); nd->nd_flag |= ND_V4WCCATTR; } + } + if (procnum != NFSPROC_RENEW || + (nd->nd_flag & ND_NFSV41) == 0) { NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED); + *tl = txdr_unsigned(nfsv4_opmap[procnum].op); } - *tl = txdr_unsigned(nfsv4_opmap[procnum].op); } else { (void) nfsm_fhtom(nd, nfhp, fhlen, 0); } - NFSINCRGLOBAL(newnfsstats.rpccnt[procnum]); + if (procnum < NFSV4_NPROCS) + NFSINCRGLOBAL(newnfsstats.rpccnt[procnum]); } #ifndef APPLE Modified: projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkdtrace.c ============================================================================== --- projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkdtrace.c Sat Dec 10 01:44:24 2011 (r228384) +++ projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkdtrace.c Sat Dec 10 02:06:11 2011 (r228385) @@ -92,7 +92,7 @@ struct dtnfsclient_rpc { * This table is indexed by NFSv3 procedure number, but also used for NFSv2 * procedure names and NFSv4 operations. */ -static struct dtnfsclient_rpc dtnfsclient_rpcs[NFS_NPROCS + 1] = { +static struct dtnfsclient_rpc dtnfsclient_rpcs[NFSV41_NPROCS + 1] = { { "null", "null", "null" }, { "getattr", "getattr", "getattr" }, { "setattr", "setattr", "setattr" }, @@ -196,17 +196,17 @@ extern uint32_t nfscl_attrcache_load_don * stored in one of these two NFS client-allocated arrays; 0 indicates that * the event is not being traced so probes should not be called. * - * For simplicity, we allocate both v2, v3 and v4 arrays as NFS_NPROCS + 1, and - * the v2, v3 arrays are simply sparse. + * For simplicity, we allocate both v2, v3 and v4 arrays as NFSV41_NPROCS + 1, + * and the v2, v3 arrays are simply sparse. */ -extern uint32_t nfscl_nfs2_start_probes[NFS_NPROCS + 1]; -extern uint32_t nfscl_nfs2_done_probes[NFS_NPROCS + 1]; +extern uint32_t nfscl_nfs2_start_probes[NFSV41_NPROCS + 1]; +extern uint32_t nfscl_nfs2_done_probes[NFSV41_NPROCS + 1]; -extern uint32_t nfscl_nfs3_start_probes[NFS_NPROCS + 1]; -extern uint32_t nfscl_nfs3_done_probes[NFS_NPROCS + 1]; +extern uint32_t nfscl_nfs3_start_probes[NFSV41_NPROCS + 1]; +extern uint32_t nfscl_nfs3_done_probes[NFSV41_NPROCS + 1]; -extern uint32_t nfscl_nfs4_start_probes[NFS_NPROCS + 1]; -extern uint32_t nfscl_nfs4_done_probes[NFS_NPROCS + 1]; +extern uint32_t nfscl_nfs4_start_probes[NFSV41_NPROCS + 1]; +extern uint32_t nfscl_nfs4_done_probes[NFSV41_NPROCS + 1]; /* * Look up a DTrace probe ID to see if it's associated with a "done" event -- @@ -217,7 +217,7 @@ dtnfs234_isdoneprobe(dtrace_id_t id) { int i; - for (i = 0; i < NFS_NPROCS + 1; i++) { + for (i = 0; i < NFSV41_NPROCS + 1; i++) { if (dtnfsclient_rpcs[i].nr_v4_id_done == id || dtnfsclient_rpcs[i].nr_v3_id_done == id || dtnfsclient_rpcs[i].nr_v2_id_done == id) @@ -401,7 +401,7 @@ dtnfsclient_provide(void *arg, dtrace_pr * Register NFSv2 RPC procedures; note sparseness check for each slot * in the NFSv3, NFSv4 procnum-indexed array. */ - for (i = 0; i < NFS_NPROCS + 1; i++) { + for (i = 0; i < NFSV41_NPROCS + 1; i++) { if (dtnfsclient_rpcs[i].nr_v2_name != NULL && dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_nfs2_str, dtnfsclient_rpcs[i].nr_v2_name, dtnfsclient_start_str) == @@ -430,7 +430,7 @@ dtnfsclient_provide(void *arg, dtrace_pr * Register NFSv3 RPC procedures; note sparseness check for each slot * in the NFSv4 procnum-indexed array. */ - for (i = 0; i < NFS_NPROCS + 1; i++) { + for (i = 0; i < NFSV41_NPROCS + 1; i++) { if (dtnfsclient_rpcs[i].nr_v3_name != NULL && dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_nfs3_str, dtnfsclient_rpcs[i].nr_v3_name, dtnfsclient_start_str) == @@ -458,7 +458,7 @@ dtnfsclient_provide(void *arg, dtrace_pr /* * Register NFSv4 RPC procedures. */ - for (i = 0; i < NFS_NPROCS + 1; i++) { + for (i = 0; i < NFSV41_NPROCS + 1; i++) { if (dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_nfs4_str, dtnfsclient_rpcs[i].nr_v4_name, dtnfsclient_start_str) == 0) { Modified: projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkrpc.c ============================================================================== --- projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkrpc.c Sat Dec 10 01:44:24 2011 (r228384) +++ projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkrpc.c Sat Dec 10 02:06:11 2011 (r228385) @@ -46,7 +46,7 @@ __FBSDID("$FreeBSD$"); NFSDLOCKMUTEX; -SVCPOOL *nfscbd_pool; +extern SVCPOOL *nfscbd_pool; static int nfs_cbproc(struct nfsrv_descript *, u_int32_t); @@ -91,6 +91,7 @@ nfscb_program(struct svc_req *rqst, SVCX nd.nd_mreq = NULL; nd.nd_cred = NULL; +printf("cbproc=%d\n",nd.nd_procnum); if (nd.nd_procnum != NFSPROC_NULL) { if (!svc_getcred(rqst, &nd.nd_cred, &credflavor)) { svcerr_weakauth(rqst); @@ -136,6 +137,8 @@ nfscb_program(struct svc_req *rqst, SVCX m_freem(nd.nd_mreq); } else if (!svc_sendreply_mbuf(rqst, nd.nd_mreq)) { svcerr_systemerr(rqst); +} else { +printf("cbrep sent\n"); } svc_freereq(rqst); } @@ -272,13 +275,15 @@ nfsrvd_cbinit(int terminating) NFSD_LOCK_ASSERT(); if (terminating) { + /* Wait for any xprt registrations to complete. */ + while (nfs_numnfscbd > 0) + msleep(&nfs_numnfscbd, NFSDLOCKMUTEXPTR, PZERO, + "nfscbdt", 0); NFSD_UNLOCK(); svcpool_destroy(nfscbd_pool); nfscbd_pool = NULL; - NFSD_LOCK(); - } - - NFSD_UNLOCK(); + } else + NFSD_UNLOCK(); nfscbd_pool = svcpool_create("nfscbd", NULL); nfscbd_pool->sp_rcache = NULL; Modified: projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clrpcops.c ============================================================================== --- projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clrpcops.c Sat Dec 10 01:44:24 2011 (r228384) +++ projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clrpcops.c Sat Dec 10 02:06:11 2011 (r228385) @@ -720,10 +720,13 @@ nfsrpc_openconfirm(vnode_t vp, u_int8_t { u_int32_t *tl; struct nfsrv_descript nfsd, *nd = &nfsd; + struct nfsmount *nmp; int error; - nfscl_reqstart(nd, NFSPROC_OPENCONFIRM, VFSTONFS(vnode_mount(vp)), *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sat Dec 10 07:29:06 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 74C2E1065672; Sat, 10 Dec 2011 07:29:06 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 64D938FC13; Sat, 10 Dec 2011 07:29:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBA7T6W0071847; Sat, 10 Dec 2011 07:29:06 GMT (envelope-from linimon@svn.freebsd.org) Received: (from linimon@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBA7T6tS071845; Sat, 10 Dec 2011 07:29:06 GMT (envelope-from linimon@svn.freebsd.org) Message-Id: <201112100729.pBA7T6tS071845@svn.freebsd.org> From: Mark Linimon Date: Sat, 10 Dec 2011 07:29:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228388 - projects/portbuild/scripts X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Dec 2011 07:29:06 -0000 Author: linimon (doc,ports committer) Date: Sat Dec 10 07:29:06 2011 New Revision: 228388 URL: http://svn.freebsd.org/changeset/base/228388 Log: Better debugging. Modified: projects/portbuild/scripts/prunefailure Modified: projects/portbuild/scripts/prunefailure ============================================================================== --- projects/portbuild/scripts/prunefailure Sat Dec 10 07:08:52 2011 (r228387) +++ projects/portbuild/scripts/prunefailure Sat Dec 10 07:29:06 2011 (r228388) @@ -72,7 +72,7 @@ while read dir name ver olddate date cou entry=$(grep "|/usr/ports/$dir|" $index) if [ -z "$entry" ]; then - echo $dir not in index + echo $dir not in $index rm -f ${pbd}/${arch}/${branch}/latest/${dir} continue fi From owner-svn-src-projects@FreeBSD.ORG Sat Dec 10 07:48:50 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6DDAA1065670; Sat, 10 Dec 2011 07:48:50 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5C9428FC14; Sat, 10 Dec 2011 07:48:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBA7mod5072548; Sat, 10 Dec 2011 07:48:50 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBA7moiw072544; Sat, 10 Dec 2011 07:48:50 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201112100748.pBA7moiw072544@svn.freebsd.org> From: Andrew Turner Date: Sat, 10 Dec 2011 07:48:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228389 - in projects/arm_eabi: contrib/gcc/config/arm gnu/lib/libgcc gnu/usr.bin/cc/cc_tools X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Dec 2011 07:48:50 -0000 Author: andrew Date: Sat Dec 10 07:48:50 2011 New Revision: 228389 URL: http://svn.freebsd.org/changeset/base/228389 Log: Get GCC producing what appears to be ARM EABI binaries. Currently we are required to explicitly link against libgcc_s to get the __aeabi_* symbols. ld should be performing this, however its --as-needed argument appears to not be working. Modified: projects/arm_eabi/contrib/gcc/config/arm/freebsd.h projects/arm_eabi/gnu/lib/libgcc/Makefile projects/arm_eabi/gnu/usr.bin/cc/cc_tools/Makefile Modified: projects/arm_eabi/contrib/gcc/config/arm/freebsd.h ============================================================================== --- projects/arm_eabi/contrib/gcc/config/arm/freebsd.h Sat Dec 10 07:29:06 2011 (r228388) +++ projects/arm_eabi/contrib/gcc/config/arm/freebsd.h Sat Dec 10 07:48:50 2011 (r228389) @@ -30,7 +30,7 @@ #undef SUBTARGET_EXTRA_ASM_SPEC #define SUBTARGET_EXTRA_ASM_SPEC \ - "-matpcs %{fpic|fpie:-k} %{fPIC|fPIE:-k}" + "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=4} %{fpic|fpie:-k} %{fPIC|fPIE:-k}" /* Default to full FPA if -mhard-float is specified. */ #undef SUBTARGET_ASM_FLOAT_SPEC @@ -56,20 +56,28 @@ /************************[ Target stuff ]***********************************/ #undef TARGET_VERSION -#define TARGET_VERSION fprintf (stderr, " (FreeBSD/StrongARM ELF)"); +#define TARGET_VERSION fprintf (stderr, " (FreeBSD/ARM ELF)"); #ifndef TARGET_ENDIAN_DEFAULT #define TARGET_ENDIAN_DEFAULT 0 #endif -/* Default it to use ATPCS with soft-VFP. */ -#undef TARGET_DEFAULT -#define TARGET_DEFAULT \ - (MASK_APCS_FRAME \ - | TARGET_ENDIAN_DEFAULT) +/* We default to a soft-float ABI so that binaries can run on all + target hardware. */ +#undef TARGET_DEFAULT_FLOAT_ABI +#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT #undef ARM_DEFAULT_ABI -#define ARM_DEFAULT_ABI ARM_ABI_ATPCS +#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX + +#undef TARGET_OS_CPP_BUILTINS +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + FBSD_TARGET_OS_CPP_BUILTINS(); \ + TARGET_BPABI_CPP_BUILTINS(); \ + } \ + while (false) /* Define the actual types of some ANSI-mandated types. Needs to agree with . GCC defaults come from c-decl.c, @@ -87,7 +95,7 @@ #undef WCHAR_TYPE #undef SUBTARGET_CPU_DEFAULT -#define SUBTARGET_CPU_DEFAULT TARGET_CPU_strongarm +#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9 /* FreeBSD does its profiling differently to the Acorn compiler. We don't need a word following the mcount call; and to skip it @@ -121,5 +129,3 @@ do \ } \ while (0) -#undef FPUTYPE_DEFAULT -#define FPUTYPE_DEFAULT FPUTYPE_VFP Modified: projects/arm_eabi/gnu/lib/libgcc/Makefile ============================================================================== --- projects/arm_eabi/gnu/lib/libgcc/Makefile Sat Dec 10 07:29:06 2011 (r228388) +++ projects/arm_eabi/gnu/lib/libgcc/Makefile Sat Dec 10 07:48:50 2011 (r228389) @@ -54,7 +54,9 @@ LIB2FUNCS+= _fixuns${mode}si # Likewise double-word routines. .for mode in sf df xf tf LIB2FUNCS+= _fix${mode}di _fixuns${mode}di +.if ${TARGET_CPUARCH} != "arm" LIB2FUNCS+= _floatdi${mode} _floatundi${mode} +.endif .endfor LIB2ADD = $(LIB2FUNCS_EXTRA) @@ -108,15 +110,18 @@ LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udi CFLAGS+= -Dinhibit_libc -fno-inline LIB1ASMSRC = lib1funcs.asm LIB1ASMFUNCS = _dvmd_tls _bb_init_func -LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c +LIB1ASMFUNCS+= _udivsi3 _divsi3 _umodsi3 _modsi3\ + _call_via_rX _interwork_call_via_rX \ + _lshrdi3 _ashrdi3 _ashldi3 \ + _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ + _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ + _fixsfsi _fixunssfsi _floatdidf _floatdisf \ + _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod +LIB2ADDEH = unwind-arm.c libunwind.S pr-support.c unwind-c.c +LIB2FUNCS_EXTRA = bpabi.c -# Not now -#LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func -#LIB1ASMFUNCS+= _call_via_rX _interwork_call_via_rX \ -# _lshrdi3 _ashrdi3 _ashldi3 \ -# _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ -# _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ -# _fixsfsi _fixunssfsi _floatdidf _floatdisf +# Make bpabi.So depend on bpabi.c and not bpabi.S +bpabi.So: bpabi.c .endif .if ${TARGET_CPUARCH} == mips @@ -322,6 +327,9 @@ CLEANFILES += cs-*.h option* SHLIB_MKMAP = ${GCCDIR}/mkmap-symver.awk SHLIB_MKMAP_OPTS = SHLIB_MAPFILES = ${GCCDIR}/libgcc-std.ver +.if ${TARGET_CPUARCH} == "arm" +SHLIB_MAPFILES += ${GCCDIR}/config/arm/libgcc-bpabi.ver +.endif VERSION_MAP = libgcc.map libgcc.map: ${SHLIB_MKMAP} ${SHLIB_MAPFILES} ${SOBJS} ${OBJS:R:S/$/.So/} Modified: projects/arm_eabi/gnu/usr.bin/cc/cc_tools/Makefile ============================================================================== --- projects/arm_eabi/gnu/usr.bin/cc/cc_tools/Makefile Sat Dec 10 07:29:06 2011 (r228388) +++ projects/arm_eabi/gnu/usr.bin/cc/cc_tools/Makefile Sat Dec 10 07:48:50 2011 (r228389) @@ -51,6 +51,7 @@ TARGET_INC+= ${GCC_CPU}/elf.h .endif .if ${TARGET_CPUARCH} == "arm" TARGET_INC+= ${GCC_CPU}/aout.h +TARGET_INC+= ${GCC_CPU}/bpabi.h .endif .if ${TARGET_ARCH} == "powerpc64" TARGET_INC+= ${GCC_CPU}/biarch64.h @@ -358,7 +359,13 @@ gthr-default.h: ${GCCDIR}/gthr-posix.h GENSRCS+= gthr-default.h +.if ${TARGET_CPUARCH} == "arm" +unwind.h: ${GCCDIR}/config/arm/unwind-arm.h +.else unwind.h: ${GCCDIR}/unwind-generic.h +.endif + +unwind.h: ln -sf ${.ALLSRC} ${.TARGET} GENSRCS+= unwind.h From owner-svn-src-projects@FreeBSD.ORG Sat Dec 10 09:34:40 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 550E6106564A; Sat, 10 Dec 2011 09:34:40 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 448E38FC12; Sat, 10 Dec 2011 09:34:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBA9Ye7O079752; Sat, 10 Dec 2011 09:34:40 GMT (envelope-from linimon@svn.freebsd.org) Received: (from linimon@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBA9YekT079749; Sat, 10 Dec 2011 09:34:40 GMT (envelope-from linimon@svn.freebsd.org) Message-Id: <201112100934.pBA9YekT079749@svn.freebsd.org> From: Mark Linimon Date: Sat, 10 Dec 2011 09:34:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228390 - projects/portbuild/scripts X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Dec 2011 09:34:40 -0000 Author: linimon (doc,ports committer) Date: Sat Dec 10 09:34:39 2011 New Revision: 228390 URL: http://svn.freebsd.org/changeset/base/228390 Log: Fix -trybroken case. Modified: projects/portbuild/scripts/dopackages Modified: projects/portbuild/scripts/dopackages ============================================================================== --- projects/portbuild/scripts/dopackages Sat Dec 10 07:48:50 2011 (r228389) +++ projects/portbuild/scripts/dopackages Sat Dec 10 09:34:39 2011 (r228390) @@ -556,7 +556,7 @@ if [ "$skipstart" = 0 ]; then if [ -f ${pbab}/newfailure ]; then cp ${pbab}/newfailure ${builddir}/bak/ fi - lockf -k ${pbab}/failure.lock ${pbc}/scripts/prunefailure ${arch} ${branch} ${builddir} + lockf -k ${pbab}/failure.lock ${pbc}/scripts/prunefailure ${arch} ${branch} ${buildid} fi # XXX These can happen after build start From owner-svn-src-projects@FreeBSD.ORG Sat Dec 10 23:18:35 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 65588106566B; Sat, 10 Dec 2011 23:18:35 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4B3188FC14; Sat, 10 Dec 2011 23:18:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBANIZrE026126; Sat, 10 Dec 2011 23:18:35 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBANIZta026125; Sat, 10 Dec 2011 23:18:35 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201112102318.pBANIZta026125@svn.freebsd.org> From: Rick Macklem Date: Sat, 10 Dec 2011 23:18:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228400 - projects/nfsv4.1-client/sys/rpc X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Dec 2011 23:18:35 -0000 Author: rmacklem Date: Sat Dec 10 23:18:34 2011 New Revision: 228400 URL: http://svn.freebsd.org/changeset/base/228400 Log: Move a couple of the kernel rpc structures into a private include file from the C files, so that they can be included in multiple files. Added: projects/nfsv4.1-client/sys/rpc/_krpc.h (contents, props changed) Added: projects/nfsv4.1-client/sys/rpc/_krpc.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/nfsv4.1-client/sys/rpc/_krpc.h Sat Dec 10 23:18:34 2011 (r228400) @@ -0,0 +1,111 @@ +/*- + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + * + * $FreeBSD$ + */ + +#ifndef _RPC__KRPC_H_ +#define _RPC__KRPC_H_ + +#ifdef _KERNEL +/* + * Definitions now shared between client and server RPC for backchannels. + */ +#define MCALL_MSG_SIZE 24 + +/* + * A pending RPC request which awaits a reply. Requests which have + * received their reply will have cr_xid set to zero and cr_mrep to + * the mbuf chain of the reply. + */ +struct ct_request { + TAILQ_ENTRY(ct_request) cr_link; + uint32_t cr_xid; /* XID of request */ + struct mbuf *cr_mrep; /* reply received by upcall */ + int cr_error; /* any error from upcall */ + char cr_verf[MAX_AUTH_BYTES]; /* reply verf */ +}; + +TAILQ_HEAD(ct_request_list, ct_request); + +struct rc_data { + struct mtx rc_lock; + struct sockaddr_storage rc_addr; /* server address */ + struct netconfig* rc_nconf; /* network type */ + rpcprog_t rc_prog; /* program number */ + rpcvers_t rc_vers; /* version number */ + size_t rc_sendsz; + size_t rc_recvsz; + struct timeval rc_timeout; + struct timeval rc_retry; + int rc_retries; + int rc_privport; + char *rc_waitchan; + int rc_intr; + int rc_connecting; + int rc_closed; + struct ucred *rc_ucred; + CLIENT* rc_client; /* underlying RPC client */ + struct rpc_err rc_err; + void *rc_backchannel; +}; + +struct ct_data { + struct mtx ct_lock; + int ct_threads; /* number of threads in clnt_vc_call */ + bool_t ct_closing; /* TRUE if we are closing */ + bool_t ct_closed; /* TRUE if we are closed */ + struct socket *ct_socket; /* connection socket */ + bool_t ct_closeit; /* close it on destroy */ + struct timeval ct_wait; /* wait interval in milliseconds */ + struct sockaddr_storage ct_addr; /* remote addr */ + struct rpc_err ct_error; + uint32_t ct_xid; + char ct_mcallc[MCALL_MSG_SIZE]; /* marshalled callmsg */ + size_t ct_mpos; /* pos after marshal */ + const char *ct_waitchan; + int ct_waitflag; + struct mbuf *ct_record; /* current reply record */ + size_t ct_record_resid; /* how much left of reply to read */ + bool_t ct_record_eor; /* true if reading last fragment */ + struct ct_request_list ct_pending; + int ct_upcallrefs; /* Ref cnt of upcalls in prog. */ + SVCXPRT *ct_backchannelxprt; /* xprt for backchannel */ +}; + +struct cf_conn { /* kept in xprt->xp_p1 for actual connection */ + enum xprt_stat strm_stat; + struct mbuf *mpending; /* unparsed data read from the socket */ + struct mbuf *mreq; /* current record being built from mpending */ + uint32_t resid; /* number of bytes needed for fragment */ + bool_t eor; /* reading last fragment of current record */ +}; + +#endif /* _KERNEL */ + +#endif /* _RPC__KRPC_H_ */ From owner-svn-src-projects@FreeBSD.ORG Sat Dec 10 23:26:24 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BC87A1065673; Sat, 10 Dec 2011 23:26:24 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AD16B8FC13; Sat, 10 Dec 2011 23:26:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBANQODK026402; Sat, 10 Dec 2011 23:26:24 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBANQOrt026400; Sat, 10 Dec 2011 23:26:24 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201112102326.pBANQOrt026400@svn.freebsd.org> From: Rick Macklem Date: Sat, 10 Dec 2011 23:26:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228401 - projects/nfsv4.1-client/sys/rpc X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Dec 2011 23:26:24 -0000 Author: rmacklem Date: Sat Dec 10 23:26:24 2011 New Revision: 228401 URL: http://svn.freebsd.org/changeset/base/228401 Log: Define a new CLSET_BACKCHANNEL for the kernel rpc. This can be used to set up a backchannel on a TCP RPC socket. A backchannel allows RPC messages to travel in the opposite direction, with an RPC request from the server to client and an RPC reply from the client to server. This is used by NFSv4.1 for callback RPCs. Modified: projects/nfsv4.1-client/sys/rpc/clnt.h Modified: projects/nfsv4.1-client/sys/rpc/clnt.h ============================================================================== --- projects/nfsv4.1-client/sys/rpc/clnt.h Sat Dec 10 23:18:34 2011 (r228400) +++ projects/nfsv4.1-client/sys/rpc/clnt.h Sat Dec 10 23:26:24 2011 (r228401) @@ -372,6 +372,7 @@ enum clnt_stat clnt_call_private(CLIENT #define CLGET_RETRIES 26 /* get retry count for reconnect */ #define CLSET_PRIVPORT 27 /* set privileged source port flag */ #define CLGET_PRIVPORT 28 /* get privileged source port flag */ +#define CLSET_BACKCHANNEL 29 /* set backchannel for socket */ #endif From owner-svn-src-projects@FreeBSD.ORG Sat Dec 10 23:35:05 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B852B106566B; Sat, 10 Dec 2011 23:35:05 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8F1458FC0C; Sat, 10 Dec 2011 23:35:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBANZ58Y026704; Sat, 10 Dec 2011 23:35:05 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBANZ5PC026702; Sat, 10 Dec 2011 23:35:05 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201112102335.pBANZ5PC026702@svn.freebsd.org> From: Rick Macklem Date: Sat, 10 Dec 2011 23:35:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228402 - projects/nfsv4.1-client/sys/rpc X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Dec 2011 23:35:05 -0000 Author: rmacklem Date: Sat Dec 10 23:35:05 2011 New Revision: 228402 URL: http://svn.freebsd.org/changeset/base/228402 Log: Add code to handle CLSET_BACKCHANNEL. Basically, just save the xprt returned by svc_vc_create_backchannel() and pass it down to the clnt_vc layer. Struct rc_data is now in _krpc.h. Modified: projects/nfsv4.1-client/sys/rpc/clnt_rc.c Modified: projects/nfsv4.1-client/sys/rpc/clnt_rc.c ============================================================================== --- projects/nfsv4.1-client/sys/rpc/clnt_rc.c Sat Dec 10 23:26:24 2011 (r228401) +++ projects/nfsv4.1-client/sys/rpc/clnt_rc.c Sat Dec 10 23:35:05 2011 (r228402) @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include static enum clnt_stat clnt_reconnect_call(CLIENT *, struct rpc_callextra *, rpcproc_t, struct mbuf *, struct mbuf **, struct timeval); @@ -67,27 +68,6 @@ static struct clnt_ops clnt_reconnect_op static int fake_wchan; -struct rc_data { - struct mtx rc_lock; - struct sockaddr_storage rc_addr; /* server address */ - struct netconfig* rc_nconf; /* network type */ - rpcprog_t rc_prog; /* program number */ - rpcvers_t rc_vers; /* version number */ - size_t rc_sendsz; - size_t rc_recvsz; - struct timeval rc_timeout; - struct timeval rc_retry; - int rc_retries; - int rc_privport; - char *rc_waitchan; - int rc_intr; - int rc_connecting; - int rc_closed; - struct ucred *rc_ucred; - CLIENT* rc_client; /* underlying RPC client */ - struct rpc_err rc_err; -}; - CLIENT * clnt_reconnect_create( struct netconfig *nconf, /* network type */ @@ -211,6 +191,8 @@ clnt_reconnect_connect(CLIENT *cl) CLNT_CONTROL(newclient, CLSET_RETRY_TIMEOUT, &rc->rc_retry); CLNT_CONTROL(newclient, CLSET_WAITCHAN, rc->rc_waitchan); CLNT_CONTROL(newclient, CLSET_INTERRUPTIBLE, &rc->rc_intr); + if (rc->rc_backchannel != NULL) + CLNT_CONTROL(newclient, CLSET_BACKCHANNEL, rc->rc_backchannel); stat = RPC_SUCCESS; out: @@ -466,6 +448,10 @@ clnt_reconnect_control(CLIENT *cl, u_int *(int *) info = rc->rc_privport; break; + case CLSET_BACKCHANNEL: + rc->rc_backchannel = info; + break; + default: return (FALSE); } From owner-svn-src-projects@FreeBSD.ORG Sat Dec 10 23:57:32 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8C4141065670; Sat, 10 Dec 2011 23:57:32 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7C0FE8FC08; Sat, 10 Dec 2011 23:57:32 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBANvWwR027407; Sat, 10 Dec 2011 23:57:32 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBANvWkq027405; Sat, 10 Dec 2011 23:57:32 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201112102357.pBANvWkq027405@svn.freebsd.org> From: Rick Macklem Date: Sat, 10 Dec 2011 23:57:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228403 - projects/nfsv4.1-client/sys/rpc X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Dec 2011 23:57:32 -0000 Author: rmacklem Date: Sat Dec 10 23:57:32 2011 New Revision: 228403 URL: http://svn.freebsd.org/changeset/base/228403 Log: Modify the TCP RPC client code to handle the backchannel. The main change is to recognize the case of an RPC request (CALL) message in the receive upcall and marshalling it to the server via the xprt structure in ct_backchannelxprt. The locking is: - ct_lock protects the ct_backchannelxprt field along with other ct_data fields and is held during most of the backchannel changes. - xp_lock protects the fields inside the xprt structure and must be held when the structure is being released in clnt_vc_destroy(). The ct_request and ct_data structures are now defined in _krpc.h. Modified: projects/nfsv4.1-client/sys/rpc/clnt_vc.c Modified: projects/nfsv4.1-client/sys/rpc/clnt_vc.c ============================================================================== --- projects/nfsv4.1-client/sys/rpc/clnt_vc.c Sat Dec 10 23:35:05 2011 (r228402) +++ projects/nfsv4.1-client/sys/rpc/clnt_vc.c Sat Dec 10 23:57:32 2011 (r228403) @@ -67,6 +67,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -77,8 +78,7 @@ __FBSDID("$FreeBSD$"); #include #include - -#define MCALL_MSG_SIZE 24 +#include struct cmessage { struct cmsghdr cmsg; @@ -106,43 +106,6 @@ static struct clnt_ops clnt_vc_ops = { .cl_control = clnt_vc_control }; -/* - * A pending RPC request which awaits a reply. Requests which have - * received their reply will have cr_xid set to zero and cr_mrep to - * the mbuf chain of the reply. - */ -struct ct_request { - TAILQ_ENTRY(ct_request) cr_link; - uint32_t cr_xid; /* XID of request */ - struct mbuf *cr_mrep; /* reply received by upcall */ - int cr_error; /* any error from upcall */ - char cr_verf[MAX_AUTH_BYTES]; /* reply verf */ -}; - -TAILQ_HEAD(ct_request_list, ct_request); - -struct ct_data { - struct mtx ct_lock; - int ct_threads; /* number of threads in clnt_vc_call */ - bool_t ct_closing; /* TRUE if we are closing */ - bool_t ct_closed; /* TRUE if we are closed */ - struct socket *ct_socket; /* connection socket */ - bool_t ct_closeit; /* close it on destroy */ - struct timeval ct_wait; /* wait interval in milliseconds */ - struct sockaddr_storage ct_addr; /* remote addr */ - struct rpc_err ct_error; - uint32_t ct_xid; - char ct_mcallc[MCALL_MSG_SIZE]; /* marshalled callmsg */ - size_t ct_mpos; /* pos after marshal */ - const char *ct_waitchan; - int ct_waitflag; - struct mbuf *ct_record; /* current reply record */ - size_t ct_record_resid; /* how much left of reply to read */ - bool_t ct_record_eor; /* true if reading last fragment */ - struct ct_request_list ct_pending; - int ct_upcallrefs; /* Ref cnt of upcalls in prog. */ -}; - static void clnt_vc_upcallsdone(struct ct_data *); static const char clnt_vc_errstr[] = "%s : %s"; @@ -641,6 +604,7 @@ clnt_vc_control(CLIENT *cl, u_int reques { struct ct_data *ct = (struct ct_data *)cl->cl_private; void *infop = info; + SVCXPRT *xprt; mtx_lock(&ct->ct_lock); @@ -752,6 +716,14 @@ clnt_vc_control(CLIENT *cl, u_int reques *(int *) info = FALSE; break; + case CLSET_BACKCHANNEL: + xprt = (SVCXPRT *)info; + if (ct->ct_backchannelxprt == NULL) { + xprt->xp_p2 = ct; + ct->ct_backchannelxprt = xprt; + } + break; + default: mtx_unlock(&ct->ct_lock); return (FALSE); @@ -817,10 +789,20 @@ clnt_vc_destroy(CLIENT *cl) { struct ct_data *ct = (struct ct_data *) cl->cl_private; struct socket *so = NULL; + SVCXPRT *xprt; clnt_vc_close(cl); mtx_lock(&ct->ct_lock); + xprt = ct->ct_backchannelxprt; + ct->ct_backchannelxprt = NULL; + if (xprt != NULL) { + mtx_unlock(&ct->ct_lock); /* To avoid a LOR. */ + sx_xlock(&xprt->xp_lock); + mtx_lock(&ct->ct_lock); + xprt->xp_p2 = NULL; + xprt_unregister(xprt); + } if (ct->ct_socket) { if (ct->ct_closeit) { @@ -829,6 +811,11 @@ clnt_vc_destroy(CLIENT *cl) } mtx_unlock(&ct->ct_lock); + if (xprt != NULL) { + sx_xunlock(&xprt->xp_lock); + SVC_RELEASE(xprt); +printf("xprt rel\n"); + } mtx_destroy(&ct->ct_lock); if (so) { @@ -855,11 +842,13 @@ clnt_vc_soupcall(struct socket *so, void { struct ct_data *ct = (struct ct_data *) arg; struct uio uio; - struct mbuf *m; + struct mbuf *m, *m2; struct ct_request *cr; int error, rcvflag, foundreq; - uint32_t xid, header; + uint32_t xid_plus_direction[2], header; bool_t do_read; + SVCXPRT *xprt; + struct cf_conn *cd; ct->ct_upcallrefs++; uio.uio_td = curthread; @@ -974,45 +963,91 @@ clnt_vc_soupcall(struct socket *so, void && ct->ct_record_eor) { /* * The XID is in the first uint32_t of - * the reply. + * the reply and the message direction + * is the second one. */ - if (ct->ct_record->m_len < sizeof(xid) && + if (ct->ct_record->m_len < + sizeof(xid_plus_direction) && m_length(ct->ct_record, NULL) < - sizeof(xid)) { + sizeof(xid_plus_direction)) { m_freem(ct->ct_record); break; } - m_copydata(ct->ct_record, 0, sizeof(xid), - (char *)&xid); - xid = ntohl(xid); - - mtx_lock(&ct->ct_lock); - foundreq = 0; - TAILQ_FOREACH(cr, &ct->ct_pending, cr_link) { - if (cr->cr_xid == xid) { + m_copydata(ct->ct_record, 0, + sizeof(xid_plus_direction), + (char *)xid_plus_direction); + xid_plus_direction[0] = + ntohl(xid_plus_direction[0]); + xid_plus_direction[1] = + ntohl(xid_plus_direction[1]); + /* Check message direction. */ + if (xid_plus_direction[1] == CALL) { + /* This is a backchannel request. */ +printf("bc req\n"); + mtx_lock(&ct->ct_lock); + xprt = ct->ct_backchannelxprt; + if (xprt == NULL) { + mtx_unlock(&ct->ct_lock); + /* Just throw it away. */ + m_freem(ct->ct_record); + ct->ct_record = NULL; + } else { + cd = (struct cf_conn *) + xprt->xp_p1; + m2 = cd->mreq; /* - * This one - * matches. We leave - * the reply mbuf in - * cr->cr_mrep. Set - * the XID to zero so - * that we will ignore - * any duplicaed - * replies. + * The requests are chained + * in the m_nextpkt list. */ - cr->cr_xid = 0; - cr->cr_mrep = ct->ct_record; - cr->cr_error = 0; - foundreq = 1; - wakeup(cr); - break; + while (m2 != NULL && + m2->m_nextpkt != NULL) + /* Find end of list. */ + m2 = m2->m_nextpkt; + if (m2 != NULL) + m2->m_nextpkt = + ct->ct_record; + else + cd->mreq = + ct->ct_record; + ct->ct_record->m_nextpkt = + NULL; + ct->ct_record = NULL; + xprt_active(xprt); + mtx_unlock(&ct->ct_lock); +printf("got bmsg\n"); } - } - mtx_unlock(&ct->ct_lock); + } else { + mtx_lock(&ct->ct_lock); + foundreq = 0; + TAILQ_FOREACH(cr, &ct->ct_pending, + cr_link) { + if (cr->cr_xid == + xid_plus_direction[0]) { + /* + * This one + * matches. We leave + * the reply mbuf in + * cr->cr_mrep. Set + * the XID to zero so + * that we will ignore + * any duplicated + * replies. + */ + cr->cr_xid = 0; + cr->cr_mrep = + ct->ct_record; + cr->cr_error = 0; + foundreq = 1; + wakeup(cr); + break; + } + } + mtx_unlock(&ct->ct_lock); - if (!foundreq) - m_freem(ct->ct_record); - ct->ct_record = NULL; + if (!foundreq) + m_freem(ct->ct_record); + ct->ct_record = NULL; + } } } } while (m);