07 Oct, 2008

3 commits

  • RPCRDMA requests that specify a read-list are fetched with RDMA_READ. Using
    an FRMR to map the data sink improves NFSRDMA security on transports that
    place the RDMA_READ data sink LKEY on the wire because the valid lifetime
    of the MR is only the duration of the RDMA_READ. The LKEY is invalidated
    when the last RDMA_READ WR completes.

    Mapping the data sink also allows for very large amounts to data to be
    fetched with a single WR, so if the client is also using FRMR, the entire
    RPC read-list can be fetched with a single WR.

    Signed-off-by: Tom Tucker

    Tom Tucker
     
  • Fast Reg MR introduces a new WR type. Add a service to register the
    region with the adapter and update the completion handling to support
    completions with a NULL WR context.

    Signed-off-by: Tom Tucker

    Tom Tucker
     
  • Add services for the allocating, freeing, and unmapping Fast Reg MR. These
    services will be used by the transport connection setup, send and receive
    routines.

    Signed-off-by: Tom Tucker

    Tom Tucker
     

04 Oct, 2008

1 commit

  • Add data types to track Fast Reg Memory Regions. The core data type is
    svc_rdma_fastreg_mr that associates a device MR with a host kva and page
    list. A field is added to the WR context to keep track of the FRMR
    used to map the local memory for an RPC.

    An FRMR list and spin lock are added to the transport instance to keep
    track of all FRMR allocated for the transport. Also added are device
    capability flags to indicate what the memory registration
    capabilities are for the underlying device and whether or not fast
    memory registration is supported.

    Signed-off-by: Tom Tucker

    Tom Tucker
     

14 Aug, 2008

1 commit

  • RDMA_READ completions are kept on a separate queue from the general
    I/O request queue. Since a separate lock is used to protect the RDMA_READ
    completion queue, a race exists between the dto_tasklet and the
    svc_rdma_recvfrom thread where the dto_tasklet sets the XPT_DATA
    bit and adds I/O to the read-completion queue. Concurrently, the
    recvfrom thread checks the generic queue, finds it empty and resets
    the XPT_DATA bit. A subsequent svc_xprt_enqueue will fail to enqueue
    the transport for I/O and cause the transport to "stall".

    The fix is to protect both lists with the same lock and set the XPT_DATA
    bit with this lock held.

    Signed-off-by: Tom Tucker
    Signed-off-by: J. Bruce Fields

    Tom Tucker
     

03 Jul, 2008

5 commits


19 May, 2008

5 commits

  • The svc_rdma_send_error function is called when an RPCRDMA protocol
    error is detected. This function attempts to post an error reply message.
    Since an error posting to a transport in error is ignored, change
    the return type to void.

    Signed-off-by: Tom Tucker

    Tom Tucker
     
  • Some providers may wait while destroying adapter resources.
    Since it is possible that the last reference is put on the
    dto_tasklet, the actual destroy must be scheduled as a work item.

    Signed-off-by: Tom Tucker

    Tom Tucker
     
  • Replace the one-off linked list implementation used to implement the
    context cache with the standard Linux list_head lists. Add a context
    counter to catch resource leaks. A WARN_ON will be added later to
    ensure that we've freed all contexts.

    Signed-off-by: Tom Tucker

    Tom Tucker
     
  • An NFS_WRITE requires a set of RDMA_READ requests to fetch the write
    data from the client. There are two principal pieces of data that
    need to be tracked: the list of pages that comprise the completed RPC
    and the SGE of dma mapped pages to refer to this list of pages. Previously
    this whole bit was managed as a linked list of contexts with the
    context containing the page list buried in this list. This patch
    simplifies this processing by not keeping a linked list, but rather only
    a pionter from the last submitted RDMA_READ's context to the context
    that maps the set of pages that describe the RPC. This significantly
    simplifies this code path. SGE contexts are cleaned up inline in the DTO
    path instead of at read completion time.

    Signed-off-by: Tom Tucker

    Tom Tucker
     
  • The RDMACTXT_F_READ_DONE bit is not longer used. Remove it.

    Signed-off-by: Tom Tucker

    Tom Tucker
     

02 Feb, 2008

1 commit

  • This file defines the data types used by the SVCRDMA transport module.
    The principle data structure is the transport specific extension to
    the svcxprt structure.

    Signed-off-by: Tom Tucker
    Acked-by: Neil Brown
    Signed-off-by: J. Bruce Fields

    Tom Tucker