Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0232605d authored by NeilBrown's avatar NeilBrown
Browse files

md: make 'name' arg to md_register_thread non-optional.



Having the 'name' arg optional and defaulting to the current
personality name is no necessary and leads to errors, as when
changing the level of an array we can end up using the
name of the old level instead of the new one.

So make it non-optional and always explicitly pass the name
of the level that the array will be.

Reported-by: default avatarmajianpeng <majianpeng@gmail.com>
Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent 055d3747
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6751,7 +6751,7 @@ struct md_thread *md_register_thread(void (*run) (struct mddev *), struct mddev
	thread->tsk = kthread_run(md_thread, thread,
				  "%s_%s",
				  mdname(thread->mddev),
				  name ?: mddev->pers->name);
				  name);
	if (IS_ERR(thread->tsk)) {
		kfree(thread);
		return NULL;
+2 −1
Original line number Diff line number Diff line
@@ -474,7 +474,8 @@ static int multipath_run (struct mddev *mddev)
	}

	{
		mddev->thread = md_register_thread(multipathd, mddev, NULL);
		mddev->thread = md_register_thread(multipathd, mddev,
						   "multipath");
		if (!mddev->thread) {
			printk(KERN_ERR "multipath: couldn't allocate thread"
				" for %s\n", mdname(mddev));
+1 −1
Original line number Diff line number Diff line
@@ -2621,7 +2621,7 @@ static struct r1conf *setup_conf(struct mddev *mddev)
		goto abort;
	}
	err = -ENOMEM;
	conf->thread = md_register_thread(raid1d, mddev, NULL);
	conf->thread = md_register_thread(raid1d, mddev, "raid1");
	if (!conf->thread) {
		printk(KERN_ERR
		       "md/raid1:%s: couldn't allocate thread\n",
+1 −1
Original line number Diff line number Diff line
@@ -3427,7 +3427,7 @@ static struct r10conf *setup_conf(struct mddev *mddev)
	spin_lock_init(&conf->resync_lock);
	init_waitqueue_head(&conf->wait_barrier);

	conf->thread = md_register_thread(raid10d, mddev, NULL);
	conf->thread = md_register_thread(raid10d, mddev, "raid10");
	if (!conf->thread)
		goto out;

+3 −1
Original line number Diff line number Diff line
@@ -4840,6 +4840,7 @@ static struct r5conf *setup_conf(struct mddev *mddev)
	int raid_disk, memory, max_disks;
	struct md_rdev *rdev;
	struct disk_info *disk;
	char pers_name[6];

	if (mddev->new_level != 5
	    && mddev->new_level != 4
@@ -4963,7 +4964,8 @@ static struct r5conf *setup_conf(struct mddev *mddev)
		printk(KERN_INFO "md/raid:%s: allocated %dkB\n",
		       mdname(mddev), memory);

	conf->thread = md_register_thread(raid5d, mddev, NULL);
	sprintf(pers_name, "raid%d", mddev->new_level);
	conf->thread = md_register_thread(raid5d, mddev, pers_name);
	if (!conf->thread) {
		printk(KERN_ERR
		       "md/raid:%s: couldn't allocate thread.\n",