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 7135EC6FD19 for ; Mon, 13 Mar 2023 13:28:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BB14A6B0071; Mon, 13 Mar 2023 09:28:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B60EE6B0072; Mon, 13 Mar 2023 09:28:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A2A066B0074; Mon, 13 Mar 2023 09:28:07 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 941FC6B0071 for ; Mon, 13 Mar 2023 09:28:07 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 62F0580C10 for ; Mon, 13 Mar 2023 13:28:07 +0000 (UTC) X-FDA: 80563953414.06.5FFF7EC Received: from mail-qt1-f179.google.com (mail-qt1-f179.google.com [209.85.160.179]) by imf08.hostedemail.com (Postfix) with ESMTP id 79936160007 for ; Mon, 13 Mar 2023 13:28:04 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=cs.cmu.edu header.s=google-2021 header.b=X+al1sOi; spf=pass (imf08.hostedemail.com: domain of jaharkes@andrew.cmu.edu designates 209.85.160.179 as permitted sender) smtp.mailfrom=jaharkes@andrew.cmu.edu; dmarc=pass (policy=none) header.from=cmu.edu ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678714084; 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=wyfnm20ZcESTZZICXzvfZBrwNfquIlw/nie6VPg8U74=; b=bzNwUWi8s8faWzRB16TVdF0xHvkeXcfqUczYfBAdzsrSzLGGbgRc68HDG97FriJU0jhfwT EU5OUhcugqbF0NebGHLvZBKAeFYJc6Q0oV/5/MIVYlaup6RkvaDX2FP6GU97zhP/sMdffV O46kZ+8wpdvSFiPT7OaXr3rhm9jtcTM= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=cs.cmu.edu header.s=google-2021 header.b=X+al1sOi; spf=pass (imf08.hostedemail.com: domain of jaharkes@andrew.cmu.edu designates 209.85.160.179 as permitted sender) smtp.mailfrom=jaharkes@andrew.cmu.edu; dmarc=pass (policy=none) header.from=cmu.edu ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678714084; a=rsa-sha256; cv=none; b=FG/sx6ogU23vw4i2exGZ3v9Hv9luWe9M7Z4z/JWS4s0GdPCm+uh4kW9kxUwhdSag3xrT6r P+WRypUyuwF49LcIrQUu5eYkWLox9sEr8tDIVXETZqQ3rIA85Yx4rlKonXRqV5iJjk4Cpp 8kSi6vsRRuKcAKe1HuLFD0X9LlKYLgw= Received: by mail-qt1-f179.google.com with SMTP id r16so13020196qtx.9 for ; Mon, 13 Mar 2023 06:28:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.cmu.edu; s=google-2021; t=1678714083; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:from:to:cc :subject:date:message-id:reply-to; bh=wyfnm20ZcESTZZICXzvfZBrwNfquIlw/nie6VPg8U74=; b=X+al1sOiAsPAhBRCww81YtjFkVTVxccjSPzp1nBHd2IQgpRx3v9o+RE806ZA0PRYG4 BgpU56JUTbexA5gywGNmboNInkeEkEG7hTe6o+aLWyEZ/VIpEWivtJAMvgPcKjYgQFWx DqzS4Xpu8XEvnlm9t1nxPZLmSqEeVa9bTxD/IkDVQwEOnSraLGGxTsXaV6wgbvBdHOAW 0mI5d4V3ujTO65mnXfRAmoVVDsrSWu4ymG2i3c4YQH/vn6kmXHcL0RcGvATqNNT8kWUW MdGyqQaSUIdUa0Y2DIcos61471PGhU6rMB2A7wyfpzevEs+476dYhdUyhsCoUia11lzZ tZ2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678714083; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=wyfnm20ZcESTZZICXzvfZBrwNfquIlw/nie6VPg8U74=; b=vk/PGkWYnj28oZ87oY5kc92cEdML5TGMMzdb+AeTTAM/mieM5ViL5zakwUZ+VdENyS unkF3J33CRxL8/CtKnqWorpAErfn/tE96bridFKJYYaI3LAi4U1BwCuzkhyOM6t3WLK2 yZVjZAiimUxj1z0tvDcwoLQcMBEgeZ9xEnUNPHDNvfdsVx48ReVHQK+g5lpP/ybO4BH0 A6L5mMZal6Zwj93hrgvhLbipxjmDPAx1EljGJymGVwTVIEPo1nTIPx9sXBwZHJaP9dBi wh7sSfaVq5otuAXZv8PcPAO+V7dMpZUfsCTb703y5V44qfm2JzkffpIqJ3/Jla3wPqcE dMOQ== X-Gm-Message-State: AO0yUKXIOY/90LLgvnV3KOMRtPYBudWS8sxvjzK8T/bJG6cP4b/fiye7 J32ML8P6Y8Ohnhg3wwyrOIoX8Q== X-Google-Smtp-Source: AK7set9tuv7Xfd9Fa/zMlcJpqFBFMylrI/FwvAimLLz1Dc7kbKUinONv1rS/iHv0eiBgE5Mm0zynRA== X-Received: by 2002:ac8:4e86:0:b0:3bf:c961:9309 with SMTP id 6-20020ac84e86000000b003bfc9619309mr55930056qtp.37.1678714083568; Mon, 13 Mar 2023 06:28:03 -0700 (PDT) Received: from cs.cmu.edu (tunnel29655-pt.tunnel.tserv13.ash1.ipv6.he.net. [2001:470:7:582::2]) by smtp.gmail.com with ESMTPSA id s138-20020a374590000000b007436d0e9408sm5296993qka.127.2023.03.13.06.28.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Mar 2023 06:28:03 -0700 (PDT) Date: Mon, 13 Mar 2023 09:28:00 -0400 From: Jan Harkes 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 Subject: Re: [PATCH v17 05/14] coda: Implement splice-read Message-ID: <20230313132800.ebjr2zk4utln5i6r@cs.cmu.edu> Mail-Followup-To: David Howells , 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 References: <20230308165251.2078898-1-dhowells@redhat.com> <20230308165251.2078898-6-dhowells@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230308165251.2078898-6-dhowells@redhat.com> X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: 3tgis88itorh83rybaskj4wsaawnwsaj X-Rspamd-Queue-Id: 79936160007 X-HE-Tag: 1678714084-169615 X-HE-Meta: U2FsdGVkX19I2xOL9Hqwbh5BX4geYQMTZ5GG+HZNRy12Y4HYX+sQXrYqiVslAyZio0XI++pcQHoqCUj1T7SqipRzk9pPHeFeCkMGL9KT3Q/LBdiuATnOd4/2XOB2F6KD51zHXXOteP2k+XPMtTPqrAy60ruS0mKE1T51bP3OOsN1UXq1RWgMyYFv2djnaJj6YQPgz44tlMXjSPs8iJkz/cjxoi1RdR70xzM5EbRqRWqRFBMMhvSUgmSBLkC2dVshAzNRUDXztElQCo0FrYPCLX1J9cKViodq1jisRE1MjNH0R34l/IUANjxkVvmDD8dT+VUwJxx+jnjTDhzwwqMXZpMIQiUHr17aDGmgsiZq6zFXjjOSSNvhgUXx6gmwUrRDNGYhKrmjGDOi/eGpelnW56n3/4HesUXqpCYs/Fn0HszJevjp7dFMdCuV9Jgl86NwwAh3+1Bhjf+Ux+gAz69WApkCSIYKI+FbcttqQa87KX/SYs+vD19Anp7pY27VIbDXmyVf9bjfKaDPrryYdEbYQ/CN2KNrG8t5KlLRjYEg8fpfjFaK0A2BzafAT33PoFh7tqK1nHPpQWv11iXAoWPShEVTPF4QzklNow1fm4tiEMA1DCeROGERFPQHDCRlkHZ10SB1uIsiw5Tm5Ug04esHSN4avTHpYi/WHTOpbzjBcvc0qQ691RE/I/gSIWxu+YVrCby3BDApSIKGvGkzl+Eyv55Om/twFQVinrcd+PIhZ12XIET6covGf5oIcgJ9LMdihWXYM9WDjmg243w6J9GlG3nj7fKwGoirmqbHw+LRjQ3ZLfMIrogKPQaSHfJ/cdM3gzNhLS0JMnA5H5HYdVHzu9F0QlUMMpVWAVbFoBDtfpIw4Vbzd66zwzUKE9tbH2/kkQXvOtTrK+kjxQliSyz+1pKSeNcZTLJQamyhas+JsVxqAAou8DuQDy+M0EimWFbe+920vN+pKRK5QsOI5lK 4d28mKwe rS9keOPTOA2RobdnKK6PmfcTdoNWE+r9yxgvtyCCf5/jwrmdFYT+6gO2GBhqjYZPwFDFth3oIF2WoqPogbiXJWagYNzySD5/j19w0GsQWjxqV0T9kHDt2I4MZttf2KQFwxyFwS4/A7VooylxQ2LOV/hDO1mrXMmXxQxffFCMop1CheIFOQRPZgY7JTz/HwVvR3nNxkJcUybLa5NziSXE/lFcVgs+RXht4fh5lgApu+BnBGWQY1Ifr0OxHvNAan7ghr5nyzeMK/poqwrmRguH1JD8Afg/v605f3BVhGHfF6Zlc0mJpg0qMNN0KZHYgFuMx6Bn56ip8YlF2WcwjOoYgVXuovBCGgWxSu1QOOtIzAeUSlSDfAEGyBmeJpGwBiEnOkiexVKhdd/z5oELv9VvCFaO6n6CUT1K0h3Iy9r7IWVSFLaCzLDJ8i4MP5MDgB003q3bS+/YxNxNHaIR6kdFC0k1pOSSPV3HvrXlqrT1rci+v24/kTgSN2D49f7uJftAsAtzEt9PPhBSIAoMAJ99N0SiZwZf6MOVwMFW83iZSoz1244iTgaVwUq76MB+i7PWPemNqzk8nLolrtsBom9+ewVt3yeP6h/PPP0raj7zBf21Oq1yAkI2rO6+eTmsM8y4oAu/GORVSPKH+XAz63kljJ9YXhFnSIU81NWx+I5sePF1RvHGQmVnIMzP70DkaMr6iJvRNxtohAqGAxFcQui4G7hwnjJg0cxQD0x7Nn2toQpurRx9FhQOLLRLfnZi/ZYUAp6eOkL8cDuBHUKoZDhbCr9EDWg== 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: That actually looks better than the original code because this brings in the experimental read intent hinting which allows userspace to mediate access to partially cached files. Jan On Wed, Mar 08, 2023 at 11:53:19AM -0500, David Howells wrote: > Implement splice-read for coda 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 Acked-by: Jan Harkes > cc: Jan Harkes > cc: Christoph Hellwig > cc: Jens Axboe > cc: Al Viro > cc: John Hubbard > cc: David Hildenbrand > cc: Matthew Wilcox > cc: coda@cs.cmu.edu > cc: codalist@coda.cs.cmu.edu > 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 #17) > - Use vfs_splice_read() helper rather than open-coding checks. > > fs/coda/file.c | 29 ++++++++++++++++++++++++++++- > 1 file changed, 28 insertions(+), 1 deletion(-) > > diff --git a/fs/coda/file.c b/fs/coda/file.c > index 3f3c81e6b1ab..12b26bd13564 100644 > --- a/fs/coda/file.c > +++ b/fs/coda/file.c > @@ -23,6 +23,7 @@ > #include > #include > #include > +#include > > #include > #include "coda_psdev.h" > @@ -94,6 +95,32 @@ coda_file_write_iter(struct kiocb *iocb, struct iov_iter *to) > return ret; > } > > +static ssize_t > +coda_file_splice_read(struct file *coda_file, loff_t *ppos, > + struct pipe_inode_info *pipe, > + size_t len, unsigned int flags) > +{ > + struct inode *coda_inode = file_inode(coda_file); > + struct coda_file_info *cfi = coda_ftoc(coda_file); > + struct file *in = cfi->cfi_container; > + loff_t ki_pos = *ppos; > + ssize_t ret; > + > + ret = venus_access_intent(coda_inode->i_sb, coda_i2f(coda_inode), > + &cfi->cfi_access_intent, > + len, ki_pos, CODA_ACCESS_TYPE_READ); > + if (ret) > + goto finish_read; > + > + ret = vfs_splice_read(in, ppos, pipe, len, flags); > + > +finish_read: > + venus_access_intent(coda_inode->i_sb, coda_i2f(coda_inode), > + &cfi->cfi_access_intent, > + len, ki_pos, CODA_ACCESS_TYPE_READ_FINISH); > + return ret; > +} > + > static void > coda_vm_open(struct vm_area_struct *vma) > { > @@ -302,5 +329,5 @@ const struct file_operations coda_file_operations = { > .open = coda_open, > .release = coda_release, > .fsync = coda_fsync, > - .splice_read = generic_file_splice_read, > + .splice_read = coda_file_splice_read, > }; > >