Whamcloud - gitweb
LU-13593 ptlrpc: fix growing message buffer 01/38701/18
authorSebastien Buisson <sbuisson@ddn.com>
Wed, 20 May 2020 09:17:57 +0000 (18:17 +0900)
committerOleg Drokin <green@whamcloud.com>
Mon, 20 Jul 2020 05:19:02 +0000 (05:19 +0000)
In case some buffers need to be moved because of segment growth
from req_capsule_server_grow(), just set buflen to old length
before actually calling lustre_grow_msg().

Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: I6707927a0f24c0637dbc79aa91788122a84ab8c4
Reviewed-on: https://review.whamcloud.com/38701
Reviewed-by: Mike Pershin <mpershin@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/ptlrpc/layout.c

index 40bd630..e0929ab 100644 (file)
@@ -2626,8 +2626,9 @@ int req_capsule_server_grow(struct req_capsule *pill,
        /* Now we need only buffers, copy them and grow the needed one */
        to = lustre_msg_buf(nrs->rs_msg, 0, 0);
        from = lustre_msg_buf(rs->rs_msg, 0, 0);
-       len = (char *)rs->rs_msg + lustre_packed_msg_size(rs->rs_msg) - from;
-       memcpy(to, from, len);
+       memcpy(to, from,
+              (char *)rs->rs_msg + lustre_packed_msg_size(rs->rs_msg) - from);
+       lustre_msg_set_buflen(nrs->rs_msg, offset, len);
        pill->rc_req->rq_replen = lustre_grow_msg(nrs->rs_msg, offset, newlen);
 
         if (rs->rs_difficult) {