diff options
Diffstat (limited to 'drivers/md/raid5.c')
-rw-r--r-- | drivers/md/raid5.c | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 50d01144b805..b5d2601483e3 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -2196,15 +2196,16 @@ static int grow_one_stripe(struct r5conf *conf, gfp_t gfp) | |||
2196 | static int grow_stripes(struct r5conf *conf, int num) | 2196 | static int grow_stripes(struct r5conf *conf, int num) |
2197 | { | 2197 | { |
2198 | struct kmem_cache *sc; | 2198 | struct kmem_cache *sc; |
2199 | size_t namelen = sizeof(conf->cache_name[0]); | ||
2199 | int devs = max(conf->raid_disks, conf->previous_raid_disks); | 2200 | int devs = max(conf->raid_disks, conf->previous_raid_disks); |
2200 | 2201 | ||
2201 | if (conf->mddev->gendisk) | 2202 | if (conf->mddev->gendisk) |
2202 | sprintf(conf->cache_name[0], | 2203 | snprintf(conf->cache_name[0], namelen, |
2203 | "raid%d-%s", conf->level, mdname(conf->mddev)); | 2204 | "raid%d-%s", conf->level, mdname(conf->mddev)); |
2204 | else | 2205 | else |
2205 | sprintf(conf->cache_name[0], | 2206 | snprintf(conf->cache_name[0], namelen, |
2206 | "raid%d-%p", conf->level, conf->mddev); | 2207 | "raid%d-%p", conf->level, conf->mddev); |
2207 | sprintf(conf->cache_name[1], "%s-alt", conf->cache_name[0]); | 2208 | snprintf(conf->cache_name[1], namelen, "%.27s-alt", conf->cache_name[0]); |
2208 | 2209 | ||
2209 | conf->active_name = 0; | 2210 | conf->active_name = 0; |
2210 | sc = kmem_cache_create(conf->cache_name[conf->active_name], | 2211 | sc = kmem_cache_create(conf->cache_name[conf->active_name], |
@@ -6764,9 +6765,7 @@ static void free_conf(struct r5conf *conf) | |||
6764 | 6765 | ||
6765 | log_exit(conf); | 6766 | log_exit(conf); |
6766 | 6767 | ||
6767 | if (conf->shrinker.nr_deferred) | 6768 | unregister_shrinker(&conf->shrinker); |
6768 | unregister_shrinker(&conf->shrinker); | ||
6769 | |||
6770 | free_thread_groups(conf); | 6769 | free_thread_groups(conf); |
6771 | shrink_stripes(conf); | 6770 | shrink_stripes(conf); |
6772 | raid5_free_percpu(conf); | 6771 | raid5_free_percpu(conf); |
@@ -8001,13 +8000,7 @@ static void raid5_finish_reshape(struct mddev *mddev) | |||
8001 | 8000 | ||
8002 | if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { | 8001 | if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { |
8003 | 8002 | ||
8004 | if (mddev->delta_disks > 0) { | 8003 | if (mddev->delta_disks <= 0) { |
8005 | md_set_array_sectors(mddev, raid5_size(mddev, 0, 0)); | ||
8006 | if (mddev->queue) { | ||
8007 | set_capacity(mddev->gendisk, mddev->array_sectors); | ||
8008 | revalidate_disk(mddev->gendisk); | ||
8009 | } | ||
8010 | } else { | ||
8011 | int d; | 8004 | int d; |
8012 | spin_lock_irq(&conf->device_lock); | 8005 | spin_lock_irq(&conf->device_lock); |
8013 | mddev->degraded = raid5_calc_degraded(conf); | 8006 | mddev->degraded = raid5_calc_degraded(conf); |