Merge branch 'work.sendmsg' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs sendmsg updates from Al Viro:
"More sendmsg work.
This is a fairly separate isolated stuff (there's a continuation
around lustre, but that one was too late to soak in -next), thus the
separate pull request"
* 'work.sendmsg' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
ncpfs: switch to sock_sendmsg()
ncpfs: don't mess with manually advancing iovec on send
ncpfs: sendmsg does *not* bugger iovec these days
ceph_tcp_sendpage(): use ITER_BVEC sendmsg
afs_send_pages(): use ITER_BVEC
rds: remove dead code
ceph: switch to sock_recvmsg()
usbip_recv(): switch to sock_recvmsg()
iscsi_target: deal with short writes on the tx side
[nbd] pass iov_iter to nbd_xmit()
[nbd] switch sock_xmit() to sock_{send,recv}msg()
[drbd] use sock_sendmsg()
This commit is contained in:
@@ -1846,7 +1846,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;
|
||||
|
||||
@@ -1855,15 +1855,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;
|
||||
@@ -1871,7 +1870,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;
|
||||
@@ -1885,8 +1884,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)
|
||||
|
||||
Reference in New Issue
Block a user