diff options
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r-- | drivers/md/md.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index d5385188c445..9160463b5f68 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -1753,6 +1753,18 @@ static struct super_type super_types[] = { | |||
1753 | }, | 1753 | }, |
1754 | }; | 1754 | }; |
1755 | 1755 | ||
1756 | static void sync_super(mddev_t *mddev, mdk_rdev_t *rdev) | ||
1757 | { | ||
1758 | if (mddev->sync_super) { | ||
1759 | mddev->sync_super(mddev, rdev); | ||
1760 | return; | ||
1761 | } | ||
1762 | |||
1763 | BUG_ON(mddev->major_version >= ARRAY_SIZE(super_types)); | ||
1764 | |||
1765 | super_types[mddev->major_version].sync_super(mddev, rdev); | ||
1766 | } | ||
1767 | |||
1756 | static int match_mddev_units(mddev_t *mddev1, mddev_t *mddev2) | 1768 | static int match_mddev_units(mddev_t *mddev1, mddev_t *mddev2) |
1757 | { | 1769 | { |
1758 | mdk_rdev_t *rdev, *rdev2; | 1770 | mdk_rdev_t *rdev, *rdev2; |
@@ -2171,8 +2183,7 @@ static void sync_sbs(mddev_t * mddev, int nospares) | |||
2171 | /* Don't update this superblock */ | 2183 | /* Don't update this superblock */ |
2172 | rdev->sb_loaded = 2; | 2184 | rdev->sb_loaded = 2; |
2173 | } else { | 2185 | } else { |
2174 | super_types[mddev->major_version]. | 2186 | sync_super(mddev, rdev); |
2175 | sync_super(mddev, rdev); | ||
2176 | rdev->sb_loaded = 1; | 2187 | rdev->sb_loaded = 1; |
2177 | } | 2188 | } |
2178 | } | 2189 | } |