diff options
author | mckusick <mckusick@FreeBSD.org> | 2000-01-10 08:39:03 +0000 |
---|---|---|
committer | mckusick <mckusick@FreeBSD.org> | 2000-01-10 08:39:03 +0000 |
commit | b09e75922967e8200484ba056cd55c3b555824c3 (patch) | |
tree | c797d80fbfb63bf1cde0e1590efdb08aed5fb82f | |
parent | a5aad10b748f68955dd67b10fee60a8de27eb576 (diff) | |
download | FreeBSD-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.c | 8 | ||||
-rw-r--r-- | sys/ufs/ffs/ffs_softdep.c | 8 |
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 |