summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormckusick <mckusick@FreeBSD.org>2000-01-10 08:39:03 +0000
committermckusick <mckusick@FreeBSD.org>2000-01-10 08:39:03 +0000
commitb09e75922967e8200484ba056cd55c3b555824c3 (patch)
treec797d80fbfb63bf1cde0e1590efdb08aed5fb82f
parenta5aad10b748f68955dd67b10fee60a8de27eb576 (diff)
downloadFreeBSD-src-b09e75922967e8200484ba056cd55c3b555824c3.zip
FreeBSD-src-b09e75922967e8200484ba056cd55c3b555824c3.tar.gz
Missing FREE_LOCK call before handle_workitem_freeblocks.
Submitted by: "Kenneth D. Merry" <ken@kdm.org>
-rw-r--r--sys/contrib/softupdates/ffs_softdep.c8
-rw-r--r--sys/ufs/ffs/ffs_softdep.c8
2 files changed, 10 insertions, 6 deletions
diff --git a/sys/contrib/softupdates/ffs_softdep.c b/sys/contrib/softupdates/ffs_softdep.c
index dee1891..8f7e3f2 100644
--- a/sys/contrib/softupdates/ffs_softdep.c
+++ b/sys/contrib/softupdates/ffs_softdep.c
@@ -1663,11 +1663,13 @@ softdep_setup_freeblocks(ip, length)
* still have a bitmap dependency, then the inode has never been
* written to disk, so we can process the freeblks immediately.
*/
- if ((inodedep->id_state & DEPCOMPLETE) == 0)
+ if ((inodedep->id_state & DEPCOMPLETE) == 0) {
+ FREE_LOCK(&lk);
handle_workitem_freeblocks(freeblks);
- else
+ } else {
WORKLIST_INSERT(&inodedep->id_bufwait, &freeblks->fb_list);
- FREE_LOCK(&lk);
+ FREE_LOCK(&lk);
+ }
bdwrite(bp);
/*
* We must wait for any I/O in progress to finish so that
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index dee1891..8f7e3f2 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -1663,11 +1663,13 @@ softdep_setup_freeblocks(ip, length)
* still have a bitmap dependency, then the inode has never been
* written to disk, so we can process the freeblks immediately.
*/
- if ((inodedep->id_state & DEPCOMPLETE) == 0)
+ if ((inodedep->id_state & DEPCOMPLETE) == 0) {
+ FREE_LOCK(&lk);
handle_workitem_freeblocks(freeblks);
- else
+ } else {
WORKLIST_INSERT(&inodedep->id_bufwait, &freeblks->fb_list);
- FREE_LOCK(&lk);
+ FREE_LOCK(&lk);
+ }
bdwrite(bp);
/*
* We must wait for any I/O in progress to finish so that
OpenPOWER on IntegriCloud