svn commit: r217975 - in stable/8/sys: kern net
John Baldwin
jhb at FreeBSD.org
Thu Jan 27 20:09:21 UTC 2011
Author: jhb
Date: Thu Jan 27 20:09:20 2011
New Revision: 217975
URL: http://svn.freebsd.org/changeset/base/217975
Log:
MFC 217076:
- Restore dropping the priority of syncer down to PPAUSE when it is idle.
This was lost when it was converted to using a condition variable instead
of lbolt.
- Drop the priority of flowtable down to PPAUSE when it is idle as well
since it is a similar background task.
Modified:
stable/8/sys/kern/vfs_subr.c
stable/8/sys/net/flowtable.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
Modified: stable/8/sys/kern/vfs_subr.c
==============================================================================
--- stable/8/sys/kern/vfs_subr.c Thu Jan 27 20:08:14 2011 (r217974)
+++ stable/8/sys/kern/vfs_subr.c Thu Jan 27 20:09:20 2011 (r217975)
@@ -65,6 +65,7 @@ __FBSDID("$FreeBSD$");
#include <sys/namei.h>
#include <sys/priv.h>
#include <sys/reboot.h>
+#include <sys/sched.h>
#include <sys/sleepqueue.h>
#include <sys/stat.h>
#include <sys/sysctl.h>
@@ -1883,6 +1884,12 @@ sched_sync(void)
* matter as we are just trying to generally pace the
* filesystem activity.
*/
+ if (syncer_state != SYNCER_RUNNING ||
+ time_uptime == starttime) {
+ thread_lock(td);
+ sched_prio(td, PPAUSE);
+ thread_unlock(td);
+ }
if (syncer_state != SYNCER_RUNNING)
cv_timedwait(&sync_wakeup, &sync_mtx,
hz / SYNCER_SHUTDOWN_SPEEDUP);
Modified: stable/8/sys/net/flowtable.c
==============================================================================
--- stable/8/sys/net/flowtable.c Thu Jan 27 20:08:14 2011 (r217974)
+++ stable/8/sys/net/flowtable.c Thu Jan 27 20:09:20 2011 (r217975)
@@ -1548,9 +1548,11 @@ static void
flowtable_cleaner(void)
{
VNET_ITERATOR_DECL(vnet_iter);
+ struct thread *td;
if (bootverbose)
log(LOG_INFO, "flowtable cleaner started\n");
+ td = curthread;
while (1) {
VNET_LIST_RLOCK();
VNET_FOREACH(vnet_iter) {
@@ -1565,6 +1567,9 @@ flowtable_cleaner(void)
* is arbitrary
*/
mtx_lock(&flowclean_lock);
+ thread_lock(td);
+ sched_prio(td, PPAUSE);
+ thread_unlock(td);
flowclean_cycles++;
cv_broadcast(&flowclean_f_cv);
cv_timedwait(&flowclean_c_cv, &flowclean_lock, flowclean_freq);
More information about the svn-src-all
mailing list