diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2017-09-25 13:58:39 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2017-10-11 22:37:49 -0400 |
commit | 8ececffa12f5555171075ce52e1226f570836b26 (patch) | |
tree | 2830c2aacbf0a9c8a3cbe322939fe92a6ed81a6e /drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c | |
parent | lustre: switch struct ksock_conn to iov_iter (diff) | |
download | linux-dev-8ececffa12f5555171075ce52e1226f570836b26.tar.xz linux-dev-8ececffa12f5555171075ce52e1226f570836b26.zip |
switch ksocknal_lib_recv_...() to use of iov_iter_for_each_range()
... and fold kvec and bio_vec variants in one
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c')
-rw-r--r-- | drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c | 44 |
1 files changed, 4 insertions, 40 deletions
diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c index c79aeb463a5c..b12c3b0f39e1 100644 --- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c @@ -249,16 +249,16 @@ ksocknal_transmit(struct ksock_conn *conn, struct ksock_tx *tx) } static int -ksocknal_recv_iov(struct ksock_conn *conn) +ksocknal_recv_iter(struct ksock_conn *conn) { int nob; int rc; /* * Never touch conn->ksnc_rx_to or change connection - * status inside ksocknal_lib_recv_iov + * status inside ksocknal_lib_recv */ - rc = ksocknal_lib_recv_iov(conn); + rc = ksocknal_lib_recv(conn); if (rc <= 0) return rc; @@ -278,38 +278,6 @@ ksocknal_recv_iov(struct ksock_conn *conn) if (iov_iter_count(&conn->ksnc_rx_to)) return -EAGAIN; - return rc; -} - -static int -ksocknal_recv_kiov(struct ksock_conn *conn) -{ - int nob; - int rc; - - /* - * Never touch conn->ksnc_rx_to or change connection - * status inside ksocknal_lib_recv_iov - */ - rc = ksocknal_lib_recv_kiov(conn); - - if (rc <= 0) - return rc; - - /* received something... */ - nob = rc; - - conn->ksnc_peer->ksnp_last_alive = cfs_time_current(); - conn->ksnc_rx_deadline = - cfs_time_shift(*ksocknal_tunables.ksnd_timeout); - mb(); /* order with setting rx_started */ - conn->ksnc_rx_started = 1; - - conn->ksnc_rx_nob_left -= nob; - iov_iter_advance(&conn->ksnc_rx_to, nob); - if (iov_iter_count(&conn->ksnc_rx_to)) - return -EAGAIN; - return 1; } @@ -335,11 +303,7 @@ ksocknal_receive(struct ksock_conn *conn) } for (;;) { - if (conn->ksnc_rx_to.type & ITER_KVEC) - rc = ksocknal_recv_iov(conn); - else - rc = ksocknal_recv_kiov(conn); - + rc = ksocknal_recv_iter(conn); if (rc <= 0) { /* error/EOF or partial receive */ if (rc == -EAGAIN) { |