]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
raid5: remove worker_cnt_per_group argument from alloc_thread_groups
authorGuoqing Jiang <guoqing.jiang@cloud.ionos.com>
Fri, 20 Dec 2019 14:46:29 +0000 (15:46 +0100)
committerSong Liu <songliubraving@fb.com>
Mon, 13 Jan 2020 19:44:09 +0000 (11:44 -0800)
We can use "cnt" directly to update conf->worker_cnt_per_group
if alloc_thread_groups returns 0.

Signed-off-by: Guoqing Jiang <guoqing.jiang@cloud.ionos.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
drivers/md/raid5.c

index d4d3b67ffbba7c7b57b142efb5f9441d8511c9a1..ba00e9877f025caff86ae8efa93029f9664f2085 100644 (file)
@@ -6598,7 +6598,6 @@ raid5_show_group_thread_cnt(struct mddev *mddev, char *page)
 
 static int alloc_thread_groups(struct r5conf *conf, int cnt,
                               int *group_cnt,
-                              int *worker_cnt_per_group,
                               struct r5worker_group **worker_groups);
 static ssize_t
 raid5_store_group_thread_cnt(struct mddev *mddev, const char *page, size_t len)
@@ -6607,7 +6606,7 @@ raid5_store_group_thread_cnt(struct mddev *mddev, const char *page, size_t len)
        unsigned int new;
        int err;
        struct r5worker_group *new_groups, *old_groups;
-       int group_cnt, worker_cnt_per_group;
+       int group_cnt;
 
        if (len >= PAGE_SIZE)
                return -EINVAL;
@@ -6630,13 +6629,11 @@ raid5_store_group_thread_cnt(struct mddev *mddev, const char *page, size_t len)
                if (old_groups)
                        flush_workqueue(raid5_wq);
 
-               err = alloc_thread_groups(conf, new,
-                                         &group_cnt, &worker_cnt_per_group,
-                                         &new_groups);
+               err = alloc_thread_groups(conf, new, &group_cnt, &new_groups);
                if (!err) {
                        spin_lock_irq(&conf->device_lock);
                        conf->group_cnt = group_cnt;
-                       conf->worker_cnt_per_group = worker_cnt_per_group;
+                       conf->worker_cnt_per_group = new;
                        conf->worker_groups = new_groups;
                        spin_unlock_irq(&conf->device_lock);
 
@@ -6672,16 +6669,13 @@ static struct attribute_group raid5_attrs_group = {
        .attrs = raid5_attrs,
 };
 
-static int alloc_thread_groups(struct r5conf *conf, int cnt,
-                              int *group_cnt,
-                              int *worker_cnt_per_group,
+static int alloc_thread_groups(struct r5conf *conf, int cnt, int *group_cnt,
                               struct r5worker_group **worker_groups)
 {
        int i, j, k;
        ssize_t size;
        struct r5worker *workers;
 
-       *worker_cnt_per_group = cnt;
        if (cnt == 0) {
                *group_cnt = 0;
                *worker_groups = NULL;
@@ -6882,7 +6876,7 @@ static struct r5conf *setup_conf(struct mddev *mddev)
        struct disk_info *disk;
        char pers_name[6];
        int i;
-       int group_cnt, worker_cnt_per_group;
+       int group_cnt;
        struct r5worker_group *new_group;
        int ret;
 
@@ -6928,10 +6922,9 @@ static struct r5conf *setup_conf(struct mddev *mddev)
        for (i = 0; i < PENDING_IO_MAX; i++)
                list_add(&conf->pending_data[i].sibling, &conf->free_list);
        /* Don't enable multi-threading by default*/
-       if (!alloc_thread_groups(conf, 0, &group_cnt, &worker_cnt_per_group,
-                                &new_group)) {
+       if (!alloc_thread_groups(conf, 0, &group_cnt, &new_group)) {
                conf->group_cnt = group_cnt;
-               conf->worker_cnt_per_group = worker_cnt_per_group;
+               conf->worker_cnt_per_group = 0;
                conf->worker_groups = new_group;
        } else
                goto abort;