summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_subr.c
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2006-03-02 05:50:23 +0000
committerjeff <jeff@FreeBSD.org>2006-03-02 05:50:23 +0000
commit0951f797b292b58c87659eb994f19c7bca41f2db (patch)
tree64cd0a5cc89c9b9a6a5be4df15542e217a4d84f5 /sys/kern/vfs_subr.c
parent8e6862e21e88a44559d3bf6cfe1fe7f4452bff26 (diff)
downloadFreeBSD-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.c10
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
OpenPOWER on IntegriCloud