Merge branch 'WIP.sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[platform/kernel/linux-starfive.git] / drivers / block / drbd / drbd_main.c
index c7d530a..92c60cb 100644 (file)
@@ -1847,7 +1847,7 @@ int drbd_send_out_of_sync(struct drbd_peer_device *peer_device, struct drbd_requ
 int drbd_send(struct drbd_connection *connection, struct socket *sock,
              void *buf, size_t size, unsigned msg_flags)
 {
-       struct kvec iov;
+       struct kvec iov = {.iov_base = buf, .iov_len = size};
        struct msghdr msg;
        int rv, sent = 0;
 
@@ -1856,15 +1856,14 @@ int drbd_send(struct drbd_connection *connection, struct socket *sock,
 
        /* THINK  if (signal_pending) return ... ? */
 
-       iov.iov_base = buf;
-       iov.iov_len  = size;
-
        msg.msg_name       = NULL;
        msg.msg_namelen    = 0;
        msg.msg_control    = NULL;
        msg.msg_controllen = 0;
        msg.msg_flags      = msg_flags | MSG_NOSIGNAL;
 
+       iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, &iov, 1, size);
+
        if (sock == connection->data.socket) {
                rcu_read_lock();
                connection->ko_count = rcu_dereference(connection->net_conf)->ko_count;
@@ -1872,7 +1871,7 @@ int drbd_send(struct drbd_connection *connection, struct socket *sock,
                drbd_update_congested(connection);
        }
        do {
-               rv = kernel_sendmsg(sock, &msg, &iov, 1, iov.iov_len);
+               rv = sock_sendmsg(sock, &msg);
                if (rv == -EAGAIN) {
                        if (we_should_drop_the_connection(connection, sock))
                                break;
@@ -1886,8 +1885,6 @@ int drbd_send(struct drbd_connection *connection, struct socket *sock,
                if (rv < 0)
                        break;
                sent += rv;
-               iov.iov_base += rv;
-               iov.iov_len  -= rv;
        } while (sent < size);
 
        if (sock == connection->data.socket)