lkml.org 
[lkml]   [2022]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH v5 08/11] net/9p: split message size argument into 't_size' and 'r_size' pair
    Refactor 'max_size' argument of p9_tag_alloc() and 'req_size' argument
    of p9_client_prepare_req() both into a pair of arguments 't_size' and
    'r_size' respectively to allow handling the buffer size for request and
    reply separately from each other.

    Signed-off-by: Christian Schoenebeck <linux_oss@crudebyte.com>
    ---
    net/9p/client.c | 20 +++++++++++---------
    1 file changed, 11 insertions(+), 9 deletions(-)

    diff --git a/net/9p/client.c b/net/9p/client.c
    index fab939541c81..56be1658870d 100644
    --- a/net/9p/client.c
    +++ b/net/9p/client.c
    @@ -255,24 +255,26 @@ static struct kmem_cache *p9_req_cache;
    * p9_tag_alloc - Allocate a new request.
    * @c: Client session.
    * @type: Transaction type.
    - * @max_size: Maximum packet size for this request.
    + * @t_size: Buffer size for holding this request.
    + * @r_size: Buffer size for holding server's reply on this request.
    *
    * Context: Process context.
    * Return: Pointer to new request.
    */
    static struct p9_req_t *
    -p9_tag_alloc(struct p9_client *c, int8_t type, unsigned int max_size)
    +p9_tag_alloc(struct p9_client *c, int8_t type, uint t_size, uint r_size)
    {
    struct p9_req_t *req = kmem_cache_alloc(p9_req_cache, GFP_NOFS);
    - int alloc_msize = min(c->msize, max_size);
    + int alloc_tsize = min(c->msize, t_size);
    + int alloc_rsize = min(c->msize, r_size);
    int tag;

    if (!req)
    return ERR_PTR(-ENOMEM);

    - if (p9_fcall_init(c, &req->tc, alloc_msize))
    + if (p9_fcall_init(c, &req->tc, alloc_tsize))
    goto free_req;
    - if (p9_fcall_init(c, &req->rc, alloc_msize))
    + if (p9_fcall_init(c, &req->rc, alloc_rsize))
    goto free;

    p9pdu_reset(&req->tc);
    @@ -678,7 +680,7 @@ static int p9_client_flush(struct p9_client *c, struct p9_req_t *oldreq)
    }

    static struct p9_req_t *p9_client_prepare_req(struct p9_client *c,
    - int8_t type, int req_size,
    + int8_t type, uint t_size, uint r_size,
    const char *fmt, va_list ap)
    {
    int err;
    @@ -694,7 +696,7 @@ static struct p9_req_t *p9_client_prepare_req(struct p9_client *c,
    if (c->status == BeginDisconnect && type != P9_TCLUNK)
    return ERR_PTR(-EIO);

    - req = p9_tag_alloc(c, type, req_size);
    + req = p9_tag_alloc(c, type, t_size, r_size);
    if (IS_ERR(req))
    return req;

    @@ -731,7 +733,7 @@ p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...)
    struct p9_req_t *req;

    va_start(ap, fmt);
    - req = p9_client_prepare_req(c, type, c->msize, fmt, ap);
    + req = p9_client_prepare_req(c, type, c->msize, c->msize, fmt, ap);
    va_end(ap);
    if (IS_ERR(req))
    return req;
    @@ -829,7 +831,7 @@ static struct p9_req_t *p9_client_zc_rpc(struct p9_client *c, int8_t type,
    /* We allocate a inline protocol data of only 4k bytes.
    * The actual content is passed in zero-copy fashion.
    */
    - req = p9_client_prepare_req(c, type, P9_ZC_HDR_SZ, fmt, ap);
    + req = p9_client_prepare_req(c, type, P9_ZC_HDR_SZ, P9_ZC_HDR_SZ, fmt, ap);
    va_end(ap);
    if (IS_ERR(req))
    return req;
    --
    2.30.2
    \
     
     \ /
      Last update: 2022-07-12 18:27    [W:4.280 / U:1.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site