If done was set as well as wake, we didn't wake the cleaner
so *FlushNeeded wouldn't necessarily be effective.
Signed-off-by: NeilBrown <neilb@suse.de>
if (atomic_read(&wc->pending_cnt[which]) == 1)
wake = 1;
- if (done) {
+ if (done)
schedule_work(&fs->done_work);
- wake_up(&wc->pending_wait);
- } else if (wake) {
+ if (done || wake) {
wake_up(&wc->pending_wait);
if (test_bit(FlushNeeded, &fs->fsstate) ||
test_bit(SecondFlushNeeded, &fs->fsstate))