• C
    svcrdma: Avoid releasing a page in svc_xprt_release() · a53d5cb0
    Chuck Lever 提交于
    svc_xprt_release() invokes svc_free_res_pages(), which releases
    pages between rq_respages and rq_next_page.
    
    Historically, the RPC/RDMA transport has set these two pointers to
    be different by one, which means:
    
    - one page gets released when svc_recv returns 0. This normally
    happens whenever one or more RDMA Reads need to be dispatched to
    complete construction of an RPC Call.
    
    - one page gets released after every call to svc_send.
    
    In both cases, this released page is immediately refilled by
    svc_alloc_arg. There does not seem to be a reason for releasing this
    page.
    
    To avoid this unnecessary memory allocator traffic, set rq_next_page
    more carefully.
    Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
    a53d5cb0
svc_rdma_recvfrom.c 20.8 KB