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 91420C64EC4 for ; Wed, 8 Mar 2023 15:33:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 25DA36B0074; Wed, 8 Mar 2023 10:33:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 20EEA280001; Wed, 8 Mar 2023 10:33:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0D50F6B0078; Wed, 8 Mar 2023 10:33:52 -0500 (EST) 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 009346B0074 for ; Wed, 8 Mar 2023 10:33:51 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id C2389A1053 for ; Wed, 8 Mar 2023 15:33:51 +0000 (UTC) X-FDA: 80546126262.22.3D722EE Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) by imf02.hostedemail.com (Postfix) with ESMTP id 7852780012 for ; Wed, 8 Mar 2023 15:33:49 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=szeredi.hu header.s=google header.b=IGbyZwzK; dmarc=pass (policy=quarantine) header.from=szeredi.hu; spf=pass (imf02.hostedemail.com: domain of miklos@szeredi.hu designates 209.85.208.54 as permitted sender) smtp.mailfrom=miklos@szeredi.hu ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678289629; 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=FOdmNK9WOQhlHB8lGx17ROzXlswee6Xo6KzJiX35bEc=; b=RjQqn2A52WfS4kNai/fNWoAc/0pOYC4s4lwGdnaLNsxQKuV+wkfNlCt4zWm7lnUX6WsSRi 7ESoHE2byAmEBoq/WdPGdtoZh4JGZjxxuW36GsnQFIJf2BeAeY/Xo9eXkgXYNQIZ+zgxV3 kRYvM6UUPtB3sWsGVTN/yresoSJL1c4= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=szeredi.hu header.s=google header.b=IGbyZwzK; dmarc=pass (policy=quarantine) header.from=szeredi.hu; spf=pass (imf02.hostedemail.com: domain of miklos@szeredi.hu designates 209.85.208.54 as permitted sender) smtp.mailfrom=miklos@szeredi.hu ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678289629; a=rsa-sha256; cv=none; b=nBjtELkhcdhETDds8vydyR33u9Jk2kksMFwxpZG+E4DigJlyriqvDQcSbU7eTjawkK+Lw/ UNVr2icTgl+uKkCppXXWwGMJGZymwN0+/xR+7/gzxLs8wthDKnVvjMX3Vti0OkS4IYzK1Y C0/3X7RviFCBbUGxkhU5YwJd7ocebvA= Received: by mail-ed1-f54.google.com with SMTP id a25so67592748edb.0 for ; Wed, 08 Mar 2023 07:33:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=szeredi.hu; s=google; t=1678289628; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=FOdmNK9WOQhlHB8lGx17ROzXlswee6Xo6KzJiX35bEc=; b=IGbyZwzKWrnuucRDByz/T9XdybVORTyEUzEwmCw9V8AeXk4C/Vbt1Y9DvTo+PocdyV +ZglmnhJlRwQjA/yEvs2zTY7iaEoULmcBkV+DAWRRr7fxQYcxZn3ZnjPnJxGm2wQLGZ3 SBE0Kx8A4/knCvNrWKZl4R6AwwC/zngJc0cDg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678289628; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=FOdmNK9WOQhlHB8lGx17ROzXlswee6Xo6KzJiX35bEc=; b=T4i9hihQo5Q8dvstIh5FcNTpOk3WSc+m7ZxobKpAQQWlBB4H7FI8yReVYJ4GwmcBL3 bOBpZfsgqENLCyCrjMHsappXyp9wf7qyNS1cmDF1KkPpLg/ZlRRB66G0D+RmoV93gC9i K3myQXg/MqFrDOJ16s3tuwHhCgGU8U4tBoNeW0ZKbyz5TaVp4Rz1OzaYJTxPdNXkxk7A NRZ6FCPMsXx1ejVAh8lVEhz/8CznO55tVwDpfvO/YBjm7Lna1MnwnfFP2zwkjapLGaqi BbPWCpUJJW3wmvlf4hir+Dhou72atuz6myg0VSkp6NUyoinH8+4SkVlFsSCs9xBhD/Kn Y+iQ== X-Gm-Message-State: AO0yUKX+dkXbd0sZ0qmidlFHDXXknzwBRCNOKb/cOFYgAuJu/Y/YRvky u13lMImKekx0rBTFtzdggIbGfaqIMo3KuvmY0aKKbA== X-Google-Smtp-Source: AK7set8fCE+xVLpgwIvK6mlnHQtOhFn2Tstvgvpl6/ijsEsoNnESBLlosp3w1GqSEiDUZi7rq+daTFslIoRw8G0vaGE= X-Received: by 2002:a50:d615:0:b0:4bc:7c78:4304 with SMTP id x21-20020a50d615000000b004bc7c784304mr10244649edi.8.1678289627857; Wed, 08 Mar 2023 07:33:47 -0800 (PST) MIME-Version: 1.0 References: <20230308143754.1976726-1-dhowells@redhat.com> <20230308143754.1976726-4-dhowells@redhat.com> In-Reply-To: <20230308143754.1976726-4-dhowells@redhat.com> From: Miklos Szeredi Date: Wed, 8 Mar 2023 16:33:37 +0100 Message-ID: Subject: Re: [PATCH v16 03/13] overlayfs: Implement splice-read 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 , linux-unionfs@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 7852780012 X-Stat-Signature: qh8eju7xqseci6s93xacwebcm1hhy6yq X-HE-Tag: 1678289629-533994 X-HE-Meta: U2FsdGVkX1++YzCQ5DDC17mnlKqX1ryiYVgOkps7q4mA53LBH/lFTMeJuvu8WuIkVl6nXxgmISATkGdV9vzAJl8t97bGAeHti+DLf7g1afmlXXJRlpsvw/hmEVRfnqufMvbsh22VqObxoLoL01R+tredIx1zH09uIPwULOkXHz5KRMgnFz4wWmLqgY8bpvsy2BX7wDbkaR5BwWVHYNnWmu9fOHw5r++E8nVxY+aPR7Fp4d9Bq9puF1zBW8cc0F2g5IPhkZXr2wNrxghYTPg37Aq7+ndSLBLMJr65qIMlkSkROpl5oTOT2R452AeAsaazi4P/bVRjCfTfxXMoeEXAfCP05EaLo9INGOT3bkIxgayl0loV/A1iWBDsYPkFoAUwNcT8sETMF7H7JCbqCDKZw5enQnZIx5gz6Ckm3MrIq8FXgyRGLP0ysvND3zX/o5ketYqRT88gvqM5Km7PR/cTcWax8DlTWGdZnfjIIuFY4B1jSgbQHmJ67n6HXPJS+HnKfknb8oMRRJJm81qOn5QF/Av40ZXuRYGCRMXtox37d8xp5u0eLR/UERY9JwaA0nRuGp8aPpgvYOhpOVd3cLDS5W8yuKmV4iNMIRvvTPKczYPz4xgXV4H5ZIMIPtX1Lv6E1fHSx2tDtzOmLhpSqSsoZd3/QXVDNpzWuBpz1u3Ntdj0eaHTsN+GEhVtTL5U8mnwU3VU/0m+Tj2IsdgJCeBbQMeneV5U2LABsqmLiTIH+UjnREMXwbtC9oyMpuHyMDy9JfYv2Sz/PH7hWXkmY6ID+SRKy5omjuEuViAuu7Ldmu0fdwctJdRn/wD7BKqfMhlRiNwqjhjQNCmBvrtSxf0bI8+aFSbOl6K5h01kJ4nwK1ayaRrlqYGXUNRmoej9+zSzkyEIYUxlz2KcZlr7lCVoll5xaxsCNi2VF1HtiYDB7O8YBgss0KOvcXuowfmTAVYOKA62I++0eglirtrgdXV KCMI50cE GSUMuft3KcWAKMI+oFZ5c+cCeKjJqyVtOci1A2bSNg1BsHjb3pXhrjpx9obtESOzMQEHhyzn4yWJ87Q9hCB2Xw7vPxz6BGTODQPyEhnRBnXOevN2/aIpujmrz5lTDuCCt15PflTknfCPbRYjsqRvh7Ui6XqhRs80s7aNkRpc9fs8Yk+HH5A9/FQfYgCs0IcgvspBPEYUyeg3Qr9MmY8Hzq2ppRqbBVtP/RR0C97d1dGaWLUCkovuit34iY9g9sAuaFC0qm2jt11ilVo5t8QyLsTruTtW80cVHlIoMqnAVSFZ+QfNpk55C2SqeIFEdgnNIufYNWWXV/vq0YnV6nHeYf162+YezDwSqEcZcEscybLuvTIRP/KA/v6+l9TmwuEr6shEDV8Jg9XpqsCkylahJJJlv3y9mM4R9wUB4/1fh+a88WM++0Vo33w1aD7+1ogWWaYMiAh0ZIs++smhgZAOi817hw5FWMewrA/DPGe/Hgbt/1OnVCPYlxUYBsRTUeG5WmBn99ciA6+HLDovpEy2HX9sW/w== 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: On Wed, 8 Mar 2023 at 15:38, 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 > --- > > Notes: > 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 | 33 ++++++++++++++++++++++++++++++++- > 1 file changed, 32 insertions(+), 1 deletion(-) > > diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c > index 7c04f033aadd..a12919e9ccba 100644 > --- a/fs/overlayfs/file.c > +++ b/fs/overlayfs/file.c > @@ -419,6 +419,37 @@ 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; > + > + ret = -EINVAL; > + if (!real.file->f_op->splice_read) > + goto out_fdput; > + > + ret = rw_verify_area(READ, real.file, ppos, len); > + if (unlikely(ret < 0)) > + goto out_fdput; > + > + old_cred = ovl_override_creds(file_inode(in)->i_sb); > + ret = real.file->f_op->splice_read(real.file, ppos, pipe, len, flags); I don't think you replied to my suggestion of using a helper here. E.g. it could be as simple as exporting do_splice_to(), or renaming it to vfs_splice_read() to be more readable. It would remove the boilerplate and be more robust if any changes are done to the splice reading code. Thanks, Miklos