From: Jianpeng Ma Date: Mon, 23 Oct 2017 11:24:08 +0000 (+0800) Subject: msg/async: batch handle msg_iovlen. X-Git-Tag: v13.0.1~447^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F18415%2Fhead;p=ceph.git msg/async: batch handle msg_iovlen. Also remove redundan code "msg.msg_iovlen = 0". Signed-off-by: Jianpeng Ma --- diff --git a/src/msg/async/PosixStack.cc b/src/msg/async/PosixStack.cc index e0104fdc4bce..2e432b869199 100644 --- a/src/msg/async/PosixStack.cc +++ b/src/msg/async/PosixStack.cc @@ -119,18 +119,15 @@ class PosixConnectedSocketImpl final : public ConnectedSocketImpl { uint64_t size = MIN(left_pbrs, IOV_MAX); left_pbrs -= size; memset(&msg, 0, sizeof(msg)); - msg.msg_iovlen = 0; + msg.msg_iovlen = size; msg.msg_iov = msgvec; unsigned msglen = 0; - while (size > 0) { - msgvec[msg.msg_iovlen].iov_base = (void*)(pb->c_str()); - msgvec[msg.msg_iovlen].iov_len = pb->length(); - msg.msg_iovlen++; - msglen += pb->length(); - ++pb; - size--; + for (auto iov = msgvec; iov != msgvec + size; iov++) { + iov->iov_base = (void*)(pb->c_str()); + iov->iov_len = pb->length(); + msglen += pb->length(); + ++pb; } - ssize_t r = do_sendmsg(_fd, msg, msglen, left_pbrs || more); if (r < 0) return r;