From: Chao Yu Date: Thu, 25 Sep 2014 07:28:34 +0000 (+0800) Subject: md: avoid potential long delay under pers_lock X-Git-Tag: v3.18-rc1~26^2~10 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=50bd3774058137e687b41da8b31fdd3544f7d901;p=platform%2Fkernel%2Flinux-exynos.git md: avoid potential long delay under pers_lock printk may cause long time lapse if value of printk_delay in sysctl is configured large by user. If register_md_personality takes long time to print in spinlock pers_lock, we may encounter high CPU usage rate when there are other pers_lock competitors who may be blocked to spin. We can avoid this condition by moving printk out of coverage of pers_lock spinlock. Signed-off-by: Chao Yu Signed-off-by: NeilBrown --- diff --git a/drivers/md/md.c b/drivers/md/md.c index d96aa80..d3a33a95e 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -7187,9 +7187,10 @@ static const struct file_operations md_seq_fops = { int register_md_personality(struct md_personality *p) { + printk(KERN_INFO "md: %s personality registered for level %d\n", + p->name, p->level); spin_lock(&pers_lock); list_add_tail(&p->list, &pers_list); - printk(KERN_INFO "md: %s personality registered for level %d\n", p->name, p->level); spin_unlock(&pers_lock); return 0; }