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

Christoph Hellwig
2010-11-17T22:28:04Z

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.