提交 e8fd52ee 编写于 作者: S Shaohua Li

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: NShaohua Li <shli@fb.com>
上级 5a6265f9
...@@ -1418,9 +1418,9 @@ static void r5c_do_reclaim(struct r5conf *conf) ...@@ -1418,9 +1418,9 @@ static void r5c_do_reclaim(struct r5conf *conf)
!test_bit(STRIPE_HANDLE, &sh->state) && !test_bit(STRIPE_HANDLE, &sh->state) &&
atomic_read(&sh->count) == 0) { atomic_read(&sh->count) == 0) {
r5c_flush_stripe(conf, sh); 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(&conf->device_lock);
spin_unlock_irqrestore(&log->stripe_in_journal_lock, flags); spin_unlock_irqrestore(&log->stripe_in_journal_lock, flags);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册