Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iov_iter: Separate type from direction and use accessor functions

In the iov_iter struct, separate the iterator type from the iterator
direction and use accessor functions to access them in most places.

Convert a bunch of places to use switch-statements to access them rather
then chains of bitwise-AND statements. This makes it easier to add further
iterator types. Also, this can be more efficient as to implement a switch
of small contiguous integers, the compiler can use ~50% fewer compare
instructions than it has to use bitwise-and instructions.

Further, cease passing the iterator type into the iterator setup function.
The iterator function can set that itself. Only the direction is required.

Signed-off-by: David Howells <dhowells@redhat.com>

+96 -105
+1 -1
drivers/block/drbd/drbd_main.c
··· 1856 1856 1857 1857 /* THINK if (signal_pending) return ... ? */ 1858 1858 1859 - iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, &iov, 1, size); 1859 + iov_iter_kvec(&msg.msg_iter, WRITE, &iov, 1, size); 1860 1860 1861 1861 if (sock == connection->data.socket) { 1862 1862 rcu_read_lock();
+1 -1
drivers/block/drbd/drbd_receiver.c
··· 516 516 struct msghdr msg = { 517 517 .msg_flags = (flags ? flags : MSG_WAITALL | MSG_NOSIGNAL) 518 518 }; 519 - iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &iov, 1, size); 519 + iov_iter_kvec(&msg.msg_iter, READ, &iov, 1, size); 520 520 return sock_recvmsg(sock, &msg, msg.msg_flags); 521 521 } 522 522
+4 -5
drivers/block/loop.c
··· 268 268 struct iov_iter i; 269 269 ssize_t bw; 270 270 271 - iov_iter_bvec(&i, ITER_BVEC | WRITE, bvec, 1, bvec->bv_len); 271 + iov_iter_bvec(&i, WRITE, bvec, 1, bvec->bv_len); 272 272 273 273 file_start_write(file); 274 274 bw = vfs_iter_write(file, &i, ppos, 0); ··· 346 346 ssize_t len; 347 347 348 348 rq_for_each_segment(bvec, rq, iter) { 349 - iov_iter_bvec(&i, ITER_BVEC, &bvec, 1, bvec.bv_len); 349 + iov_iter_bvec(&i, READ, &bvec, 1, bvec.bv_len); 350 350 len = vfs_iter_read(lo->lo_backing_file, &i, &pos, 0); 351 351 if (len < 0) 352 352 return len; ··· 387 387 b.bv_offset = 0; 388 388 b.bv_len = bvec.bv_len; 389 389 390 - iov_iter_bvec(&i, ITER_BVEC, &b, 1, b.bv_len); 390 + iov_iter_bvec(&i, READ, &b, 1, b.bv_len); 391 391 len = vfs_iter_read(lo->lo_backing_file, &i, &pos, 0); 392 392 if (len < 0) { 393 393 ret = len; ··· 554 554 } 555 555 atomic_set(&cmd->ref, 2); 556 556 557 - iov_iter_bvec(&iter, ITER_BVEC | rw, bvec, 558 - segments, blk_rq_bytes(rq)); 557 + iov_iter_bvec(&iter, rw, bvec, segments, blk_rq_bytes(rq)); 559 558 iter.iov_offset = offset; 560 559 561 560 cmd->iocb.ki_pos = pos;
+5 -7
drivers/block/nbd.c
··· 473 473 u32 nbd_cmd_flags = 0; 474 474 int sent = nsock->sent, skip = 0; 475 475 476 - iov_iter_kvec(&from, WRITE | ITER_KVEC, &iov, 1, sizeof(request)); 476 + iov_iter_kvec(&from, WRITE, &iov, 1, sizeof(request)); 477 477 478 478 switch (req_op(req)) { 479 479 case REQ_OP_DISCARD: ··· 564 564 565 565 dev_dbg(nbd_to_dev(nbd), "request %p: sending %d bytes data\n", 566 566 req, bvec.bv_len); 567 - iov_iter_bvec(&from, ITER_BVEC | WRITE, 568 - &bvec, 1, bvec.bv_len); 567 + iov_iter_bvec(&from, WRITE, &bvec, 1, bvec.bv_len); 569 568 if (skip) { 570 569 if (skip >= iov_iter_count(&from)) { 571 570 skip -= iov_iter_count(&from); ··· 623 624 int ret = 0; 624 625 625 626 reply.magic = 0; 626 - iov_iter_kvec(&to, READ | ITER_KVEC, &iov, 1, sizeof(reply)); 627 + iov_iter_kvec(&to, READ, &iov, 1, sizeof(reply)); 627 628 result = sock_xmit(nbd, index, 0, &to, MSG_WAITALL, NULL); 628 629 if (result <= 0) { 629 630 if (!nbd_disconnected(config)) ··· 677 678 struct bio_vec bvec; 678 679 679 680 rq_for_each_segment(bvec, req, iter) { 680 - iov_iter_bvec(&to, ITER_BVEC | READ, 681 - &bvec, 1, bvec.bv_len); 681 + iov_iter_bvec(&to, READ, &bvec, 1, bvec.bv_len); 682 682 result = sock_xmit(nbd, index, 0, &to, MSG_WAITALL, NULL); 683 683 if (result <= 0) { 684 684 dev_err(disk_to_dev(nbd->disk), "Receive data failed (result %d)\n", ··· 1071 1073 for (i = 0; i < config->num_connections; i++) { 1072 1074 struct nbd_sock *nsock = config->socks[i]; 1073 1075 1074 - iov_iter_kvec(&from, WRITE | ITER_KVEC, &iov, 1, sizeof(request)); 1076 + iov_iter_kvec(&from, WRITE, &iov, 1, sizeof(request)); 1075 1077 mutex_lock(&nsock->tx_lock); 1076 1078 ret = sock_xmit(nbd, i, 1, &from, 0, NULL); 1077 1079 if (ret <= 0)
+2 -2
drivers/fsi/fsi-sbefifo.c
··· 638 638 } 639 639 ffdc_iov.iov_base = ffdc; 640 640 ffdc_iov.iov_len = SBEFIFO_MAX_FFDC_SIZE; 641 - iov_iter_kvec(&ffdc_iter, WRITE | ITER_KVEC, &ffdc_iov, 1, SBEFIFO_MAX_FFDC_SIZE); 641 + iov_iter_kvec(&ffdc_iter, WRITE, &ffdc_iov, 1, SBEFIFO_MAX_FFDC_SIZE); 642 642 cmd[0] = cpu_to_be32(2); 643 643 cmd[1] = cpu_to_be32(SBEFIFO_CMD_GET_SBE_FFDC); 644 644 rc = sbefifo_do_command(sbefifo, cmd, 2, &ffdc_iter); ··· 735 735 rbytes = (*resp_len) * sizeof(__be32); 736 736 resp_iov.iov_base = response; 737 737 resp_iov.iov_len = rbytes; 738 - iov_iter_kvec(&resp_iter, WRITE | ITER_KVEC, &resp_iov, 1, rbytes); 738 + iov_iter_kvec(&resp_iter, WRITE, &resp_iov, 1, rbytes); 739 739 740 740 /* Perform the command */ 741 741 mutex_lock(&sbefifo->lock);
+1 -2
drivers/isdn/mISDN/l1oip_core.c
··· 718 718 printk(KERN_DEBUG "%s: socket created and open\n", 719 719 __func__); 720 720 while (!signal_pending(current)) { 721 - iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &iov, 1, 722 - recvbuf_size); 721 + iov_iter_kvec(&msg.msg_iter, READ, &iov, 1, recvbuf_size); 723 722 recvlen = sock_recvmsg(socket, &msg, 0); 724 723 if (recvlen > 0) { 725 724 l1oip_socket_parse(hc, &sin_rx, recvbuf, recvlen);
+3 -3
drivers/misc/vmw_vmci/vmci_queue_pair.c
··· 3030 3030 if (!qpair || !buf) 3031 3031 return VMCI_ERROR_INVALID_ARGS; 3032 3032 3033 - iov_iter_kvec(&from, WRITE | ITER_KVEC, &v, 1, buf_size); 3033 + iov_iter_kvec(&from, WRITE, &v, 1, buf_size); 3034 3034 3035 3035 qp_lock(qpair); 3036 3036 ··· 3074 3074 if (!qpair || !buf) 3075 3075 return VMCI_ERROR_INVALID_ARGS; 3076 3076 3077 - iov_iter_kvec(&to, READ | ITER_KVEC, &v, 1, buf_size); 3077 + iov_iter_kvec(&to, READ, &v, 1, buf_size); 3078 3078 3079 3079 qp_lock(qpair); 3080 3080 ··· 3119 3119 if (!qpair || !buf) 3120 3120 return VMCI_ERROR_INVALID_ARGS; 3121 3121 3122 - iov_iter_kvec(&to, READ | ITER_KVEC, &v, 1, buf_size); 3122 + iov_iter_kvec(&to, READ, &v, 1, buf_size); 3123 3123 3124 3124 qp_lock(qpair); 3125 3125
+1 -1
drivers/nvme/target/io-cmd-file.c
··· 101 101 rw = READ; 102 102 } 103 103 104 - iov_iter_bvec(&iter, ITER_BVEC | rw, req->f.bvec, nr_segs, count); 104 + iov_iter_bvec(&iter, rw, req->f.bvec, nr_segs, count); 105 105 106 106 iocb->ki_pos = pos; 107 107 iocb->ki_filp = req->ns->file;
+2 -4
drivers/target/iscsi/iscsi_target_util.c
··· 1258 1258 return -1; 1259 1259 1260 1260 memset(&msg, 0, sizeof(struct msghdr)); 1261 - iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, 1262 - count->iov, count->iov_count, data); 1261 + iov_iter_kvec(&msg.msg_iter, READ, count->iov, count->iov_count, data); 1263 1262 1264 1263 while (msg_data_left(&msg)) { 1265 1264 rx_loop = sock_recvmsg(conn->sock, &msg, MSG_WAITALL); ··· 1314 1315 1315 1316 memset(&msg, 0, sizeof(struct msghdr)); 1316 1317 1317 - iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, 1318 - iov, iov_count, data); 1318 + iov_iter_kvec(&msg.msg_iter, WRITE, iov, iov_count, data); 1319 1319 1320 1320 while (msg_data_left(&msg)) { 1321 1321 int tx_loop = sock_sendmsg(conn->sock, &msg);
+3 -3
drivers/target/target_core_file.c
··· 303 303 len += sg->length; 304 304 } 305 305 306 - iov_iter_bvec(&iter, ITER_BVEC | is_write, bvec, sgl_nents, len); 306 + iov_iter_bvec(&iter, is_write, bvec, sgl_nents, len); 307 307 308 308 aio_cmd->cmd = cmd; 309 309 aio_cmd->len = len; ··· 353 353 len += sg->length; 354 354 } 355 355 356 - iov_iter_bvec(&iter, ITER_BVEC, bvec, sgl_nents, len); 356 + iov_iter_bvec(&iter, READ, bvec, sgl_nents, len); 357 357 if (is_write) 358 358 ret = vfs_iter_write(fd, &iter, &pos, 0); 359 359 else ··· 490 490 len += se_dev->dev_attrib.block_size; 491 491 } 492 492 493 - iov_iter_bvec(&iter, ITER_BVEC, bvec, nolb, len); 493 + iov_iter_bvec(&iter, READ, bvec, nolb, len); 494 494 ret = vfs_iter_write(fd_dev->fd_file, &iter, &pos, 0); 495 495 496 496 kfree(bvec);
+1 -1
drivers/usb/usbip/usbip_common.c
··· 309 309 if (!sock || !buf || !size) 310 310 return -EINVAL; 311 311 312 - iov_iter_kvec(&msg.msg_iter, READ|ITER_KVEC, &iov, 1, size); 312 + iov_iter_kvec(&msg.msg_iter, READ, &iov, 1, size); 313 313 314 314 usbip_dbg_xmit("enter\n"); 315 315
+4 -4
drivers/xen/pvcalls-back.c
··· 137 137 if (masked_prod < masked_cons) { 138 138 vec[0].iov_base = data->in + masked_prod; 139 139 vec[0].iov_len = wanted; 140 - iov_iter_kvec(&msg.msg_iter, ITER_KVEC|WRITE, vec, 1, wanted); 140 + iov_iter_kvec(&msg.msg_iter, WRITE, vec, 1, wanted); 141 141 } else { 142 142 vec[0].iov_base = data->in + masked_prod; 143 143 vec[0].iov_len = array_size - masked_prod; 144 144 vec[1].iov_base = data->in; 145 145 vec[1].iov_len = wanted - vec[0].iov_len; 146 - iov_iter_kvec(&msg.msg_iter, ITER_KVEC|WRITE, vec, 2, wanted); 146 + iov_iter_kvec(&msg.msg_iter, WRITE, vec, 2, wanted); 147 147 } 148 148 149 149 atomic_set(&map->read, 0); ··· 195 195 if (pvcalls_mask(prod, array_size) > pvcalls_mask(cons, array_size)) { 196 196 vec[0].iov_base = data->out + pvcalls_mask(cons, array_size); 197 197 vec[0].iov_len = size; 198 - iov_iter_kvec(&msg.msg_iter, ITER_KVEC|READ, vec, 1, size); 198 + iov_iter_kvec(&msg.msg_iter, READ, vec, 1, size); 199 199 } else { 200 200 vec[0].iov_base = data->out + pvcalls_mask(cons, array_size); 201 201 vec[0].iov_len = array_size - pvcalls_mask(cons, array_size); 202 202 vec[1].iov_base = data->out; 203 203 vec[1].iov_len = size - vec[0].iov_len; 204 - iov_iter_kvec(&msg.msg_iter, ITER_KVEC|READ, vec, 2, size); 204 + iov_iter_kvec(&msg.msg_iter, READ, vec, 2, size); 205 205 } 206 206 207 207 atomic_set(&map->write, 0);
+2 -2
fs/9p/vfs_addr.c
··· 65 65 if (retval == 0) 66 66 return retval; 67 67 68 - iov_iter_bvec(&to, ITER_BVEC | READ, &bvec, 1, PAGE_SIZE); 68 + iov_iter_bvec(&to, READ, &bvec, 1, PAGE_SIZE); 69 69 70 70 retval = p9_client_read(fid, page_offset(page), &to, &err); 71 71 if (err) { ··· 175 175 bvec.bv_page = page; 176 176 bvec.bv_offset = 0; 177 177 bvec.bv_len = len; 178 - iov_iter_bvec(&from, ITER_BVEC | WRITE, &bvec, 1, len); 178 + iov_iter_bvec(&from, WRITE, &bvec, 1, len); 179 179 180 180 /* We should have writeback_fid always set */ 181 181 BUG_ON(!v9inode->writeback_fid);
+1 -1
fs/9p/vfs_dir.c
··· 133 133 if (rdir->tail == rdir->head) { 134 134 struct iov_iter to; 135 135 int n; 136 - iov_iter_kvec(&to, READ | ITER_KVEC, &kvec, 1, buflen); 136 + iov_iter_kvec(&to, READ, &kvec, 1, buflen); 137 137 n = p9_client_read(file->private_data, ctx->pos, &to, 138 138 &err); 139 139 if (err)
+2 -2
fs/9p/xattr.c
··· 32 32 struct iov_iter to; 33 33 int err; 34 34 35 - iov_iter_kvec(&to, READ | ITER_KVEC, &kvec, 1, buffer_size); 35 + iov_iter_kvec(&to, READ, &kvec, 1, buffer_size); 36 36 37 37 attr_fid = p9_client_xattrwalk(fid, name, &attr_size); 38 38 if (IS_ERR(attr_fid)) { ··· 107 107 struct iov_iter from; 108 108 int retval, err; 109 109 110 - iov_iter_kvec(&from, WRITE | ITER_KVEC, &kvec, 1, value_len); 110 + iov_iter_kvec(&from, WRITE, &kvec, 1, value_len); 111 111 112 112 p9_debug(P9_DEBUG_VFS, "name = %s value_len = %zu flags = %d\n", 113 113 name, value_len, flags);
+7 -8
fs/afs/rxrpc.c
··· 286 286 offset = 0; 287 287 } 288 288 289 - iov_iter_bvec(&msg->msg_iter, WRITE | ITER_BVEC, bv, nr, bytes); 289 + iov_iter_bvec(&msg->msg_iter, WRITE, bv, nr, bytes); 290 290 } 291 291 292 292 /* ··· 401 401 402 402 msg.msg_name = NULL; 403 403 msg.msg_namelen = 0; 404 - iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, iov, 1, 405 - call->request_size); 404 + iov_iter_kvec(&msg.msg_iter, WRITE, iov, 1, call->request_size); 406 405 msg.msg_control = NULL; 407 406 msg.msg_controllen = 0; 408 407 msg.msg_flags = MSG_WAITALL | (call->send_pages ? MSG_MORE : 0); ··· 431 432 rxrpc_kernel_abort_call(call->net->socket, rxcall, 432 433 RX_USER_ABORT, ret, "KSD"); 433 434 } else { 434 - iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, NULL, 0, 0); 435 + iov_iter_kvec(&msg.msg_iter, READ, NULL, 0, 0); 435 436 rxrpc_kernel_recv_data(call->net->socket, rxcall, 436 437 &msg.msg_iter, false, 437 438 &call->abort_code, &call->service_id); ··· 467 468 if (state == AFS_CALL_SV_AWAIT_ACK) { 468 469 struct iov_iter iter; 469 470 470 - iov_iter_kvec(&iter, READ | ITER_KVEC, NULL, 0, 0); 471 + iov_iter_kvec(&iter, READ, NULL, 0, 0); 471 472 ret = rxrpc_kernel_recv_data(call->net->socket, 472 473 call->rxcall, &iter, false, 473 474 &remote_abort, ··· 824 825 825 826 msg.msg_name = NULL; 826 827 msg.msg_namelen = 0; 827 - iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, NULL, 0, 0); 828 + iov_iter_kvec(&msg.msg_iter, WRITE, NULL, 0, 0); 828 829 msg.msg_control = NULL; 829 830 msg.msg_controllen = 0; 830 831 msg.msg_flags = 0; ··· 863 864 iov[0].iov_len = len; 864 865 msg.msg_name = NULL; 865 866 msg.msg_namelen = 0; 866 - iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, iov, 1, len); 867 + iov_iter_kvec(&msg.msg_iter, WRITE, iov, 1, len); 867 868 msg.msg_control = NULL; 868 869 msg.msg_controllen = 0; 869 870 msg.msg_flags = 0; ··· 904 905 905 906 iov.iov_base = buf + call->offset; 906 907 iov.iov_len = count - call->offset; 907 - iov_iter_kvec(&iter, ITER_KVEC | READ, &iov, 1, count - call->offset); 908 + iov_iter_kvec(&iter, READ, &iov, 1, count - call->offset); 908 909 909 910 ret = rxrpc_kernel_recv_data(net->socket, call->rxcall, &iter, 910 911 want_more, &remote_abort,
+2 -3
fs/ceph/file.c
··· 821 821 aio_req->total_len = rc + zlen; 822 822 } 823 823 824 - iov_iter_bvec(&i, ITER_BVEC, osd_data->bvec_pos.bvecs, 824 + iov_iter_bvec(&i, READ, osd_data->bvec_pos.bvecs, 825 825 osd_data->num_bvecs, 826 826 osd_data->bvec_pos.iter.bi_size); 827 827 iov_iter_advance(&i, rc); ··· 1044 1044 int zlen = min_t(size_t, len - ret, 1045 1045 size - pos - ret); 1046 1046 1047 - iov_iter_bvec(&i, ITER_BVEC, bvecs, num_pages, 1048 - len); 1047 + iov_iter_bvec(&i, READ, bvecs, num_pages, len); 1049 1048 iov_iter_advance(&i, ret); 1050 1049 iov_iter_zero(zlen, &i); 1051 1050 ret += zlen;
+2 -2
fs/cifs/connect.c
··· 588 588 { 589 589 struct msghdr smb_msg; 590 590 struct kvec iov = {.iov_base = buf, .iov_len = to_read}; 591 - iov_iter_kvec(&smb_msg.msg_iter, READ | ITER_KVEC, &iov, 1, to_read); 591 + iov_iter_kvec(&smb_msg.msg_iter, READ, &iov, 1, to_read); 592 592 593 593 return cifs_readv_from_socket(server, &smb_msg); 594 594 } ··· 600 600 struct msghdr smb_msg; 601 601 struct bio_vec bv = { 602 602 .bv_page = page, .bv_len = to_read, .bv_offset = page_offset}; 603 - iov_iter_bvec(&smb_msg.msg_iter, READ | ITER_BVEC, &bv, 1, to_read); 603 + iov_iter_bvec(&smb_msg.msg_iter, READ, &bv, 1, to_read); 604 604 return cifs_readv_from_socket(server, &smb_msg); 605 605 } 606 606
+1 -1
fs/cifs/misc.c
··· 857 857 ctx->bv = bv; 858 858 ctx->len = saved_len - count; 859 859 ctx->npages = npages; 860 - iov_iter_bvec(&ctx->iter, ITER_BVEC | rw, ctx->bv, npages, ctx->len); 860 + iov_iter_bvec(&ctx->iter, rw, ctx->bv, npages, ctx->len); 861 861 return 0; 862 862 } 863 863
+2 -2
fs/cifs/smb2ops.c
··· 2962 2962 return 0; 2963 2963 } 2964 2964 2965 - iov_iter_bvec(&iter, WRITE | ITER_BVEC, bvec, npages, data_len); 2965 + iov_iter_bvec(&iter, WRITE, bvec, npages, data_len); 2966 2966 } else if (buf_len >= data_offset + data_len) { 2967 2967 /* read response payload is in buf */ 2968 2968 WARN_ONCE(npages > 0, "read data can be either in buf or in pages"); 2969 2969 iov.iov_base = buf + data_offset; 2970 2970 iov.iov_len = data_len; 2971 - iov_iter_kvec(&iter, WRITE | ITER_KVEC, &iov, 1, data_len); 2971 + iov_iter_kvec(&iter, WRITE, &iov, 1, data_len); 2972 2972 } else { 2973 2973 /* read response payload cannot be in both buf and pages */ 2974 2974 WARN_ONCE(1, "buf can not contain only a part of read data");
+3 -5
fs/cifs/transport.c
··· 307 307 .iov_base = &rfc1002_marker, 308 308 .iov_len = 4 309 309 }; 310 - iov_iter_kvec(&smb_msg.msg_iter, WRITE | ITER_KVEC, &hiov, 311 - 1, 4); 310 + iov_iter_kvec(&smb_msg.msg_iter, WRITE, &hiov, 1, 4); 312 311 rc = smb_send_kvec(server, &smb_msg, &sent); 313 312 if (rc < 0) 314 313 goto uncork; ··· 328 329 size += iov[i].iov_len; 329 330 } 330 331 331 - iov_iter_kvec(&smb_msg.msg_iter, WRITE | ITER_KVEC, 332 - iov, n_vec, size); 332 + iov_iter_kvec(&smb_msg.msg_iter, WRITE, iov, n_vec, size); 333 333 334 334 rc = smb_send_kvec(server, &smb_msg, &sent); 335 335 if (rc < 0) ··· 344 346 rqst_page_get_length(&rqst[j], i, &bvec.bv_len, 345 347 &bvec.bv_offset); 346 348 347 - iov_iter_bvec(&smb_msg.msg_iter, WRITE | ITER_BVEC, 349 + iov_iter_bvec(&smb_msg.msg_iter, WRITE, 348 350 &bvec, 1, bvec.bv_len); 349 351 rc = smb_send_kvec(server, &smb_msg, &sent); 350 352 if (rc < 0)
+1 -1
fs/dlm/lowcomms.c
··· 674 674 nvec = 2; 675 675 } 676 676 len = iov[0].iov_len + iov[1].iov_len; 677 - iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, iov, nvec, len); 677 + iov_iter_kvec(&msg.msg_iter, READ, iov, nvec, len); 678 678 679 679 r = ret = sock_recvmsg(con->sock, &msg, MSG_DONTWAIT | MSG_NOSIGNAL); 680 680 if (ret <= 0)
+2 -2
fs/nfsd/vfs.c
··· 923 923 int host_err; 924 924 925 925 trace_nfsd_read_vector(rqstp, fhp, offset, *count); 926 - iov_iter_kvec(&iter, READ | ITER_KVEC, vec, vlen, *count); 926 + iov_iter_kvec(&iter, READ, vec, vlen, *count); 927 927 host_err = vfs_iter_read(file, &iter, &offset, 0); 928 928 return nfsd_finish_read(rqstp, fhp, file, offset, count, host_err); 929 929 } ··· 999 999 if (stable && !use_wgather) 1000 1000 flags |= RWF_SYNC; 1001 1001 1002 - iov_iter_kvec(&iter, WRITE | ITER_KVEC, vec, vlen, *cnt); 1002 + iov_iter_kvec(&iter, WRITE, vec, vlen, *cnt); 1003 1003 host_err = vfs_iter_write(file, &iter, &pos, flags); 1004 1004 if (host_err < 0) 1005 1005 goto out_nfserr;
+1 -1
fs/ocfs2/cluster/tcp.c
··· 916 916 { 917 917 struct kvec vec = { .iov_len = len, .iov_base = data, }; 918 918 struct msghdr msg = { .msg_flags = MSG_DONTWAIT, }; 919 - iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &vec, 1, len); 919 + iov_iter_kvec(&msg.msg_iter, READ, &vec, 1, len); 920 920 return sock_recvmsg(sock, &msg, MSG_DONTWAIT); 921 921 } 922 922
+1 -1
fs/orangefs/inode.c
··· 25 25 struct iov_iter to; 26 26 struct bio_vec bv = {.bv_page = page, .bv_len = PAGE_SIZE}; 27 27 28 - iov_iter_bvec(&to, ITER_BVEC | READ, &bv, 1, PAGE_SIZE); 28 + iov_iter_bvec(&to, READ, &bv, 1, PAGE_SIZE); 29 29 30 30 gossip_debug(GOSSIP_INODE_DEBUG, 31 31 "orangefs_readpage called with page %p\n",
+3 -4
fs/splice.c
··· 301 301 struct kiocb kiocb; 302 302 int idx, ret; 303 303 304 - iov_iter_pipe(&to, ITER_PIPE | READ, pipe, len); 304 + iov_iter_pipe(&to, READ, pipe, len); 305 305 idx = to.idx; 306 306 init_sync_kiocb(&kiocb, in); 307 307 kiocb.ki_pos = *ppos; ··· 386 386 */ 387 387 offset = *ppos & ~PAGE_MASK; 388 388 389 - iov_iter_pipe(&to, ITER_PIPE | READ, pipe, len + offset); 389 + iov_iter_pipe(&to, READ, pipe, len + offset); 390 390 391 391 res = iov_iter_get_pages_alloc(&to, &pages, len + offset, &base); 392 392 if (res <= 0) ··· 745 745 left -= this_len; 746 746 } 747 747 748 - iov_iter_bvec(&from, ITER_BVEC | WRITE, array, n, 749 - sd.total_len - left); 748 + iov_iter_bvec(&from, WRITE, array, n, sd.total_len - left); 750 749 ret = vfs_iter_write(out, &from, &sd.pos, 0); 751 750 if (ret <= 0) 752 751 break;
+5 -5
include/linux/uio.h
··· 29 29 }; 30 30 31 31 struct iov_iter { 32 - int type; 32 + unsigned int type; 33 33 size_t iov_offset; 34 34 size_t count; 35 35 union { ··· 212 212 size_t iov_iter_zero(size_t bytes, struct iov_iter *); 213 213 unsigned long iov_iter_alignment(const struct iov_iter *i); 214 214 unsigned long iov_iter_gap_alignment(const struct iov_iter *i); 215 - void iov_iter_init(struct iov_iter *i, int direction, const struct iovec *iov, 215 + void iov_iter_init(struct iov_iter *i, unsigned int direction, const struct iovec *iov, 216 216 unsigned long nr_segs, size_t count); 217 - void iov_iter_kvec(struct iov_iter *i, int direction, const struct kvec *kvec, 217 + void iov_iter_kvec(struct iov_iter *i, unsigned int direction, const struct kvec *kvec, 218 218 unsigned long nr_segs, size_t count); 219 - void iov_iter_bvec(struct iov_iter *i, int direction, const struct bio_vec *bvec, 219 + void iov_iter_bvec(struct iov_iter *i, unsigned int direction, const struct bio_vec *bvec, 220 220 unsigned long nr_segs, size_t count); 221 - void iov_iter_pipe(struct iov_iter *i, int direction, struct pipe_inode_info *pipe, 221 + void iov_iter_pipe(struct iov_iter *i, unsigned int direction, struct pipe_inode_info *pipe, 222 222 size_t count); 223 223 ssize_t iov_iter_get_pages(struct iov_iter *i, struct page **pages, 224 224 size_t maxsize, unsigned maxpages, size_t *start);
+15 -13
lib/iov_iter.c
··· 428 428 } 429 429 EXPORT_SYMBOL(iov_iter_fault_in_readable); 430 430 431 - void iov_iter_init(struct iov_iter *i, int direction, 431 + void iov_iter_init(struct iov_iter *i, unsigned int direction, 432 432 const struct iovec *iov, unsigned long nr_segs, 433 433 size_t count) 434 434 { 435 + WARN_ON(direction & ~(READ | WRITE)); 436 + direction &= READ | WRITE; 437 + 435 438 /* It will get better. Eventually... */ 436 439 if (uaccess_kernel()) { 437 - direction |= ITER_KVEC; 438 - i->type = direction; 440 + i->type = ITER_KVEC | direction; 439 441 i->kvec = (struct kvec *)iov; 440 442 } else { 441 - i->type = direction; 443 + i->type = ITER_IOVEC | direction; 442 444 i->iov = iov; 443 445 } 444 446 i->nr_segs = nr_segs; ··· 1062 1060 } 1063 1061 EXPORT_SYMBOL(iov_iter_single_seg_count); 1064 1062 1065 - void iov_iter_kvec(struct iov_iter *i, int direction, 1063 + void iov_iter_kvec(struct iov_iter *i, unsigned int direction, 1066 1064 const struct kvec *kvec, unsigned long nr_segs, 1067 1065 size_t count) 1068 1066 { 1069 - BUG_ON(!(direction & ITER_KVEC)); 1070 - i->type = direction; 1067 + WARN_ON(direction & ~(READ | WRITE)); 1068 + i->type = ITER_KVEC | (direction & (READ | WRITE)); 1071 1069 i->kvec = kvec; 1072 1070 i->nr_segs = nr_segs; 1073 1071 i->iov_offset = 0; ··· 1075 1073 } 1076 1074 EXPORT_SYMBOL(iov_iter_kvec); 1077 1075 1078 - void iov_iter_bvec(struct iov_iter *i, int direction, 1076 + void iov_iter_bvec(struct iov_iter *i, unsigned int direction, 1079 1077 const struct bio_vec *bvec, unsigned long nr_segs, 1080 1078 size_t count) 1081 1079 { 1082 - BUG_ON(!(direction & ITER_BVEC)); 1083 - i->type = direction; 1080 + WARN_ON(direction & ~(READ | WRITE)); 1081 + i->type = ITER_BVEC | (direction & (READ | WRITE)); 1084 1082 i->bvec = bvec; 1085 1083 i->nr_segs = nr_segs; 1086 1084 i->iov_offset = 0; ··· 1088 1086 } 1089 1087 EXPORT_SYMBOL(iov_iter_bvec); 1090 1088 1091 - void iov_iter_pipe(struct iov_iter *i, int direction, 1089 + void iov_iter_pipe(struct iov_iter *i, unsigned int direction, 1092 1090 struct pipe_inode_info *pipe, 1093 1091 size_t count) 1094 1092 { 1095 - BUG_ON(direction != ITER_PIPE); 1093 + BUG_ON(direction != READ); 1096 1094 WARN_ON(pipe->nrbufs == pipe->buffers); 1097 - i->type = direction; 1095 + i->type = ITER_PIPE | READ; 1098 1096 i->pipe = pipe; 1099 1097 i->idx = (pipe->curbuf + pipe->nrbufs) & (pipe->buffers - 1); 1100 1098 i->iov_offset = 0;
+1 -1
mm/page_io.c
··· 294 294 }; 295 295 struct iov_iter from; 296 296 297 - iov_iter_bvec(&from, ITER_BVEC | WRITE, &bv, 1, PAGE_SIZE); 297 + iov_iter_bvec(&from, WRITE, &bv, 1, PAGE_SIZE); 298 298 init_sync_kiocb(&kiocb, swap_file); 299 299 kiocb.ki_pos = page_file_offset(page); 300 300
+1 -1
net/9p/client.c
··· 2070 2070 struct kvec kv = {.iov_base = data, .iov_len = count}; 2071 2071 struct iov_iter to; 2072 2072 2073 - iov_iter_kvec(&to, READ | ITER_KVEC, &kv, 1, count); 2073 + iov_iter_kvec(&to, READ, &kv, 1, count); 2074 2074 2075 2075 p9_debug(P9_DEBUG_9P, ">>> TREADDIR fid %d offset %llu count %d\n", 2076 2076 fid->fid, (unsigned long long) offset, count);
+1 -1
net/bluetooth/6lowpan.c
··· 467 467 iv.iov_len = skb->len; 468 468 469 469 memset(&msg, 0, sizeof(msg)); 470 - iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, &iv, 1, skb->len); 470 + iov_iter_kvec(&msg.msg_iter, WRITE, &iv, 1, skb->len); 471 471 472 472 err = l2cap_chan_send(chan, &msg, skb->len); 473 473 if (err > 0) {
+1 -1
net/bluetooth/a2mp.c
··· 63 63 64 64 memset(&msg, 0, sizeof(msg)); 65 65 66 - iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, &iv, 1, total_len); 66 + iov_iter_kvec(&msg.msg_iter, WRITE, &iv, 1, total_len); 67 67 68 68 l2cap_chan_send(chan, &msg, total_len); 69 69
+1 -1
net/bluetooth/smp.c
··· 622 622 623 623 memset(&msg, 0, sizeof(msg)); 624 624 625 - iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, iv, 2, 1 + len); 625 + iov_iter_kvec(&msg.msg_iter, WRITE, iv, 2, 1 + len); 626 626 627 627 l2cap_chan_send(chan, &msg, 1 + len); 628 628
+3 -3
net/ceph/messenger.c
··· 526 526 if (!buf) 527 527 msg.msg_flags |= MSG_TRUNC; 528 528 529 - iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &iov, 1, len); 529 + iov_iter_kvec(&msg.msg_iter, READ, &iov, 1, len); 530 530 r = sock_recvmsg(sock, &msg, msg.msg_flags); 531 531 if (r == -EAGAIN) 532 532 r = 0; ··· 545 545 int r; 546 546 547 547 BUG_ON(page_offset + length > PAGE_SIZE); 548 - iov_iter_bvec(&msg.msg_iter, READ | ITER_BVEC, &bvec, 1, length); 548 + iov_iter_bvec(&msg.msg_iter, READ, &bvec, 1, length); 549 549 r = sock_recvmsg(sock, &msg, msg.msg_flags); 550 550 if (r == -EAGAIN) 551 551 r = 0; ··· 607 607 else 608 608 msg.msg_flags |= MSG_EOR; /* superfluous, but what the hell */ 609 609 610 - iov_iter_bvec(&msg.msg_iter, WRITE | ITER_BVEC, &bvec, 1, size); 610 + iov_iter_bvec(&msg.msg_iter, WRITE, &bvec, 1, size); 611 611 ret = sock_sendmsg(sock, &msg); 612 612 if (ret == -EAGAIN) 613 613 ret = 0;
+1 -1
net/netfilter/ipvs/ip_vs_sync.c
··· 1616 1616 EnterFunction(7); 1617 1617 1618 1618 /* Receive a packet */ 1619 - iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &iov, 1, buflen); 1619 + iov_iter_kvec(&msg.msg_iter, READ, &iov, 1, buflen); 1620 1620 len = sock_recvmsg(sock, &msg, MSG_DONTWAIT); 1621 1621 if (len < 0) 1622 1622 return len;
+2 -2
net/smc/smc_clc.c
··· 286 286 */ 287 287 krflags = MSG_PEEK | MSG_WAITALL; 288 288 smc->clcsock->sk->sk_rcvtimeo = CLC_WAIT_TIME; 289 - iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &vec, 1, 289 + iov_iter_kvec(&msg.msg_iter, READ, &vec, 1, 290 290 sizeof(struct smc_clc_msg_hdr)); 291 291 len = sock_recvmsg(smc->clcsock, &msg, krflags); 292 292 if (signal_pending(current)) { ··· 325 325 326 326 /* receive the complete CLC message */ 327 327 memset(&msg, 0, sizeof(struct msghdr)); 328 - iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &vec, 1, datlen); 328 + iov_iter_kvec(&msg.msg_iter, READ, &vec, 1, datlen); 329 329 krflags = MSG_WAITALL; 330 330 len = sock_recvmsg(smc->clcsock, &msg, krflags); 331 331 if (len < datlen || !smc_clc_msg_hdr_valid(clcm)) {
+3 -3
net/socket.c
··· 635 635 int kernel_sendmsg(struct socket *sock, struct msghdr *msg, 636 636 struct kvec *vec, size_t num, size_t size) 637 637 { 638 - iov_iter_kvec(&msg->msg_iter, WRITE | ITER_KVEC, vec, num, size); 638 + iov_iter_kvec(&msg->msg_iter, WRITE, vec, num, size); 639 639 return sock_sendmsg(sock, msg); 640 640 } 641 641 EXPORT_SYMBOL(kernel_sendmsg); ··· 648 648 if (!sock->ops->sendmsg_locked) 649 649 return sock_no_sendmsg_locked(sk, msg, size); 650 650 651 - iov_iter_kvec(&msg->msg_iter, WRITE | ITER_KVEC, vec, num, size); 651 + iov_iter_kvec(&msg->msg_iter, WRITE, vec, num, size); 652 652 653 653 return sock->ops->sendmsg_locked(sk, msg, msg_data_left(msg)); 654 654 } ··· 823 823 mm_segment_t oldfs = get_fs(); 824 824 int result; 825 825 826 - iov_iter_kvec(&msg->msg_iter, READ | ITER_KVEC, vec, num, size); 826 + iov_iter_kvec(&msg->msg_iter, READ, vec, num, size); 827 827 set_fs(KERNEL_DS); 828 828 result = sock_recvmsg(sock, msg, flags); 829 829 set_fs(oldfs);
+1 -1
net/sunrpc/svcsock.c
··· 338 338 rqstp->rq_xprt_hlen = 0; 339 339 340 340 clear_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags); 341 - iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, iov, nr, buflen); 341 + iov_iter_kvec(&msg.msg_iter, READ, iov, nr, buflen); 342 342 len = sock_recvmsg(svsk->sk_sock, &msg, msg.msg_flags); 343 343 /* If we read a full record, then assume there may be more 344 344 * data to read (stream based sockets only!)
+1 -1
net/tipc/topsrv.c
··· 394 394 iov.iov_base = &s; 395 395 iov.iov_len = sizeof(s); 396 396 msg.msg_name = NULL; 397 - iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &iov, 1, iov.iov_len); 397 + iov_iter_kvec(&msg.msg_iter, READ, &iov, 1, iov.iov_len); 398 398 ret = sock_recvmsg(con->sock, &msg, MSG_DONTWAIT); 399 399 if (ret == -EWOULDBLOCK) 400 400 return -EWOULDBLOCK;
+2 -2
net/tls/tls_device.c
··· 489 489 490 490 iov.iov_base = kaddr + offset; 491 491 iov.iov_len = size; 492 - iov_iter_kvec(&msg_iter, WRITE | ITER_KVEC, &iov, 1, size); 492 + iov_iter_kvec(&msg_iter, WRITE, &iov, 1, size); 493 493 rc = tls_push_data(sk, &msg_iter, size, 494 494 flags, TLS_RECORD_TYPE_DATA); 495 495 kunmap(page); ··· 538 538 { 539 539 struct iov_iter msg_iter; 540 540 541 - iov_iter_kvec(&msg_iter, WRITE | ITER_KVEC, NULL, 0, 0); 541 + iov_iter_kvec(&msg_iter, WRITE, NULL, 0, 0); 542 542 return tls_push_data(sk, &msg_iter, 0, flags, TLS_RECORD_TYPE_DATA); 543 543 } 544 544