softdep_request_cleanup: wait for softdep_request_clean_flush() to pass
if we noted a parallel request is active and declined to overflow the system with parallel redundant sync of the vnodes. But we need to wait for the flush to finish to see if there are any freed resources. Reviewed by: chs, mckusick Tested by: pho MFC after: 2 weeks Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
013168db8c
commit
2011b44fa3
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user