All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@suse.de>
To: James Bottomley <James.Bottomley@SteelEye.com>
Cc: Chris Rankin <rankincj@yahoo.com>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	SCSI Mailing List <linux-scsi@vger.kernel.org>
Subject: Re: [OOPS] 2.6.11 - NMI lockup with CFQ scheduler
Date: Wed, 6 Apr 2005 19:58:39 +0200	[thread overview]
Message-ID: <20050406175838.GC15165@suse.de> (raw)
In-Reply-To: <1112804840.5476.16.camel@mulgrave>

On Wed, Apr 06 2005, James Bottomley wrote:
> On Tue, 2005-03-29 at 14:03 +0200, Jens Axboe wrote:
> > It is quite a serious problem, not just for CFQ. SCSI referencing is
> > badly broken there.
> 
> OK ... I accept that with regard to the queue lock.

It is much deeper than that. The recent hack to kill requests is yet
another example of that. At least this work-around makes it a little
better, but the mid layer assumption that sdev going to zero implies the
queue going away at the same time is inherently broken.

> However, rather than trying to work out a way to tie all the refcounted
> objects together, what about the simpler solution of making the lock
> bound to the lifetime of the queue?

That's essentially what the work-around does.

> As far as SCSI is concerned, we could simply move the lock into the
> request_queue structure and everything would work since the device holds
> a reference to the queue.  The way it would work is that we'd simply
> have a lock in the request_queue structure, but it would be up to the
> device to pass it in in blk_init_queue.  Then we'd alter the scsi_device
> sdev_lock to be a pointer to the queue lock?  This scheme would also
> work for the current users who have a global lock (they simply wouldn't
> use the lock int the request_queue).
> 
> The only could on the horizon with this scheme is that there may
> genuinely be places where we want multiple queues to share a non-global
> lock:  situations where we have shared issue queues (like IDE), or
> shared tag resources are a possibility.  To cope with those, we'd
> probably have to have a separately allocated, reference counted lock.
> 
> However, I'm happy to implement the simpler solution (lock in
> requuest_queue) if you agree.

I rather like the queue lock being a pointer, so you can share at
whatever level you want. Lets not grow the request_queue a full lock
just to work around a bug elsewhere.

-- 
Jens Axboe


  reply	other threads:[~2005-04-06 17:58 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-03-29 11:54 [OOPS] 2.6.11 - NMI lockup with CFQ scheduler Chris Rankin
2005-03-29 12:03 ` Jens Axboe
2005-04-06 16:27   ` James Bottomley
2005-04-06 17:58     ` Jens Axboe [this message]
2005-04-06 18:20       ` James Bottomley
2005-04-06 19:08         ` Jens Axboe
2005-04-06 21:09           ` James Bottomley
2005-04-07  6:49             ` Jens Axboe
2005-04-07 13:18               ` James Bottomley
2005-04-07 13:22                 ` Christoph Hellwig
2005-04-07 13:24                   ` Jens Axboe
2005-04-07 13:30                   ` James Bottomley
2005-04-07 13:32                     ` Jens Axboe
2005-04-07 13:39                       ` James Bottomley
2005-04-07 14:45                         ` Jens Axboe
2005-04-08 13:04                           ` James Bottomley
2005-04-08 13:09                             ` Jens Axboe
2005-04-07 13:24                 ` Jens Axboe
  -- strict thread matches above, loose matches on Subject: below --
2005-03-29 12:22 Chris Rankin
2005-03-29 12:26 ` Jens Axboe
2005-04-06 12:31   ` Jens Axboe
2005-04-06 12:52     ` Arjan van de Ven
2005-04-06 12:55       ` Jens Axboe
2005-04-06 13:38         ` Tejun Heo
2005-04-06 18:01           ` Jens Axboe
2005-04-06 20:32           ` Mike Anderson
2005-03-27 19:22 Chris Rankin
2005-03-29 11:32 ` Jens Axboe

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=20050406175838.GC15165@suse.de \
    --to=axboe@suse.de \
    --cc=James.Bottomley@SteelEye.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=rankincj@yahoo.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.