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@xxxxxxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html