]> git.hungrycats.org Git - linux/commitdiff
[PATCH] MD - Remove bdput calls from raid personalities.
authorNeil Brown <neilb@cse.unsw.edu.au>
Fri, 19 Jul 2002 02:06:03 +0000 (19:06 -0700)
committerTrond Myklebust <trond.myklebust@fys.uio.no>
Fri, 19 Jul 2002 02:06:03 +0000 (19:06 -0700)
Remove bdput calls from raid personalities.

Some of the md personalities currently hold a counted reference
on a bdev.  This is not necessary as the main md module will always
hold a counted reference in the rdev.
This patch removes the code to take and drop these unnecessary
references.

drivers/md/linear.c
drivers/md/multipath.c
drivers/md/raid1.c

index daeeb075182c32af9aba7073f98acda058ab14ee..5e71165662ebbf0b2c398987744a118de02b3a32 100644 (file)
@@ -61,7 +61,6 @@ static int linear_run (mddev_t *mddev)
                }
 
                disk->bdev = rdev->bdev;
-               atomic_inc(&rdev->bdev->bd_count);
                disk->size = rdev->size;
 
                if (!conf->smallest || (disk->size < conf->smallest->size))
@@ -112,12 +111,8 @@ static int linear_run (mddev_t *mddev)
        return 0;
 
 out:
-       if (conf) {
-               for (i = 0; i < MD_SB_DISKS; i++)
-                       if (conf->disks[i].bdev)
-                               bdput(conf->disks[i].bdev);
+       if (conf)
                kfree(conf);
-       }
        MOD_DEC_USE_COUNT;
        return 1;
 }
@@ -125,11 +120,7 @@ out:
 static int linear_stop (mddev_t *mddev)
 {
        linear_conf_t *conf = mddev_to_conf(mddev);
-       int i;
   
-       for (i = 0; i < MD_SB_DISKS; i++)
-               if (conf->disks[i].bdev)
-                       bdput(conf->disks[i].bdev);
        kfree(conf->hash_table);
        kfree(conf);
 
index ac08a9a90611f8cd7cf61bedcaf6421f109ce50d..72e046c78bbdf4bf60dbd4e17b1cddef5b337182 100644 (file)
@@ -881,7 +881,6 @@ static int multipath_run (mddev_t *mddev)
                disk->number = desc->number;
                disk->raid_disk = desc->raid_disk;
                disk->bdev = rdev->bdev;
-               atomic_inc(&rdev->bdev->bd_count);
                disk->operational = 0;
                disk->spare = 1;
                disk->used_slot = 1;
@@ -1006,9 +1005,6 @@ static int multipath_run (mddev_t *mddev)
 
 out_free_conf:
        multipath_shrink_mpbh(conf);
-       for (i = 0; i < MD_SB_DISKS; i++)
-               if (conf->multipaths[i].bdev)
-                       bdput(conf->multipaths[i].bdev);
        kfree(conf);
        mddev->private = NULL;
 out:
@@ -1031,13 +1027,9 @@ out:
 static int multipath_stop (mddev_t *mddev)
 {
        multipath_conf_t *conf = mddev_to_conf(mddev);
-       int i;
 
        md_unregister_thread(conf->thread);
        multipath_shrink_mpbh(conf);
-       for (i = 0; i < MD_SB_DISKS; i++)
-               if (conf->multipaths[i].bdev)
-                       bdput(conf->multipaths[i].bdev);
        kfree(conf);
        mddev->private = NULL;
        MOD_DEC_USE_COUNT;
index 088993cf5165d7d24dbdb0de00782e67c4a27ad4..caf5cd626095320acfbeb53e9e71e9673636c4b6 100644 (file)
@@ -1301,7 +1301,6 @@ static int run(mddev_t *mddev)
                        disk->number = descriptor->number;
                        disk->raid_disk = disk_idx;
                        disk->bdev = rdev->bdev;
-                       atomic_inc(&rdev->bdev->bd_count);
                        disk->operational = 0;
                        disk->write_only = 0;
                        disk->spare = 0;
@@ -1333,7 +1332,6 @@ static int run(mddev_t *mddev)
                        disk->number = descriptor->number;
                        disk->raid_disk = disk_idx;
                        disk->bdev = rdev->bdev;
-                       atomic_inc(&rdev->bdev->bd_count);
                        disk->operational = 1;
                        disk->write_only = 0;
                        disk->spare = 0;
@@ -1348,7 +1346,6 @@ static int run(mddev_t *mddev)
                        disk->number = descriptor->number;
                        disk->raid_disk = disk_idx;
                        disk->bdev = rdev->bdev;
-                       atomic_inc(&rdev->bdev->bd_count);
                        disk->operational = 0;
                        disk->write_only = 0;
                        disk->spare = 1;
@@ -1434,9 +1431,6 @@ static int run(mddev_t *mddev)
 out_free_conf:
        if (conf->r1bio_pool)
                mempool_destroy(conf->r1bio_pool);
-       for (i = 0; i < MD_SB_DISKS; i++)
-               if (conf->mirrors[i].bdev)
-                       bdput(conf->mirrors[i].bdev);
        kfree(conf);
        mddev->private = NULL;
 out:
@@ -1447,14 +1441,10 @@ out:
 static int stop(mddev_t *mddev)
 {
        conf_t *conf = mddev_to_conf(mddev);
-       int i;
 
        md_unregister_thread(conf->thread);
        if (conf->r1bio_pool)
                mempool_destroy(conf->r1bio_pool);
-       for (i = 0; i < MD_SB_DISKS; i++)
-               if (conf->mirrors[i].bdev)
-                       bdput(conf->mirrors[i].bdev);
        kfree(conf);
        mddev->private = NULL;
        MOD_DEC_USE_COUNT;