• C
    svcrdma: Poll CQs in "workqueue" mode · 81fa3275
    Chuck Lever 提交于
    svcrdma calls svc_xprt_put() in its completion handlers, which
    currently run in IRQ context.
    
    However, svc_xprt_put() is meant to be invoked in process context,
    not in IRQ context. After the last transport reference is gone, it
    directly calls a transport release function that expects to run in
    process context.
    
    Change the CQ polling modes to IB_POLL_WORKQUEUE so that svcrdma
    invokes svc_xprt_put() only in process context. As an added benefit,
    bottom half-disabled spin locking can be eliminated from I/O paths.
    Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
    Reviewed-by: NChristoph Hellwig <hch@lst.de>
    Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
    81fa3275
svc_rdma_transport.c 36.9 KB