Re: [PATCH 03/11] scsi: Add IRQ_DISABLE_SCSI_QCMD wrapper

Nicholas A. Bellinger
2010-11-17T22:34:53Z

On Wed, 2010-11-17 at 17:27 -0500, Christoph Hellwig wrote:
> On Wed, Nov 17, 2010 at 02:18:42PM -0800, Nicholas A. Bellinger wrote:
> > From: Nicholas Bellinger <nab@linux-iscsi.org>
> >
> > This patch adds a IRQ_DISABLE_SCSI_QCMD() wrapper macro used by LLDs
> > that can now run in host_lock less mode, but still need interrupts disabled
> > using local_irq_save() before calling their lld_queuecommand() dispatcher.
> >
> > jgarzik says this method is in fact slower than doing a spin_lock_irqsave() on
> > internal lib_lld_queuecommand() callers (as is done in libiscsi and libata)
> > but is still needed by the majority of lock_less LLDs.
>
> It's not an overly helpful macro. There's no reason a driver should
> ever disable irqs on it's own without actually taking a lock. Please
> invest the additional couple of minutes and do a proper conversion.
>

Hmmm, this is following jgarzik's recommendation for LLDs that we could
not immediately identify a internal spin_lock to disable interrupts
upon. (eg: not libiscsi and libata).

--nab