All of lore.kernel.org
 help / color / mirror / Atom feed
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.

  reply	other threads:[~2008-11-11 18:23 UTC|newest]

Thread overview: 68+ 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-11-02 16:04 2.6.28-rc2-git7: Reported regressions from 2.6.27 Rafael J. Wysocki
2008-11-02 16:07 ` [Bug #11898] mke2fs hang on AIC79 device Rafael J. Wysocki
2008-11-02 16:07   ` Rafael J. Wysocki
2008-11-09 17:53 2.6.28-rc3-git6: Reported regressions from 2.6.27 Rafael J. Wysocki
2008-11-09 17:59 ` [Bug #11898] mke2fs hang on AIC79 device Rafael J. Wysocki
2008-11-09 17:59   ` Rafael J. Wysocki
2008-11-16 16:24 2.6.28-rc5: Reported regressions from 2.6.27 Rafael J. Wysocki
2008-11-16 16:35 ` [Bug #11898] mke2fs hang on AIC79 device Rafael J. Wysocki
2008-11-16 16:35   ` Rafael J. Wysocki
2008-11-22 20:24 2.6.28-rc6-git1: Reported regressions from 2.6.27 Rafael J. Wysocki
2008-11-22 20:28 ` [Bug #11898] mke2fs hang on AIC79 device Rafael J. Wysocki
2008-11-22 20:28   ` Rafael J. Wysocki
2008-12-03 21:49 2.6.28-rc7-git2: Reported regressions from 2.6.27 Rafael J. Wysocki
2008-12-03 21:57 ` [Bug #11898] mke2fs hang on AIC79 device Rafael J. Wysocki
2008-12-03 21:57   ` Rafael J. Wysocki
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
2008-12-07 20:32   ` 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 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.