aboutsummaryrefslogtreecommitdiff
path: root/sys/ufs/ffs/ffs_softdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/ufs/ffs/ffs_softdep.c')
-rw-r--r--sys/ufs/ffs/ffs_softdep.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index 8c3ae9dd95fc..8c52139687f9 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -13847,6 +13847,7 @@ retry:
failed_vnode = softdep_request_cleanup_flush(mp, ump);
ACQUIRE_LOCK(ump);
ump->um_softdep->sd_flags &= ~FLUSH_RC_ACTIVE;
+ wakeup(&ump->um_softdep->sd_flags);
FREE_LOCK(ump);
if (ump->softdep_on_worklist > 0) {
stat_cleanup_retries += 1;
@@ -13854,6 +13855,11 @@ retry:
goto retry;
}
} else {
+ while ((ump->um_softdep->sd_flags &
+ FLUSH_RC_ACTIVE) != 0) {
+ msleep(&ump->um_softdep->sd_flags,
+ LOCK_PTR(ump), PVM, "ffsrca", hz);
+ }
FREE_LOCK(ump);
error = 0;
}