Commit 545c87957f4d53867b62921625f36df8c4b1bc08

Authored by NeilBrown
1 parent 96e67703e7

md: dm-raid should call helper function to clear rdev.

dm-raid currently open-codes the freeing of some members of
and rdev.  It is more maintainable to have it call common code
from md.c which does this for all call-sites.

So remove free_disk_sb to md_rdev_clear, export it, and use it in
dm-raid.c

Signed-off-by: NeilBrown <neilb@suse.de>

Showing 3 changed files with 6 additions and 8 deletions Side-by-side Diff

drivers/md/dm-raid.c
... ... @@ -155,10 +155,7 @@
155 155 for (i = 0; i < rs->md.raid_disks; i++) {
156 156 if (rs->dev[i].meta_dev)
157 157 dm_put_device(rs->ti, rs->dev[i].meta_dev);
158   - if (rs->dev[i].rdev.sb_page)
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;
  158 + md_rdev_clear(&rs->dev[i].rdev);
162 159 if (rs->dev[i].data_dev)
163 160 dm_put_device(rs->ti, rs->dev[i].data_dev);
164 161 }
... ... @@ -803,7 +803,7 @@
803 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 808 if (rdev->sb_page) {
809 809 put_page(rdev->sb_page);
810 810  
... ... @@ -817,8 +817,8 @@
817 817 rdev->bb_page = NULL;
818 818 }
819 819 }
  820 +EXPORT_SYMBOL_GPL(md_rdev_clear);
820 821  
821   -
822 822 static void super_written(struct bio *bio, int error)
823 823 {
824 824 struct md_rdev *rdev = bio->bi_private;
... ... @@ -2244,7 +2244,7 @@
2244 2244 bdevname(rdev->bdev,b));
2245 2245 if (rdev->mddev)
2246 2246 MD_BUG();
2247   - free_disk_sb(rdev);
  2247 + md_rdev_clear(rdev);
2248 2248 #ifndef MODULE
2249 2249 if (test_bit(AutoDetected, &rdev->flags))
2250 2250 md_autodetect_dev(rdev->bdev->bd_dev);
... ... @@ -3324,7 +3324,7 @@
3324 3324 abort_free:
3325 3325 if (rdev->bdev)
3326 3326 unlock_rdev(rdev);
3327   - free_disk_sb(rdev);
  3327 + md_rdev_clear(rdev);
3328 3328 kfree(rdev->badblocks.page);
3329 3329 kfree(rdev);
3330 3330 return ERR_PTR(err);
... ... @@ -619,6 +619,7 @@
619 619 extern void md_stop(struct mddev *mddev);
620 620 extern void md_stop_writes(struct mddev *mddev);
621 621 extern int md_rdev_init(struct md_rdev *rdev);
  622 +extern void md_rdev_clear(struct md_rdev *rdev);
622 623  
623 624 extern void mddev_suspend(struct mddev *mddev);
624 625 extern void mddev_resume(struct mddev *mddev);