Loading drivers/md/raid5.c +20 −0 Original line number Diff line number Diff line Loading @@ -6682,6 +6682,7 @@ raid5_store_stripe_size(struct mddev *mddev, const char *page, size_t len) struct r5conf *conf; unsigned long new; int err; int size; if (len >= PAGE_SIZE) return -EINVAL; Loading Loading @@ -6714,10 +6715,29 @@ raid5_store_stripe_size(struct mddev *mddev, const char *page, size_t len) pr_debug("md/raid: change stripe_size from %lu to %lu\n", conf->stripe_size, new); if (mddev->sync_thread || test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || mddev->reshape_position != MaxSector || mddev->sysfs_active) { err = -EBUSY; goto out_unlock; } mddev_suspend(mddev); mutex_lock(&conf->cache_size_mutex); size = conf->max_nr_stripes; shrink_stripes(conf); conf->stripe_size = new; conf->stripe_shift = ilog2(new) - 9; conf->stripe_sectors = new >> 9; if (grow_stripes(conf, size)) { pr_warn("md/raid:%s: couldn't allocate buffers\n", mdname(mddev)); err = -ENOMEM; } mutex_unlock(&conf->cache_size_mutex); mddev_resume(mddev); out_unlock: Loading Loading
drivers/md/raid5.c +20 −0 Original line number Diff line number Diff line Loading @@ -6682,6 +6682,7 @@ raid5_store_stripe_size(struct mddev *mddev, const char *page, size_t len) struct r5conf *conf; unsigned long new; int err; int size; if (len >= PAGE_SIZE) return -EINVAL; Loading Loading @@ -6714,10 +6715,29 @@ raid5_store_stripe_size(struct mddev *mddev, const char *page, size_t len) pr_debug("md/raid: change stripe_size from %lu to %lu\n", conf->stripe_size, new); if (mddev->sync_thread || test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || mddev->reshape_position != MaxSector || mddev->sysfs_active) { err = -EBUSY; goto out_unlock; } mddev_suspend(mddev); mutex_lock(&conf->cache_size_mutex); size = conf->max_nr_stripes; shrink_stripes(conf); conf->stripe_size = new; conf->stripe_shift = ilog2(new) - 9; conf->stripe_sectors = new >> 9; if (grow_stripes(conf, size)) { pr_warn("md/raid:%s: couldn't allocate buffers\n", mdname(mddev)); err = -ENOMEM; } mutex_unlock(&conf->cache_size_mutex); mddev_resume(mddev); out_unlock: Loading