On Tue, 5 Jun 2012 13:37:15 +0800 majianpeng <majianpeng@xxxxxxxxx> wrote: > 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; No, I really don't like that. It is to focussed on fixing the particular symptom rather that making the code generally cleaner. Was there a reason you didn't just change the last arg of md_register_thread to be the level name instead of NULL?? NeilBrown
Attachment:
signature.asc
Description: PGP signature