From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3DCA0C7EE23 for ; Sat, 20 May 2023 09:47:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9AC6B900004; Sat, 20 May 2023 05:47:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 95D02900003; Sat, 20 May 2023 05:47:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 824CE900004; Sat, 20 May 2023 05:47:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 6F922900003 for ; Sat, 20 May 2023 05:47:32 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 40EE680BBB for ; Sat, 20 May 2023 09:47:32 +0000 (UTC) X-FDA: 80810155944.24.482101D Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf13.hostedemail.com (Postfix) with ESMTP id 87F662000D for ; Sat, 20 May 2023 09:47:30 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=pZFm8NQY; spf=pass (imf13.hostedemail.com: domain of brauner@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=brauner@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684576050; a=rsa-sha256; cv=none; b=gCRexPrQHKh/3neR63BJZIg/5jVgLtps4J/9mCG4mD9C5FKotzX1g397HPa2TT1bgZnhYL /rudGy+yoXejeUYciRABhL8w2HkMOynYJ3plec6JpyMI96ui0lWz9hrIz5Qyv8C1sB7K7D 2ROzUV6cABOEITCUzkFPQImfhzrFWMQ= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=pZFm8NQY; spf=pass (imf13.hostedemail.com: domain of brauner@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=brauner@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684576050; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=C+0tZreXiQlswzBbgUqqZMzglcH1sO6MGoDTEJVa7zs=; b=fsUPFDjYLpw2Oyis+N9917JeA7T04PaAbbAKQ7bGGbu5Cy/xpmQrC788EY4bm31Ev1jGsJ wbie5+/w7K2hI5km3Xw723ZwCs8OGlnEGCS+djW9J+14UcKefviqBqCODDnIIyH45beiij 7nKt2NWbFZvo85bo5Lx+Vg9TOwXpscA= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 91F2E60A4A; Sat, 20 May 2023 09:47:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 251B0C433EF; Sat, 20 May 2023 09:47:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684576048; bh=tpbo4BqtQNV64ZRx85M71kPc027/14n1Atl6YMev6Nw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=pZFm8NQY+xZm8guWK+z/3dddQXvn4pHCJ9Yl/pAvhhPb/EOs9yGAznOr1NN3KcI9n kroj0W5v9/EVnsYLKAeHtnt4zR2V3URnHJjks5ik5JzTLT6IwNd/2zXSybyjZPp/6F gh7yL0T4hRTcx3p/ulTt1p4F9dEwLi5hRS6qqsgRnaR0gQvcIfqNGOT9iLkaBCqd+v 94t+vqHVE64VLRbG98KcN4+B/6xeVB09BQ77glqqasMKN3neUwrTcMiIs8ZlFWQuzC 1nckliMlCLM6KNkTmGG3sn3xggbthm2/sZZBMairxZT0KER7Q49aTk0m+oHrTdxzC2 W+IbQC53gqZmg== Date: Sat, 20 May 2023 11:47:20 +0200 From: Christian Brauner To: David Howells Cc: Jens Axboe , Al Viro , Christoph Hellwig , Matthew Wilcox , Jan Kara , Jeff Layton , David Hildenbrand , Jason Gunthorpe , Logan Gunthorpe , Hillf Danton , Linus Torvalds , linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Christoph Hellwig , John Hubbard , Miklos Szeredi , linux-unionfs@vger.kernel.org, Amir Goldstein Subject: Re: [PATCH v21 10/30] overlayfs: Implement splice-read Message-ID: <20230520-zeitplan-erdig-b97a98a72261@brauner> References: <20230520000049.2226926-1-dhowells@redhat.com> <20230520000049.2226926-11-dhowells@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20230520000049.2226926-11-dhowells@redhat.com> X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 87F662000D X-Stat-Signature: 5zbojzam6rudzxsbo84moqdhmmd5i7fd X-Rspam-User: X-HE-Tag: 1684576050-129175 X-HE-Meta: U2FsdGVkX1/ztK+qiEzFFpCwV9dWmf/eEVVoMkMxMAuPcEvGnTA3Ytwt0n/sFsaKRE6hljijwnUz2DnDwMVMnV7cNgQ5RlcbjvXxaXWnzuxuHUBIK90t4IIZ0f5E+maq/dijmq24VGAOyyWF7ImYxuTFIYMl45nBxglRZpqjECM2C2Voyoi3/HBaoGc/4YZqonsz6EnUTwvECaQjg4LmKw0Ls3LY9YELpsr5hOERxIri1gdizSiJoww4tQBu7vlHgkFUUmjD+A9PETltwT8xgfZCKiUxtjn2cR/Ha8vP+KduKJFI7w8AZ5expfBEibgSlLNHyzIACOq/lO0xgEjopQk16jHpnUK7bcJ1OQDWJMhmtF3eQB/1ZFiHz+80b/7jbCuXD+3LibNwnyeNTDPTKS5M/EqFMBh8VvKnA6Ia1Nt+jumvrwf4Z0yEM4PIVpirTJblvUb13k/Cn+RiCtOX5R6Qo74x61kSp7Uxc5Ez+f6YZHdsVWHPXc5T480GVnDh45NtF8iSbTbjhsu6xN9YCpNbqiswa55Lr7dP4FpXd4KHx/d3mi5KiEPBqdeiCOEk87Leq4hVkjhuW9dkpVwclSAzkt7542CJp25YixCdXrq5p2rYz/lgl++bcTnNCgzENhAnBMagrTIwuR/nFl2dODLUTwr5Pns1CEh8vqAZvzXMkC9MFRfgrNqmR8k4gQX9g0vVdptjwaAdhwLxVPmBVzfwM23Z6B21widuO/gWRu9j7PmlOFKcsSbUVAjzD+BAC3CfZYkqd7l0SlkB31QotyhMWiv0x/sNAseWbN7ui0/MJNmreuipokjMx2Um6k1lzUOuwGtbTpOWHNlwEjMuMi9pvkR4Z3exDEPgDEtFbyHnzzDJJ+VEK1HCmOzta1lRlLwp18BUAdqinm7YVxpYQHuHc+44zSXpHt1Ou6/vzYQvV2hBGYYlCw//thFUJM3mwTAnBUboBaAaRTA9kA6 h6tnNnLC M6pQi7x8TVa9hSHMvP2AdkF5+YxWN1Br1BoVA5KeWnhQSRH+44KQp2sKrkUx9TkjuEt60Wmf9jsN/KtN71YAa0Qp080jGHqrbd7p6T2Fb0ImgNdqtDaMQm57lbarTqkgHBoDC3cwtCD3bdDWF8vAjokteI0zVfC0PG7QSiOpp5eoVkY2rE3aA9S6Xkadgv8RysadVD8lRvBKCqjH6gbRWFeTnrq4wLbyfLjr/mh8RwYs0rav1aNYIHm7oxiHovopzsb8ym0wINJtVKrp2eccVog69MB7HDscf+CONN9YdYyu6+ZLwNWFxIZNL4LZb6RAxoIvg4+nK2xpJDEOK4nosA9EOU6HF4QE8m9k9R6iPEjGAkL2ZZVjDhXYLMuyjtGRHTgRRJjXc3Z3rL2zsiBIMKn6iGcrzX7rNnnaUA6DduVeULUdQqo/uojufYU8Ia5tXaEF5oOr2nbqPalrTN6ARxcFo31DpTGjcBT1JcIgqAZlkQFC14XRk4tvGgGOJm1cuTl7+uzZ8hrZ9EtVFy41uLq7YZXsvgdhJy4i6agZRXWOOcAawRMCGgsT4OswttRzGQsHH X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: [Cc Amir as well] On Sat, May 20, 2023 at 01:00:29AM +0100, David Howells wrote: > Implement splice-read for overlayfs by passing the request down a layer > rather than going through generic_file_splice_read() which is going to be > changed to assume that ->read_folio() is present on buffered files. > > Signed-off-by: David Howells > cc: Christoph Hellwig > cc: Jens Axboe > cc: Al Viro > cc: John Hubbard > cc: David Hildenbrand > cc: Matthew Wilcox > cc: Miklos Szeredi > cc: linux-unionfs@vger.kernel.org > cc: linux-block@vger.kernel.org > cc: linux-fsdevel@vger.kernel.org > cc: linux-mm@kvack.org > --- Acked-by: Christian Brauner > > Notes: > ver #17) > - Use vfs_splice_read() helper rather than open-coding checks. > > ver #15) > - Remove redundant FMODE_CAN_ODIRECT check on real file. > - Do rw_verify_area() on the real file, not the overlay file. > - Fix a file leak. > > fs/overlayfs/file.c | 23 ++++++++++++++++++++++- > 1 file changed, 22 insertions(+), 1 deletion(-) > > diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c > index 7c04f033aadd..86197882ff35 100644 > --- a/fs/overlayfs/file.c > +++ b/fs/overlayfs/file.c > @@ -419,6 +419,27 @@ static ssize_t ovl_write_iter(struct kiocb *iocb, struct iov_iter *iter) > return ret; > } > > +static ssize_t ovl_splice_read(struct file *in, loff_t *ppos, > + struct pipe_inode_info *pipe, size_t len, > + unsigned int flags) > +{ > + const struct cred *old_cred; > + struct fd real; > + ssize_t ret; > + > + ret = ovl_real_fdget(in, &real); > + if (ret) > + return ret; > + > + old_cred = ovl_override_creds(file_inode(in)->i_sb); > + ret = vfs_splice_read(real.file, ppos, pipe, len, flags); > + revert_creds(old_cred); > + ovl_file_accessed(in); > + > + fdput(real); > + return ret; > +} > + > /* > * Calling iter_file_splice_write() directly from overlay's f_op may deadlock > * due to lock order inversion between pipe->mutex in iter_file_splice_write() > @@ -695,7 +716,7 @@ const struct file_operations ovl_file_operations = { > .fallocate = ovl_fallocate, > .fadvise = ovl_fadvise, > .flush = ovl_flush, > - .splice_read = generic_file_splice_read, > + .splice_read = ovl_splice_read, > .splice_write = ovl_splice_write, > > .copy_file_range = ovl_copy_file_range, >