summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2010-04-28 07:57:37 +0000
committerjeff <jeff@FreeBSD.org>2010-04-28 07:57:37 +0000
commit47b1b89a950518d81f6325cff900426303029b36 (patch)
treef416e57e6e8c016a075d9a833551d1c356edbb55 /sys
parent564f436237b899065a515b935bf0bc8502082439 (diff)
downloadFreeBSD-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.c3
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
OpenPOWER on IntegriCloud