On Sat, 2008-04-12 at 11:26 -0600, Matthew Wilcox wrote:
quoted text > It would look bloody odd to write (code taken from megasas_mgmt_ioctl_fw() in
> drivers/scsi/megaraid/megaraid_sas.c):
>
> if (wait_for_completion_interruptible(&instance->ioctl_completion)) {
> error = -ERESTARTSYS;
> goto out_kfree_ioc;
> }
> error = megasas_mgmt_fw_ioctl(instance, user_ioc, ioc);
> complete(&instance->ioctl_sem);
>
> What I'm trying to get a feeling for is whether people find it similarly
> odd to use semaphores where we currently use completions. We *used*
> to, but I don't find that a compelling reason.
The above doesn't look all that odd to me. It may be that you've seen
semaphores in that position in the past and just expect to see them.
quoted text > Arnd contacted me off-list and made the very sensible suggestion of:
>
> struct completion {
> struct semaphore sem;
> }
>
> That lets us eliminate the duplicate code since all the completion
> functions become very thin wrappers around semaphore operations.
>
> I'll note that the semaphore code I hae queued for 2.6.26 is slightly
> more efficient than the current implementation of completions because
> completions use the generic waitqueue code and thus do an indirect
> function call per wakeup. Of course, there's no reason completions
> couldn't use the same technique as my semaphore code ... but then they
> would be identical to semaphores ;-)
I would just re-write completions keeping the name and API in tact, make
them better and just leave semaphores alone..
Daniel
--
unsubscribe notice To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
majordomo@vger.kernel.org
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/
Messages in current thread:
Re: [PATCH] Replace completions with semaphores , Daniel Walker , (Sat Apr 12, 11:01 am)