diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/md/dm-raid.c | 5 | ||||
-rw-r--r-- | drivers/md/md.c | 8 | ||||
-rw-r--r-- | drivers/md/md.h | 1 |
3 files changed, 6 insertions, 8 deletions
diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c index 68965e663248..73a068da10d9 100644 --- a/drivers/md/dm-raid.c +++ b/drivers/md/dm-raid.c | |||
@@ -155,10 +155,7 @@ static void context_free(struct raid_set *rs) | |||
155 | for (i = 0; i < rs->md.raid_disks; i++) { | 155 | for (i = 0; i < rs->md.raid_disks; i++) { |
156 | if (rs->dev[i].meta_dev) | 156 | if (rs->dev[i].meta_dev) |
157 | dm_put_device(rs->ti, rs->dev[i].meta_dev); | 157 | dm_put_device(rs->ti, rs->dev[i].meta_dev); |
158 | if (rs->dev[i].rdev.sb_page) | 158 | md_rdev_clear(&rs->dev[i].rdev); |
159 | put_page(rs->dev[i].rdev.sb_page); | ||
160 | rs->dev[i].rdev.sb_page = NULL; | ||
161 | rs->dev[i].rdev.sb_loaded = 0; | ||
162 | if (rs->dev[i].data_dev) | 159 | if (rs->dev[i].data_dev) |
163 | dm_put_device(rs->ti, rs->dev[i].data_dev); | 160 | dm_put_device(rs->ti, rs->dev[i].data_dev); |
164 | } | 161 | } |
diff --git a/drivers/md/md.c b/drivers/md/md.c index 8fe1abf1b89c..d557e557ff8f 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -803,7 +803,7 @@ static int alloc_disk_sb(struct md_rdev * rdev) | |||
803 | return 0; | 803 | return 0; |
804 | } | 804 | } |
805 | 805 | ||
806 | static void free_disk_sb(struct md_rdev * rdev) | 806 | void md_rdev_clear(struct md_rdev *rdev) |
807 | { | 807 | { |
808 | if (rdev->sb_page) { | 808 | if (rdev->sb_page) { |
809 | put_page(rdev->sb_page); | 809 | put_page(rdev->sb_page); |
@@ -817,7 +817,7 @@ static void free_disk_sb(struct md_rdev * rdev) | |||
817 | rdev->bb_page = NULL; | 817 | rdev->bb_page = NULL; |
818 | } | 818 | } |
819 | } | 819 | } |
820 | 820 | EXPORT_SYMBOL_GPL(md_rdev_clear); | |
821 | 821 | ||
822 | static void super_written(struct bio *bio, int error) | 822 | static void super_written(struct bio *bio, int error) |
823 | { | 823 | { |
@@ -2244,7 +2244,7 @@ static void export_rdev(struct md_rdev * rdev) | |||
2244 | bdevname(rdev->bdev,b)); | 2244 | bdevname(rdev->bdev,b)); |
2245 | if (rdev->mddev) | 2245 | if (rdev->mddev) |
2246 | MD_BUG(); | 2246 | MD_BUG(); |
2247 | free_disk_sb(rdev); | 2247 | md_rdev_clear(rdev); |
2248 | #ifndef MODULE | 2248 | #ifndef MODULE |
2249 | if (test_bit(AutoDetected, &rdev->flags)) | 2249 | if (test_bit(AutoDetected, &rdev->flags)) |
2250 | md_autodetect_dev(rdev->bdev->bd_dev); | 2250 | md_autodetect_dev(rdev->bdev->bd_dev); |
@@ -3324,7 +3324,7 @@ static struct md_rdev *md_import_device(dev_t newdev, int super_format, int supe | |||
3324 | abort_free: | 3324 | abort_free: |
3325 | if (rdev->bdev) | 3325 | if (rdev->bdev) |
3326 | unlock_rdev(rdev); | 3326 | unlock_rdev(rdev); |
3327 | free_disk_sb(rdev); | 3327 | md_rdev_clear(rdev); |
3328 | kfree(rdev->badblocks.page); | 3328 | kfree(rdev->badblocks.page); |
3329 | kfree(rdev); | 3329 | kfree(rdev); |
3330 | return ERR_PTR(err); | 3330 | return ERR_PTR(err); |
diff --git a/drivers/md/md.h b/drivers/md/md.h index 98913e8dac1a..360937389e64 100644 --- a/drivers/md/md.h +++ b/drivers/md/md.h | |||
@@ -619,6 +619,7 @@ extern int md_run(struct mddev *mddev); | |||
619 | extern void md_stop(struct mddev *mddev); | 619 | extern void md_stop(struct mddev *mddev); |
620 | extern void md_stop_writes(struct mddev *mddev); | 620 | extern void md_stop_writes(struct mddev *mddev); |
621 | extern int md_rdev_init(struct md_rdev *rdev); | 621 | extern int md_rdev_init(struct md_rdev *rdev); |
622 | extern void md_rdev_clear(struct md_rdev *rdev); | ||
622 | 623 | ||
623 | extern void mddev_suspend(struct mddev *mddev); | 624 | extern void mddev_suspend(struct mddev *mddev); |
624 | extern void mddev_resume(struct mddev *mddev); | 625 | extern void mddev_resume(struct mddev *mddev); |