On Tue, 2017-10-10 at 18:48 -0700, Shaohua Li wrote: > The problem is __md_stop_writes set some bit like MD_RECOVERY_FROZEN, which > will prevent md_check_recovery restarting resync/reshape. I think we need > preserve mddev->recovery in suspend prepare and restore after resume Hello Shaohua, As far as I can see __md_stop_writes() sets MD_RECOVERY_FROZEN and can set MD_RECOVERY_INTR. Since md_check_recovery() clears MD_RECOVERY_INTR I think it should be sufficient to save and restore the state of the MD_RECOVERY_FROZEN flag. However, when I ran the following test: * echo frozen > /sys/block/md0/md/sync_action * cat /sys/block/md0/md/sync_action * systemctl hibernate * (power on system again) * cat /sys/block/md0/md/sync_action the output that appeared was as follows: frozen idle Does that mean that a hibernate or suspend followed by a resume is sufficient to clear the MD_RECOVERY_FROZEN flag for the md drivers and hence that the patch at the start of this e-mail thread does not need any further modifications? Thanks, Bart.