diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2017-09-20 20:01:11 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2017-12-02 20:38:05 -0500 |
commit | 985832267da5698c2a3b90f6cc920ac49fe7cf1e (patch) | |
tree | 98c5d21a22724ec700f7d0090347e47a30626089 | |
parent | e749d4facf24190ab1549886f69ab16880f5d234 (diff) |
lustre lnet_sock_read(): switch to sock_recvmsg()
... and don't bother reinitializing msg.msg_iter
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | drivers/staging/lustre/lnet/lnet/lib-socket.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/drivers/staging/lustre/lnet/lnet/lib-socket.c b/drivers/staging/lustre/lnet/lnet/lib-socket.c index 539a26444f31..984d76843b19 100644 --- a/drivers/staging/lustre/lnet/lnet/lib-socket.c +++ b/drivers/staging/lustre/lnet/lnet/lib-socket.c | |||
@@ -318,19 +318,20 @@ lnet_sock_read(struct socket *sock, void *buffer, int nob, int timeout) | |||
318 | long jiffies_left = timeout * msecs_to_jiffies(MSEC_PER_SEC); | 318 | long jiffies_left = timeout * msecs_to_jiffies(MSEC_PER_SEC); |
319 | unsigned long then; | 319 | unsigned long then; |
320 | struct timeval tv; | 320 | struct timeval tv; |
321 | struct kvec iov = { | ||
322 | .iov_base = buffer, | ||
323 | .iov_len = nob | ||
324 | }; | ||
325 | struct msghdr msg = { | ||
326 | .msg_flags = 0 | ||
327 | }; | ||
321 | 328 | ||
322 | LASSERT(nob > 0); | 329 | LASSERT(nob > 0); |
323 | LASSERT(jiffies_left > 0); | 330 | LASSERT(jiffies_left > 0); |
324 | 331 | ||
325 | for (;;) { | 332 | iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &iov, 1, nob); |
326 | struct kvec iov = { | ||
327 | .iov_base = buffer, | ||
328 | .iov_len = nob | ||
329 | }; | ||
330 | struct msghdr msg = { | ||
331 | .msg_flags = 0 | ||
332 | }; | ||
333 | 333 | ||
334 | for (;;) { | ||
334 | /* Set receive timeout to remaining time */ | 335 | /* Set receive timeout to remaining time */ |
335 | jiffies_to_timeval(jiffies_left, &tv); | 336 | jiffies_to_timeval(jiffies_left, &tv); |
336 | rc = kernel_setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, | 337 | rc = kernel_setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, |
@@ -342,7 +343,7 @@ lnet_sock_read(struct socket *sock, void *buffer, int nob, int timeout) | |||
342 | } | 343 | } |
343 | 344 | ||
344 | then = jiffies; | 345 | then = jiffies; |
345 | rc = kernel_recvmsg(sock, &msg, &iov, 1, nob, 0); | 346 | rc = sock_recvmsg(sock, &msg, 0); |
346 | jiffies_left -= jiffies - then; | 347 | jiffies_left -= jiffies - then; |
347 | 348 | ||
348 | if (rc < 0) | 349 | if (rc < 0) |
@@ -351,10 +352,7 @@ lnet_sock_read(struct socket *sock, void *buffer, int nob, int timeout) | |||
351 | if (!rc) | 352 | if (!rc) |
352 | return -ECONNRESET; | 353 | return -ECONNRESET; |
353 | 354 | ||
354 | buffer = ((char *)buffer) + rc; | 355 | if (!msg_data_left(&msg)) |
355 | nob -= rc; | ||
356 | |||
357 | if (!nob) | ||
358 | return 0; | 356 | return 0; |
359 | 357 | ||
360 | if (jiffies_left <= 0) | 358 | if (jiffies_left <= 0) |