From owner-p4-projects@FreeBSD.ORG Sun Feb 20 01:37:06 2005 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D44B116A4D0; Sun, 20 Feb 2005 01:37:04 +0000 (GMT) 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 8AE4A16A4CE for ; Sun, 20 Feb 2005 01:37:04 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0F0AA43D3F for ; Sun, 20 Feb 2005 01:37:04 +0000 (GMT) (envelope-from anholt@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j1K1b4IF082339 for ; Sun, 20 Feb 2005 01:37:04 GMT (envelope-from anholt@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j1K1b3f9082336 for perforce@freebsd.org; Sun, 20 Feb 2005 01:37:03 GMT (envelope-from anholt@freebsd.org) Date: Sun, 20 Feb 2005 01:37:03 GMT Message-Id: <200502200137.j1K1b3f9082336@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anholt@freebsd.org using -f From: Eric Anholt To: Perforce Change Reviews Subject: PERFORCE change 71353 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Feb 2005 01:37:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=71353 Change 71353 by anholt@anholt_leguin on 2005/02/20 01:36:40 IFC @71352 to get uipc_syscalls.c fix. Affected files ... .. //depot/projects/drm-merge/sys/alpha/include/exec.h#2 integrate .. //depot/projects/drm-merge/sys/amd64/include/exec.h#2 integrate .. //depot/projects/drm-merge/sys/arm/arm/cpufunc_asm.S#2 integrate .. //depot/projects/drm-merge/sys/arm/include/exec.h#2 integrate .. //depot/projects/drm-merge/sys/dev/acpica/acpi_perf.c#2 integrate .. //depot/projects/drm-merge/sys/geom/geom_vfs.c#2 integrate .. //depot/projects/drm-merge/sys/i386/include/_types.h#2 integrate .. //depot/projects/drm-merge/sys/i386/include/exec.h#2 integrate .. //depot/projects/drm-merge/sys/ia64/include/exec.h#2 integrate .. //depot/projects/drm-merge/sys/kern/kern_cpu.c#2 integrate .. //depot/projects/drm-merge/sys/kern/kern_module.c#2 integrate .. //depot/projects/drm-merge/sys/kern/kern_sig.c#2 integrate .. //depot/projects/drm-merge/sys/kern/uipc_syscalls.c#2 integrate .. //depot/projects/drm-merge/sys/kern/vfs_subr.c#2 integrate .. //depot/projects/drm-merge/sys/net/if_ethersubr.c#2 integrate .. //depot/projects/drm-merge/sys/net/if_vlan.c#2 integrate .. //depot/projects/drm-merge/sys/net/if_vlan_var.h#2 integrate .. //depot/projects/drm-merge/sys/netgraph/ng_ksocket.c#2 integrate .. //depot/projects/drm-merge/sys/nfsclient/nfs_socket.c#2 integrate .. //depot/projects/drm-merge/sys/nfsclient/nfs_vnops.c#2 integrate .. //depot/projects/drm-merge/sys/powerpc/include/exec.h#2 integrate .. //depot/projects/drm-merge/sys/sys/bufobj.h#2 integrate .. //depot/projects/drm-merge/sys/sys/cpu.h#2 integrate .. //depot/projects/drm-merge/sys/sys/mbuf.h#2 integrate .. //depot/projects/drm-merge/sys/sys/param.h#2 integrate .. //depot/projects/drm-merge/sys/ufs/ffs/ffs_snapshot.c#2 integrate .. //depot/projects/drm-merge/sys/ufs/ffs/ffs_vfsops.c#2 integrate .. //depot/projects/drm-merge/sys/ufs/ufs/ufs_inode.c#2 integrate .. //depot/projects/drm-merge/sys/vm/vnode_pager.c#2 integrate Differences ... ==== //depot/projects/drm-merge/sys/alpha/include/exec.h#2 (text+ko) ==== @@ -29,7 +29,12 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/alpha/include/exec.h,v 1.3 2005/01/05 20:05:50 imp Exp $ + * $FreeBSD: src/sys/alpha/include/exec.h,v 1.4 2005/02/19 21:16:48 ru Exp $ */ -#define __LDPGSZ 8192 +#ifndef _MACHINE_EXEC_H_ +#define _MACHINE_EXEC_H_ + +#define __LDPGSZ 8192 + +#endif /* !_MACHINE_EXEC_H_ */ ==== //depot/projects/drm-merge/sys/amd64/include/exec.h#2 (text+ko) ==== @@ -27,12 +27,12 @@ * SUCH DAMAGE. * * @(#)exec.h 8.1 (Berkeley) 6/11/93 - * $FreeBSD: src/sys/amd64/include/exec.h,v 1.9 2004/04/05 21:25:51 imp Exp $ + * $FreeBSD: src/sys/amd64/include/exec.h,v 1.10 2005/02/19 21:16:48 ru Exp $ */ -#ifndef _EXEC_H_ -#define _EXEC_H_ +#ifndef _MACHINE_EXEC_H_ +#define _MACHINE_EXEC_H_ -#define __LDPGSZ 4096 +#define __LDPGSZ 4096 -#endif /* !_EXEC_H_ */ +#endif /* !_MACHINE_EXEC_H_ */ ==== //depot/projects/drm-merge/sys/arm/arm/cpufunc_asm.S#2 (text+ko) ==== @@ -43,7 +43,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc_asm.S,v 1.3 2005/01/05 21:58:47 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc_asm.S,v 1.5 2005/02/20 01:26:01 cognet Exp $"); .text .align 0 @@ -121,9 +121,7 @@ teq r2, r3 /* Only write if there is a change */ mcrne p15, 0, r2, c1, c0, 0 /* Write new control register */ - #if 0 mov r0, r3 /* Return old value */ - #endif RET .Lglou: ==== //depot/projects/drm-merge/sys/arm/include/exec.h#2 (text+ko) ==== @@ -26,12 +26,12 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/arm/include/exec.h,v 1.2 2005/01/05 21:58:48 imp Exp $ + * $FreeBSD: src/sys/arm/include/exec.h,v 1.3 2005/02/19 21:16:48 ru Exp $ */ -#ifndef _EXEC_H_ -#define _EXEC_H_ +#ifndef _MACHINE_EXEC_H_ +#define _MACHINE_EXEC_H_ -#define __LDPGSZ 4096 +#define __LDPGSZ 4096 -#endif /* !_EXEC_H_ */ +#endif /* !_MACHINE_EXEC_H_ */ ==== //depot/projects/drm-merge/sys/dev/acpica/acpi_perf.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_perf.c,v 1.9 2005/02/18 00:23:36 njl Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_perf.c,v 1.10 2005/02/19 06:13:26 njl Exp $"); #include "opt_acpi.h" #include @@ -64,7 +64,11 @@ uint32_t sts_val; }; -#define MAX_PX_STATES 16 +/* Offsets in struct cf_setting array for storing driver-specific values. */ +#define PX_SPEC_CONTROL 0 +#define PX_SPEC_STATUS 1 + +#define MAX_PX_STATES 16 struct acpi_perf_softc { device_t dev; @@ -389,6 +393,8 @@ set->lat = px->trans_lat; set->volts = CPUFREQ_VAL_UNKNOWN; set->dev = dev; + set->spec[PX_SPEC_CONTROL] = px->ctrl_val; + set->spec[PX_SPEC_STATUS] = px->sts_val; return (0); } ==== //depot/projects/drm-merge/sys/geom/geom_vfs.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/geom_vfs.c,v 1.8 2005/02/10 12:10:35 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/geom_vfs.c,v 1.9 2005/02/19 11:44:56 phk Exp $"); #include #include @@ -153,6 +153,7 @@ bo->bo_ops = g_vfs_bufops; bo->bo_private = cp; bo->bo_bsize = pp->sectorsize; + gp->softc = bo; return (error); } @@ -161,9 +162,12 @@ g_vfs_close(struct g_consumer *cp, struct thread *td) { struct g_geom *gp; + struct bufobj *bo; g_topology_assert(); gp = cp->geom; + bo = gp->softc; + bufobj_invalbuf(bo, V_SAVE, td, 0, 0); g_wither_geom_close(gp, ENXIO); } ==== //depot/projects/drm-merge/sys/i386/include/_types.h#2 (text+ko) ==== @@ -33,7 +33,7 @@ * * From: @(#)ansi.h 8.2 (Berkeley) 1/4/94 * From: @(#)types.h 8.3 (Berkeley) 1/5/94 - * $FreeBSD: src/sys/i386/include/_types.h,v 1.9 2004/03/20 20:41:40 marcel Exp $ + * $FreeBSD: src/sys/i386/include/_types.h,v 1.10 2005/02/19 13:46:40 marius Exp $ */ #ifndef _MACHINE__TYPES_H_ @@ -119,7 +119,7 @@ #else typedef char * __va_list; #endif /* ! (__GNUC__ post 2.95 || __INTEL_COMPILER) */ -#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(__GNUC_VA_LIST) && !defined(__NO_GNUC_VA_LIST) +#if defined(__GNUC__) && !defined(__GNUC_VA_LIST) && !defined(__NO_GNUC_VA_LIST) #define __GNUC_VA_LIST typedef __va_list __gnuc_va_list; /* compatibility w/GNU headers*/ #endif ==== //depot/projects/drm-merge/sys/i386/include/exec.h#2 (text+ko) ==== @@ -27,12 +27,12 @@ * SUCH DAMAGE. * * @(#)exec.h 8.1 (Berkeley) 6/11/93 - * $FreeBSD: src/sys/i386/include/exec.h,v 1.9 2004/04/07 20:46:05 imp Exp $ + * $FreeBSD: src/sys/i386/include/exec.h,v 1.10 2005/02/19 21:16:48 ru Exp $ */ -#ifndef _EXEC_H_ -#define _EXEC_H_ +#ifndef _MACHINE_EXEC_H_ +#define _MACHINE_EXEC_H_ -#define __LDPGSZ 4096 +#define __LDPGSZ 4096 -#endif /* !_EXEC_H_ */ +#endif /* !_MACHINE_EXEC_H_ */ ==== //depot/projects/drm-merge/sys/ia64/include/exec.h#2 (text+ko) ==== @@ -29,7 +29,12 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/ia64/include/exec.h,v 1.2 2005/01/06 22:18:23 imp Exp $ + * $FreeBSD: src/sys/ia64/include/exec.h,v 1.3 2005/02/19 21:16:48 ru Exp $ */ -#define __LDPGSZ 4096 +#ifndef _MACHINE_EXEC_H_ +#define _MACHINE_EXEC_H_ + +#define __LDPGSZ 4096 + +#endif /* !_MACHINE_EXEC_H_ */ ==== //depot/projects/drm-merge/sys/kern/kern_cpu.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_cpu.c,v 1.8 2005/02/18 00:23:36 njl Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_cpu.c,v 1.9 2005/02/20 00:59:15 njl Exp $"); #include #include @@ -91,6 +91,7 @@ struct cf_level *dup, struct cf_setting *set); static int cpufreq_curr_sysctl(SYSCTL_HANDLER_ARGS); static int cpufreq_levels_sysctl(SYSCTL_HANDLER_ARGS); +static int cpufreq_settings_sysctl(SYSCTL_HANDLER_ARGS); static device_method_t cpufreq_methods[] = { DEVMETHOD(device_probe, bus_generic_probe), @@ -745,12 +746,52 @@ return (error); } +static int +cpufreq_settings_sysctl(SYSCTL_HANDLER_ARGS) +{ + device_t dev; + struct cf_setting *sets; + struct sbuf sb; + int error, i, set_count; + + dev = oidp->oid_arg1; + sbuf_new(&sb, NULL, 128, SBUF_AUTOEXTEND); + + /* Get settings from the device and generate the output string. */ + set_count = MAX_SETTINGS; + sets = malloc(set_count * sizeof(*sets), M_TEMP, M_NOWAIT); + if (sets == NULL) + return (ENOMEM); + error = CPUFREQ_DRV_SETTINGS(dev, sets, &set_count); + if (error) + goto out; + if (set_count) { + for (i = 0; i < set_count; i++) + sbuf_printf(&sb, "%d/%d ", sets[i].freq, sets[i].power); + } else + sbuf_cpy(&sb, "0"); + sbuf_trim(&sb); + sbuf_finish(&sb); + error = sysctl_handle_string(oidp, sbuf_data(&sb), sbuf_len(&sb), req); + +out: + free(sets, M_TEMP); + sbuf_delete(&sb); + return (error); +} + int cpufreq_register(device_t dev) { struct cpufreq_softc *sc; device_t cf_dev, cpu_dev; + /* Add a sysctl to get each driver's settings separately. */ + SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), + OID_AUTO, "freq_settings", CTLTYPE_STRING | CTLFLAG_RD, dev, 0, + cpufreq_settings_sysctl, "A", "CPU frequency driver settings"); + /* * Add only one cpufreq device to each CPU. Currently, all CPUs * must offer the same levels and be switched at the same time. ==== //depot/projects/drm-merge/sys/kern/kern_module.c#2 (text+ko) ==== @@ -27,7 +27,7 @@ #include "opt_compat.h" #include -__FBSDID("$FreeBSD: src/sys/kern/kern_module.c,v 1.47 2005/01/19 17:53:06 ps Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_module.c,v 1.48 2005/02/18 22:14:40 ps Exp $"); #include #include @@ -457,10 +457,10 @@ id = mod->id; refs = mod->refs; name = mod->name; - CP(data32, mod->data, intval); - CP(data32, mod->data, uintval); - CP(data32, mod->data, longval); - CP(data32, mod->data, ulongval); + CP(mod->data, data32, intval); + CP(mod->data, data32, uintval); + CP(mod->data, data32, longval); + CP(mod->data, data32, ulongval); MOD_SUNLOCK; stat32 = uap->stat; ==== //depot/projects/drm-merge/sys/kern/kern_sig.c#2 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_sig.c,v 1.300 2005/02/13 17:37:18 sobomax Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_sig.c,v 1.301 2005/02/19 06:05:49 davidxu Exp $"); #include "opt_compat.h" #include "opt_ktrace.h" @@ -846,10 +846,9 @@ struct sigacts *ps; sigset_t savedmask, sigset; struct proc *p; - int error; - int sig; - int hz; - int i; + int error, sig, hz, i, timevalid = 0; + struct timespec rts, ets, ts; + struct timeval tv; p = td->td_proc; error = 0; @@ -859,6 +858,14 @@ PROC_LOCK(p); ps = p->p_sigacts; savedmask = td->td_sigmask; + if (timeout) { + if (timeout->tv_nsec >= 0 && timeout->tv_nsec < 1000000000) { + timevalid = 1; + getnanouptime(&rts); + ets = rts; + timespecadd(&ets, timeout); + } + } again: for (i = 1; i <= _SIG_MAXSIG; ++i) { @@ -909,17 +916,18 @@ * signals. */ if (timeout) { - struct timeval tv; - - if (timeout->tv_nsec < 0 || timeout->tv_nsec > 1000000000) { + if (!timevalid) { error = EINVAL; goto out; } - if (timeout->tv_sec == 0 && timeout->tv_nsec == 0) { + getnanouptime(&rts); + if (timespeccmp(&rts, &ets, >=)) { error = EAGAIN; goto out; } - TIMESPEC_TO_TIMEVAL(&tv, timeout); + ts = ets; + timespecsub(&ts, &rts); + TIMESPEC_TO_TIMEVAL(&tv, &ts); hz = tvtohz(&tv); } else hz = 0; @@ -927,8 +935,15 @@ td->td_waitset = &waitset; error = msleep(&ps, &p->p_mtx, PPAUSE|PCATCH, "sigwait", hz); td->td_waitset = NULL; - if (error == 0) /* surplus wakeup ? */ - error = EINTR; + if (timeout) { + if (error == ERESTART) { + /* timeout can not be restarted. */ + error = EINTR; + } else if (error == EAGAIN) { + /* will calculate timeout by ourself. */ + error = 0; + } + } goto again; out: @@ -946,6 +961,7 @@ _STOPEVENT(p, S_SIG, sig); SIGDELSET(td->td_siglist, sig); + bzero(info, sizeof(*info)); info->si_signo = sig; info->si_code = 0; } ==== //depot/projects/drm-merge/sys/kern/uipc_syscalls.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/uipc_syscalls.c,v 1.215 2005/02/18 19:37:36 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/uipc_syscalls.c,v 1.216 2005/02/18 21:39:55 rwatson Exp $"); #include "opt_compat.h" #include "opt_ktrace.h" @@ -501,7 +501,7 @@ { struct socket *so; struct file *fp; - int error, s; + int error; int interrupted = 0; NET_LOCK_GIANT(); ==== //depot/projects/drm-merge/sys/kern/vfs_subr.c#2 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/vfs_subr.c,v 1.582 2005/02/18 11:13:56 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/vfs_subr.c,v 1.583 2005/02/19 11:44:56 phk Exp $"); #include "opt_ddb.h" #include "opt_mac.h" @@ -84,7 +84,7 @@ static void delmntque(struct vnode *vp); static void insmntque(struct vnode *vp, struct mount *mp); static void vlruvp(struct vnode *vp); -static int flushbuflist(struct bufv *bufv, int flags, struct vnode *vp, +static int flushbuflist(struct bufv *bufv, int flags, struct bufobj *bo, int slpflag, int slptimeo); static void syncer_shutdown(void *arg, int howto); static int vtryrecycle(struct vnode *vp); @@ -927,22 +927,14 @@ } /* - * Flush out and invalidate all buffers associated with a vnode. + * Flush out and invalidate all buffers associated with a bufobj * Called with the underlying object locked. */ int -vinvalbuf(vp, flags, td, slpflag, slptimeo) - struct vnode *vp; - int flags; - struct thread *td; - int slpflag, slptimeo; +bufobj_invalbuf(struct bufobj *bo, int flags, struct thread *td, int slpflag, int slptimeo) { int error; - struct bufobj *bo; - ASSERT_VOP_LOCKED(vp, "vinvalbuf"); - - bo = &vp->v_bufobj; BO_LOCK(bo); if (flags & V_SAVE) { error = bufobj_wwait(bo, slpflag, slptimeo); @@ -970,10 +962,10 @@ */ do { error = flushbuflist(&bo->bo_clean, - flags, vp, slpflag, slptimeo); + flags, bo, slpflag, slptimeo); if (error == 0) error = flushbuflist(&bo->bo_dirty, - flags, vp, slpflag, slptimeo); + flags, bo, slpflag, slptimeo); if (error != 0 && error != EAGAIN) { BO_UNLOCK(bo); return (error); @@ -990,7 +982,7 @@ BO_UNLOCK(bo); if (bo->bo_object != NULL) { VM_OBJECT_LOCK(bo->bo_object); - vm_object_pip_wait(bo->bo_object, "vnvlbx"); + vm_object_pip_wait(bo->bo_object, "bovlbx"); VM_OBJECT_UNLOCK(bo->bo_object); } BO_LOCK(bo); @@ -1018,21 +1010,31 @@ } /* + * Flush out and invalidate all buffers associated with a vnode. + * Called with the underlying object locked. + */ +int +vinvalbuf(struct vnode *vp, int flags, struct thread *td, int slpflag, int slptimeo) +{ + + ASSERT_VOP_LOCKED(vp, "vinvalbuf"); + return (bufobj_invalbuf(&vp->v_bufobj, flags, td, slpflag, slptimeo)); +} + +/* * Flush out buffers on the specified list. * */ static int -flushbuflist(bufv, flags, vp, slpflag, slptimeo) +flushbuflist(bufv, flags, bo, slpflag, slptimeo) struct bufv *bufv; int flags; - struct vnode *vp; + struct bufobj *bo; int slpflag, slptimeo; { struct buf *bp, *nbp; int retval, error; - struct bufobj *bo; - bo = &vp->v_bufobj; ASSERT_BO_LOCKED(bo); retval = 0; @@ -1049,31 +1051,23 @@ BO_LOCK(bo); return (error != ENOLCK ? error : EAGAIN); } + if (bp->b_bufobj != bo) { /* XXX: necessary ? */ + BO_LOCK(bo); + return (EAGAIN); + } /* * XXX Since there are no node locks for NFS, I * believe there is a slight chance that a delayed * write will occur while sleeping just above, so - * check for it. Note that vfs_bio_awrite expects - * buffers to reside on a queue, while bwrite and - * brelse do not. + * check for it. */ if (((bp->b_flags & (B_DELWRI | B_INVAL)) == B_DELWRI) && - (flags & V_SAVE)) { - - if (bp->b_vp == vp) { - if (bp->b_flags & B_CLUSTEROK) { - vfs_bio_awrite(bp); - } else { - bremfree(bp); - bp->b_flags |= B_ASYNC; - bwrite(bp); - } - } else { - bremfree(bp); - (void) bwrite(bp); - } + (flags & V_SAVE)) { + bremfree(bp); + bp->b_flags |= B_ASYNC; + bwrite(bp); BO_LOCK(bo); - return (EAGAIN); + return (EAGAIN); /* XXX: why not loop ? */ } bremfree(bp); bp->b_flags |= (B_INVAL | B_NOCACHE | B_RELBUF); ==== //depot/projects/drm-merge/sys/net/if_ethersubr.c#2 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * @(#)if_ethersubr.c 8.1 (Berkeley) 6/10/93 - * $FreeBSD: src/sys/net/if_ethersubr.c,v 1.184 2005/02/14 11:58:54 glebius Exp $ + * $FreeBSD: src/sys/net/if_ethersubr.c,v 1.185 2005/02/18 22:31:19 ru Exp $ */ #include "opt_atalk.h" @@ -604,7 +604,8 @@ #endif if (!(BDG_ACTIVE(ifp)) && - !(ether_type == ETHERTYPE_VLAN && ifp->if_nvlans > 0)) { + !((ether_type == ETHERTYPE_VLAN || m->m_flags & M_VLANTAG) && + ifp->if_nvlans > 0)) { /* * Discard packet if upper layers shouldn't see it because it * was unicast to a different Ethernet address. If the driver @@ -618,7 +619,7 @@ * it's undesired. */ if ((ifp->if_flags & IFF_PROMISC) != 0 - && (eh->ether_dhost[0] & 1) == 0 + && !ETHER_IS_MULTICAST(eh->ether_dhost) && bcmp(eh->ether_dhost, IFP2AC(ifp)->ac_enaddr, ETHER_ADDR_LEN) != 0 && (ifp->if_flags & IFF_PPROMISC) == 0) { @@ -657,8 +658,7 @@ * Check to see if the device performed the VLAN decapsulation and * provided us with the tag. */ - if (m_tag_first(m) != NULL && - m_tag_locate(m, MTAG_VLAN, MTAG_VLAN_TAG, NULL) != NULL) { + if (m->m_flags & M_VLANTAG) { /* * If no VLANs are configured, drop. */ ==== //depot/projects/drm-merge/sys/net/if_vlan.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/net/if_vlan.c,v 1.76 2005/01/24 15:48:00 yar Exp $ + * $FreeBSD: src/sys/net/if_vlan.c,v 1.77 2005/02/18 22:31:19 ru Exp $ */ /* @@ -563,6 +563,7 @@ */ tag = EVL_VLANOFTAG(VLAN_TAG_VALUE(mtag)); m_tag_delete(m, mtag); + m->m_flags &= ~M_VLANTAG; } else { switch (ifp->if_type) { case IFT_ETHER: ==== //depot/projects/drm-merge/sys/net/if_vlan_var.h#2 (text+ko) ==== @@ -26,7 +26,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/net/if_vlan_var.h,v 1.20 2005/01/07 01:45:34 imp Exp $ + * $FreeBSD: src/sys/net/if_vlan_var.h,v 1.21 2005/02/18 22:31:19 ru Exp $ */ #ifndef _NET_IF_VLAN_VAR_H_ @@ -80,8 +80,8 @@ * * to mark the packet m with the specified VLAN tag. The last * parameter provides code to execute in case of an error. On - * output the driver should check ifnet to see if any VLANs are - * in use and only then check for a packet tag; this is done with: + * output the driver should check mbuf to see if a VLAN tag is + * present and only then check for a tag; this is done with: * * struct m_tag *mtag; * mtag = VLAN_OUTPUT_TAG(ifp, m); @@ -107,10 +107,11 @@ } \ *(u_int *)(mtag+1) = (_t); \ m_tag_prepend((_m), mtag); \ + (_m)->m_flags |= M_VLANTAG; \ } while (0) #define VLAN_OUTPUT_TAG(_ifp, _m) \ - ((_ifp)->if_nvlans != 0 ? \ + ((_m)->m_flags & M_VLANTAG ? \ m_tag_locate((_m), MTAG_VLAN, MTAG_VLAN_TAG, NULL) : NULL) #define VLAN_TAG_VALUE(_mt) (*(u_int *)((_mt)+1)) #endif /* _KERNEL */ ==== //depot/projects/drm-merge/sys/netgraph/ng_ksocket.c#2 (text+ko) ==== @@ -37,7 +37,7 @@ * * Author: Archie Cobbs * - * $FreeBSD: src/sys/netgraph/ng_ksocket.c,v 1.51 2005/02/16 16:00:35 glebius Exp $ + * $FreeBSD: src/sys/netgraph/ng_ksocket.c,v 1.52 2005/02/19 14:41:49 glebius Exp $ * $Whistle: ng_ksocket.c,v 1.1 1999/11/16 20:04:40 archie Exp $ */ @@ -897,6 +897,12 @@ struct mbuf *m; struct sa_tag *stag; + /* Avoid reentrantly sending on the socket */ + if (SOCKBUF_OWNED(&so->so_snd)) { + NG_FREE_ITEM(item); + return (EDEADLK); + } + /* Extract data */ NGI_GET_M(item, m); NG_FREE_ITEM(item); ==== //depot/projects/drm-merge/sys/nfsclient/nfs_socket.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_socket.c,v 1.119 2005/01/07 01:45:50 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_socket.c,v 1.120 2005/02/18 23:41:39 ps Exp $"); /* * Socket operations for use by nfs @@ -1027,10 +1027,12 @@ error = nfs_send(nmp->nm_so, nmp->nm_nam, m2, rep); nfs_sndunlock(rep); } + mtx_lock(&nfs_reqq_mtx); if (!error && (rep->r_flags & R_MUSTRESEND) == 0) { nmp->nm_sent += NFS_CWNDSCALE; rep->r_flags |= R_SENT; } + mtx_unlock(&nfs_reqq_mtx); } else { splx(s); rep->r_rtt = -1; @@ -1056,10 +1058,12 @@ /* * Decrement the outstanding request count. */ + mtx_lock(&nfs_reqq_mtx); if (rep->r_flags & R_SENT) { rep->r_flags &= ~R_SENT; /* paranoia */ nmp->nm_sent -= NFS_CWNDSCALE; } + mtx_unlock(&nfs_reqq_mtx); /* * If there was a successful reply and a tprintf msg. ==== //depot/projects/drm-merge/sys/nfsclient/nfs_vnops.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_vnops.c,v 1.250 2005/01/29 23:19:08 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_vnops.c,v 1.251 2005/02/19 11:44:56 phk Exp $"); /* * vnode op calls for Sun NFS version 2 and 3 @@ -538,7 +538,9 @@ error = nfs_flush(vp, MNT_WAIT, ap->a_td, cm); /* np->n_flag &= ~NMODIFIED; */ } else { + VOP_LOCK(vp, LK_EXCLUSIVE, curthread); error = nfs_vinvalbuf(vp, V_SAVE, ap->a_td, 1); + VOP_UNLOCK(vp, 0, curthread); } } /* ==== //depot/projects/drm-merge/sys/powerpc/include/exec.h#2 (text+ko) ==== @@ -26,12 +26,12 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/powerpc/include/exec.h,v 1.2 2005/01/07 02:29:19 imp Exp $ + * $FreeBSD: src/sys/powerpc/include/exec.h,v 1.3 2005/02/19 21:16:48 ru Exp $ */ -#ifndef _EXEC_H_ -#define _EXEC_H_ +#ifndef _MACHINE_EXEC_H_ +#define _MACHINE_EXEC_H_ -#define __LDPGSZ 4096 +#define __LDPGSZ 4096 -#endif /* !_EXEC_H_ */ +#endif /* !_MACHINE_EXEC_H_ */ ==== //depot/projects/drm-merge/sys/sys/bufobj.h#2 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/sys/bufobj.h,v 1.12 2005/01/11 10:43:08 phk Exp $ + * $FreeBSD: src/sys/sys/bufobj.h,v 1.13 2005/02/19 11:44:57 phk Exp $ */ /* @@ -125,6 +125,7 @@ void bufobj_wdrop(struct bufobj *bo); void bufobj_wref(struct bufobj *bo); +int bufobj_invalbuf(struct bufobj *bo, int flags, struct thread *td, int slpflag, int slptimeo); int bufobj_wwait(struct bufobj *bo, int slpflag, int timeo); int bufsync(struct bufobj *bo, int waitfor, struct thread *td); ==== //depot/projects/drm-merge/sys/sys/cpu.h#2 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/sys/cpu.h,v 1.2 2005/02/13 05:37:19 njl Exp $ + * $FreeBSD: src/sys/sys/cpu.h,v 1.3 2005/02/19 06:13:25 njl Exp $ */ #ifndef _SYS_CPU_H_ @@ -53,6 +53,7 @@ int power; /* Power consumed in mW. */ int lat; /* Transition latency in us. */ device_t dev; /* Driver providing this setting. */ + int spec[4];/* Driver-specific storage for non-standard info. */ }; /* Maximum number of settings a given driver can have. */ ==== //depot/projects/drm-merge/sys/sys/mbuf.h#2 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * @(#)mbuf.h 8.5 (Berkeley) 2/19/95 - * $FreeBSD: src/sys/sys/mbuf.h,v 1.165 2005/02/10 22:23:02 bmilekic Exp $ + * $FreeBSD: src/sys/sys/mbuf.h,v 1.166 2005/02/18 22:31:18 ru Exp $ */ #ifndef _SYS_MBUF_H_ @@ -178,6 +178,7 @@ #define M_FRAG 0x0800 /* packet is a fragment of a larger packet */ #define M_FIRSTFRAG 0x1000 /* packet is first fragment */ #define M_LASTFRAG 0x2000 /* packet is last fragment */ +#define M_VLANTAG 0x10000 /* packet has VLAN tag attached */ /* * External buffer types: identify ext_buf type. @@ -195,7 +196,8 @@ */ #define M_COPYFLAGS (M_PKTHDR|M_EOR|M_RDONLY|M_PROTO1|M_PROTO1|M_PROTO2|\ M_PROTO3|M_PROTO4|M_PROTO5|M_SKIP_FIREWALL|\ - M_BCAST|M_MCAST|M_FRAG|M_FIRSTFRAG|M_LASTFRAG) + M_BCAST|M_MCAST|M_FRAG|M_FIRSTFRAG|M_LASTFRAG|\ + M_VLANTAG) /* * Flags indicating hw checksum support and sw checksum requirements. ==== //depot/projects/drm-merge/sys/sys/param.h#2 (text+ko) ==== @@ -32,7 +32,7 @@ * SUCH DAMAGE. * * @(#)param.h 8.3 (Berkeley) 4/4/95 - * $FreeBSD: src/sys/sys/param.h,v 1.224 2005/02/15 06:33:28 njl Exp $ + * $FreeBSD: src/sys/sys/param.h,v 1.225 2005/02/19 13:48:53 marius Exp $ */ #ifndef _SYS_PARAM_H_ @@ -57,7 +57,7 @@ * is created, otherwise 1. */ #undef __FreeBSD_version -#define __FreeBSD_version 600012 /* Master, propagated to newvers */ +#define __FreeBSD_version 600013 /* Master, propagated to newvers */ #ifndef LOCORE #include ==== //depot/projects/drm-merge/sys/ufs/ffs/ffs_snapshot.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/ufs/ffs/ffs_snapshot.c,v 1.97 2005/02/08 17:40:01 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/ufs/ffs/ffs_snapshot.c,v 1.98 2005/02/19 07:31:33 delphij Exp $"); #include #include @@ -474,7 +474,7 @@ loc = howmany(xp->i_size, fs->fs_bsize) - 1; if (loc < NDADDR) { len = fragroundup(fs, blkoff(fs, xp->i_size)); - if (len < fs->fs_bsize) { + if (len != 0 && len < fs->fs_bsize) { ffs_blkfree(ump, copy_fs, vp, DIP(xp, i_db[loc]), len, xp->i_number); blkno = DIP(xp, i_db[loc]); ==== //depot/projects/drm-merge/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.278 2005/02/10 12:20:08 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/ufs/ffs/ffs_vfsops.c,v 1.279 2005/02/19 11:44:57 phk Exp $"); #include "opt_mac.h" #include "opt_quota.h" @@ -794,7 +794,6 @@ out: if (bp) brelse(bp); - vinvalbuf(devvp, V_SAVE, td, 0, 0); if (cp != NULL) { DROP_GIANT(); g_topology_lock(); @@ -956,7 +955,6 @@ return (error); } } - vinvalbuf(ump->um_devvp, V_SAVE, td, 0, 0); DROP_GIANT(); g_topology_lock(); g_vfs_close(ump->um_cp, td); ==== //depot/projects/drm-merge/sys/ufs/ufs/ufs_inode.c#2 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/ufs/ufs/ufs_inode.c,v 1.57 2005/01/28 14:42:17 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/ufs/ufs/ufs_inode.c,v 1.58 2005/02/19 11:44:57 phk Exp $"); #include "opt_quota.h" #include "opt_ufs.h" @@ -173,12 +173,12 @@ } } #endif + vnode_destroy_vobject(vp); #ifdef UFS_DIRHASH if (ip->i_dirhash != NULL) ufsdirhash_free(ip); #endif UFS_IFREE(ump, ip); vp->v_data = 0; - vnode_destroy_vobject(vp); return (0); } ==== //depot/projects/drm-merge/sys/vm/vnode_pager.c#2 (text+ko) ==== @@ -51,7 +51,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/vm/vnode_pager.c,v 1.212 2005/01/28 08:56:47 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/vm/vnode_pager.c,v 1.213 2005/02/19 11:44:57 phk Exp $"); #include #include @@ -158,6 +158,7 @@ obj = vp->v_object; if (obj == NULL) return; + VOP_LOCK(vp, LK_EXCLUSIVE, curthread); vp->v_object = NULL; VM_OBJECT_LOCK(obj); if (obj->ref_count == 0) { @@ -180,6 +181,7 @@ vm_pager_deallocate(obj); VM_OBJECT_UNLOCK(obj); } + VOP_UNLOCK(vp, 0, curthread); } >>> TRUNCATED FOR MAIL (1000 lines) <<<