Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp22479163rwd; Fri, 30 Jun 2023 08:29:41 -0700 (PDT) X-Google-Smtp-Source: APBJJlEF2k36LBw91wmruvWIceaLjAlkXULGBBG8cTT0+/DmKn8eimKWeRU5Qa6R7e04ZI5WlFIT X-Received: by 2002:a17:903:1105:b0:1b0:3d03:4179 with SMTP id n5-20020a170903110500b001b03d034179mr4413576plh.6.1688138980742; Fri, 30 Jun 2023 08:29:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688138980; cv=none; d=google.com; s=arc-20160816; b=RStVf5Yhkhmu/3gP7GpmZmBPamTlCFPWDBaEBULSTsjnabfRdh1ejhlzwbhs0+0OU4 sjC4sFZhVkPN3A9Zl+k+j+UQ1N7hvX1ZRga2i6b3/Katgl1e2yO0Iq1oirZygLmo54Yd ml6p4nonF5Zb7B2n5oOvxiBtGeUuH/6+wkIAMdusu+l58jFRAVBszWeVJhwYgUyzxqY9 a8ofLzCMa1PJ4WrbzY3pOacrqibQyiYu2x1U8zmpFtmQ5a5QTf5Ib9hpnYSfV98rm9Vy NE3X9autITBSXy0C4m93E2DXoVAtiaSsarWhVj37Ct5ncJvXNpqPDiJYuiIb2YWNXw5E W7Tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=mthXo3mgP7U+daoZuZFZnhRN3B6pNdnA/TCl+mKtp+A=; fh=f0+7NM5SdWd1kZRacLzkFc9IJR0X1aajzRrwK/Vh5Z4=; b=Hjhz02qAHEkXe/GrblrmX0Qz4XKH8G6vnBPLoPyoUcnXALn+/CL+nbGL0fnZ4qQRVp XIzmh0RYFPfWbnXtaJ6ISWsZjLCXBX0qWeWFLP6+tz474/98S91s0PoeGUBHQhPTQBn9 HBcsuS+tNgXyOuXWqbjmsZfjrsPRElWoDqjhbKt7I4+wHwK7zBYtinhYMcyMW7K37v09 dCK8KshpdGb5e6zE+JFskOHnw30Hhfe2mLQiJUjTVscbXR5QOrhMCgwhBpUWyqknGVr2 GYAyy7jTghrCQOCq5WqzQdUuzK8vlf4tdFig+izH22RpV8r3RSXvKXp+SOCCFXhOi3Es dKSQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=NpXyhjb8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l5-20020a170902f68500b001b840b02ee1si4819098plg.496.2023.06.30.08.29.28; Fri, 30 Jun 2023 08:29:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=NpXyhjb8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232862AbjF3P0v (ORCPT + 99 others); Fri, 30 Jun 2023 11:26:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42788 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232797AbjF3P01 (ORCPT ); Fri, 30 Jun 2023 11:26:27 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5A443A81 for ; Fri, 30 Jun 2023 08:25:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1688138735; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=mthXo3mgP7U+daoZuZFZnhRN3B6pNdnA/TCl+mKtp+A=; b=NpXyhjb8TsGJy/YUMlaBwuyF9ZiqULJkAy5Z7ti03fQbBNDCk18hSfqZ3E8MccMpXdVyaC lAcEJ8ubZio5+RtnroiLyQfO0CQ7YpAHHP40sj9E739eaYsyXnYUZneTB8IvQM9PH3VjNM etulPSjkkQH9VFVfhvyvggXPKarQh0k= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-657-U7PU7gZfOQ2IVzmMF0LTDg-1; Fri, 30 Jun 2023 11:25:29 -0400 X-MC-Unique: U7PU7gZfOQ2IVzmMF0LTDg-1 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 9FE6F8631DB; Fri, 30 Jun 2023 15:25:28 +0000 (UTC) Received: from warthog.procyon.org.uk.com (unknown [10.42.28.195]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9D6DD492B02; Fri, 30 Jun 2023 15:25:26 +0000 (UTC) From: David Howells To: Jens Axboe , Al Viro , Christoph Hellwig Cc: David Howells , Matthew Wilcox , Jan Kara , Jeff Layton , David Hildenbrand , Jason Gunthorpe , Logan Gunthorpe , Hillf Danton , Christian Brauner , linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 00/11] iov_iter: Use I/O direction from kiocb, iomap & request rather than iov_iter Date: Fri, 30 Jun 2023 16:25:13 +0100 Message-ID: <20230630152524.661208-1-dhowells@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jens, Christoph, Here are some patches to switch from using the I/O direction indication in the iov_iter struct to using the I/O direction flags to be found in the kiocb struct, the iomap_iter struct and the request struct. The iterator's I/O direction is then only used in some internal checks. The patches also add direction flags into iov_iter_extract_pages() so that it can perform some checks. New constants are defined rather than using READ and WRITE so that a check can be made that one of them is specified. The problem with the READ constant is that it is zero and is thus the same as no direction being specified - but if we're modifying the buffer contents (ie. reading into it), we need to know to set FOLL_WRITE. Granted this would be the default if unspecified, but it seems better that this case should be explicit. There are also patches to make 9P and SCSI use iov_iter_extract_pages(). I've pushed the patches here also: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/log/?h=iov-extract David David Howells (11): iov_iter: Fix comment refs to iov_iter_get_pages/pages_alloc() vfs: Set IOCB_WRITE in iocbs that we're going to write from vfs: Use init_kiocb() to initialise new IOCBs iov_iter: Use IOCB_WRITE rather than iterator direction iov_iter: Use IOMAP_WRITE rather than iterator direction iov_iter: Use op_is_write() rather than iterator direction cifs: Drop the check using iov_iter_rw() iov_iter: Drop iov_iter_rw() and fold in last user iov_iter: Use I/O dir flags with iov_iter_extract_pages() 9p: Pin pages rather than ref'ing if appropriate scsi: Use extract_iter_to_sg() block/bio.c | 6 ++ block/blk-map.c | 5 +- block/fops.c | 8 +-- crypto/af_alg.c | 5 +- crypto/algif_hash.c | 3 +- drivers/block/loop.c | 11 ++-- drivers/nvme/target/io-cmd-file.c | 5 +- drivers/target/target_core_file.c | 2 +- drivers/vhost/scsi.c | 79 ++++++++------------------ fs/9p/vfs_addr.c | 2 +- fs/affs/file.c | 4 +- fs/aio.c | 9 ++- fs/btrfs/ioctl.c | 4 +- fs/cachefiles/io.c | 10 ++-- fs/ceph/file.c | 6 +- fs/dax.c | 6 +- fs/direct-io.c | 28 ++++++---- fs/exfat/inode.c | 6 +- fs/ext2/inode.c | 2 +- fs/f2fs/file.c | 10 ++-- fs/fat/inode.c | 4 +- fs/fuse/dax.c | 2 +- fs/fuse/file.c | 8 +-- fs/hfs/inode.c | 2 +- fs/hfsplus/inode.c | 2 +- fs/iomap/direct-io.c | 4 +- fs/jfs/inode.c | 2 +- fs/nfs/direct.c | 2 +- fs/nilfs2/inode.c | 2 +- fs/ntfs3/inode.c | 2 +- fs/ocfs2/aops.c | 2 +- fs/orangefs/inode.c | 2 +- fs/read_write.c | 10 ++-- fs/reiserfs/inode.c | 2 +- fs/seq_file.c | 2 +- fs/smb/client/smbdirect.c | 9 --- fs/splice.c | 2 +- fs/udf/inode.c | 2 +- include/linux/bio.h | 18 +++++- include/linux/fs.h | 16 +++++- include/linux/mm_types.h | 2 +- include/linux/uio.h | 10 ++-- io_uring/rw.c | 10 ++-- lib/iov_iter.c | 14 ++++- lib/scatterlist.c | 12 +++- mm/filemap.c | 2 +- mm/page_io.c | 4 +- net/9p/trans_common.c | 8 +-- net/9p/trans_common.h | 2 +- net/9p/trans_virtio.c | 92 ++++++++++--------------------- 50 files changed, 221 insertions(+), 241 deletions(-)