Date: Tue, 1 Nov 2005 20:17:05 GMT From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 86196 for review Message-ID: <200511012017.jA1KH5KZ084039@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=86196 Change 86196 by jhb@jhb_slimer on 2005/11/01 20:16:37 IFC @86194. Affected files ... .. //depot/projects/smpng/sys/compat/ndis/subr_ntoskrnl.c#35 integrate .. //depot/projects/smpng/sys/conf/files#156 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_hpet.c#1 branch .. //depot/projects/smpng/sys/dev/acpica/acpivar.h#59 integrate .. //depot/projects/smpng/sys/kern/kern_descrip.c#85 integrate .. //depot/projects/smpng/sys/kern/kern_exit.c#103 integrate .. //depot/projects/smpng/sys/kern/kern_ktrace.c#46 integrate .. //depot/projects/smpng/sys/kern/vfs_aio.c#62 integrate .. //depot/projects/smpng/sys/modules/acpi/acpi/Makefile#10 integrate .. //depot/projects/smpng/sys/netinet6/in6.c#30 integrate .. //depot/projects/smpng/sys/pci/if_vr.c#42 integrate .. //depot/projects/smpng/sys/pci/if_vrreg.h#11 integrate .. //depot/projects/smpng/sys/sys/ktrace.h#11 integrate .. //depot/projects/smpng/sys/sys/signal.h#20 integrate .. //depot/projects/smpng/sys/vm/vm_page.c#66 integrate Differences ... ==== //depot/projects/smpng/sys/compat/ndis/subr_ntoskrnl.c#35 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ntoskrnl.c,v 1.79 2005/10/26 20:21:45 wpaul Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ntoskrnl.c,v 1.80 2005/11/01 09:24:35 wpaul Exp $"); #include <sys/ctype.h> #include <sys/unistd.h> @@ -285,7 +285,11 @@ if (wq_queues == NULL) return(ENOMEM); +#ifdef NTOSKRNL_MULTIPLE_DPCS bzero((char *)kq_queues, sizeof(kdpc_queue) * mp_ncpus); +#else + bzero((char *)kq_queues, sizeof(kdpc_queue)); +#endif bzero((char *)wq_queues, sizeof(kdpc_queue) * WORKITEM_THREADS); /* ==== //depot/projects/smpng/sys/conf/files#156 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1061 2005/10/28 15:58:17 joerg Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1062 2005/10/31 21:40:40 phk Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -410,6 +410,7 @@ dev/acpica/acpi_cmbat.c optional acpi dev/acpica/acpi_cpu.c optional acpi dev/acpica/acpi_ec.c optional acpi +dev/acpica/acpi_hpet.c optional acpi dev/acpica/acpi_isab.c optional acpi isa dev/acpica/acpi_lid.c optional acpi dev/acpica/acpi_package.c optional acpi ==== //depot/projects/smpng/sys/dev/acpica/acpivar.h#59 (text+ko) ==== @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/acpica/acpivar.h,v 1.96 2005/07/23 19:35:59 njl Exp $ + * $FreeBSD: src/sys/dev/acpica/acpivar.h,v 1.97 2005/11/01 15:57:15 scottl Exp $ */ #ifndef _ACPIVAR_H_ @@ -154,6 +154,7 @@ #define ACPI_THERMAL 0x01000000 #define ACPI_TIMER 0x02000000 #define ACPI_OEM 0x04000000 +#define ACPI_HPET 0x08000000 /* * Constants for different interrupt models used with acpi_SetIntrModel(). ==== //depot/projects/smpng/sys/kern/kern_descrip.c#85 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_descrip.c,v 1.282 2005/10/31 15:41:25 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_descrip.c,v 1.283 2005/11/01 17:13:05 jhb Exp $"); #include "opt_compat.h" @@ -1525,10 +1525,10 @@ { struct filedesc *fdp; struct file **fpp; - int i; + int i, locked; struct filedesc_to_leader *fdtol; struct file *fp; - struct vnode *vp; + struct vnode *cdir, *jdir, *rdir, *vp; struct flock lf; /* Certain daemons might not have file descriptors. */ @@ -1559,13 +1559,14 @@ lf.l_len = 0; lf.l_type = F_UNLCK; vp = fp->f_vnode; - VFS_ASSERT_GIANT(vp->v_mount); + locked = VFS_LOCK_GIANT(vp->v_mount); (void) VOP_ADVLOCK(vp, (caddr_t)td->td_proc-> p_leader, F_UNLCK, &lf, F_POSIX); + VFS_UNLOCK_GIANT(locked); FILEDESC_LOCK(fdp); fdrop(fp, td); fpp = fdp->fd_ofiles + i; @@ -1635,17 +1636,29 @@ fdp->fd_nfiles = 0; - if (fdp->fd_cdir) - vrele(fdp->fd_cdir); + cdir = fdp->fd_cdir; fdp->fd_cdir = NULL; - if (fdp->fd_rdir) - vrele(fdp->fd_rdir); + rdir = fdp->fd_rdir; fdp->fd_rdir = NULL; - if (fdp->fd_jdir) - vrele(fdp->fd_jdir); + jdir = fdp->fd_jdir; fdp->fd_jdir = NULL; + FILEDESC_UNLOCK(fdp); - FILEDESC_UNLOCK(fdp); + if (cdir) { + locked = VFS_LOCK_GIANT(cdir->v_mount); + vrele(cdir); + VFS_UNLOCK_GIANT(locked); + } + if (rdir) { + locked = VFS_LOCK_GIANT(rdir->v_mount); + vrele(rdir); + VFS_UNLOCK_GIANT(locked); + } + if (jdir) { + locked = VFS_LOCK_GIANT(jdir->v_mount); + vrele(jdir); + VFS_UNLOCK_GIANT(locked); + } fddrop(fdp); } ==== //depot/projects/smpng/sys/kern/kern_exit.c#103 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_exit.c,v 1.269 2005/10/26 07:18:36 glebius Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_exit.c,v 1.270 2005/11/01 17:13:05 jhb Exp $"); #include "opt_compat.h" #include "opt_ktrace.h" @@ -235,6 +235,7 @@ */ mtx_lock(&Giant); /* XXX: not sure if needed */ funsetownlst(&p->p_sigiolst); + mtx_unlock(&Giant); /* * If this process has an nlminfo data area (for lockd), release it @@ -247,7 +248,6 @@ * This may block! */ fdfree(td); - mtx_unlock(&Giant); /* * If this thread tickled GEOM, we need to wait for the giggling to ==== //depot/projects/smpng/sys/kern/kern_ktrace.c#46 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_ktrace.c,v 1.101 2005/06/24 12:05:24 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_ktrace.c,v 1.103 2005/11/01 14:46:37 rwatson Exp $"); #include "opt_ktrace.h" #include "opt_mac.h" @@ -64,6 +64,7 @@ struct ktr_request { struct ktr_header ktr_header; + void *ktr_buffer; struct ucred *ktr_cred; struct vnode *ktr_vp; union { @@ -236,8 +237,9 @@ mtx_unlock(&ktrace_mtx); microtime(&req->ktr_header.ktr_time); req->ktr_header.ktr_pid = p->p_pid; + req->ktr_header.ktr_tid = td->td_tid; bcopy(p->p_comm, req->ktr_header.ktr_comm, MAXCOMLEN + 1); - req->ktr_header.ktr_buffer = NULL; + req->ktr_buffer = NULL; req->ktr_header.ktr_len = 0; } else { p->p_traceflag |= KTRFAC_DROP; @@ -272,8 +274,8 @@ vrele(req->ktr_vp); mtx_unlock(&Giant); } - if (req->ktr_header.ktr_buffer != NULL) - free(req->ktr_header.ktr_buffer, M_KTRACE); + if (req->ktr_buffer != NULL) + free(req->ktr_buffer, M_KTRACE); mtx_lock(&ktrace_mtx); STAILQ_INSERT_HEAD(&ktr_free, req, ktr_list); mtx_unlock(&ktrace_mtx); @@ -340,7 +342,7 @@ ktp->ktr_narg = narg; if (buflen > 0) { req->ktr_header.ktr_len = buflen; - req->ktr_header.ktr_buffer = buf; + req->ktr_buffer = buf; } ktr_submitrequest(req); } @@ -387,7 +389,7 @@ } if (namelen > 0) { req->ktr_header.ktr_len = namelen; - req->ktr_header.ktr_buffer = buf; + req->ktr_buffer = buf; } ktr_submitrequest(req); } @@ -436,7 +438,7 @@ ktg->ktr_fd = fd; ktg->ktr_rw = rw; req->ktr_header.ktr_len = datalen; - req->ktr_header.ktr_buffer = buf; + req->ktr_buffer = buf; ktr_submitrequest(req); } @@ -684,7 +686,7 @@ free(cp, M_KTRACE); return (ENOMEM); } - req->ktr_header.ktr_buffer = cp; + req->ktr_buffer = cp; req->ktr_header.ktr_len = uap->len; ktr_submitrequest(req); return (0); @@ -827,8 +829,8 @@ kth->ktr_len += datalen; } if (buflen != 0) { - KASSERT(kth->ktr_buffer != NULL, ("ktrace: nothing to write")); - aiov[auio.uio_iovcnt].iov_base = kth->ktr_buffer; + KASSERT(req->ktr_buffer != NULL, ("ktrace: nothing to write")); + aiov[auio.uio_iovcnt].iov_base = req->ktr_buffer; aiov[auio.uio_iovcnt].iov_len = buflen; auio.uio_resid += buflen; auio.uio_iovcnt++; ==== //depot/projects/smpng/sys/kern/vfs_aio.c#62 (text+ko) ==== @@ -19,7 +19,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/vfs_aio.c,v 1.199 2005/10/30 02:12:49 davidxu Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/vfs_aio.c,v 1.200 2005/11/01 17:13:05 jhb Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -894,10 +894,8 @@ * Get rid of our current filedescriptors. AIOD's don't need any * filedescriptors, except as temporarily inherited from the client. */ - mtx_lock(&Giant); fdfree(td); - mtx_unlock(&Giant); /* The daemon resides in its own pgrp. */ MALLOC(newpgrp, struct pgrp *, sizeof(struct pgrp), M_PGRP, M_WAITOK | M_ZERO); ==== //depot/projects/smpng/sys/modules/acpi/acpi/Makefile#10 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/modules/acpi/acpi/Makefile,v 1.13 2005/10/23 00:22:02 njl Exp $ +# $FreeBSD: src/sys/modules/acpi/acpi/Makefile,v 1.14 2005/10/31 21:40:40 phk Exp $ .PATH: ${.CURDIR}/../../../contrib/dev/acpica \ ${.CURDIR}/../../../pci \ @@ -42,7 +42,8 @@ # ACPI hardware drivers, mostly used for mobile systems. SRCS+= acpi_acad.c acpi_battery.c acpi_cmbat.c acpi_cpu.c -SRCS+= acpi_ec.c acpi_lid.c acpi_perf.c acpi_smbat.c acpi_throttle.c +SRCS+= acpi_ec.c acpi_hpet.c acpi_lid.c acpi_perf.c acpi_smbat.c +SRCS+= acpi_throttle.c # OSD layer SRCS+= OsdDebug.c ==== //depot/projects/smpng/sys/netinet6/in6.c#30 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/netinet6/in6.c,v 1.58 2005/10/22 05:07:16 suz Exp $ */ +/* $FreeBSD: src/sys/netinet6/in6.c,v 1.59 2005/10/31 23:06:04 suz Exp $ */ /* $KAME: in6.c,v 1.259 2002/01/21 11:37:50 keiichi Exp $ */ /*- @@ -641,6 +641,14 @@ */ if ((error = in6_update_ifa(ifp, ifra, ia, 0)) != 0) return (error); + if ((ia = in6ifa_ifpwithaddr(ifp, &ifra->ifra_addr.sin6_addr)) + == NULL) { + /* + * this can happen when the user specify the 0 valid + * lifetime. + */ + break; + } /* * then, make the prefix on-link on the interface. @@ -693,41 +701,33 @@ return (EINVAL); /* XXX panic here? */ } } - if ((ia = in6ifa_ifpwithaddr(ifp, &ifra->ifra_addr.sin6_addr)) - == NULL) { - /* XXX: this should not happen! */ - log(LOG_ERR, "in6_control: addition succeeded, but" - " no ifaddr\n"); - } else { - if ((ia->ia6_flags & IN6_IFF_AUTOCONF) != 0 && - ia->ia6_ndpr == NULL) { /* new autoconfed addr */ - ia->ia6_ndpr = pr; - pr->ndpr_refcnt++; - /* - * If this is the first autoconf address from - * the prefix, create a temporary address - * as well (when specified). - */ - if (ip6_use_tempaddr && - pr->ndpr_refcnt == 1) { - int e; - if ((e = in6_tmpifadd(ia, 1, 0)) != 0) { - log(LOG_NOTICE, "in6_control: " - "failed to create a " - "temporary address, " - "errno=%d\n", e); - } - } - } + /* relate the address to the prefix */ + if (ia->ia6_ndpr == NULL) { + ia->ia6_ndpr = pr; + pr->ndpr_refcnt++; /* - * this might affect the status of autoconfigured - * addresses, that is, this address might make - * other addresses detached. + * If this is the first autoconf address from the + * prefix, create a temporary address as well + * (when required). */ - pfxlist_onlink_check(); + if ((ia->ia6_flags & IN6_IFF_AUTOCONF) && + ip6_use_tempaddr && pr->ndpr_refcnt == 1) { + int e; + if ((e = in6_tmpifadd(ia, 1, 0)) != 0) { + log(LOG_NOTICE, "in6_control: failed " + "to create a temporary address, " + "errno=%d\n", e); + } + } } + + /* + * this might affect the status of autoconfigured addresses, + * that is, this address might make other addresses detached. + */ + pfxlist_onlink_check(); if (error == 0 && ia) EVENTHANDLER_INVOKE(ifaddr_event, ifp); break; @@ -735,8 +735,6 @@ case SIOCDIFADDR_IN6: { - int i = 0; - struct nd_prefixctl pr0; struct nd_prefix *pr; /* @@ -747,37 +745,12 @@ * and the prefix management. We do this, however, to provide * as much backward compatibility as possible in terms of * the ioctl operation. + * Note that in6_purgeaddr() will decrement ndpr_refcnt. */ - bzero(&pr0, sizeof(pr0)); - pr0.ndpr_ifp = ifp; - pr0.ndpr_plen = in6_mask2len(&ia->ia_prefixmask.sin6_addr, - NULL); - if (pr0.ndpr_plen == 128) - goto purgeaddr; - pr0.ndpr_prefix = ia->ia_addr; - /* apply the mask for safety. */ - for (i = 0; i < 4; i++) { - pr0.ndpr_prefix.sin6_addr.s6_addr32[i] &= - ifra->ifra_prefixmask.sin6_addr.s6_addr32[i]; - } - /* - * The logic of the following condition is a bit complicated. - * We expire the prefix when - * 1. the address obeys autoconfiguration and it is the - * only owner of the associated prefix, or - * 2. the address does not obey autoconf and there is no - * other owner of the prefix. - */ - if ((pr = nd6_prefix_lookup(&pr0)) != NULL && - (((ia->ia6_flags & IN6_IFF_AUTOCONF) != 0 && - pr->ndpr_refcnt == 1) || - ((ia->ia6_flags & IN6_IFF_AUTOCONF) == 0 && - pr->ndpr_refcnt == 0))) { - pr->ndpr_expire = 1; /* XXX: just for expiration */ - } - - purgeaddr: + pr = ia->ia6_ndpr; in6_purgeaddr(&ia->ia_ifa); + if (pr && pr->ndpr_refcnt == 0) + prelist_remove(pr); EVENTHANDLER_INVOKE(ifaddr_event, ifp); break; } @@ -1399,21 +1372,24 @@ } /* - * When an autoconfigured address is being removed, release the - * reference to the base prefix. Also, since the release might - * affect the status of other (detached) addresses, call - * pfxlist_onlink_check(). + * Release the reference to the base prefix. There should be a + * positive reference. */ - if ((oia->ia6_flags & IN6_IFF_AUTOCONF) != 0) { - if (oia->ia6_ndpr == NULL) { - nd6log((LOG_NOTICE, "in6_unlink_ifa: autoconf'ed address " - "%p has no prefix\n", oia)); - } else { - oia->ia6_ndpr->ndpr_refcnt--; - oia->ia6_flags &= ~IN6_IFF_AUTOCONF; - oia->ia6_ndpr = NULL; - } + if (oia->ia6_ndpr == NULL) { + nd6log((LOG_NOTICE, + "in6_unlink_ifa: autoconf'ed address " + "%p has no prefix\n", oia)); + } else { + oia->ia6_ndpr->ndpr_refcnt--; + oia->ia6_ndpr = NULL; + } + /* + * Also, if the address being removed is autoconf'ed, call + * pfxlist_onlink_check() since the release might affect the status of + * other (detached) addresses. + */ + if ((oia->ia6_flags & IN6_IFF_AUTOCONF)) { pfxlist_onlink_check(); } ==== //depot/projects/smpng/sys/pci/if_vr.c#42 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/pci/if_vr.c,v 1.112 2005/10/27 21:18:37 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/pci/if_vr.c,v 1.113 2005/10/31 21:37:27 jhb Exp $"); /* * VIA Rhine fast ethernet PCI NIC driver @@ -655,6 +655,8 @@ mtx_init(&sc->vr_mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK, MTX_DEF); + callout_init_mtx(&sc->vr_stat_callout, &sc->vr_mtx, 0); + /* * Map control/status registers. */ @@ -755,8 +757,6 @@ goto fail; } - callout_handle_init(&sc->vr_stat_ch); - /* Call MI attach routine. */ ether_ifattach(ifp, eaddr); @@ -799,16 +799,14 @@ ether_poll_deregister(ifp); #endif - VR_LOCK(sc); - - sc->suspended = 1; - /* These should only be active if attach succeeded */ if (device_is_attached(dev)) { + VR_LOCK(sc); + sc->suspended = 1; vr_stop(sc); - VR_UNLOCK(sc); /* XXX: Avoid recursive acquire. */ + VR_UNLOCK(sc); + callout_drain(&sc->vr_stat_callout); ether_ifdetach(ifp); - VR_LOCK(sc); } if (sc->vr_miibus) device_delete_child(dev, sc->vr_miibus); @@ -827,7 +825,6 @@ if (sc->vr_ldata) contigfree(sc->vr_ldata, sizeof(struct vr_list_data), M_DEVBUF); - VR_UNLOCK(sc); mtx_destroy(&sc->vr_mtx); return (0); @@ -1128,7 +1125,7 @@ struct vr_softc *sc = xsc; struct mii_data *mii; - VR_LOCK(sc); + VR_LOCK_ASSERT(sc); if (sc->vr_flags & VR_F_RESTART) { if_printf(sc->vr_ifp, "restarting\n"); @@ -1140,9 +1137,7 @@ mii = device_get_softc(sc->vr_miibus); mii_tick(mii); - sc->vr_stat_ch = timeout(vr_tick, sc, hz); - - VR_UNLOCK(sc); + callout_reset(&sc->vr_stat_callout, hz, vr_tick, sc); } #ifdef DEVICE_POLLING @@ -1532,7 +1527,7 @@ ifp->if_drv_flags |= IFF_DRV_RUNNING; ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; - sc->vr_stat_ch = timeout(vr_tick, sc, hz); + callout_reset(&sc->vr_stat_callout, hz, vr_tick, sc); } /* @@ -1668,7 +1663,7 @@ ifp = sc->vr_ifp; ifp->if_timer = 0; - untimeout(vr_tick, sc, sc->vr_stat_ch); + callout_stop(&sc->vr_stat_callout); ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); VR_SETBIT16(sc, VR_COMMAND, VR_CMD_STOP); ==== //depot/projects/smpng/sys/pci/if_vrreg.h#11 (text+ko) ==== @@ -29,7 +29,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/pci/if_vrreg.h,v 1.23 2005/10/27 21:18:37 jhb Exp $ + * $FreeBSD: src/sys/pci/if_vrreg.h,v 1.24 2005/10/31 21:37:27 jhb Exp $ */ /* @@ -465,7 +465,7 @@ u_int8_t vr_flags; /* See VR_F_* below */ struct vr_list_data *vr_ldata; struct vr_chain_data vr_cdata; - struct callout_handle vr_stat_ch; + struct callout vr_stat_callout; struct mtx vr_mtx; int suspended; /* if 1, sleeping/detaching */ #ifdef DEVICE_POLLING ==== //depot/projects/smpng/sys/sys/ktrace.h#11 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * @(#)ktrace.h 8.1 (Berkeley) 6/2/93 - * $FreeBSD: src/sys/sys/ktrace.h,v 1.29 2005/01/07 02:29:23 imp Exp $ + * $FreeBSD: src/sys/sys/ktrace.h,v 1.31 2005/11/01 14:46:37 rwatson Exp $ */ #ifndef _SYS_KTRACE_H_ @@ -54,7 +54,7 @@ pid_t ktr_pid; /* process id */ char ktr_comm[MAXCOMLEN+1]; /* command name */ struct timeval ktr_time; /* timestamp */ - void *ktr_buffer; + intptr_t ktr_tid; /* was ktr_buffer */ }; /* ==== //depot/projects/smpng/sys/sys/signal.h#20 (text+ko) ==== @@ -32,7 +32,7 @@ * SUCH DAMAGE. * * @(#)signal.h 8.4 (Berkeley) 5/4/95 - * $FreeBSD: src/sys/sys/signal.h,v 1.49 2005/10/30 02:12:48 davidxu Exp $ + * $FreeBSD: src/sys/sys/signal.h,v 1.50 2005/11/01 03:14:39 davidxu Exp $ */ #ifndef _SYS_SIGNAL_H_ @@ -109,7 +109,7 @@ #define SIGUSR2 31 /* user defined signal 2 */ #endif #if __BSD_VISIBLE -#define SIGTHR 32 /* Thread interrupt. */ +#define SIGTHR 32 /* reserved by thread library. */ #endif #define SIGRTMIN 65 ==== //depot/projects/smpng/sys/vm/vm_page.c#66 (text+ko) ==== @@ -97,7 +97,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/vm/vm_page.c,v 1.306 2005/10/08 21:03:54 des Exp $"); +__FBSDID("$FreeBSD: src/sys/vm/vm_page.c,v 1.307 2005/11/01 04:30:21 alc Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1677,6 +1677,8 @@ mnew->valid = VM_PAGE_BITS_ALL; vm_page_dirty(mnew); vm_page_flag_clear(mnew, PG_BUSY); + mnew->wire_count = m->wire_count - m->cow; + m->wire_count = m->cow; } }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200511012017.jA1KH5KZ084039>