diff options
author | jeff <jeff@FreeBSD.org> | 2006-03-02 05:50:23 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2006-03-02 05:50:23 +0000 |
commit | 0951f797b292b58c87659eb994f19c7bca41f2db (patch) | |
tree | 64cd0a5cc89c9b9a6a5be4df15542e217a4d84f5 /sys/kern/vfs_subr.c | |
parent | 8e6862e21e88a44559d3bf6cfe1fe7f4452bff26 (diff) | |
download | FreeBSD-src-0951f797b292b58c87659eb994f19c7bca41f2db.zip FreeBSD-src-0951f797b292b58c87659eb994f19c7bca41f2db.tar.gz |
- Move softdep from using a global worklist to per-mount worklists. This
has many positive effects including improved smp locking, reducing
interdependencies between mounts that can lead to deadlocks, etc.
- Add the softdep worklist and various counters to the ufsmnt structure.
- Add a mount pointer to the workitem and remove mount pointers from the
various structures derived from the workitem as they are now redundant.
- Remove the poor-man's semaphore protecting softdep_process_worklist and
softdep_flushworklist. Several threads may now process the list
simultaneously.
- Add softdep_waitidle() to block the thread until all pending
dependencies being operated on by other threads have been flushed.
- Use softdep_waitidle() in unmount and snapshots to block either
operation until the fs is stable.
- Remove softdep worklist processing from the syncer and move it into the
softdep_flush() thread. This thread processes all softdep mounts
once each second and when it is called via the new softdep_speedup()
when there is a resource shortage. This removes the softdep hook
from the kernel and various hacks in header files to support it.
Reviewed by/Discussed with: tegge, truckman, mckusick
Tested by: kris
Diffstat (limited to 'sys/kern/vfs_subr.c')
-rw-r--r-- | sys/kern/vfs_subr.c | 10 |
1 files changed, 0 insertions, 10 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index f850b67..d1a3ed7 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -270,9 +270,6 @@ static int vnlru_nowhere; SYSCTL_INT(_debug, OID_AUTO, vnlru_nowhere, CTLFLAG_RW, &vnlru_nowhere, 0, "Number of times the vnlru process ran without success"); -/* Hook for calling soft updates. */ -int (*softdep_process_worklist_hook)(struct mount *); - /* * Macros to control when a vnode is freed and recycled. All require * the vnode interlock. @@ -1675,13 +1672,6 @@ sched_sync(void) if (syncer_state == SYNCER_FINAL_DELAY && syncer_final_iter > 0) syncer_final_iter--; mtx_unlock(&sync_mtx); - - /* - * Do soft update processing. - */ - if (softdep_process_worklist_hook != NULL) - (*softdep_process_worklist_hook)(NULL); - /* * The variable rushjob allows the kernel to speed up the * processing of the filesystem syncer process. A rushjob |