aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGoldwyn Rodrigues <rgoldwyn@suse.de>2015-04-14 11:43:55 -0400
committerNeilBrown <neilb@suse.de>2015-04-21 17:59:39 -0400
commit57d051dccaef395e0d8c0fff02cfc3a77bacc88c (patch)
tree250d78ba0fad52865ad28f54de4dd21e810cb14f
parentfb56dfef4e31f214cfbfa0eb8a1949591c20b118 (diff)
md: Export and rename find_rdev_nr_rcu
This is required by the clustering module (patches to follow) to find the device to remove or re-add. Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com> Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r--drivers/md/md.c9
-rw-r--r--drivers/md/md.h1
2 files changed, 6 insertions, 4 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index bc1e43014292..d406a79f9140 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -642,7 +642,7 @@ void mddev_unlock(struct mddev *mddev)
642} 642}
643EXPORT_SYMBOL_GPL(mddev_unlock); 643EXPORT_SYMBOL_GPL(mddev_unlock);
644 644
645static struct md_rdev *find_rdev_nr_rcu(struct mddev *mddev, int nr) 645struct md_rdev *md_find_rdev_nr_rcu(struct mddev *mddev, int nr)
646{ 646{
647 struct md_rdev *rdev; 647 struct md_rdev *rdev;
648 648
@@ -652,6 +652,7 @@ static struct md_rdev *find_rdev_nr_rcu(struct mddev *mddev, int nr)
652 652
653 return NULL; 653 return NULL;
654} 654}
655EXPORT_SYMBOL_GPL(md_find_rdev_nr_rcu);
655 656
656static struct md_rdev *find_rdev(struct mddev *mddev, dev_t dev) 657static struct md_rdev *find_rdev(struct mddev *mddev, dev_t dev)
657{ 658{
@@ -2049,11 +2050,11 @@ static int bind_rdev_to_array(struct md_rdev *rdev, struct mddev *mddev)
2049 int choice = 0; 2050 int choice = 0;
2050 if (mddev->pers) 2051 if (mddev->pers)
2051 choice = mddev->raid_disks; 2052 choice = mddev->raid_disks;
2052 while (find_rdev_nr_rcu(mddev, choice)) 2053 while (md_find_rdev_nr_rcu(mddev, choice))
2053 choice++; 2054 choice++;
2054 rdev->desc_nr = choice; 2055 rdev->desc_nr = choice;
2055 } else { 2056 } else {
2056 if (find_rdev_nr_rcu(mddev, rdev->desc_nr)) { 2057 if (md_find_rdev_nr_rcu(mddev, rdev->desc_nr)) {
2057 rcu_read_unlock(); 2058 rcu_read_unlock();
2058 return -EBUSY; 2059 return -EBUSY;
2059 } 2060 }
@@ -5721,7 +5722,7 @@ static int get_disk_info(struct mddev *mddev, void __user * arg)
5721 return -EFAULT; 5722 return -EFAULT;
5722 5723
5723 rcu_read_lock(); 5724 rcu_read_lock();
5724 rdev = find_rdev_nr_rcu(mddev, info.number); 5725 rdev = md_find_rdev_nr_rcu(mddev, info.number);
5725 if (rdev) { 5726 if (rdev) {
5726 info.major = MAJOR(rdev->bdev->bd_dev); 5727 info.major = MAJOR(rdev->bdev->bd_dev);
5727 info.minor = MINOR(rdev->bdev->bd_dev); 5728 info.minor = MINOR(rdev->bdev->bd_dev);
diff --git a/drivers/md/md.h b/drivers/md/md.h
index d98c0d764d8f..ecdce36ec6b8 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -672,6 +672,7 @@ extern void md_unplug(struct blk_plug_cb *cb, bool from_schedule);
672extern void md_reload_sb(struct mddev *mddev); 672extern void md_reload_sb(struct mddev *mddev);
673extern void md_update_sb(struct mddev *mddev, int force); 673extern void md_update_sb(struct mddev *mddev, int force);
674extern void md_kick_rdev_from_array(struct md_rdev * rdev); 674extern void md_kick_rdev_from_array(struct md_rdev * rdev);
675struct md_rdev *md_find_rdev_nr_rcu(struct mddev *mddev, int nr);
675static inline int mddev_check_plugged(struct mddev *mddev) 676static inline int mddev_check_plugged(struct mddev *mddev)
676{ 677{
677 return !!blk_check_plugged(md_unplug, mddev, 678 return !!blk_check_plugged(md_unplug, mddev,