From: NeilBrown Date: Tue, 7 Sep 2010 07:02:47 +0000 (+1000) Subject: md: call md_update_sb even for 'external' metadata arrays. X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=126925c090155f13e90b9e7e8c4010e96027c00a;p=GitHub%2FLineageOS%2Fandroid_kernel_samsung_universal7580.git md: call md_update_sb even for 'external' metadata arrays. Now that we depend on md_update_sb to clear variable bits in mddev->flags (rather than trying not to set them) it is important to always call md_update_sb when appropriate. md_check_recovery has this job but explicitly avoids it for ->external metadata arrays. This is not longer appropraite, or needed. However we do want to avoid taking the mddev lock if only MD_CHANGE_PENDING is set as that is not cleared by md_update_sb for external-metadata arrays. Reported-by: "Kwolek, Adam" Signed-off-by: NeilBrown --- diff --git a/drivers/md/md.c b/drivers/md/md.c index 43cf9cc9c1d..bdd9bba577b 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -7069,7 +7069,7 @@ void md_check_recovery(mddev_t *mddev) if (mddev->ro && !test_bit(MD_RECOVERY_NEEDED, &mddev->recovery)) return; if ( ! ( - (mddev->flags && !mddev->external) || + (mddev->flags & ~ (1<recovery) || test_bit(MD_RECOVERY_DONE, &mddev->recovery) || (mddev->external == 0 && mddev->safemode == 1) ||