Date: Thu, 21 May 2009 19:50:47 +0000 (UTC) From: Kip Macy <kmacy@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r192566 - user/kmacy/releng_7_2_fcs/sys/kern Message-ID: <200905211950.n4LJolkg077204@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: kmacy Date: Thu May 21 19:50:47 2009 New Revision: 192566 URL: http://svn.freebsd.org/changeset/base/192566 Log: reduce differences with HEAD Modified: user/kmacy/releng_7_2_fcs/sys/kern/kern_descrip.c user/kmacy/releng_7_2_fcs/sys/kern/kern_kthread.c user/kmacy/releng_7_2_fcs/sys/kern/kern_subr.c Modified: user/kmacy/releng_7_2_fcs/sys/kern/kern_descrip.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/kern/kern_descrip.c Thu May 21 19:47:22 2009 (r192565) +++ user/kmacy/releng_7_2_fcs/sys/kern/kern_descrip.c Thu May 21 19:50:47 2009 (r192566) @@ -1474,9 +1474,9 @@ falloc(struct thread *td, struct file ** * descriptor to the list of open files at that point, otherwise * put it at the front of the list of open files. */ - fp->f_count = 1; + refcount_init(&fp->f_count, 1); if (resultfp) - fp->f_count++; + fhold(fp); fp->f_cred = crhold(td->td_ucred); fp->f_ops = &badfileops; fp->f_data = NULL; @@ -2276,14 +2276,13 @@ _fdrop(struct file *fp, struct thread *t panic("fdrop: count %d", fp->f_count); if (fp->f_ops != &badfileops) error = fo_close(fp, td); - atomic_subtract_int(&openfiles, 1); - /* * The f_cdevpriv cannot be assigned non-NULL value while we * are destroying the file. */ if (fp->f_cdevpriv != NULL) devfs_fpdrop(fp); + atomic_subtract_int(&openfiles, 1); crfree(fp->f_cred); uma_zfree(file_zone, fp); @@ -2526,7 +2525,8 @@ sysctl_kern_file(SYSCTL_HANDLER_ARGS) if (fdp == NULL) continue; /* overestimates sparse tables. */ - n += fdp->fd_lastfile; + if (fdp->fd_lastfile > 0) + n += fdp->fd_lastfile; fddrop(fdp); } sx_sunlock(&allproc_lock); @@ -2907,7 +2907,6 @@ sysctl_kern_proc_filedesc(SYSCTL_HANDLER case DTYPE_VNODE: kif->kf_type = KF_TYPE_VNODE; vp = fp->f_vnode; - vref(vp); break; case DTYPE_SOCKET: @@ -2964,6 +2963,7 @@ sysctl_kern_proc_filedesc(SYSCTL_HANDLER kif->kf_flags |= KF_FLAG_HASLOCK; kif->kf_offset = fp->f_offset; if (vp != NULL) { + vref(vp); switch (vp->v_type) { case VNON: kif->kf_vnode_type = KF_VTYPE_VNON; Modified: user/kmacy/releng_7_2_fcs/sys/kern/kern_kthread.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/kern/kern_kthread.c Thu May 21 19:47:22 2009 (r192565) +++ user/kmacy/releng_7_2_fcs/sys/kern/kern_kthread.c Thu May 21 19:50:47 2009 (r192566) @@ -94,7 +94,9 @@ kthread_create_pri_v(void (*func)(void * /* this is a non-swapped system process */ PROC_LOCK(p2); + td = FIRST_THREAD_IN_PROC(p2); p2->p_flag |= P_SYSTEM | P_KTHREAD; + td->td_pflags |= TDP_KTHREAD; mtx_lock(&p2->p_sigacts->ps_mtx); p2->p_sigacts->ps_flag |= PS_NOCLDWAIT; mtx_unlock(&p2->p_sigacts->ps_mtx); Modified: user/kmacy/releng_7_2_fcs/sys/kern/kern_subr.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/kern/kern_subr.c Thu May 21 19:47:22 2009 (r192565) +++ user/kmacy/releng_7_2_fcs/sys/kern/kern_subr.c Thu May 21 19:50:47 2009 (r192566) @@ -456,7 +456,7 @@ uio_yield(void) DROP_GIANT(); thread_lock(td); sched_prio(td, td->td_user_pri); - mi_switch(SW_INVOL, NULL); + mi_switch(SW_INVOL | SWT_RELINQUISH, NULL); thread_unlock(td); PICKUP_GIANT(); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200905211950.n4LJolkg077204>