Re: [PATCH] md: avoid potential long delay under pers_lock
From: NeilBrown <hidden>
Date: 2014-09-26 00:36:31
Also in:
lkml
Attachments
- signature.asc [application/pgp-signature] 828 bytes
From: NeilBrown <hidden>
Date: 2014-09-26 00:36:31
Also in:
lkml
On Thu, 25 Sep 2014 15:28:34 +0800 Chao Yu [off-list ref] wrote:
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 <redacted> --- drivers/md/md.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)diff --git a/drivers/md/md.c b/drivers/md/md.c index e02de05..5fcf215 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c@@ -7200,9 +7200,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; }
I'm not sure I see the pressing need for this - have you noticed actual problems? However it seems to make sense so I've applied it. Thanks, NeilBrown