[openib-general] Re: [PATCH] [CMA] support loopback addresses

Sean Hefty mshefty at ichips.intel.com
Wed Dec 28 14:39:37 PST 2005


Michael S. Tsirkin wrote:
>>+	INIT_WORK(work, loopback_addr_handler, id_priv);
>>+	queue_work(wq, work);
>>+	return 0;
>>+err:
>>+	kfree(work);
>>+	return ret;
>>+}
> 
> I'm not following this: why are we deferring the work?
> Cant it be done directly?

To keep rdma_resolve_addr() generic, it is an asynchronous call.  The work queue 
is used to callback the user from a separate thread other than the one that they 
called down with.  The ib_addr module does something similar when the 
destination address is actually a local address, deferring the callback to 
another thread.

The alternative is to have the API behave one way for destination addresses that 
are local, versus those that are remote, but this complicates applications that 
are not aware if an address belongs to the local or a remote system.

- Sean



More information about the general mailing list