On Sun, 3 Jun 2012 20:49:05 -0700,neil wrote: >On Thu, 31 May 2012 15:41:22 +0800 "majianpeng" <majianpeng@xxxxxxxxx> wrote: > >> When raid takeovered, it used old personality to set task->comm. >> >> Signed-off-by: majianpeng <majianpeng@xxxxxxxxx> >> --- >> drivers/md/md.c | 15 +++++++++++++++ >> 1 files changed, 15 insertions(+), 0 deletions(-) >> >> diff --git a/drivers/md/md.c b/drivers/md/md.c >> index 1c2f904..93e20ea 100644 >> --- a/drivers/md/md.c >> +++ b/drivers/md/md.c >> @@ -32,6 +32,7 @@ >> Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. >> */ >> >> +#include <linux/sched.h> >> #include <linux/kthread.h> >> #include <linux/blkdev.h> >> #include <linux/sysctl.h> >> @@ -3513,6 +3514,7 @@ level_store(struct mddev *mddev, const char *buf, size_t len) >> long level; >> void *priv; >> struct md_rdev *rdev; >> + char *tmp; >> >> if (mddev->pers == NULL) { >> if (len == 0) >> @@ -3674,6 +3676,19 @@ level_store(struct mddev *mddev, const char *buf, size_t len) >> del_timer_sync(&mddev->safemode_timer); >> } >> pers->run(mddev); >> + /* >> + * when raid takeover using old personality,so mddev->thread->tsk >> + * name is wrong. >> + * if kzalloc error, only using wrong name. >> + */ >> + len = strlen(mdname(mddev)) + strlen(mddev->pers->name); >> + tmp = kzalloc(len + 2, GFP_KERNEL); >> + if (tmp) { >> + sprintf(tmp, "%s_%s", mdname(mddev), mddev->pers->name); >> + set_task_comm(mddev->thread->tsk, tmp); >> + kfree(tmp); >> + } >> + >> set_bit(MD_CHANGE_DEVS, &mddev->flags); >> mddev_resume(mddev); >> sysfs_notify(&mddev->kobj, NULL, "level"); > >Thanks. However: > > 1/ as a task name is limited to TASK_COMM_LEN, there is little point using > kzalloc. Just declare a local variable of that size. > 2/ No all levels have a thread. You should check that mddev->thread is not > NULL. > >If you resubmit with those fixes I'll apply the patch. > >Thanks, >NeilBrown > > Neil, There maybe had anthor issue. set_task_comm() is not export.So when compile md is module, it will be error. So I think it will be rewrite.It should rename in function call md_register_thread(). How about this way? Thanks! -------------- majianpeng?韬{.n?????%??檩??w?{.n???{炳盯w???塄}?财??j:+v??????2??璀??摺?囤??z夸z罐?+?????w棹f