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 58215C36010 for ; Fri, 4 Apr 2025 06:16:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 909456B0023; Fri, 4 Apr 2025 02:16:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8B8F96B0024; Fri, 4 Apr 2025 02:16:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7A7EC6B0025; Fri, 4 Apr 2025 02:16:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 5DF5C6B0023 for ; Fri, 4 Apr 2025 02:16:24 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 37544121F90 for ; Fri, 4 Apr 2025 06:16:25 +0000 (UTC) X-FDA: 83295351930.11.D7D7574 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf27.hostedemail.com (Postfix) with ESMTP id 7FDA840004 for ; Fri, 4 Apr 2025 06:16:22 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=nmuSjNdY; dmarc=none; spf=none (imf27.hostedemail.com: domain of BATV+b7d9887153177e9f403b+7894+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+b7d9887153177e9f403b+7894+infradead.org+hch@bombadil.srs.infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743747383; 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=V3rmCXxbDuUkBXJXOeoQph2X01YdsX01VESps6gyXrQ=; b=JoESQ8iLsfvab1v8WPkkhhsOb1wdTXcofp6bWam0dabgQ81/6IrzIhUwYK25xaOF/bfELW zDg14XP9z1m77o7hf42FsqQ7tKQqfXLgI0SAXNXxTewskqtl5wkLdKMFMurlJlPl0LpbU0 wz0B54Ho3He2jqXtnM2AM1valYzL2Ls= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=nmuSjNdY; dmarc=none; spf=none (imf27.hostedemail.com: domain of BATV+b7d9887153177e9f403b+7894+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+b7d9887153177e9f403b+7894+infradead.org+hch@bombadil.srs.infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743747383; a=rsa-sha256; cv=none; b=BXd2tdTW/NCJJsWjQh/CmicovvbVk4wDYlbgG+CXd7UasW9Rx6e5Kula2267QYwxmg2Mb6 s9NQyzTyVT6lEIWMd7iHRdpjZNwowMR9p6/cKxT3DM7FSB9TUvD4S/TJ6McEGMzzjb6hBs xqsoCNGqGVpJNX12tR7QZ0eXHuAanKE= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=V3rmCXxbDuUkBXJXOeoQph2X01YdsX01VESps6gyXrQ=; b=nmuSjNdYwLsK1QnUOfYvyHPNQU YMDfcxnM+crPwUw5v3H9Fcdgj3D/W5yXdykGC63/quFDMGYYchzScvie/4npdnknSspTLJVDs1ZMs 6uc7jZRPHvox9zooE54UGPBMJNZa7RMseuZq3OQ38Jc8i6oe/98+AgUQ/+F802NRgzKuEYpzLnzFW l+bqS/ymopZVeYcT8oTNz8IZQB5rrCmWFY/mNnKmFUi/rPvseD8eXTc9z+SgEFDg0KVR1X4Z7gHqe 34cV8WfAiWUx6HgXcr81YMsGoU0/q/Fl9xzNdwOm2WL/YPLYwO0EzcvX+no2MQtq2RXEgBVJOEf/o zZr9cPYQ==; Received: from hch by bombadil.infradead.org with local (Exim 4.98.1 #2 (Red Hat Linux)) id 1u0aLk-0000000Aqud-3LLu; Fri, 04 Apr 2025 06:16:20 +0000 Date: Thu, 3 Apr 2025 23:16:20 -0700 From: Christoph Hellwig To: Matthew Wilcox Cc: Qu Wenruo , Linux Memory Management List , "linux-block@vger.kernel.org" , linux-fsdevel@vger.kernel.org, linux-btrfs Subject: Re: Proper way to copy de-compressed data into a bio, in folio style? Message-ID: References: <17517804-1c6b-4b96-a608-8c3d80e5f6dd@gmx.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 7FDA840004 X-Stat-Signature: chp5oxm86o6dejxu8cxt6ywc1p4y18z5 X-Rspam-User: X-HE-Tag: 1743747382-596996 X-HE-Meta: U2FsdGVkX1/fTQOUZyWchZj1ACGN79Rhp4Y3jhgdyagBgPQ+hIWV40HsOvFHtHLn56J9hsqubQgR950fSKQglBV4MwhSsigc3btgxyP/U+77dRHKPsXNNDF5HXViPNlqRnIPCVjBksQReDVfbECSFxi6nmZBZ6T/Z+hknCcC+/5oaaieeS1MRC8SzG3ZqlHlecLvmy9HuVdhsmjEQ/HU2AlHhy7UzyQGH1CzOYTaQ5vJG0XqPV7NMQlunWnJ//pfrPuq0NvfEpzSGS/2w+/RFHoVgU5v/cnEhrRt99ECvq9+3puVMCtMxreMNuvwhVWA6jHKUnNu5RQWbU2fP2nxQFcz6q/2Om7PVbh5DmyXbVhrwO/Bz7i3Iv2r0LMTV4E+DTGZ2MQzTCk/U2GXGZUsOEoovl/wmGvui0wSB9lgXMP7TWi8xPqedMmYz40Pytj2hiByaY6vvu/v4mIDMNSfFIg7Kcxt8F4jNzeZrvmLNnUMKuDNQC1rmNFwnttRG3/4Qq8HqrZlarTmyAIRq4Jhyq3mq8wZkIT9YaoPTMOpY1xYw3OX7F+YWwkulfYnvIhV/fqXscYHKRJEGFHJ8KnM1i90mbHLvqPqzp1nV3uXZ7Wz73fpL9hoSDGJSWV03hbLTmELuvCXOJU0kctON6Z9bNol11xM7HfaXPodNm6VqtcBMnWNx49HQcgtIys/j8yECvgIqxSxvErguYcOPTBDT++pMOVVzPcVk04GKUd/JTNTs1HoaHPDCWS3u0aEGYFNihT7Hbuh89ZBTl4JKGgN3S2WaIdBfcLo6+1Fft5zYN5RsHK+bwGe9Jbfbq1MX+jehSPoUzmGK01plnRC3zKG9VFVb85Ai1cxez06q3kpcwf4H7+0k/9i/2EqzeCpq2c4x9p78qNLK68XVzkySbYcnlDlgade9XYtt9pTYc0zme4qRbUG+vusr36EJKxUZBAoZeW7EuuvvsjK5iWgF58 ct2N2CWi e4Cq+CWDnYKMdvFVcumsKm3GkOjgacKcVGB0tFLn5nmnOdLF80AyJ0N1Y3K1MndMeg0bjMh1c7O51hAVI0s5bPy5VHKwCSl5yW2qmKOu3+eUGI4MwJuByqqBm4RatQJ4i4BTrO8s0RERanvwI0V75SW1sdalrZp4AlEGCSZNdYhHO/kB97oMlzveqRVAiH0Ggu3Ji1XjEXj/vJtetIeE3VdCqyobhNGZDsHKTPNmrIOKiGPpweBT+aB/Ljcy/b52n28cJcsRUdZn4CnhB+Hfgiq7DEa0qNbTz3Kd2AzhyMT0nbGuIWQFO6wif/PQmu0XlbcmdR9LZh+RIKK9gydhp++15KaNtQh45exIQHT6tT0SriPvd3RFnduXJ8WogGxnAuY8lAKl6CIAeyCpgivg1EMZrDM1UWrfxlZKuPTnJ6JoRPbYwgGB+A+L4Z104/IqM/w9dcazjtM7qTSQsLmyx37ohB+O+5iV2HyPIocba6jSvjJaZBN9AwFGO/Cmfl1D0lIkLFl0NUXIJNYqKEiNdGXvXbPsZSTTe/q2KMsIi3PKFQYz3p+gKdb7eoA== 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: List-Subscribe: List-Unsubscribe: On Thu, Apr 03, 2025 at 06:44:22PM +0100, Matthew Wilcox wrote: > > On the other hand, I'm having some internal code to convert a bio_vec > > into a folio and offset inside the folio already. > > Thus I'm wondering can we provide something like bio_for_each_folio()? > > Or is it too niche that only certain fs can benefit from? > > I don't understand your requirements. but doing something different that > fills in a folio_iter along the lines of bio_for_each_folio_all() > would make sense. > Looking at btrfs_decompress_buf2page it uses bio_iter_iovec, which is the building block use by bio_for_each_segment to build segments, that is bvecs that are constrained to PAGE_SIZE boundaries. In this for a good reason as it then wants to copy into them with a single kmap mapping. This means that bv_offset is always less than PAGE_SIZE for these generated bio_vecs. In the short run I'd suggest to just keep using the existing open-coded bio_for_each_segment-like loop so that each iteration covers a PAGE_SIZE granularity chunk. Just stop messing th the bvec fields directly and use bvec_kmap_local to map the destination and do a plain memcpy into that instead of using memcpy_to_page. In the long run it would be great to just rewrite the low-level decompressors to work on an iov_iter as output and remove the need for the extra data copy entirely, but if that can't happen we'll just need for figure out how we can do useful kmaps larger than PAGE_SIZE or stop allowing highmem pages for btrfs and then switch to a folio based iterator.