raid5-cache: move reclaim stop to quiesce
Move reclaim stop to quiesce handling, where is safer for this stuff. Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: NeilBrown <neilb@suse.com>
This commit is contained in:
@@ -748,6 +748,24 @@ static void r5l_wake_reclaim(struct r5l_log *log, sector_t space)
|
||||
md_wakeup_thread(log->reclaim_thread);
|
||||
}
|
||||
|
||||
void r5l_quiesce(struct r5l_log *log, int state)
|
||||
{
|
||||
if (!log || state == 2)
|
||||
return;
|
||||
if (state == 0) {
|
||||
log->reclaim_thread = md_register_thread(r5l_reclaim_thread,
|
||||
log->rdev->mddev, "reclaim");
|
||||
} else if (state == 1) {
|
||||
/*
|
||||
* at this point all stripes are finished, so io_unit is at
|
||||
* least in STRIPE_END state
|
||||
*/
|
||||
r5l_wake_reclaim(log, -1L);
|
||||
md_unregister_thread(&log->reclaim_thread);
|
||||
r5l_do_reclaim(log);
|
||||
}
|
||||
}
|
||||
|
||||
struct r5l_recovery_ctx {
|
||||
struct page *meta_page; /* current meta */
|
||||
sector_t meta_total_blocks; /* total size of current meta and data */
|
||||
@@ -1120,19 +1138,7 @@ io_kc:
|
||||
|
||||
void r5l_exit_log(struct r5l_log *log)
|
||||
{
|
||||
/*
|
||||
* at this point all stripes are finished, so io_unit is at least in
|
||||
* STRIPE_END state
|
||||
*/
|
||||
r5l_wake_reclaim(log, -1L);
|
||||
md_unregister_thread(&log->reclaim_thread);
|
||||
r5l_do_reclaim(log);
|
||||
/*
|
||||
* force a super update, r5l_do_reclaim might updated the super.
|
||||
* mddev->thread is already stopped
|
||||
*/
|
||||
md_update_sb(log->rdev->mddev, 1);
|
||||
|
||||
kmem_cache_destroy(log->io_kc);
|
||||
kfree(log);
|
||||
}
|
||||
|
Reference in New Issue
Block a user