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 <chao2.yu@samsung.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
0638bb0e73
commit
50bd377405
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue