md/raid5-cache: stripe reclaim only counts valid stripes
When log space is tight, we try to reclaim stripes from log head. There are stripes which can't be reclaimed right now if some conditions are met. We skip such stripes but accidentally count them, which might cause no stripes are claimed. Fixing this by only counting valid stripes. Cc: Song Liu <songliubraving@fb.com> Signed-off-by: Shaohua Li <shli@fb.com>
This commit is contained in:
parent
5a6265f9cd
commit
e8fd52eec2
|
@ -1418,9 +1418,9 @@ static void r5c_do_reclaim(struct r5conf *conf)
|
|||
!test_bit(STRIPE_HANDLE, &sh->state) &&
|
||||
atomic_read(&sh->count) == 0) {
|
||||
r5c_flush_stripe(conf, sh);
|
||||
if (count++ >= R5C_RECLAIM_STRIPE_GROUP)
|
||||
break;
|
||||
}
|
||||
if (count++ >= R5C_RECLAIM_STRIPE_GROUP)
|
||||
break;
|
||||
}
|
||||
spin_unlock(&conf->device_lock);
|
||||
spin_unlock_irqrestore(&log->stripe_in_journal_lock, flags);
|
||||
|
|
Loading…
Reference in New Issue