• Chuck Lever's avatar
    svcrdma: Poll CQs in "workqueue" mode · 81fa3275
    Chuck Lever authored
    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: default avatarChuck Lever <chuck.lever@oracle.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    81fa3275
svc_rdma_recvfrom.c 19.4 KB