Messages in this thread | | | Date | Mon, 11 Mar 2013 12:51:44 -0600 | From | Tim Gardner <> | Subject | Re: [PATCH linux-next v2] SUNRPC: rpcrdma_register_default_external: Dynamically allocate ib_phys_buf |
| |
On 03/11/2013 12:14 PM, J. Bruce Fields wrote: <snip> >> >> v2 - Move the array of 'struct ib_phys_buf' objects into struct rpcrdma_req >> and pass this request down through rpcrdma_register_external() and >> rpcrdma_register_default_external(). This is less overhead then using >> kmalloc() and requires no extra error checking as the allocation burden is >> shifted to the transport client. > > Oh good--so that works, and the req is the right place to put this? How > are you testing this? > > (Just want to make it clear: I'm *not* an expert on the rdma code, so my > suggestion to put this in the rpcrdma_req was a suggestion for something > to look into, not a claim that it's correct.) >
Just compile tested so far. Incidentally, I've been through the call stack:
call_transmit xprt_transmit xprt->ops->send_request(task) xprt_rdma_send_request rpcrdma_marshal_req rpcrdma_create_chunks rpcrdma_register_external rpcrdma_register_default_external
It appears that the context for kmalloc() should be fine unless there is a spinlock held around call_transmit() (which seems unlikely).
rtg -- Tim Gardner tim.gardner@canonical.com
| |