From: Shaohua Li Date: Sat, 11 Feb 2017 00:18:08 +0000 (-0800) Subject: md/raid5-cache: stripe reclaim only counts valid stripes X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=e8fd52eec2cd25b917983b3f3aa738b722522376;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git 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 Signed-off-by: Shaohua Li --- diff --git a/drivers/md/raid5-cache.c b/drivers/md/raid5-cache.c index caae85331a02..a01f4daeb390 100644 --- a/drivers/md/raid5-cache.c +++ b/drivers/md/raid5-cache.c @@ -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);