mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
md: do not delete safemode_timer in mddev_suspend
[ Upstream commit a8768a134518e406d41799a3594aeb74e0889cf7 ] The deletion of safemode_timer in mddev_suspend() is redundant and potentially harmful now. If timer is about to be woken up but gets deleted, 'in_sync' will remain 0 until the next write, causing array to stay in the 'active' state instead of transitioning to 'clean'. Commit0d9f4f135e("MD: Add del_timer_sync to mddev_suspend (fix nasty panic))" introduced this deletion for dm, because if timer fired after dm is destroyed, the resource which the timer depends on might have been freed. However, commit0dd84b3193("md: call __md_stop_writes in md_stop") added __md_stop_writes() to md_stop(), which is called before freeing resource. Timer is deleted in __md_stop_writes(), and the origin issue is resolved. Therefore, delete safemode_timer can be removed safely now. Signed-off-by: Li Nan <linan122@huawei.com> Reviewed-by: Yu Kuai <yukuai3@huawei.com> Signed-off-by: Song Liu <song@kernel.org> Link: https://lore.kernel.org/r/20240508092053.1447930-1-linan666@huaweicloud.com Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
aac3dd0539
commit
38ea2243a7
@@ -489,7 +489,6 @@ void mddev_suspend(struct mddev *mddev)
|
|||||||
clear_bit_unlock(MD_ALLOW_SB_UPDATE, &mddev->flags);
|
clear_bit_unlock(MD_ALLOW_SB_UPDATE, &mddev->flags);
|
||||||
wait_event(mddev->sb_wait, !test_bit(MD_UPDATING_SB, &mddev->flags));
|
wait_event(mddev->sb_wait, !test_bit(MD_UPDATING_SB, &mddev->flags));
|
||||||
|
|
||||||
del_timer_sync(&mddev->safemode_timer);
|
|
||||||
/* restrict memory reclaim I/O during raid array is suspend */
|
/* restrict memory reclaim I/O during raid array is suspend */
|
||||||
mddev->noio_flag = memalloc_noio_save();
|
mddev->noio_flag = memalloc_noio_save();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user