diff options
-rw-r--r-- | drivers/md/md.c | 15 | ||||
-rw-r--r-- | drivers/md/md.h | 1 |
2 files changed, 14 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 | } |
diff --git a/drivers/md/md.h b/drivers/md/md.h index 0b1fd3f1d85b..5e35535ab7c3 100644 --- a/drivers/md/md.h +++ b/drivers/md/md.h | |||
@@ -330,6 +330,7 @@ struct mddev_s | |||
330 | atomic_t flush_pending; | 330 | atomic_t flush_pending; |
331 | struct work_struct flush_work; | 331 | struct work_struct flush_work; |
332 | struct work_struct event_work; /* used by dm to report failure event */ | 332 | struct work_struct event_work; /* used by dm to report failure event */ |
333 | void (*sync_super)(mddev_t *mddev, mdk_rdev_t *rdev); | ||
333 | }; | 334 | }; |
334 | 335 | ||
335 | 336 | ||