From owner-p4-projects@FreeBSD.ORG Wed Jul 20 20:12:09 2005 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D0C8816A421; Wed, 20 Jul 2005 20:12:08 +0000 (GMT) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A7E3D16A41F for ; Wed, 20 Jul 2005 20:12:08 +0000 (GMT) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3F35843D48 for ; Wed, 20 Jul 2005 20:12:08 +0000 (GMT) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j6KKC8he001474 for ; Wed, 20 Jul 2005 20:12:08 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j6KKC7WE001471 for perforce@freebsd.org; Wed, 20 Jul 2005 20:12:07 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Wed, 20 Jul 2005 20:12:07 GMT Message-Id: <200507202012.j6KKC7WE001471@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Cc: Subject: PERFORCE change 80626 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2005 20:12:09 -0000 http://perforce.freebsd.org/chv.cgi?CH=80626 Change 80626 by rwatson@rwatson_zoo on 2005/07/20 20:11:23 NFS client lockage. UMA stats fixage. Affected files ... .. //depot/projects/netsmp/src/sys/contrib/pf/net/pf.c#2 integrate .. //depot/projects/netsmp/src/sys/contrib/pf/net/pf_norm.c#2 integrate .. //depot/projects/netsmp/src/sys/contrib/pf/net/pfvar.h#2 integrate .. //depot/projects/netsmp/src/sys/dev/ep/if_ep.c#2 integrate .. //depot/projects/netsmp/src/sys/dev/ep/if_epvar.h#2 integrate .. //depot/projects/netsmp/src/sys/fs/devfs/devfs_vnops.c#2 integrate .. //depot/projects/netsmp/src/sys/geom/bde/g_bde_crypt.c#2 integrate .. //depot/projects/netsmp/src/sys/i386/conf/NOTES#2 integrate .. //depot/projects/netsmp/src/sys/kern/vfs_aio.c#2 integrate .. //depot/projects/netsmp/src/sys/kern/vfs_bio.c#2 integrate .. //depot/projects/netsmp/src/sys/kern/vfs_subr.c#2 integrate .. //depot/projects/netsmp/src/sys/net/if_bridge.c#2 integrate .. //depot/projects/netsmp/src/sys/netinet/icmp6.h#2 integrate .. //depot/projects/netsmp/src/sys/netinet/ip6.h#2 integrate .. //depot/projects/netsmp/src/sys/netinet6/in6.h#2 integrate .. //depot/projects/netsmp/src/sys/netinet6/ip6_input.c#2 integrate .. //depot/projects/netsmp/src/sys/netinet6/ip6_mroute.h#2 integrate .. //depot/projects/netsmp/src/sys/netinet6/ip6_output.c#2 integrate .. //depot/projects/netsmp/src/sys/netinet6/nd6.c#2 integrate .. //depot/projects/netsmp/src/sys/nfsclient/nfs.h#2 integrate .. //depot/projects/netsmp/src/sys/nfsclient/nfs_socket.c#2 integrate .. //depot/projects/netsmp/src/sys/nfsclient/nfs_subs.c#2 integrate .. //depot/projects/netsmp/src/sys/ufs/ffs/ffs_vfsops.c#2 integrate .. //depot/projects/netsmp/src/sys/vm/swap_pager.c#2 integrate .. //depot/projects/netsmp/src/sys/vm/uma_core.c#2 integrate .. //depot/projects/netsmp/src/sys/vm/vm_map.c#2 integrate Differences ... ==== //depot/projects/netsmp/src/sys/contrib/pf/net/pf.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/contrib/pf/net/pf.c,v 1.34 2005/05/04 19:51:06 mlaier Exp $ */ +/* $FreeBSD: src/sys/contrib/pf/net/pf.c,v 1.35 2005/07/20 18:58:27 mlaier Exp $ */ /* $OpenBSD: pf.c,v 1.483 2005/03/15 17:38:43 dhartmei Exp $ */ /* @@ -1085,6 +1085,11 @@ void pf_purge_expired_state(struct pf_state *cur) { +#ifdef __FreeBSD__ + if (cur->sync_flags & PFSTATE_EXPIRING) + return; + cur->sync_flags |= PFSTATE_EXPIRING; +#endif if (cur->src.state == PF_TCPS_PROXY_DST) pf_send_tcp(cur->rule.ptr, cur->af, &cur->ext.addr, &cur->lan.addr, ==== //depot/projects/netsmp/src/sys/contrib/pf/net/pf_norm.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/contrib/pf/net/pf_norm.c,v 1.11 2005/05/03 16:43:32 mlaier Exp $ */ +/* $FreeBSD: src/sys/contrib/pf/net/pf_norm.c,v 1.12 2005/07/20 10:30:52 ume Exp $ */ /* $OpenBSD: pf_norm.c,v 1.97 2004/09/21 16:59:12 aaron Exp $ */ /* @@ -70,48 +70,6 @@ #include -#if defined(__FreeBSD__) && defined(INET6) -/* - * XXX: This should go to netinet/ip6.h (KAME) - */ -/* IPv6 options: common part */ -struct ip6_opt { - u_int8_t ip6o_type; - u_int8_t ip6o_len; -} __packed; - -/* Jumbo Payload Option */ -struct ip6_opt_jumbo { - u_int8_t ip6oj_type; - u_int8_t ip6oj_len; - u_int8_t ip6oj_jumbo_len[4]; -} __packed; - -/* NSAP Address Option */ -struct ip6_opt_nsap { - u_int8_t ip6on_type; - u_int8_t ip6on_len; - u_int8_t ip6on_src_nsap_len; - u_int8_t ip6on_dst_nsap_len; - /* followed by source NSAP */ - /* followed by destination NSAP */ -} __packed; - -/* Tunnel Limit Option */ -struct ip6_opt_tunnel { - u_int8_t ip6ot_type; - u_int8_t ip6ot_len; - u_int8_t ip6ot_encap_limit; -} __packed; - -/* Router Alert Option */ -struct ip6_opt_router { - u_int8_t ip6or_type; - u_int8_t ip6or_len; - u_int8_t ip6or_value[2]; -} __packed; -#endif /* __FreeBSD__ && INET6 */ - #ifndef __FreeBSD__ struct pf_frent { LIST_ENTRY(pf_frent) fr_next; ==== //depot/projects/netsmp/src/sys/contrib/pf/net/pfvar.h#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/contrib/pf/net/pfvar.h,v 1.11 2005/05/03 16:43:32 mlaier Exp $ */ +/* $FreeBSD: src/sys/contrib/pf/net/pfvar.h,v 1.12 2005/07/20 18:58:27 mlaier Exp $ */ /* $OpenBSD: pfvar.h,v 1.213 2005/03/03 07:13:39 dhartmei Exp $ */ /* @@ -790,6 +790,9 @@ #define PFSTATE_NOSYNC 0x01 #define PFSTATE_FROMSYNC 0x02 #define PFSTATE_STALE 0x04 +#ifdef __FreeBSD__ +#define PFSTATE_EXPIRING 0x10 +#endif u_int8_t pad; }; ==== //depot/projects/netsmp/src/sys/dev/ep/if_ep.c#2 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ep/if_ep.c,v 1.140 2005/07/01 05:31:23 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ep/if_ep.c,v 1.141 2005/07/19 22:26:44 imp Exp $"); /* * Modified from the FreeBSD 1.1.5.1 version by: @@ -281,7 +281,7 @@ error = ep_get_macaddr(sc, sc->eaddr); if (error) { device_printf(sc->dev, "Unable to get MAC address!\n"); - EP_LOCK_DESTORY(sc); + EP_LOCK_DESTROY(sc); return (ENXIO); } } @@ -289,7 +289,7 @@ ifp = sc->ifp = if_alloc(IFT_ETHER); if (ifp == NULL) { device_printf(sc->dev, "if_alloc() failed\n"); - EP_LOCK_DESTORY(sc); + EP_LOCK_DESTROY(sc); return (ENOSPC); } @@ -361,7 +361,7 @@ sc->gone = 1; ep_free(dev); - EP_LOCK_DESTORY(sc); + EP_LOCK_DESTROY(sc); return (0); } ==== //depot/projects/netsmp/src/sys/dev/ep/if_epvar.h#2 (text+ko) ==== @@ -19,7 +19,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/ep/if_epvar.h,v 1.19 2005/07/13 14:54:40 imp Exp $ + * $FreeBSD: src/sys/dev/ep/if_epvar.h,v 1.20 2005/07/19 22:26:44 imp Exp $ */ struct ep_board { @@ -103,6 +103,6 @@ #define EP_LOCK_INIT(_sc) \ mtx_init(&_sc->sc_mtx, device_get_nameunit(_sc->dev), \ MTX_NETWORK_LOCK, MTX_DEF) -#define EP_LOCK_DESTORY(_sc) mtx_destroy(&_sc->sc_mtx); +#define EP_LOCK_DESTROY(_sc) mtx_destroy(&_sc->sc_mtx); #define EP_ASSERT_LOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_OWNED); #define EP_ASSERT_UNLOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_NOTOWNED); ==== //depot/projects/netsmp/src/sys/fs/devfs/devfs_vnops.c#2 (text+ko) ==== @@ -31,7 +31,7 @@ * @(#)kernfs_vnops.c 8.15 (Berkeley) 5/21/95 * From: FreeBSD: src/sys/miscfs/kernfs/kernfs_vnops.c 1.43 * - * $FreeBSD: src/sys/fs/devfs/devfs_vnops.c,v 1.115 2005/07/14 10:22:09 rwatson Exp $ + * $FreeBSD: src/sys/fs/devfs/devfs_vnops.c,v 1.116 2005/07/20 13:34:16 simon Exp $ */ /* @@ -788,6 +788,12 @@ struct devfs_mount *dmp; int error; + /* + * The only type of node we should be creating here is a + * character device, for anything else return EOPNOTSUPP. + */ + if (ap->a_vap->va_type != VCHR) + return (EOPNOTSUPP); dvp = ap->a_dvp; dmp = VFSTODEVFS(dvp->v_mount); lockmgr(&dmp->dm_lock, LK_EXCLUSIVE, 0, curthread); ==== //depot/projects/netsmp/src/sys/geom/bde/g_bde_crypt.c#2 (text+ko) ==== @@ -29,7 +29,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/geom/bde/g_bde_crypt.c,v 1.22 2005/03/11 15:42:51 ume Exp $ + * $FreeBSD: src/sys/geom/bde/g_bde_crypt.c,v 1.23 2005/07/20 18:08:16 phk Exp $ */ /* This source file contains the functions responsible for the crypto, keying * and mapping operations on the I/O requests. @@ -64,7 +64,7 @@ * from the comparatively small key material in our mkey, in such a way that * if one, more or even many of the kkeys are compromised, this does not * significantly help an attack on other kkeys and in particular does not - * weaken or compromised the mkey. + * weaken or compromise the mkey. * * First we MD5 hash the sectornumber with the salt from the lock sector. * The salt prevents the precalculation and statistical analysis of the MD5 ==== //depot/projects/netsmp/src/sys/i386/conf/NOTES#2 (text+ko) ==== @@ -4,7 +4,7 @@ # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. # -# $FreeBSD: src/sys/i386/conf/NOTES,v 1.1202 2005/07/02 20:06:42 delphij Exp $ +# $FreeBSD: src/sys/i386/conf/NOTES,v 1.1203 2005/07/20 16:57:53 mdodd Exp $ # # @@ -637,6 +637,9 @@ # # apm: Laptop Advanced Power Management (experimental) # pmtimer: Timer device driver for power management events (APM or ACPI) +# smapi: System Management Application Program Interface driver +# smbios: DMI/SMBIOS entry point +# vpd: Vital Product Data kernel interface # cy: Cyclades serial driver # digi: Digiboard driver # spic: Sony Programmable I/O controller (VAIO notebooks) @@ -665,6 +668,9 @@ device apm hint.apm.0.flags="0x20" +device smapi +device smbios +device vpd device pmtimer # Adjust system timer at wakeup time device cy options CY_PCI_FASTINTR # Use with cy_pci unless irq is shared ==== //depot/projects/netsmp/src/sys/kern/vfs_aio.c#2 (text+ko) ==== @@ -19,7 +19,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/vfs_aio.c,v 1.195 2005/07/01 16:28:30 ssouhlal Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/vfs_aio.c,v 1.196 2005/07/20 19:06:06 alc Exp $"); #include #include @@ -2107,6 +2107,7 @@ struct aio_liojob *lj; mtx_lock(&Giant); + bp->b_flags |= B_DONE; wakeup(bp); aiocbe = (struct aiocblist *)bp->b_caller1; ==== //depot/projects/netsmp/src/sys/kern/vfs_bio.c#2 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/vfs_bio.c,v 1.491 2005/06/14 20:32:27 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/vfs_bio.c,v 1.492 2005/07/20 19:06:06 alc Exp $"); #include #include @@ -3046,7 +3046,6 @@ if (bp->b_iodone != NULL) { biodone = bp->b_iodone; bp->b_iodone = NULL; - bp->b_flags |= B_DONE; (*biodone) (bp); if (dropobj) bufobj_wdrop(dropobj); ==== //depot/projects/netsmp/src/sys/kern/vfs_subr.c#2 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/vfs_subr.c,v 1.635 2005/07/05 15:57:55 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/vfs_subr.c,v 1.636 2005/07/20 01:43:27 jeff Exp $"); #include "opt_ddb.h" #include "opt_mac.h" @@ -582,7 +582,7 @@ } MNT_IUNLOCK(mp); vholdl(vp); - if (VOP_LOCK(vp, LK_INTERLOCK|LK_EXCLUSIVE|LK_NOWAIT, td)) { + if (VOP_LOCK(vp, LK_INTERLOCK|LK_EXCLUSIVE, td)) { vdrop(vp); MNT_ILOCK(mp); continue; @@ -680,11 +680,19 @@ done = 0; mtx_lock(&mountlist_mtx); for (mp = TAILQ_FIRST(&mountlist); mp != NULL; mp = nmp) { + int vfsunlocked; if (vfs_busy(mp, LK_NOWAIT, &mountlist_mtx, td)) { nmp = TAILQ_NEXT(mp, mnt_list); continue; } + if (!VFS_NEEDSGIANT(mp)) { + mtx_unlock(&Giant); + vfsunlocked = 1; + } else + vfsunlocked = 0; done += vlrureclaim(mp); + if (vfsunlocked) + mtx_lock(&Giant); mtx_lock(&mountlist_mtx); nmp = TAILQ_NEXT(mp, mnt_list); vfs_unbusy(mp, td); @@ -700,7 +708,8 @@ #endif vnlru_nowhere++; tsleep(vnlruproc, PPAUSE, "vlrup", hz * 3); - } + } else + uio_yield(); } } ==== //depot/projects/netsmp/src/sys/net/if_bridge.c#2 (text+ko) ==== @@ -80,7 +80,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/net/if_bridge.c,v 1.12 2005/07/13 20:40:18 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/net/if_bridge.c,v 1.13 2005/07/20 19:42:51 thompsa Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -676,6 +676,7 @@ switch (ifs->if_type) { case IFT_ETHER: + case IFT_L2VLAN: /* * Take the interface out of promiscuous mode. */ ==== //depot/projects/netsmp/src/sys/netinet/icmp6.h#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/netinet/icmp6.h,v 1.16 2005/01/07 01:45:44 imp Exp $ */ +/* $FreeBSD: src/sys/netinet/icmp6.h,v 1.18 2005/07/20 09:17:41 ume Exp $ */ /* $KAME: icmp6.h,v 1.46 2001/04/27 15:09:48 itojun Exp $ */ /*- @@ -97,6 +97,7 @@ #define MLD_LISTENER_QUERY 130 /* multicast listener query */ #define MLD_LISTENER_REPORT 131 /* multicast listener report */ #define MLD_LISTENER_DONE 132 /* multicast listener done */ +#define MLD_LISTENER_REDUCTION MLD_LISTENER_DONE /* RFC3542 definition */ /* RFC2292 decls */ #define ICMP6_MEMBERSHIP_QUERY 130 /* group membership query */ @@ -111,9 +112,9 @@ #endif #define ND_ROUTER_SOLICIT 133 /* router solicitation */ -#define ND_ROUTER_ADVERT 134 /* router advertisment */ +#define ND_ROUTER_ADVERT 134 /* router advertisement */ #define ND_NEIGHBOR_SOLICIT 135 /* neighbor solicitation */ -#define ND_NEIGHBOR_ADVERT 136 /* neighbor advertisment */ +#define ND_NEIGHBOR_ADVERT 136 /* neighbor advertisement */ #define ND_REDIRECT 137 /* redirect */ #define ICMP6_ROUTER_RENUMBERING 138 /* router renumbering */ ==== //depot/projects/netsmp/src/sys/netinet/ip6.h#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/netinet/ip6.h,v 1.13 2005/01/07 01:45:44 imp Exp $ */ +/* $FreeBSD: src/sys/netinet/ip6.h,v 1.15 2005/07/20 10:30:52 ume Exp $ */ /* $KAME: ip6.h,v 1.18 2001/03/29 05:34:30 itojun Exp $ */ /*- @@ -142,7 +142,7 @@ #ifndef _KERNEL #define IP6OPT_RTALERT 0x05 /* 00 0 00101 (KAME definition) */ #endif -#define IP6OPT_ROUTER_ALERT 0x05 /* 00 0 00101 (2292bis, recommended) */ +#define IP6OPT_ROUTER_ALERT 0x05 /* 00 0 00101 (RFC3542, recommended) */ #define IP6OPT_RTALERT_LEN 4 #define IP6OPT_RTALERT_MLD 0 /* Datagram contains an MLD message */ @@ -160,8 +160,56 @@ #define IP6OPT_MUTABLE 0x20 +/* IPv6 options: common part */ +struct ip6_opt { + u_int8_t ip6o_type; + u_int8_t ip6o_len; +} __packed; + +/* Jumbo Payload Option */ +struct ip6_opt_jumbo { + u_int8_t ip6oj_type; + u_int8_t ip6oj_len; + u_int8_t ip6oj_jumbo_len[4]; +} __packed; #define IP6OPT_JUMBO_LEN 6 +/* NSAP Address Option */ +struct ip6_opt_nsap { + u_int8_t ip6on_type; + u_int8_t ip6on_len; + u_int8_t ip6on_src_nsap_len; + u_int8_t ip6on_dst_nsap_len; + /* followed by source NSAP */ + /* followed by destination NSAP */ +} __packed; + +/* Tunnel Limit Option */ +struct ip6_opt_tunnel { + u_int8_t ip6ot_type; + u_int8_t ip6ot_len; + u_int8_t ip6ot_encap_limit; +} __packed; + +/* Router Alert Option */ +struct ip6_opt_router { + u_int8_t ip6or_type; + u_int8_t ip6or_len; + u_int8_t ip6or_value[2]; +} __packed; +/* Router alert values (in network byte order) */ +#if BYTE_ORDER == BIG_ENDIAN +#define IP6_ALERT_MLD 0x0000 +#define IP6_ALERT_RSVP 0x0001 +#define IP6_ALERT_AN 0x0002 +#else +#if BYTE_ORDER == LITTLE_ENDIAN +#define IP6_ALERT_MLD 0x0000 +#define IP6_ALERT_RSVP 0x0100 +#define IP6_ALERT_AN 0x0200 +#endif /* LITTLE_ENDIAN */ +#endif + /* Routing header */ struct ip6_rthdr { u_int8_t ip6r_nxt; /* next header */ @@ -202,10 +250,10 @@ /* * Internet implementation parameters. */ -#define IPV6_MAXHLIM 255 /* maximun hoplimit */ +#define IPV6_MAXHLIM 255 /* maximum hoplimit */ #define IPV6_DEFHLIM 64 /* default hlim */ #define IPV6_FRAGTTL 120 /* ttl for fragment packets, in slowtimo tick */ -#define IPV6_HLIMDEC 1 /* subtracted when forwaeding */ +#define IPV6_HLIMDEC 1 /* subtracted when forwarding */ #define IPV6_MMTU 1280 /* minimal MTU and reassembly. 1024 + 256 */ #define IPV6_MAXPACKET 65535 /* ip6 max packet size without Jumbo payload*/ ==== //depot/projects/netsmp/src/sys/netinet6/in6.h#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/netinet6/in6.h,v 1.36 2005/01/07 02:30:34 imp Exp $ */ +/* $FreeBSD: src/sys/netinet6/in6.h,v 1.37 2005/07/20 08:59:44 ume Exp $ */ /* $KAME: in6.h,v 1.89 2001/05/27 13:28:35 itojun Exp $ */ /*- @@ -450,7 +450,7 @@ #define IPV6_FW_GET 34 /* get entire firewall rule chain */ #endif -/* new socket options introduced in RFC2292bis */ +/* new socket options introduced in RFC3542 */ #define IPV6_RTHDRDSTOPTS 35 /* ip6_dest; send dst option before rthdr */ #define IPV6_RECVPKTINFO 36 /* bool; recv if, dst addr */ @@ -472,7 +472,7 @@ (cmsg only/not in of RFC3542) */ #endif -/* more new socket options introduced in RFC2292bis */ +/* more new socket options introduced in RFC3542 */ #define IPV6_PKTINFO 46 /* in6_pktinfo; send if, src addr */ #define IPV6_HOPLIMIT 47 /* int; send hop limit */ #define IPV6_NEXTHOP 48 /* sockaddr; next hop addr */ @@ -481,7 +481,7 @@ #define IPV6_RTHDR 51 /* ip6_rthdr; send routing header */ #if 0 #define IPV6_PKTOPTIONS 52 /* buf/cmsghdr; set/get IPv6 options */ - /* obsoleted by 2292bis */ + /* obsoleted by RFC3542 */ #endif #define IPV6_RECVTCLASS 57 /* bool; recv traffic class values */ ==== //depot/projects/netsmp/src/sys/netinet6/ip6_input.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/netinet6/ip6_input.c,v 1.81 2005/03/16 05:11:11 sam Exp $ */ +/* $FreeBSD: src/sys/netinet6/ip6_input.c,v 1.82 2005/07/20 08:59:44 ume Exp $ */ /* $KAME: ip6_input.c,v 1.259 2002/01/21 04:58:09 jinmei Exp $ */ /*- @@ -1213,7 +1213,7 @@ * jumbo payload option is included, the option which * is to be removed before returning according to * RFC2292. - * Note: this constraint is removed in 2292bis. + * Note: this constraint is removed in RFC3542 */ *mp = sbcreatecontrol((caddr_t)hbh, hbhlen, IS2292(IPV6_2292HOPOPTS, IPV6_HOPOPTS), ==== //depot/projects/netsmp/src/sys/netinet6/ip6_mroute.h#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/netinet6/ip6_mroute.h,v 1.6 2005/01/07 02:30:34 imp Exp $ */ +/* $FreeBSD: src/sys/netinet6/ip6_mroute.h,v 1.7 2005/07/20 08:59:45 ume Exp $ */ /* $KAME: ip6_mroute.h,v 1.19 2001/06/14 06:12:55 suz Exp $ */ /*- @@ -166,7 +166,7 @@ * like igmpmsg{} used for IPv4 implementation). This is because this * structure will be passed via an IPv6 raw socket, on which an application * will only receive the payload i.e. the data after the IPv6 header and all - * the extension headers. (see Section 3 of draft-ietf-ipngwg-2292bis-01) + * the extension headers. (see Section 3 of RFC3542) */ struct mrt6msg { #define MRT6MSG_NOCACHE 1 ==== //depot/projects/netsmp/src/sys/netinet6/ip6_output.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/netinet6/ip6_output.c,v 1.90 2005/06/10 16:49:22 brooks Exp $ */ +/* $FreeBSD: src/sys/netinet6/ip6_output.c,v 1.91 2005/07/20 08:59:45 ume Exp $ */ /* $KAME: ip6_output.c,v 1.279 2002/01/26 06:12:30 jinmei Exp $ */ /*- @@ -1701,7 +1701,7 @@ /* * We ignore this option for TCP * sockets. - * (rfc2292bis leaves this case + * (RFC3542 leaves this case * unspecified.) */ if (uproto != IPPROTO_TCP) @@ -1810,7 +1810,7 @@ case IPV6_RTHDRDSTOPTS: case IPV6_NEXTHOP: { - /* new advanced API (2292bis) */ + /* new advanced API (RFC3542) */ u_char *optbuf; int optlen; struct ip6_pktopts **optp; @@ -2269,9 +2269,9 @@ * For ICMPv6 sockets, no modification allowed for checksum * offset, permit "no change" values to help existing apps. * - * XXX 2292bis says: "An attempt to set IPV6_CHECKSUM + * RFC3542 says: "An attempt to set IPV6_CHECKSUM * for an ICMPv6 socket will fail." - * The current behavior does not meet 2292bis. + * The current behavior does not meet RFC3542. */ switch (op) { case SOPT_SET: @@ -3060,8 +3060,8 @@ * item. "len" can be 0 only when it's a sticky option. * We have 4 cases of combination of "sticky" and "cmsg": * "sticky=0, cmsg=0": impossible - * "sticky=0, cmsg=1": RFC2292 or rfc2292bis ancillary data - * "sticky=1, cmsg=0": rfc2292bis socket option + * "sticky=0, cmsg=1": RFC2292 or RFC3542 ancillary data + * "sticky=1, cmsg=0": RFC3542 socket option * "sticky=1, cmsg=1": RFC2292 socket option */ static int @@ -3081,8 +3081,8 @@ /* * IPV6_2292xxx is for backward compatibility to RFC2292, and should - * not be specified in the context of rfc2292bis. Conversely, - * rfc2292bis types should not be specified in the context of RFC2292. + * not be specified in the context of RFC3542. Conversely, + * RFC3542 types should not be specified in the context of RFC2292. */ if (!cmsg) { switch (optname) { @@ -3108,7 +3108,7 @@ case IPV6_USE_MIN_MTU: case IPV6_DONTFRAG: case IPV6_TCLASS: - case IPV6_PREFER_TEMPADDR: /* XXX: not an rfc2292bis option */ + case IPV6_PREFER_TEMPADDR: /* XXX: not an RFC3542 option */ return (ENOPROTOOPT); } } @@ -3339,7 +3339,7 @@ * part of the destination options header must appear * before the routing header in the ancillary data, * too. - * RFC2292bis solved the ambiguity by introducing + * RFC3542 solved the ambiguity by introducing * separate ancillary data or option types. */ if (opt->ip6po_rthdr == NULL) @@ -3428,7 +3428,7 @@ if (uproto == IPPROTO_TCP || *(int *)buf == 0) { /* * we ignore this option for TCP sockets. - * (rfc2292bis leaves this case unspecified.) + * (RFC3542 leaves this case unspecified.) */ opt->ip6po_flags &= ~IP6PO_DONTFRAG; } else ==== //depot/projects/netsmp/src/sys/netinet6/nd6.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/netinet6/nd6.c,v 1.48 2005/02/22 13:04:04 glebius Exp $ */ +/* $FreeBSD: src/sys/netinet6/nd6.c,v 1.49 2005/07/20 20:02:28 ume Exp $ */ /* $KAME: nd6.c,v 1.144 2001/05/24 07:44:00 itojun Exp $ */ /*- @@ -54,7 +54,6 @@ #include #include #include -#include #include #include #include @@ -203,23 +202,9 @@ case IFT_ARCNET: ndi->maxmtu = MIN(ARC_PHDS_MAXMTU, ifp->if_mtu); /* RFC2497 */ break; - case IFT_ETHER: - ndi->maxmtu = MIN(ETHERMTU, ifp->if_mtu); - break; case IFT_FDDI: ndi->maxmtu = MIN(FDDIIPMTU, ifp->if_mtu); /* RFC2467 */ break; - case IFT_ATM: - ndi->maxmtu = MIN(ATMMTU, ifp->if_mtu); - break; - case IFT_IEEE1394: /* XXX should be IEEE1394MTU(1500) */ - ndi->maxmtu = MIN(ETHERMTU, ifp->if_mtu); - break; -#ifdef IFT_IEEE80211 - case IFT_IEEE80211: /* XXX should be IEEE80211MTU(1500) */ - ndi->maxmtu = MIN(ETHERMTU, ifp->if_mtu); - break; -#endif case IFT_ISO88025: ndi->maxmtu = MIN(ISO88025_MAX_MTU, ifp->if_mtu); break; ==== //depot/projects/netsmp/src/sys/nfsclient/nfs.h#2 (text+ko) ==== @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * @(#)nfs.h 8.4 (Berkeley) 5/1/95 - * $FreeBSD: src/sys/nfsclient/nfs.h,v 1.90 2005/01/24 12:31:06 phk Exp $ + * $FreeBSD: src/sys/nfsclient/nfs.h,v 1.91 2005/07/19 21:27:25 ps Exp $ */ #ifndef _NFSCLIENT_NFS_H_ @@ -194,6 +194,7 @@ #define R_TPRINTFMSG 0x20 /* Did a tprintf msg. */ #define R_MUSTRESEND 0x40 /* Must resend request */ #define R_GETONEREP 0x80 /* Probe for one reply only */ +#define R_REXMIT_INPROG 0x100 /* Re-transmit in progress */ /* * Pointers to ops that differ from v3 to v4 ==== //depot/projects/netsmp/src/sys/nfsclient/nfs_socket.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_socket.c,v 1.127 2005/07/18 02:12:17 ps Exp $"); +__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_socket.c,v 1.128 2005/07/19 21:27:25 ps Exp $"); /* * Socket operations for use by nfs @@ -1032,6 +1032,17 @@ */ s = splsoftclock(); mtx_lock(&nfs_reqq_mtx); + /* + * nfs_timer() may be in the process of re-transmitting this request. + * nfs_timer() drops the nfs_reqq_mtx before the pru_send() (to avoid LORs). + * Wait till nfs_timer() completes the re-transmission. When the reply + * comes back, it will be discarded (since the req struct for it no longer + * exists). + */ + while (rep->r_flags & R_REXMIT_INPROG) { + msleep((caddr_t)&rep->r_flags, &nfs_reqq_mtx, + (PZERO - 1), "nfsrxmt", 0); + } TAILQ_REMOVE(&nfs_reqq, rep, r_chain); if (TAILQ_EMPTY(&nfs_reqq)) callout_stop(&nfs_callout); @@ -1152,19 +1163,11 @@ * To avoid retransmission attempts on STREAM sockets (in the future) make * sure to set the r_retry field to 0 (implies nm_retry == 0). * - * XXX - - * For now, since we don't register MPSAFE callouts for the NFS client - - * softclock() acquires Giant before calling us. That prevents req entries - * from being removed from the list (from nfs_request()). But we still - * acquire the nfs reqq mutex to make sure the state of individual req - * entries is not modified from RPC reply handling (from socket callback) - * while nfs_timer is walking the list of reqs. * The nfs reqq lock cannot be held while we do the pru_send() because of a * lock ordering violation. The NFS client socket callback acquires * inp_lock->nfsreq mutex and pru_send acquires inp_lock. So we drop the - * reqq mutex (and reacquire it after the pru_send()). This won't work - * when we move to fine grained locking for NFS. When we get to that point, - * a rewrite of nfs_timer() will be needed. + * reqq mutex (and reacquire it after the pru_send()). The req structure + * (for the rexmit) is prevented from being removed by the R_REXMIT_INPROG flag. */ void nfs_timer(void *arg) @@ -1245,7 +1248,12 @@ ((nmp->nm_flag & NFSMNT_DUMBTIMR) || (rep->r_flags & R_SENT) || nmp->nm_sent < nmp->nm_cwnd) && - (m = m_copym(rep->r_mreq, 0, M_COPYALL, M_DONTWAIT))){ + (m = m_copym(rep->r_mreq, 0, M_COPYALL, M_DONTWAIT))) { + /* + * Mark the request to indicate that a XMIT is in progress + * to prevent the req structure being removed in nfs_request(). + */ + rep->r_flags |= R_REXMIT_INPROG; mtx_unlock(&nfs_reqq_mtx); if ((nmp->nm_flag & NFSMNT_NOCONN) == 0) error = (*so->so_proto->pr_usrreqs->pru_send) @@ -1254,6 +1262,8 @@ error = (*so->so_proto->pr_usrreqs->pru_send) (so, 0, m, nmp->nm_nam, NULL, curthread); mtx_lock(&nfs_reqq_mtx); + rep->r_flags &= ~R_REXMIT_INPROG; + wakeup((caddr_t)&rep->r_flags); if (error) { if (NFSIGNORE_SOERROR(nmp->nm_soflags, error)) so->so_error = 0; ==== //depot/projects/netsmp/src/sys/nfsclient/nfs_subs.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_subs.c,v 1.140 2005/03/13 12:14:56 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_subs.c,v 1.141 2005/07/19 21:27:25 ps Exp $"); /* * These functions support the macros and help fiddle mbuf chains for @@ -413,7 +413,7 @@ * Initialize reply list and start timer */ TAILQ_INIT(&nfs_reqq); - callout_init(&nfs_callout, 0); + callout_init(&nfs_callout, CALLOUT_MPSAFE); mtx_init(&nfs_reqq_mtx, "NFS reqq lock", NULL, MTX_DEF); mtx_init(&nfs_reply_mtx, "Synch NFS reply posting", NULL, MTX_DEF); ==== //depot/projects/netsmp/src/sys/ufs/ffs/ffs_vfsops.c#2 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/ufs/ffs/ffs_vfsops.c,v 1.290 2005/05/30 07:04:15 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/ufs/ffs/ffs_vfsops.c,v 1.291 2005/07/20 19:06:06 alc Exp $"); #include "opt_mac.h" #include "opt_quota.h" @@ -1534,7 +1534,7 @@ * by biodone it will be tossed. */ bp->b_flags |= B_NOCACHE; - bp->b_flags &= ~(B_CACHE | B_DONE); + bp->b_flags &= ~B_CACHE; bufdone(bp); BO_LOCK(bufobj); /* ==== //depot/projects/netsmp/src/sys/vm/swap_pager.c#2 (text+ko) ==== @@ -67,7 +67,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/vm/swap_pager.c,v 1.273 2005/05/20 21:26:05 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/vm/swap_pager.c,v 1.274 2005/07/20 19:06:06 alc Exp $"); #include "opt_mac.h" #include "opt_swap.h" @@ -1363,8 +1363,6 @@ int i; vm_object_t object = NULL; - bp->b_flags |= B_DONE; - /* * report error */ ==== //depot/projects/netsmp/src/sys/vm/uma_core.c#2 (text+ko) ==== @@ -48,7 +48,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/vm/uma_core.c,v 1.127 2005/07/16 11:03:06 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/vm/uma_core.c,v 1.128 2005/07/20 18:47:42 rwatson Exp $"); /* I should really use ktr.. */ /* @@ -197,6 +197,7 @@ enum zfreeskip { SKIP_NONE, SKIP_DTOR, SKIP_FINI }; #define ZFREE_STATFAIL 0x00000001 /* Update zone failure statistic. */ +#define ZFREE_STATFREE 0x00000002 /* Update zone free statistic. */ /* Prototypes.. */ @@ -349,7 +350,8 @@ struct uma_bucket_zone *ubz; ubz = bucket_zone_lookup(bucket->ub_entries); - uma_zfree_internal(ubz->ubz_zone, bucket, NULL, SKIP_NONE, 0); + uma_zfree_internal(ubz->ubz_zone, bucket, NULL, SKIP_NONE, + ZFREE_STATFREE); } static void @@ -540,7 +542,7 @@ return; if (hash->uh_hashsize == UMA_HASH_SIZE_INIT) uma_zfree_internal(hashzone, - hash->uh_slab_hash, NULL, SKIP_NONE, 0); + hash->uh_slab_hash, NULL, SKIP_NONE, ZFREE_STATFREE); else free(hash->uh_slab_hash, M_UMAHASH); } @@ -756,7 +758,7 @@ } if (keg->uk_flags & UMA_ZONE_OFFPAGE) uma_zfree_internal(keg->uk_slabzone, slab, NULL, - SKIP_NONE, 0); + SKIP_NONE, ZFREE_STATFREE); #ifdef UMA_DEBUG printf("%s: Returning %d bytes.\n", zone->uz_name, UMA_SLAB_SIZE * keg->uk_ppera); @@ -819,7 +821,7 @@ if (mem == NULL) { if (keg->uk_flags & UMA_ZONE_OFFPAGE) uma_zfree_internal(keg->uk_slabzone, slab, NULL, - SKIP_NONE, 0); + SKIP_NONE, ZFREE_STATFREE); ZONE_LOCK(zone); return (NULL); } @@ -876,7 +878,7 @@ } if (keg->uk_flags & UMA_ZONE_OFFPAGE) uma_zfree_internal(keg->uk_slabzone, slab, - NULL, SKIP_NONE, 0); + NULL, SKIP_NONE, ZFREE_STATFREE); keg->uk_freef(mem, UMA_SLAB_SIZE * keg->uk_ppera, flags); ZONE_LOCK(zone); @@ -1467,7 +1469,8 @@ LIST_REMOVE(keg, uk_link); LIST_REMOVE(zone, uz_link); mtx_unlock(&uma_mtx); - uma_zfree_internal(kegs, keg, NULL, SKIP_NONE, 0); + uma_zfree_internal(kegs, keg, NULL, SKIP_NONE, + ZFREE_STATFREE); } zone->uz_keg = NULL; } @@ -1771,7 +1774,8 @@ void uma_zdestroy(uma_zone_t zone) { - uma_zfree_internal(zones, zone, NULL, SKIP_NONE, 0); + + uma_zfree_internal(zones, zone, NULL, SKIP_NONE, ZFREE_STATFREE); } /* See uma.h */ @@ -1855,7 +1859,8 @@ if (zone->uz_ctor(item, zone->uz_keg->uk_size, udata, flags) != 0) { uma_zfree_internal(zone, item, udata, - SKIP_DTOR, ZFREE_STATFAIL); + SKIP_DTOR, ZFREE_STATFAIL | + ZFREE_STATFREE); return (NULL); } } @@ -2235,14 +2240,14 @@ if (zone->uz_init != NULL) { if (zone->uz_init(item, keg->uk_size, flags) != 0) { uma_zfree_internal(zone, item, udata, SKIP_FINI, - ZFREE_STATFAIL); + ZFREE_STATFAIL | ZFREE_STATFREE); return (NULL); } } if (zone->uz_ctor != NULL) { if (zone->uz_ctor(item, keg->uk_size, udata, flags) != 0) { uma_zfree_internal(zone, item, udata, SKIP_DTOR, - ZFREE_STATFAIL); + ZFREE_STATFAIL | ZFREE_STATFREE); return (NULL); } } @@ -2369,6 +2374,12 @@ } } + /* Since we have locked the zone we may as well send back our stats */ + zone->uz_allocs += cache->uc_allocs; + cache->uc_allocs = 0; + zone->uz_frees += cache->uc_frees; + cache->uc_frees = 0; + bucket = cache->uc_freebucket; cache->uc_freebucket = NULL; @@ -2415,7 +2426,8 @@ * If nothing else caught this, we'll just do an internal free. */ zfree_internal: - uma_zfree_internal(zone, item, udata, SKIP_DTOR, ZFREE_STATFAIL); + uma_zfree_internal(zone, item, udata, SKIP_DTOR, ZFREE_STATFAIL | + ZFREE_STATFREE); return; } @@ -2450,6 +2462,8 @@ if (flags & ZFREE_STATFAIL) zone->uz_fails++; + if (flags & ZFREE_STATFREE) + zone->uz_frees++; >>> TRUNCATED FOR MAIL (1000 lines) <<<