Commit 545c87957f4d53867b62921625f36df8c4b1bc08
1 parent
96e67703e7
Exists in
master
and in
20 other branches
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 | } |
drivers/md/md.c
... | ... | @@ -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); |
drivers/md/md.h
... | ... | @@ -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); |