When raid takeovered, it used old personality to set task->comm[]. So we add judgement and set corrected task->comm[]. Signed-off-by: majianpeng <majianpeng@xxxxxxxxx> --- drivers/md/md.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) diff --git a/drivers/md/md.c b/drivers/md/md.c index 1c2f904..6b3ce6e 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -6738,11 +6738,25 @@ struct md_thread *md_register_thread(void (*run) (struct mddev *), struct mddev const char *name) { struct md_thread *thread; + struct md_personality *pers = NULL; thread = kzalloc(sizeof(struct md_thread), GFP_KERNEL); if (!thread) return NULL; + /* + *When raid takeovered,the mddev->pers was old,so the + *thread_name is wrong. + */ + if (name == NULL && mddev->level != mddev->new_level) { + spin_lock(&pers_lock); + list_for_each_entry(pers, &pers_list, list) + if (pers->level == mddev->new_level) { + name = pers->name; + break; + } + spin_unlock(&pers_lock); + } init_waitqueue_head(&thread->wqueue); thread->run = run; -- 1.7.5.4 ?韬{.n?????%??檩??w?{.n???{炳盯w???塄}?财??j:+v??????2??璀??摺?囤??z夸z罐?+?????w棹f