Re: [PATCH 2/2] scsi: don't use execute_in_process_context()

From: Tejun Heo
Date: Tue Dec 14 2010 - 04:53:17 EST


Hello, James.

On 12/12/2010 11:48 PM, James Bottomley wrote:
> The analysis above isn't quite correct, I'm afraid. We use the
> execute_in_process_context() not to avoid deadlocks, but to acquire
> process context if we don't have it because the API allows calling from
> sites at interrupt context. The point of using
> execute_in_process_context() is that we actually want to make use of the
> user context if we have one ... there's no point using a workqueue in
> that case, because there's nothing to be gained (except to slow
> everything down). We have no ordering constraints (the traditional
> reason for using workqueues) so this is purely about context.

Sure, what I tried to say was that the change couldn't introduce
deadlock no matter how it was used. Sure execute_in_process_context()
would be slightly more efficient, but it currently is used a few times
only in quite cold paths where optimization isn't necessary at all and
the API is somewhat incomplete in that it doesn't provide ordering or
synchronization APIs.

So, unless there's a compelling reason, let's remove it. It has been
there for quite some time now and hasn't grown any other users. There
wouldn't be any noticeable difference for the current users either.
If you really like to keep it in the current users, let's move it into
SCSI. I don't see much reason to keep it as a part of generic
workqueue API in its current form.

Thank you.

--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/