diff options
author | jeff <jeff@FreeBSD.org> | 2010-04-28 07:57:37 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2010-04-28 07:57:37 +0000 |
commit | 47b1b89a950518d81f6325cff900426303029b36 (patch) | |
tree | f416e57e6e8c016a075d9a833551d1c356edbb55 /sys | |
parent | 564f436237b899065a515b935bf0bc8502082439 (diff) | |
download | FreeBSD-src-47b1b89a950518d81f6325cff900426303029b36.zip FreeBSD-src-47b1b89a950518d81f6325cff900426303029b36.tar.gz |
- When canceling jaddrefs they may not yet be in the journal if this is via
a revert call. In this case don't attempt to remove something that
has not yet been added. Otherwise this jaddref must hang around
to prevent the bitmap write as normal.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/ufs/ffs/ffs_softdep.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c index b08e7c2..b05339b 100644 --- a/sys/ufs/ffs/ffs_softdep.c +++ b/sys/ufs/ffs/ffs_softdep.c @@ -3504,7 +3504,8 @@ cancel_jaddref(jaddref, inodedep, wkhd) WORKLIST_INSERT(wkhd, &jsegdep->jd_list); } else { free_jsegdep(jsegdep); - remove_from_journal(&jaddref->ja_list); + if (jaddref->ja_state & DEPCOMPLETE) + remove_from_journal(&jaddref->ja_list); } /* * Leave NEWBLOCK jaddrefs on the inodedep so handle_workitem_remove |