Loading include/linux/sunrpc/xprt.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -280,6 +280,7 @@ void xprt_release_xprt_cong(struct rpc_xprt *xprt, struct rpc_task *task); void xprt_release(struct rpc_task *task); void xprt_release(struct rpc_task *task); struct rpc_xprt * xprt_get(struct rpc_xprt *xprt); struct rpc_xprt * xprt_get(struct rpc_xprt *xprt); void xprt_put(struct rpc_xprt *xprt); void xprt_put(struct rpc_xprt *xprt); struct rpc_xprt * xprt_alloc(int size, int max_req); static inline __be32 *xprt_skip_transport_header(struct rpc_xprt *xprt, __be32 *p) static inline __be32 *xprt_skip_transport_header(struct rpc_xprt *xprt, __be32 *p) { { Loading net/sunrpc/xprt.c +22 −0 Original line number Original line Diff line number Diff line Loading @@ -962,6 +962,28 @@ static void xprt_free_slot(struct rpc_xprt *xprt, struct rpc_rqst *req) spin_unlock(&xprt->reserve_lock); spin_unlock(&xprt->reserve_lock); } } struct rpc_xprt *xprt_alloc(int size, int max_req) { struct rpc_xprt *xprt; xprt = kzalloc(size, GFP_KERNEL); if (xprt == NULL) goto out; xprt->max_reqs = max_req; xprt->slot = kcalloc(max_req, sizeof(struct rpc_rqst), GFP_KERNEL); if (xprt->slot == NULL) goto out_free; return xprt; out_free: kfree(xprt); out: return NULL; } EXPORT_SYMBOL_GPL(xprt_alloc); /** /** * xprt_reserve - allocate an RPC request slot * xprt_reserve - allocate an RPC request slot * @task: RPC task requesting a slot allocation * @task: RPC task requesting a slot allocation Loading net/sunrpc/xprtrdma/transport.c +2 −11 Original line number Original line Diff line number Diff line Loading @@ -285,23 +285,14 @@ xprt_setup_rdma(struct xprt_create *args) return ERR_PTR(-EBADF); return ERR_PTR(-EBADF); } } xprt = kzalloc(sizeof(struct rpcrdma_xprt), GFP_KERNEL); xprt = xprt_alloc(sizeof(struct rpcrdma_xprt), xprt_rdma_slot_table_entries); if (xprt == NULL) { if (xprt == NULL) { dprintk("RPC: %s: couldn't allocate rpcrdma_xprt\n", dprintk("RPC: %s: couldn't allocate rpcrdma_xprt\n", __func__); __func__); return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM); } } xprt->max_reqs = xprt_rdma_slot_table_entries; xprt->slot = kcalloc(xprt->max_reqs, sizeof(struct rpc_rqst), GFP_KERNEL); if (xprt->slot == NULL) { dprintk("RPC: %s: couldn't allocate %d slots\n", __func__, xprt->max_reqs); kfree(xprt); return ERR_PTR(-ENOMEM); } /* 60 second timeout, no retries */ /* 60 second timeout, no retries */ xprt->timeout = &xprt_rdma_default_timeout; xprt->timeout = &xprt_rdma_default_timeout; xprt->bind_timeout = (60U * HZ); xprt->bind_timeout = (60U * HZ); Loading net/sunrpc/xprtsock.c +3 −12 Original line number Original line Diff line number Diff line Loading @@ -2273,23 +2273,14 @@ static struct rpc_xprt *xs_setup_xprt(struct xprt_create *args, return ERR_PTR(-EBADF); return ERR_PTR(-EBADF); } } new = kzalloc(sizeof(*new), GFP_KERNEL); xprt = xprt_alloc(sizeof(*new), slot_table_size); if (new == NULL) { if (xprt == NULL) { dprintk("RPC: xs_setup_xprt: couldn't allocate " dprintk("RPC: xs_setup_xprt: couldn't allocate " "rpc_xprt\n"); "rpc_xprt\n"); return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM); } } xprt = &new->xprt; xprt->max_reqs = slot_table_size; xprt->slot = kcalloc(xprt->max_reqs, sizeof(struct rpc_rqst), GFP_KERNEL); if (xprt->slot == NULL) { kfree(xprt); dprintk("RPC: xs_setup_xprt: couldn't allocate slot " "table\n"); return ERR_PTR(-ENOMEM); } new = container_of(xprt, struct sock_xprt, xprt); memcpy(&xprt->addr, args->dstaddr, args->addrlen); memcpy(&xprt->addr, args->dstaddr, args->addrlen); xprt->addrlen = args->addrlen; xprt->addrlen = args->addrlen; if (args->srcaddr) if (args->srcaddr) Loading Loading
include/linux/sunrpc/xprt.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -280,6 +280,7 @@ void xprt_release_xprt_cong(struct rpc_xprt *xprt, struct rpc_task *task); void xprt_release(struct rpc_task *task); void xprt_release(struct rpc_task *task); struct rpc_xprt * xprt_get(struct rpc_xprt *xprt); struct rpc_xprt * xprt_get(struct rpc_xprt *xprt); void xprt_put(struct rpc_xprt *xprt); void xprt_put(struct rpc_xprt *xprt); struct rpc_xprt * xprt_alloc(int size, int max_req); static inline __be32 *xprt_skip_transport_header(struct rpc_xprt *xprt, __be32 *p) static inline __be32 *xprt_skip_transport_header(struct rpc_xprt *xprt, __be32 *p) { { Loading
net/sunrpc/xprt.c +22 −0 Original line number Original line Diff line number Diff line Loading @@ -962,6 +962,28 @@ static void xprt_free_slot(struct rpc_xprt *xprt, struct rpc_rqst *req) spin_unlock(&xprt->reserve_lock); spin_unlock(&xprt->reserve_lock); } } struct rpc_xprt *xprt_alloc(int size, int max_req) { struct rpc_xprt *xprt; xprt = kzalloc(size, GFP_KERNEL); if (xprt == NULL) goto out; xprt->max_reqs = max_req; xprt->slot = kcalloc(max_req, sizeof(struct rpc_rqst), GFP_KERNEL); if (xprt->slot == NULL) goto out_free; return xprt; out_free: kfree(xprt); out: return NULL; } EXPORT_SYMBOL_GPL(xprt_alloc); /** /** * xprt_reserve - allocate an RPC request slot * xprt_reserve - allocate an RPC request slot * @task: RPC task requesting a slot allocation * @task: RPC task requesting a slot allocation Loading
net/sunrpc/xprtrdma/transport.c +2 −11 Original line number Original line Diff line number Diff line Loading @@ -285,23 +285,14 @@ xprt_setup_rdma(struct xprt_create *args) return ERR_PTR(-EBADF); return ERR_PTR(-EBADF); } } xprt = kzalloc(sizeof(struct rpcrdma_xprt), GFP_KERNEL); xprt = xprt_alloc(sizeof(struct rpcrdma_xprt), xprt_rdma_slot_table_entries); if (xprt == NULL) { if (xprt == NULL) { dprintk("RPC: %s: couldn't allocate rpcrdma_xprt\n", dprintk("RPC: %s: couldn't allocate rpcrdma_xprt\n", __func__); __func__); return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM); } } xprt->max_reqs = xprt_rdma_slot_table_entries; xprt->slot = kcalloc(xprt->max_reqs, sizeof(struct rpc_rqst), GFP_KERNEL); if (xprt->slot == NULL) { dprintk("RPC: %s: couldn't allocate %d slots\n", __func__, xprt->max_reqs); kfree(xprt); return ERR_PTR(-ENOMEM); } /* 60 second timeout, no retries */ /* 60 second timeout, no retries */ xprt->timeout = &xprt_rdma_default_timeout; xprt->timeout = &xprt_rdma_default_timeout; xprt->bind_timeout = (60U * HZ); xprt->bind_timeout = (60U * HZ); Loading
net/sunrpc/xprtsock.c +3 −12 Original line number Original line Diff line number Diff line Loading @@ -2273,23 +2273,14 @@ static struct rpc_xprt *xs_setup_xprt(struct xprt_create *args, return ERR_PTR(-EBADF); return ERR_PTR(-EBADF); } } new = kzalloc(sizeof(*new), GFP_KERNEL); xprt = xprt_alloc(sizeof(*new), slot_table_size); if (new == NULL) { if (xprt == NULL) { dprintk("RPC: xs_setup_xprt: couldn't allocate " dprintk("RPC: xs_setup_xprt: couldn't allocate " "rpc_xprt\n"); "rpc_xprt\n"); return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM); } } xprt = &new->xprt; xprt->max_reqs = slot_table_size; xprt->slot = kcalloc(xprt->max_reqs, sizeof(struct rpc_rqst), GFP_KERNEL); if (xprt->slot == NULL) { kfree(xprt); dprintk("RPC: xs_setup_xprt: couldn't allocate slot " "table\n"); return ERR_PTR(-ENOMEM); } new = container_of(xprt, struct sock_xprt, xprt); memcpy(&xprt->addr, args->dstaddr, args->addrlen); memcpy(&xprt->addr, args->dstaddr, args->addrlen); xprt->addrlen = args->addrlen; xprt->addrlen = args->addrlen; if (args->srcaddr) if (args->srcaddr) Loading