Loading drivers/md/raid5.c +26 −13 Original line number Diff line number Diff line Loading @@ -4566,23 +4566,15 @@ raid5_show_stripe_cache_size(mddev_t *mddev, char *page) return 0; } static ssize_t raid5_store_stripe_cache_size(mddev_t *mddev, const char *page, size_t len) int raid5_set_cache_size(mddev_t *mddev, int size) { raid5_conf_t *conf = mddev->private; unsigned long new; int err; if (len >= PAGE_SIZE) if (size <= 16 || size > 32768) return -EINVAL; if (!conf) return -ENODEV; if (strict_strtoul(page, 10, &new)) return -EINVAL; if (new <= 16 || new > 32768) return -EINVAL; while (new < conf->max_nr_stripes) { while (size < conf->max_nr_stripes) { if (drop_one_stripe(conf)) conf->max_nr_stripes--; else Loading @@ -4591,11 +4583,32 @@ raid5_store_stripe_cache_size(mddev_t *mddev, const char *page, size_t len) err = md_allow_write(mddev); if (err) return err; while (new > conf->max_nr_stripes) { while (size > conf->max_nr_stripes) { if (grow_one_stripe(conf)) conf->max_nr_stripes++; else break; } return 0; } EXPORT_SYMBOL(raid5_set_cache_size); static ssize_t raid5_store_stripe_cache_size(mddev_t *mddev, const char *page, size_t len) { raid5_conf_t *conf = mddev->private; unsigned long new; int err; if (len >= PAGE_SIZE) return -EINVAL; if (!conf) return -ENODEV; if (strict_strtoul(page, 10, &new)) return -EINVAL; err = raid5_set_cache_size(mddev, new); if (err) return err; return len; } Loading drivers/md/raid5.h +1 −0 Original line number Diff line number Diff line Loading @@ -497,4 +497,5 @@ static inline int algorithm_is_DDF(int layout) { return layout >= 8 && layout <= 10; } extern int raid5_set_cache_size(mddev_t *mddev, int size); #endif Loading
drivers/md/raid5.c +26 −13 Original line number Diff line number Diff line Loading @@ -4566,23 +4566,15 @@ raid5_show_stripe_cache_size(mddev_t *mddev, char *page) return 0; } static ssize_t raid5_store_stripe_cache_size(mddev_t *mddev, const char *page, size_t len) int raid5_set_cache_size(mddev_t *mddev, int size) { raid5_conf_t *conf = mddev->private; unsigned long new; int err; if (len >= PAGE_SIZE) if (size <= 16 || size > 32768) return -EINVAL; if (!conf) return -ENODEV; if (strict_strtoul(page, 10, &new)) return -EINVAL; if (new <= 16 || new > 32768) return -EINVAL; while (new < conf->max_nr_stripes) { while (size < conf->max_nr_stripes) { if (drop_one_stripe(conf)) conf->max_nr_stripes--; else Loading @@ -4591,11 +4583,32 @@ raid5_store_stripe_cache_size(mddev_t *mddev, const char *page, size_t len) err = md_allow_write(mddev); if (err) return err; while (new > conf->max_nr_stripes) { while (size > conf->max_nr_stripes) { if (grow_one_stripe(conf)) conf->max_nr_stripes++; else break; } return 0; } EXPORT_SYMBOL(raid5_set_cache_size); static ssize_t raid5_store_stripe_cache_size(mddev_t *mddev, const char *page, size_t len) { raid5_conf_t *conf = mddev->private; unsigned long new; int err; if (len >= PAGE_SIZE) return -EINVAL; if (!conf) return -ENODEV; if (strict_strtoul(page, 10, &new)) return -EINVAL; err = raid5_set_cache_size(mddev, new); if (err) return err; return len; } Loading
drivers/md/raid5.h +1 −0 Original line number Diff line number Diff line Loading @@ -497,4 +497,5 @@ static inline int algorithm_is_DDF(int layout) { return layout >= 8 && layout <= 10; } extern int raid5_set_cache_size(mddev_t *mddev, int size); #endif