From: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
To: bugzilla-daemon@bugzilla.kernel.org
Cc: sergey.senozhatsky@gmail.com,
"James E.J. Bottomley" <jejb@linux.vnet.ibm.com>,
"Martin K. Petersen" <martin.petersen@oracle.com>,
linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [Bug 199003] console stalled, cause Hard LOCKUP.
Date: Tue, 27 Mar 2018 19:37:40 +0900 [thread overview]
Message-ID: <20180327103740.GA4872@jagdpanzerIV> (raw)
In-Reply-To: <bug-199003-14532-IBTfRpvy7t@https.bugzilla.kernel.org/>
I'll Cc blockdev
On (03/27/18 08:36), bugzilla-daemon@bugzilla.kernel.org wrote:
> > --- Comment #17 from sergey.senozhatsky.work@gmail.com ---
> > On (03/26/18 13:05), bugzilla-daemon@bugzilla.kernel.org wrote:
> > > Therefore the serial console is actually pretty fast. It seems that the
> > > deadline
> > > 10ms-per-character is not in the game here.
> >
> > As the name suggests this is dmesg - content of logbuf. We can't tell
> > anything about serial consoles speed from it.
>
> Grrr, you are right. It would be interesting to see the output from
> the serial port as well.
>
> Anyway, it does not change the fact that printing so many same lines is
> useless. The throttling still would make sense and probably would
> solve the problem.
You are right.
Looking at backtraces (https://bugzilla.kernel.org/attachment.cgi?id=274953&action=edit)
there *probably* was just one CPU doing all printk-s and all printouts. And
there was one CPU waiting for that printing CPU to unlock the queue spin_lock.
The printing CPU was looping in scsi_request_fn() picking up requests
and calling sdev_printk() for each of them, because the device was
offline. Given that serial console is not very fast, that we called
serial console under queue spin_lock and the number of printks called,
it was enough to lockup the CPU which was spining on queue spin_lock and
to hard lockup the system.
scsi_request_fn() does unlock the queue lock later, but not in that
!scsi_device_online(sdev) error case.
scsi_request_fn()
{
for (;;) {
int rtn;
/*
* get next queueable request. We do this early to make sure
* that the request is fully prepared even if we cannot
* accept it.
*/
req = blk_peek_request(q);
if (!req)
break;
if (unlikely(!scsi_device_online(sdev))) {
sdev_printk(KERN_ERR, sdev,
"rejecting I/O to offline device\n");
scsi_kill_request(req, q);
continue;
^^^^^^^^^ still under spinlock
}
}
I'd probably just unlock/lock queue lock, rather than ratelimit printk-s,
before `continue'. Dunno.
James, Martin, what do you think?
-ss
next prev parent reply other threads:[~2018-03-27 10:37 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <bug-199003-14532@https.bugzilla.kernel.org/>
[not found] ` <bug-199003-14532-lzL5ySZS5x@https.bugzilla.kernel.org/>
2018-03-05 9:27 ` [Bug 199003] console stalled, cause Hard LOCKUP Sergey Senozhatsky
[not found] ` <bug-199003-14532-4aWzZJgGHz@https.bugzilla.kernel.org/>
2018-03-21 7:28 ` Sergey Senozhatsky
[not found] ` <bug-199003-14532-DgJdGAHEOE@https.bugzilla.kernel.org/>
2018-03-26 5:18 ` Sergey Senozhatsky
[not found] ` <bug-199003-14532-IBTfRpvy7t@https.bugzilla.kernel.org/>
2018-03-27 10:37 ` Sergey Senozhatsky [this message]
[not found] <bug-199003-8243@https.bugzilla.kernel.org/>
[not found] ` <bug-199003-8243-Txkdkdv5Cm@https.bugzilla.kernel.org/>
2018-03-21 13:44 ` Steven Rostedt
2018-03-22 2:14 ` Sergey Senozhatsky
2018-03-22 2:34 ` Sergey Senozhatsky
2018-03-22 22:25 ` Steven Rostedt
2018-03-23 12:06 ` Sergey Senozhatsky
2018-03-23 13:16 ` Petr Mladek
2018-03-26 5:12 ` Sergey Senozhatsky
2018-03-26 9:26 ` Petr Mladek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180327103740.GA4872@jagdpanzerIV \
--to=sergey.senozhatsky.work@gmail.com \
--cc=bugzilla-daemon@bugzilla.kernel.org \
--cc=jejb@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=sergey.senozhatsky@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.