Hi, Shaohua. when we stop raid5 array with "mdadm -S" or reboot the system, md module will call raid5_quiesce and r5l_quiesce to do some clean work. Some code of r5l_quiesce was pasted bellow. /* make sure r5l_write_super_and_discard_space exits */ mddev = log->rdev->mddev; wake_up(&mddev->sb_wait); r5l_wake_reclaim(log, -1L); md_unregister_thread(&log->reclaim_thread); r5l_do_reclaim(log); + md_update_sb(mddev, 1); It will reclaim all used space of log and call r5l_write_super to reset rdev->journal_tail to log->next_checkpoint . However, new rdev->journal_tail would not be written to journal device for persistent because journal device may not support discard operation or due to mddev_trylock fail (this trylock should always get failed since raid5_quiesce was called with reconfig_mutex hold, isn't it?). As a result, it will take a long time to recovery the log when the arrary was restarted. Should r5l_quiesce call md_update_sb directly to guarantee superblock update?��.n��������+%������w��{.n�����{����w��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f