From: Mike Christie <michaelc@cs.wisc.edu>
To: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: bugme-daemon@bugzilla.kernel.org, linux-scsi@vger.kernel.org
Subject: Re: [Bug 11898] mke2fs hang on AIC79 device.
Date: Tue, 11 Nov 2008 12:22:38 -0600 [thread overview]
Message-ID: <4919CD6E.7010901@cs.wisc.edu> (raw)
In-Reply-To: <1226245637.19841.7.camel@localhost.localdomain>
James Bottomley wrote:
>
> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
> index f5d3b96..979e07a 100644
> --- a/drivers/scsi/scsi_lib.c
> +++ b/drivers/scsi/scsi_lib.c
> @@ -567,15 +567,18 @@ static inline int scsi_host_is_busy(struct Scsi_Host *shost)
> */
> static void scsi_run_queue(struct request_queue *q)
> {
> - struct scsi_device *starved_head = NULL, *sdev = q->queuedata;
> + struct scsi_device *tmp, *sdev = q->queuedata;
> struct Scsi_Host *shost = sdev->host;
> + LIST_HEAD(starved_list);
> unsigned long flags;
>
> if (scsi_target(sdev)->single_lun)
> scsi_single_lun_run(sdev);
>
> spin_lock_irqsave(shost->host_lock, flags);
> - while (!list_empty(&shost->starved_list) && !scsi_host_is_busy(shost)) {
> + list_splice_init(&shost->starved_list, &starved_list);
> +
> + list_for_each_entry_safe(sdev, tmp, &starved_list, starved_entry) {
> int flagset;
>
I do not think we can use list_for_each_entry_safe. It might be he cause
of the oops in the other mail. If we use list_for_each_entry_safe here,
but then some other process like the kernel block workueue calls the
request_fn of a device on the starved list then we can go from
scsi_request_fn -> scsi_host_queue_ready which can do:
/* We're OK to process the command, so we can't be starved */
if (!list_empty(&sdev->starved_entry))
list_del_init(&sdev->starved_entry);
and that can end up removing the sdev from scsi_run_queue's spliced
starved list. And so if the kblock workqueue did this to multiple
devices while scsi_run_queue has dropped the host lock then I do not
think list_for_each_entry_safe can handle that.
I can sort of replicate this now. Let me do some testing on the changes
and I will submit something in a minute.
next prev parent reply other threads:[~2008-11-11 18:23 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-30 8:17 [Bug 11898] New: mke2fs hang on AIC79 device bugme-daemon
2008-10-30 8:53 ` [Bug 11898] " bugme-daemon
2008-10-30 8:54 ` bugme-daemon
2008-10-30 10:23 ` bugme-daemon
2008-10-30 12:37 ` bugme-daemon
2008-10-30 14:06 ` bugme-daemon
2008-10-31 3:12 ` bugme-daemon
2008-11-03 8:02 ` bugme-daemon
2008-11-04 7:37 ` bugme-daemon
2008-11-04 7:41 ` bugme-daemon
2008-11-04 9:05 ` bugme-daemon
2008-11-05 1:32 ` bugme-daemon
2008-11-05 1:55 ` Mike Christie
2008-11-05 2:10 ` James Bottomley
2008-11-05 1:56 ` bugme-daemon
2008-11-05 2:11 ` bugme-daemon
2008-11-05 2:43 ` bugme-daemon
2008-11-05 2:56 ` bugme-daemon
2008-11-05 3:19 ` bugme-daemon
2008-11-05 4:01 ` bugme-daemon
2008-11-05 15:24 ` James Bottomley
2008-11-05 17:25 ` Mike Christie
2008-11-05 18:46 ` James Bottomley
2008-11-09 15:47 ` James Bottomley
2008-11-11 18:22 ` Mike Christie [this message]
2008-11-11 19:42 ` Mike Christie
2008-11-05 4:26 ` bugme-daemon
2008-11-05 10:48 ` bugme-daemon
2008-11-05 14:32 ` bugme-daemon
2008-11-05 15:25 ` bugme-daemon
2008-11-05 17:25 ` bugme-daemon
2008-11-05 18:47 ` bugme-daemon
2008-11-06 1:44 ` bugme-daemon
2008-11-06 1:59 ` bugme-daemon
2008-11-06 2:06 ` bugme-daemon
2008-11-06 2:19 ` bugme-daemon
2008-11-06 14:57 ` James Bottomley
2008-11-06 14:58 ` bugme-daemon
2008-11-07 1:04 ` bugme-daemon
2008-11-09 15:47 ` bugme-daemon
2008-11-09 17:54 ` bugme-daemon
2008-11-09 19:01 ` bugme-daemon
2008-11-09 19:15 ` bugme-daemon
2008-11-10 2:15 ` bugme-daemon
2008-11-11 11:23 ` bugme-daemon
2008-11-11 11:28 ` bugme-daemon
2008-11-11 18:23 ` bugme-daemon
2008-11-11 19:43 ` bugme-daemon
2008-11-12 10:47 ` bugme-daemon
2008-11-14 15:40 ` James Bottomley
2008-11-14 15:41 ` bugme-daemon
2008-11-16 17:17 ` bugme-daemon
2008-11-19 1:49 ` bugme-daemon
2008-12-02 7:20 ` bugme-daemon
2008-12-07 21:52 ` bugme-daemon
2008-12-13 18:23 ` bugme-daemon
-- strict thread matches above, loose matches on Subject: below --
2008-12-07 20:27 2.6.28-rc8-git5: Reported regressions from 2.6.27 Rafael J. Wysocki
2008-12-07 20:32 ` [Bug #11898] mke2fs hang on AIC79 device Rafael J. Wysocki
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=4919CD6E.7010901@cs.wisc.edu \
--to=michaelc@cs.wisc.edu \
--cc=James.Bottomley@HansenPartnership.com \
--cc=bugme-daemon@bugzilla.kernel.org \
--cc=linux-scsi@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).